diff --git a/frontend/app/web-gold/src/components/TopNav.vue b/frontend/app/web-gold/src/components/TopNav.vue index fcd7be00d3..40cc457eda 100644 --- a/frontend/app/web-gold/src/components/TopNav.vue +++ b/frontend/app/web-gold/src/components/TopNav.vue @@ -4,11 +4,6 @@ import { useUserStore } from '@/stores/user' import UserDropdown from '@/components/UserDropdown.vue' import BrandLogo from '@/components/BrandLogo.vue' -const styles = { - background: 'var(--color-gray-900)', - color: 'var(--color-text-inverse)' -} - const userStore = useUserStore() // 计算是否应该显示用户组件 @@ -19,29 +14,17 @@ const shouldShowUser = computed(() => { - - diff --git a/frontend/app/web-gold/src/components/UserDropdown.vue b/frontend/app/web-gold/src/components/UserDropdown.vue index e5138a4ab2..6eb837737a 100644 --- a/frontend/app/web-gold/src/components/UserDropdown.vue +++ b/frontend/app/web-gold/src/components/UserDropdown.vue @@ -2,12 +2,20 @@ import { computed } from 'vue' import { useRouter } from 'vue-router' import { useUserStore } from '@/stores/user' -import { UserOutlined, LogoutOutlined } from '@ant-design/icons-vue' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from '@/components/ui/dropdown-menu' +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' +import { Icon } from '@iconify/vue' const router = useRouter() const userStore = useUserStore() -// 根据用户名生成稳定的渐变色 - 使用更协调的蓝金配色 +// 根据用户名生成稳定的渐变色 const avatarGradient = computed(() => { const name = userStore.displayName || 'User' const gradients = [ @@ -18,7 +26,6 @@ const avatarGradient = computed(() => { 'linear-gradient(135deg, #f59e0b 0%, #d97706 100%)', 'linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%)' ] - // 根据用户名生成稳定的索引 let hash = 0 for (let i = 0; i < name.length; i++) { hash = name.charCodeAt(i) + ((hash << 5) - hash) @@ -26,12 +33,8 @@ const avatarGradient = computed(() => { return gradients[Math.abs(hash) % gradients.length] }) -const handleMenuClick = ({ key }) => { - if (key === 'profile') { - router.push('/user/profile') - } else if (key === 'logout') { - handleLogout() - } +const handleProfile = () => { + router.push('/user/profile') } async function handleLogout() { @@ -45,178 +48,68 @@ async function handleLogout() { - - diff --git a/frontend/package.json b/frontend/package.json index ed300c22a2..de48457c36 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,6 +11,8 @@ "license": "ISC", "description": "", "dependencies": { + "@iconify/vue": "^5.0.0", + "@internationalized/date": "^3.12.0", "@types/node": "^25.0.6", "aplayer": "^1.10.1", "axios": "^1.12.2",