| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- // 路由懒加载减少首屏体积;没有权限时返回工作台,后端仍会阻止直接请求越权接口。
- import { createRouter, createWebHistory } from "vue-router";
- import { useSession } from "./store";
- import { tokens } from "./api";
- const router = createRouter({
- history: createWebHistory(),
- routes: [
- {
- path: "/login",
- component: () => import("./views/LoginView.vue"),
- meta: { title: "登录", public: true },
- },
- {
- path: "/",
- component: () => import("./views/DashboardView.vue"),
- meta: { title: "审计工作台" },
- },
- {
- path: "/reimbursements",
- component: () => import("./views/ReimbursementView.vue"),
- meta: { title: "报销管理" },
- },
- {
- path: "/reimbursements/:id",
- component: () => import("./views/ReimbursementDetail.vue"),
- meta: { title: "报销详情" },
- },
- {
- path: "/audits",
- component: () => import("./views/AuditList.vue"),
- meta: { title: "审核任务" },
- },
- {
- path: "/audits/:id",
- component: () => import("./views/AuditDetail.vue"),
- meta: { title: "审核结果" },
- },
- {
- path: "/approvals",
- component: () => import("./views/ApprovalView.vue"),
- meta: { title: "审批待办", level: 1 },
- },
- {
- path: "/agents",
- component: () => import("./views/AgentView.vue"),
- meta: { title: "Agent 管理", level: 2 },
- },
- {
- path: "/rules",
- component: () => import("./views/RuleView.vue"),
- meta: { title: "审计规则", level: 2 },
- },
- {
- path: "/knowledge",
- component: () => import("./views/KnowledgeView.vue"),
- meta: { title: "政策知识库" },
- },
- {
- path: "/chains",
- component: () => import("./views/ChainView.vue"),
- meta: { title: "审批链", level: 3 },
- },
- {
- path: "/alerts",
- component: () => import("./views/AlertView.vue"),
- meta: { title: "异常告警", level: 1 },
- },
- {
- path: "/logs",
- component: () => import("./views/LogView.vue"),
- meta: { title: "审计日志", level: 2 },
- },
- {
- path: "/users",
- component: () => import("./views/UserView.vue"),
- meta: { title: "用户与部门", level: 3 },
- },
- { path: "/:pathMatch(.*)*", redirect: "/" },
- ],
- });
- router.beforeEach(async (to) => {
- const session = useSession();
- if (to.meta.public) return true;
- if (!tokens().access_token)
- return { path: "/login", query: { redirect: to.fullPath } };
- if (!session.loaded || !session.user) {
- try {
- await session.load();
- } catch {
- return "/login";
- }
- }
- if (session.level < Number(to.meta.level || 0)) return "/";
- return true;
- });
- export default router;
|