feat: 功能

This commit is contained in:
2025-11-12 22:45:29 +08:00
parent 94c114a44d
commit fc7d2ccea5
41 changed files with 2406 additions and 343 deletions

View File

@@ -1,4 +1,6 @@
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/user'
import { getToken } from '@gold/utils/token-manager'
const routes = [
{
@@ -48,4 +50,40 @@ const router = createRouter({
routes,
})
// 用户信息初始化标志(确保只初始化一次)
let userInfoInitialized = false
/**
* 路由导航守卫:初始化用户信息
* 在首次路由跳转时,如果已登录(有 token则获取用户信息
*/
router.beforeEach(async (to, from, next) => {
// 只在首次路由跳转时初始化用户信息
if (!userInfoInitialized) {
userInfoInitialized = true
const token = getToken()
if (token) {
try {
const userStore = useUserStore()
// 如果 store 中已标记为登录,则获取用户信息
if (userStore.isLoggedIn) {
userStore.fetchUserInfo()
} else {
// 如果有 token 但 store 中未标记为登录,可能是刷新页面
// 先标记为已登录,然后获取用户信息
userStore.isLoggedIn = true
userStore.fetchUserInfo()
}
} catch (error) {
console.error('初始化用户信息失败:', error)
// 不阻止路由跳转,继续执行
}
}
}
// 继续路由跳转
next()
})
export default router