import { createRouter,createWebHistory,RouteRecordRaw } from "vue-router"; //进度条 import NProgress from "nprogress"; import "nprogress/nprogress.css"; import { useUserStoreHook } from '@/utils/pinia/stores/modules/userOrders' const appTokenKey = import.meta.env.VITE_APP_TOKEN_KEY //声明apptoken字符串 NProgress.configure({ showSpinner: false }); // 进度条 // 白名单路由 const whiteList = ["/login"]; /** @ 作者: 秦东 @ 时间: 2024-10-25 08:56:50 @ 功能: 静态路由 */ export const staticRouting : RouteRecordRaw[] = [ { path: '/', component: () => import('@/views/home/index.vue'), meta: { hidden: true }, }, { path: '/login', component: () => import('@/views/login/index.vue'), meta: { hidden: true }, }, { path: '/login/silentlogin', component: () => import('@/views/login/silentlogin.vue'), meta: { hidden: true }, }, { path: '/form_table', component: () => import('@/views/formTable/index.vue'), meta: { hidden: true }, }, { path: '/form_table/taskList', component: () => import('@/views/formTable/myTask.vue'), meta: { hidden: true }, }, { path: '/form_table/taskListPage', component: () => import('@/views/formTable/taskListPage.vue'), meta: { hidden: true }, }, { path: '/form_table/taskInfo', component: () => import('@/views/formTable/taskInfo.vue'), meta: { hidden: true }, }, { path: '/news', component: () => import('@/views/news/index.vue'), meta: { hidden: true }, }, { path: '/app', component: () => import('@/views/app/index.vue'), meta: { hidden: true }, }, { path: '/user', component: () => import('@/views/user/index.vue'), meta: { hidden: true }, } ] // createRouter:创建路由实列,可以管理多个路由 // createWebHistory:创建history模式的路由 const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: staticRouting as RouteRecordRaw[], // 刷新时,滚动条位置还原 scrollBehavior: () => ({ left: 0, top: 0 }), }) //路由执行前检查路由 router.beforeEach(async (to:any, from:any, next:any) => { NProgress.start(); // console.log("路由执行前检查路由---0",appTokenKey) const hasToken = localStorage.getItem(appTokenKey); // if(to.name === "1"){ // next(false) // }else{ // next() // } // console.log("路由执行前检查路由",hasToken,"appTokenKey:",appTokenKey) if (hasToken) { // console.log("路由执行前检查路由---1",hasToken) switch(to.path){ case "/login": // 如果已登录,跳转首页 next({ path: "/" }); NProgress.done(); break; case "/login/silentlogin": next({ path: "/" }); NProgress.done(); break; default: const userStore = useUserStoreHook(); const hasRoles = userStore.userKeying && userStore.userKeying.length > 0; if (hasRoles) { //判断Key是否存在!好判断是否已经登录! if (to.matched.length === 0) { from.name ? next({ name: from.name }) : next("/404"); } else { next(); } } else { try { // const { perms } = await userStore.getInfo(); // const accessRoutes = await permissionStore.generateRoutes(perms); next({ ...to, replace: true }); } catch (error) { // console.error("移除 token 并跳转登录页",error); // 移除 token 并跳转登录页 await userStore.setUserInfoNull(); next(`/login`); NProgress.done(); } } break; } } else { // console.log("路由执行前检查路由---2",hasToken) //未登录的情况下可以访问白名单的数据 if(whiteList.indexOf(to.path) !== -1){ next(); }else{ next(`/login`); NProgress.done(); } } }) /** @ 作者: 秦东 @ 时间: 2024-10-25 09:19:52 @ 功能: 路由执行完毕 */ router.afterEach(() => { NProgress.done(); //关闭进度条! }); //设置标签title // router.afterEach((to, form) => { // document.title = to.meta.title || '项目测试' // }) /** @ 作者: 秦东 @ 时间: 2024-10-23 09:02:10 @ 功能: 重置路由 */ export function resetRouter() { router.replace({ path: "/" }); } export default router