index.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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: '/phoneLogin',
  19. name: 'phoneLogin',
  20. component: () => import('../views/login/phoneLogin.vue')
  21. },
  22. {
  23. path: '/main',
  24. name: 'main',
  25. component: Layout,
  26. children: []
  27. },
  28. {
  29. path: '/:pathMatch(.*)*', // 捕获所有未匹配路径
  30. name: 'NotFound',
  31. component: () => import('../views/login/login.vue') // 未匹配到路由跳转到登录页面
  32. }
  33. ]
  34. const router = createRouter({
  35. history: createWebHashHistory(),
  36. routes
  37. })
  38. // 添加一个路由守卫
  39. router.beforeEach(async(to,from,next)=>{
  40. console.log('当前to的路由',to)
  41. console.log('当前from的路由',from)
  42. if (to.path === '/') {
  43. // const token = localStorage.getItem('token')
  44. // 查询用户信息
  45. const token = to?.query?.token
  46. const userType = to?.query?.loginRole // 'student' : 'teacher'
  47. if(token){
  48. localStorage.setItem('token',token)
  49. localStorage.setItem('loginRole',userType)
  50. let userInfoRes = await getUserInfo()
  51. console.log("获取用户信息返回",userInfoRes)
  52. if (userInfoRes?.code === 200) {
  53. // 存储用户信息到 localStorage 或 Pinia
  54. localStorage.setItem('userInfo', JSON.stringify(userInfoRes.data))
  55. next('/main')
  56. return
  57. }
  58. }
  59. }
  60. next()
  61. })
  62. export default router