diff --git a/src/api/index.js b/src/api/index.js index e4e7889..e9b497e 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -23,7 +23,7 @@ http.interceptors.response.use( userStore.reset() // _noRedirect 标记:静默验证时不跳转(避免注册/登录页被重定向) if (!err.config?._noRedirect) { - router.push('/login') + router.push({ path: '/', query: { showLogin: 1 } }) } return Promise.reject(err) } diff --git a/src/components/common/AppHeader.vue b/src/components/common/AppHeader.vue index c45395b..e035b92 100644 --- a/src/components/common/AppHeader.vue +++ b/src/components/common/AppHeader.vue @@ -200,6 +200,10 @@ async function handleCommand(cmd) { } router.push('/works') } else if (cmd === 'profile') { + if (!isLoggedIn.value) { + loginDialogRef.value?.open() + return + } router.push('/profile') } else if (cmd === 'vip') { showPayment?.() diff --git a/src/router/index.js b/src/router/index.js index 3ae1ffa..9a5a03d 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -48,7 +48,11 @@ router.beforeEach(async (to, from, next) => { router.onError((error) => { const pattern = /Failed to fetch dynamically imported module|Importing a module script failed/i if (pattern.test(error?.message || '')) { - window.location.reload() + const isReloaded = sessionStorage.getItem('chunk_reload_flag') + if (!isReloaded) { + sessionStorage.setItem('chunk_reload_flag', 'true') + window.location.reload() + } } })