index.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
  2. import type { RouteRecordRaw } from 'vue-router'
  3. import Layout from '@/layout/index.vue'
  4. import {getUserInfo} from '@/api/login.ts'
  5. // 示例路由配置
  6. const routes: Array<RouteRecordRaw> = [
  7. {
  8. path: '/',
  9. name: '',
  10. component: () => import('../views/login/login.vue')
  11. },
  12. {
  13. path: '/login',
  14. name: 'Login',
  15. component: () => import('../views/login/login.vue')
  16. },
  17. {
  18. path: '/main',
  19. name: 'main',
  20. component: Layout,
  21. children: [
  22. {
  23. path: '',
  24. name: 'surveyManagement',
  25. component: () => import('@/views/surveyManagement/SurveyManagement.vue')
  26. },
  27. {
  28. path: 'reviewManagement',
  29. name: 'reviewManagement',
  30. component: () => import('@/views/reviewManagement/ReviewManagement.vue')
  31. },
  32. {
  33. path: 'reviewAnalysis',
  34. name: 'reviewAnalysis',
  35. component: () => import('@/views/reviewAnalysis/ReviewAnalysis.vue')
  36. },
  37. {
  38. path: 'personalCenter',
  39. name: 'personalCenter',
  40. component: () => import('@/views/personalCenter/personalCenter.vue')
  41. },
  42. ]
  43. },
  44. {
  45. path: '/:pathMatch(.*)*', // 捕获所有未匹配路径
  46. name: 'NotFound',
  47. component: () => import('../views/login/login.vue') // 未匹配到路由跳转到登录页面
  48. }
  49. ]
  50. const router = createRouter({
  51. history: createWebHashHistory(),
  52. routes
  53. })
  54. // 添加一个路由守卫
  55. router.beforeEach(async(to,from,next)=>{
  56. console.log('当前to的路由',to)
  57. console.log('当前from的路由',from)
  58. if (to.path === '/') {
  59. // const token = localStorage.getItem('token')
  60. // 查询用户信息
  61. const token = to?.query?.token
  62. const userType = to?.query?.loginRole // 'student' : 'teacher'
  63. if(token){
  64. localStorage.setItem('token',token)
  65. localStorage.setItem('loginRole',userType)
  66. let userInfoRes = await getUserInfo()
  67. console.log("获取用户信息返回",userInfoRes)
  68. if (userInfoRes?.code === 200) {
  69. // 存储用户信息到 localStorage 或 Pinia
  70. localStorage.setItem('userInfo', JSON.stringify(userInfoRes.data))
  71. next('/main')
  72. return
  73. }
  74. }
  75. }
  76. next()
  77. })
  78. export default router