seatonwan9
2025-08-28 bfbb1ea3c6bb2dd7db064fb189290a1bfcf6c9cd
src/router/index.ts
@@ -12,6 +12,7 @@
import { useUserInfo } from '@/stores/modules/userInfo'
import { useCommonInfo } from '@/stores/modules/common' // 状态管理器
import { useNavTabs } from '@/stores/modules/navTabs' // 标签导航
import { queryUserDetail } from '@/api/userInfo'
const router = createRouter({
  history: createWebHistory('/manage/'),
@@ -20,7 +21,7 @@
    return { top: 0 }
  },
})
router.beforeEach((to, from, next) => {
router.beforeEach(async (to, from, next) => {
  console.log("to",to)
  const userStore = useUserInfo()
  // * 在跳转路由之前,清除所有的请求
@@ -41,11 +42,17 @@
    }
    // 如果没有token,设置一个默认token并继续
    if (!userStore.getAdminToken) {
      const obj: any = {
        adminToken: 'dev-token',
        screenToken: '',
      const localUserInfo = localStorage.getItem('userInfo')
      if (localUserInfo) {
          const userInfo = JSON.parse(localUserInfo)
          if (userInfo.adminToken) {
          const obj: any = {
            adminToken: userInfo.adminToken,
            screenToken: '',
          }
          userStore.updateUserInfo(obj)
        }
      }
      userStore.updateUserInfo(obj)
    }
    next()
    return
@@ -58,12 +65,17 @@
  } else {
    if (to.query.token) {
      const token = to.query.token as string
      localStorage.setItem('lastRecordTime', new Date().getTime())
      localStorage.setItem('lastRecordTime', new Date().getTime().toString())
      const obj: any = {
        adminToken: token,
        screenToken: '',
      }
      userStore.updateUserInfo(obj)
      const localUserInfo = localStorage.getItem('userInfo')
      if (localUserInfo) {
        const userInfo = JSON.parse(localUserInfo)
        userStore.updateUserDetail(userInfo)
      }
      // chrome
      document.body.scrollTop = 0
      // firefox
@@ -72,9 +84,43 @@
      window.pageYOffset = 0
      next()
    } else if (!userStore.getAdminToken) {
      // 如果没有,则跳至登录页面
      next({ path: '/loginT' })
      // 从 localStorage 中获取 userInfo 的 adminToken
      const localUserInfo = localStorage.getItem('userInfo')
      if (localUserInfo) {
        try {
          const userInfo = JSON.parse(localUserInfo)
          if (userInfo.adminToken) {
            // 如果获取到 adminToken,则更新 userStore
            userStore.updateUserInfo({
              adminToken: userInfo.adminToken,
              screenToken: userInfo.screenToken || '',
              fullUnitName: userInfo.fullUnitName || '',
              empCode: userInfo.empCode || '',
              menuList: userInfo.menuList || []
            })
            // 同时更新用户详细信息
            userStore.updateUserDetail(userInfo)
            next()
          } else {
            // 如果没有 adminToken,则用户未登录
            next({ path: '/loginT' })
          }
        } catch (error) {
          console.error('解析 localStorage 中的 userInfo 失败:', error)
          // 解析失败,认为用户未登录
          next({ path: '/loginT' })
        }
      } else {
        // 如果没有 userInfo,则用户未登录
        next({ path: '/loginT' })
      }
    } else {
      // 获取用户信息
      const localUserInfo = localStorage.getItem('userInfo')
      if (localUserInfo) {
        const userInfo = JSON.parse(localUserInfo)
        userStore.updateUserDetail(userInfo)
      }
      next()
    }
  }