From 343d8a1c1ed92576318f44a5e0cf3cb62d3833e3 Mon Sep 17 00:00:00 2001 From: yuhengshen Date: Sat, 10 Jan 2026 14:10:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=87=E6=8D=A2=E6=97=B6=E5=8C=BA?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E9=A1=B5=E9=9D=A2=E4=B8=8D=E5=88=B7=E6=96=B0?= =?UTF-8?q?=20(#7085)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 切换时区后,页面不刷新 * fix: keep-alive 的页面,i18n 和 timezone 不更新 --- packages/effects/layouts/src/basic/layout.vue | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/effects/layouts/src/basic/layout.vue b/packages/effects/layouts/src/basic/layout.vue index 6263fbdf..45b97833 100644 --- a/packages/effects/layouts/src/basic/layout.vue +++ b/packages/effects/layouts/src/basic/layout.vue @@ -14,7 +14,7 @@ import { updatePreferences, usePreferences, } from '@vben/preferences'; -import { useAccessStore } from '@vben/stores'; +import { useAccessStore, useTabbarStore, useTimezoneStore } from '@vben/stores'; import { cloneDeep, mapTree } from '@vben/utils'; import { VbenAdminLayout } from '@vben-core/layout-ui'; @@ -52,6 +52,7 @@ const { theme, } = usePreferences(); const accessStore = useAccessStore(); +const timezoneStore = useTimezoneStore(); const { refresh } = useRefresh(); const sidebarTheme = computed(() => { @@ -187,9 +188,19 @@ watch( }, ); +const tabbarStore = useTabbarStore(); + +function refreshAll() { + tabbarStore.cachedTabs.clear(); + refresh(); +} + // 语言更新后,刷新页面 // i18n.global.locale会在preference.app.locale变更之后才会更新,因此watchpreference.app.locale是不合适的,刷新页面时可能语言配置尚未完全加载完成 -watch(i18n.global.locale, refresh, { flush: 'post' }); +watch(i18n.global.locale, refreshAll, { flush: 'post' }); + +// 时区更新后,刷新页面 +watch(() => timezoneStore.timezone, refreshAll, { flush: 'post' }); const slots: SetupContext['slots'] = useSlots(); const headerSlots = computed(() => {