import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router"; import NProgress from "nprogress"; // progress bar import "nprogress/nprogress.css"; // progress bar style import Login from "@/views/login/index.vue"; //登录组件 import Layout from "@/views/layout/index.vue"; //首页布局 import CallBack from "@/views/login/OauthCallBack.vue"; //反馈页面 import Home from "@/views/home/index.vue"; //家 import Auth from "@/views/role/pages/Auth.vue"; //权限管理 import Menu from '@/views/system/menu/index.vue'; //动态权限菜单 import Register from '@/views/login/Register.vue'; //用户注册 import Dict from '@/views/system/dict/index.vue'; //用户字典 import GlobalSys from '@/views/system/globalSys/index.vue'; //全局参数 import { getToken } from "@/utils/auth"; const whiteList = ["/callback",'/layout/dict','/layout/globalSys']; const routes: Array = [ { path: "/", name: "Login", component: Login, }, { path: "/callback", name: "CallBack", component: CallBack, }, { path:'/register', name:'register', component:Register }, { path: "/layout", name: "Layout", component: Layout, children: [ { path: "", name: "home", component: Home, }, // 后续用动态菜单 { path: "role", name: "roleAuth", component: Auth, }, { path: "menu", name: "menu", component: Menu, }, { path:'dict', name:'dict', component:Dict }, { path:'globalSys', name:'globalSys', component:GlobalSys } ], }, ]; const router = createRouter({ history: createWebHistory(), routes, }); router.beforeEach((to, from, next) => { const token = getToken(); NProgress.start(); if (to.path === "/") { token ? next("/callback") : next(); // 有 token 直接去 /layout } else if (whiteList.includes(to.path)) { next(); // 放行 /callback } else { token ? next() : next("/"); // 其他页面检查 token } }); router.afterEach(() => { NProgress.done(); // finish progress bar }); export default router;