65 lines
1.3 KiB
JavaScript
65 lines
1.3 KiB
JavaScript
import { createRouter, createWebHistory } from "vue-router";
|
|
import { routes } from "./routes";
|
|
import { useUserStore } from "@/store/user";
|
|
import { ElMessage } from "element-plus";
|
|
import { useTabStore } from "@/store/tab";
|
|
import NProgress from "nprogress";
|
|
|
|
NProgress.configure({ easing: "ease", speed: 500 });
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(import.meta.env.PUBLIC_SERVER_PATH || "/"),
|
|
routes,
|
|
});
|
|
|
|
router.beforeEach((to) => {
|
|
NProgress?.start?.();
|
|
|
|
const userStore = useUserStore();
|
|
|
|
// if (!userStore.isLogined() && to.path !== "/login") {
|
|
// ElMessage.warning("登录已过期,请先登录");
|
|
// return "/login";
|
|
// }
|
|
|
|
handleTabPath(to);
|
|
|
|
return;
|
|
});
|
|
|
|
router.afterEach(() => {
|
|
NProgress?.done?.();
|
|
});
|
|
|
|
function handleTabPath(to) {
|
|
const path = to.path;
|
|
|
|
if (path === "/login") {
|
|
return;
|
|
}
|
|
|
|
const meta = to.meta;
|
|
const query = to.query;
|
|
|
|
// 处理标签页
|
|
if (meta.title) {
|
|
let displayTitle = meta.title;
|
|
if (query.id) {
|
|
displayTitle = `${meta.title} ${query.id}`;
|
|
}
|
|
|
|
const tabStore = useTabStore();
|
|
|
|
tabStore.addTab({
|
|
path: path,
|
|
fullPath: to.fullPath,
|
|
title: displayTitle,
|
|
params: to.params,
|
|
meta: to.meta,
|
|
query: to.query,
|
|
});
|
|
}
|
|
}
|
|
|
|
export default router;
|