From 8b12402e89d66ec87ce3b16b02afe8c9f1d6e038 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 12 Aug 2025 12:46:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=B3=E4=B8=8A=E8=A7=92=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E6=9C=89=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=20=E7=82=B9=E5=87=BB=E5=90=8E=E6=81=A2=E5=A4=8D=20#508?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend_nuxt/components/HeaderComponent.vue | 77 ++++++++++---------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/frontend_nuxt/components/HeaderComponent.vue b/frontend_nuxt/components/HeaderComponent.vue index 71ed1735d..1a2c52f09 100644 --- a/frontend_nuxt/components/HeaderComponent.vue +++ b/frontend_nuxt/components/HeaderComponent.vue @@ -75,6 +75,7 @@ export default { const avatar = ref('') const showSearch = ref(false) const searchDropdown = ref(null) + const userMenu = ref(null) const goToHome = () => { router.push('/').then(() => { @@ -128,6 +129,43 @@ export default { { text: '退出', onClick: goToLogout }, ]) + onMounted(async () => { + const updateAvatar = async () => { + if (authState.loggedIn) { + const user = await loadCurrentUser() + if (user && user.avatar) { + avatar.value = user.avatar + } + } + } + const updateUnread = async () => { + if (authState.loggedIn) { + await fetchUnreadCount() + } else { + notificationState.unreadCount = 0 + } + } + + await updateAvatar() + await updateUnread() + + watch( + () => authState.loggedIn, + async () => { + await updateAvatar() + await updateUnread() + }, + ) + + watch( + () => router.currentRoute.value.fullPath, + () => { + if (userMenu.value) userMenu.value.close() + showSearch.value = false + }, + ) + }) + return { isLogin, isMobile, @@ -143,45 +181,10 @@ export default { goToLogout, showSearch, searchDropdown, + userMenu, + avatar, } }, - - async mounted() { - const updateAvatar = async () => { - if (authState.loggedIn) { - const user = await loadCurrentUser() - if (user && user.avatar) { - this.avatar = user.avatar - } - } - } - const updateUnread = async () => { - if (authState.loggedIn) { - await fetchUnreadCount() - } else { - notificationState.unreadCount = 0 - } - } - - await updateAvatar() - await updateUnread() - - watch( - () => authState.loggedIn, - async () => { - await updateAvatar() - await updateUnread() - }, - ) - - watch( - () => this.$route.fullPath, - () => { - if (this.$refs.userMenu) this.$refs.userMenu.close() - this.showSearch = false - }, - ) - }, }