index.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. redirect:'/main'
  11. // component: () => import('../views/login/login.vue')
  12. },
  13. {
  14. path: '/login',
  15. name: 'Login',
  16. component: () => import('../views/login/login.vue')
  17. },
  18. {
  19. path: '/main',
  20. name: 'main',
  21. component: Layout,
  22. children: [
  23. {
  24. path: '',
  25. name: 'studentEntry', //学生入口
  26. component: () => import('@/views/studentEntry/StudentEntry.vue')
  27. },
  28. {
  29. path: 'questionnaireTaskListPage',
  30. name: 'questionnaireTaskListPage', //问卷任务页
  31. component: () => import('@/views/questionnaireTaskListPage/QuestionnaireTaskListPage.vue')
  32. },
  33. {
  34. path: 'selfQuestionnaireProcess',
  35. name: 'selfQuestionnaireProcess', //学生个人问卷列表进度页
  36. component: () => import('@/views/selfQuestionnaireProcess/SelfQuestionnaireProcess.vue')
  37. },
  38. {
  39. path: 'questionnaireCommit',
  40. name: 'questionnaireCommit', //学生个人问卷填写提交页
  41. component: () => import('@/views/questionnaireCommit/QuestionnaireCommit.vue')
  42. },
  43. ]
  44. },
  45. {
  46. path: '/app',
  47. name: 'app',
  48. component: Layout,
  49. children: [
  50. {
  51. path: '',
  52. name: 'appStudentEntry', //学生入口
  53. component: () => import('@/views/appView/StudentEntry.vue')
  54. },
  55. {
  56. path: 'questionnaireTaskListPage',
  57. name: 'appQuestionnaireTaskListPage', //问卷任务页
  58. component: () => import('@/views/appView/QuestionnaireTaskListPage.vue')
  59. },
  60. {
  61. path: 'questionnaireElectiveSubject',
  62. name: 'appQuestionnaireElectiveSubject', //问卷选科页
  63. component: () => import('@/views/appView/QuestionnaireElectiveSubject.vue')
  64. },
  65. {
  66. path: 'selfQuestionnaireProcess',
  67. name: 'appSelfQuestionnaireProcess', //学生个人问卷列表进度页
  68. component: () => import('@/views/appView/SelfQuestionnaireProcess.vue')
  69. },
  70. {
  71. path: 'questionnaireCommit',
  72. name: 'appQuestionnaireCommit', //学生个人问卷填写提交页
  73. component: () => import('@/views/appView/QuestionnaireCommit.vue')
  74. },
  75. ]
  76. },
  77. {
  78. path: '/:pathMatch(.*)*', // 捕获所有未匹配路径
  79. name: 'NotFound',
  80. component: () => import('../views/login/login.vue') // 未匹配到路由跳转到登录页面
  81. }
  82. ]
  83. const router = createRouter({
  84. history: createWebHashHistory(),
  85. routes
  86. })
  87. // 添加一个路由守卫
  88. router.beforeEach(async(to,from,next)=>{
  89. console.log('当前to的路由',to)
  90. console.log('当前from的路由',from)
  91. if (to.path === '/') {
  92. // const token = localStorage.getItem('token')
  93. // 查询用户信息
  94. // const token = to?.query?.token
  95. // const userType = to?.query?.loginRole // 'student' : 'teacher'
  96. const token = localStorage.getItem('token')
  97. const userType = localStorage.getItem('loginRole') // 'student' : 'teacher'
  98. if(token){
  99. // localStorage.setItem('token',token)
  100. // localStorage.setItem('loginRole',userType)
  101. let userInfoRes = undefined
  102. try{
  103. userInfoRes = await getUserInfo()
  104. }catch{}
  105. console.log("获取用户信息返回",userInfoRes)
  106. if (userInfoRes?.code === 200) {
  107. // 存储用户信息到 localStorage 或 Pinia
  108. localStorage.setItem('userInfo', JSON.stringify(userInfoRes.data))
  109. next('/main')
  110. return
  111. }else{
  112. localStorage.removeItem('token')
  113. localStorage.removeItem('userInfo')
  114. localStorage.removeItem('loginRole')
  115. }
  116. }
  117. }
  118. next()
  119. })
  120. export default router