diff --git a/src/app/layouts/AppHeader.vue b/src/app/layouts/AppHeader.vue
index 31646d0..40dc7f3 100644
--- a/src/app/layouts/AppHeader.vue
+++ b/src/app/layouts/AppHeader.vue
@@ -43,9 +43,6 @@
-
-
-
@@ -58,7 +55,6 @@ import { NButton, NBreadcrumb, NBreadcrumbItem, NSpace, NInput } from 'naive-ui'
import { Icon } from '@iconify/vue'
import { useAuthStore } from '../../shared/stores/auth'
import { t } from '../../shared/i18n'
-import UserMenu from '../../shared/components/UserMenu.vue'
const router = useRouter()
const route = useRoute()
diff --git a/src/app/layouts/AppSidebar.vue b/src/app/layouts/AppSidebar.vue
index 1249d13..60f6b40 100644
--- a/src/app/layouts/AppSidebar.vue
+++ b/src/app/layouts/AppSidebar.vue
@@ -21,6 +21,11 @@
@update:value="handleMenuSelect"
/>
+
+
+
@@ -32,6 +37,7 @@ import { t } from '../../shared/i18n'
import { useMenuStore, type AppMenuItem } from '../../shared/stores/menu'
import { pageTypeToSlug } from '../../shared/utils/slug'
import DynamicIcon from '../../core/components/DynamicIcon.vue'
+import UserMenu from '../../shared/components/UserMenu.vue'
interface Props {
collapsed: boolean
@@ -210,4 +216,11 @@ const handleMenuSelect = (key: string) => {
color: #18a058 !important;
transform: scale(1.1);
}
+
+/* 侧边栏底部用户菜单区域 */
+.sidebar-footer {
+ flex-shrink: 0;
+ padding: 12px;
+ border-top: 1px solid var(--border-color);
+}
diff --git a/src/shared/components/UserMenu.vue b/src/shared/components/UserMenu.vue
index 1d3335b..f1f8497 100644
--- a/src/shared/components/UserMenu.vue
+++ b/src/shared/components/UserMenu.vue
@@ -1,31 +1,52 @@
-
+