84 lines
2.0 KiB
TypeScript
84 lines
2.0 KiB
TypeScript
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 Dict from "@/views/system/dict/index.vue"; //用户字典
|
|
import GlobalSys from "@/views/system/globalSys/index.vue"; //全局参数
|
|
import { getToken } from "@/utils/auth";
|
|
|
|
const whiteList = ["/callback"];
|
|
|
|
const routes: Array<RouteRecordRaw> = [
|
|
{
|
|
path: "/",
|
|
name: "Login",
|
|
component: Login,
|
|
},
|
|
{
|
|
path: "/callback",
|
|
name: "CallBack",
|
|
component: CallBack,
|
|
},
|
|
{
|
|
path: "/layout",
|
|
name: "Layout",
|
|
component: Layout,
|
|
children: [
|
|
{
|
|
path: "", // 匹配 /layout
|
|
name: "home",
|
|
component: Home,
|
|
},
|
|
{
|
|
path: "role", // 匹配 /layout/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;
|