2025-06-29 17:22:25 +08:00
|
|
|
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
|
2025-07-04 22:45:22 +08:00
|
|
|
import NProgress from "nprogress"; // progress bar
|
|
|
|
import "nprogress/nprogress.css"; // progress bar style
|
|
|
|
|
2025-06-29 17:22:25 +08:00
|
|
|
import Login from "@/views/login/index.vue"; //登录组件
|
2025-07-01 17:50:27 +08:00
|
|
|
import Layout from "@/views/layout/index.vue"; //首页布局
|
|
|
|
import CallBack from "@/views/login/OauthCallBack.vue"; //反馈页面
|
2025-07-04 22:45:22 +08:00
|
|
|
import Home from "@/views/home/index.vue"; //家
|
|
|
|
import Auth from "@/views/role/pages/Auth.vue"; //权限管理
|
|
|
|
import Menu from '@/views/system/menu/index.vue'; //动态权限菜单
|
2025-07-06 20:45:20 +08:00
|
|
|
import Register from '@/views/login/Register.vue'; //用户注册
|
|
|
|
import Dict from '@/views/system/dict/index.vue'; //用户字典
|
|
|
|
import GlobalSys from '@/views/system/globalSys/index.vue'; //全局参数
|
2025-07-04 22:45:22 +08:00
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
|
|
2025-07-08 20:56:11 +08:00
|
|
|
const whiteList = ["/callback"];
|
2025-06-29 17:22:25 +08:00
|
|
|
|
|
|
|
const routes: Array<RouteRecordRaw> = [
|
|
|
|
{
|
|
|
|
path: "/",
|
|
|
|
name: "Login",
|
|
|
|
component: Login,
|
|
|
|
},
|
2025-07-01 17:50:27 +08:00
|
|
|
{
|
|
|
|
path: "/callback",
|
|
|
|
name: "CallBack",
|
|
|
|
component: CallBack,
|
|
|
|
},
|
2025-07-06 20:45:20 +08:00
|
|
|
{
|
|
|
|
path:'/register',
|
|
|
|
name:'register',
|
|
|
|
component:Register
|
|
|
|
},
|
2025-07-01 17:50:27 +08:00
|
|
|
{
|
|
|
|
path: "/layout",
|
|
|
|
name: "Layout",
|
|
|
|
component: Layout,
|
2025-07-04 22:45:22 +08:00
|
|
|
children: [
|
2025-07-03 20:19:09 +08:00
|
|
|
{
|
2025-07-04 22:45:22 +08:00
|
|
|
path: "",
|
|
|
|
name: "home",
|
|
|
|
component: Home,
|
2025-07-03 20:19:09 +08:00
|
|
|
},
|
|
|
|
// 后续用动态菜单
|
|
|
|
{
|
2025-07-04 22:45:22 +08:00
|
|
|
path: "role",
|
|
|
|
name: "roleAuth",
|
|
|
|
component: Auth,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "menu",
|
|
|
|
name: "menu",
|
|
|
|
component: Menu,
|
|
|
|
},
|
2025-07-06 20:45:20 +08:00
|
|
|
{
|
|
|
|
path:'dict',
|
|
|
|
name:'dict',
|
|
|
|
component:Dict
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path:'globalSys',
|
|
|
|
name:'globalSys',
|
|
|
|
component:GlobalSys
|
|
|
|
}
|
2025-07-04 22:45:22 +08:00
|
|
|
],
|
2025-07-01 17:50:27 +08:00
|
|
|
},
|
2025-06-29 17:22:25 +08:00
|
|
|
];
|
|
|
|
|
|
|
|
const router = createRouter({
|
|
|
|
history: createWebHistory(),
|
|
|
|
routes,
|
|
|
|
});
|
|
|
|
|
|
|
|
router.beforeEach((to, from, next) => {
|
2025-07-04 22:45:22 +08:00
|
|
|
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
|
2025-06-29 17:22:25 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
export default router;
|