| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
- import type { RouteRecordRaw } from 'vue-router'
- import Layout from '@/layout/index.vue'
- import {getUserInfo} from '@/api/login.ts'
- // 示例路由配置
- const routes: Array<RouteRecordRaw> = [
- {
- path: '/',
- name: '',
- redirect:'/main'
- // component: () => import('../views/login/login.vue')
- },
- {
- path: '/login',
- name: 'Login',
- component: () => import('../views/login/login.vue')
- },
- {
- path: '/main',
- name: 'main',
- component: Layout,
- children: [
- {
- path: '',
- name: 'studentEntry', //学生入口
- component: () => import('@/views/studentEntry/StudentEntry.vue')
- },
- {
- path: 'questionnaireTaskListPage',
- name: 'questionnaireTaskListPage', //问卷任务页
- component: () => import('@/views/questionnaireTaskListPage/QuestionnaireTaskListPage.vue')
- },
- {
- path: 'selfQuestionnaireProcess',
- name: 'selfQuestionnaireProcess', //学生个人问卷列表进度页
- component: () => import('@/views/selfQuestionnaireProcess/SelfQuestionnaireProcess.vue')
- },
- {
- path: 'questionnaireCommit',
- name: 'questionnaireCommit', //学生个人问卷填写提交页
- component: () => import('@/views/questionnaireCommit/QuestionnaireCommit.vue')
- },
- ]
- },
- {
- path: '/app',
- name: 'app',
- component: Layout,
- children: [
- {
- path: '',
- name: 'appStudentEntry', //学生入口
- component: () => import('@/views/appView/StudentEntry.vue')
- },
- {
- path: 'questionnaireTaskListPage',
- name: 'appQuestionnaireTaskListPage', //问卷任务页
- component: () => import('@/views/appView/QuestionnaireTaskListPage.vue')
- },
- {
- path: 'questionnaireElectiveSubject',
- name: 'appQuestionnaireElectiveSubject', //问卷选科页
- component: () => import('@/views/appView/QuestionnaireElectiveSubject.vue')
- },
- {
- path: 'selfQuestionnaireProcess',
- name: 'appSelfQuestionnaireProcess', //学生个人问卷列表进度页
- component: () => import('@/views/appView/SelfQuestionnaireProcess.vue')
- },
- {
- path: 'questionnaireCommit',
- name: 'appQuestionnaireCommit', //学生个人问卷填写提交页
- component: () => import('@/views/appView/QuestionnaireCommit.vue')
- },
- ]
- },
- {
- path: '/:pathMatch(.*)*', // 捕获所有未匹配路径
- name: 'NotFound',
- component: () => import('../views/login/login.vue') // 未匹配到路由跳转到登录页面
- }
- ]
- const router = createRouter({
- history: createWebHashHistory(),
- routes
- })
- // 添加一个路由守卫
- router.beforeEach(async(to,from,next)=>{
- console.log('当前to的路由',to)
- console.log('当前from的路由',from)
- if (to.path === '/') {
- // const token = localStorage.getItem('token')
- // 查询用户信息
- // const token = to?.query?.token
- // const userType = to?.query?.loginRole // 'student' : 'teacher'
- const token = localStorage.getItem('token')
- const userType = localStorage.getItem('loginRole') // 'student' : 'teacher'
-
- if(token){
- // localStorage.setItem('token',token)
- // localStorage.setItem('loginRole',userType)
-
- let userInfoRes = undefined
- try{
- userInfoRes = await getUserInfo()
- }catch{}
- console.log("获取用户信息返回",userInfoRes)
- if (userInfoRes?.code === 200) {
- // 存储用户信息到 localStorage 或 Pinia
- localStorage.setItem('userInfo', JSON.stringify(userInfoRes.data))
- next('/main')
- return
- }else{
- localStorage.removeItem('token')
- localStorage.removeItem('userInfo')
- localStorage.removeItem('loginRole')
- }
- }
- }
- next()
- })
- export default router
|