Files
organization-manage/src/router/index.js
2023-09-27 15:16:08 +08:00

52 lines
1.5 KiB
JavaScript

import { createRouter, createWebHistory } from "vue-router";
import { notFoundAndNoPower, fullScreenRouting, staticRoutes } from "./routes.js";
import { initFrontEndRoutes } from "./frontEnd.js";
import _hook from "@/hooks/index.js";
import { useRoutes } from "@/store/routes.js";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { useUser } from "@/store/user.js";
const router = createRouter({
history: createWebHistory(),
routes: [...notFoundAndNoPower, ...fullScreenRouting, ...staticRoutes],
});
NProgress.configure({ showSpinner: false });
router.beforeEach(async (to, from, next) => {
NProgress.start();
const token = _hook.useLocalStorage.get("token");
const storeUser = useUser();
if (to.path === "/login" && !token) {
next();
NProgress.done();
} else {
if (!token) {
next("/login");
_hook.useLocalStorage.clear();
} else if (token && to.path === "/login") {
next("/home");
NProgress.done();
} else {
const storeRoutes = useRoutes();
if (storeRoutes.routesList.length === 0) {
await initFrontEndRoutes(); // 初始化前端路由
storeRoutes.setNavbar("/home"); // 每次初始化时都添加首页
next({ path: to.path, query: to.query });
NProgress.done();
} else {
storeRoutes.setNavbar(to.path);
next();
NProgress.done();
storeUser.getNotices()
}
}
}
});
router.afterEach((to, from, next) => {
NProgress.done();
});
export default router;