Эх сурвалжийг харах

fix: 题卡规则阅览bug

zhangjie 6 сар өмнө
parent
commit
92f16cca18

+ 3 - 0
src/modules/card/router.js

@@ -16,5 +16,8 @@ export default [
     name: "CardRulePreview",
     component: () =>
       import(/* webpackChunkName: "card" */ "./views/CardRulePreview.vue"),
+    meta: {
+      privilege: "CardRuleManage",
+    },
   },
 ];

+ 12 - 5
src/router.js

@@ -100,10 +100,16 @@ const router = new Router({
   ],
 });
 
-function getRouteType(routeMatched) {
-  const typeData = routeMatched.find(
+const homeExtraRoutes = ["CardRulePreview"];
+
+function getRouteType(routeData) {
+  let typeData = routeData.matched.find(
     (item) => item.name === "Home" || item.name === "Admin"
   );
+  if (!typeData && homeExtraRoutes.includes(routeData.name)) {
+    return "Home";
+  }
+
   return typeData ? typeData.name : null;
 }
 
@@ -136,8 +142,8 @@ router.beforeEach(async (to, from, next) => {
     return;
   }
 
-  const fromType = getRouteType(from.matched);
-  const toType = getRouteType(to.matched);
+  const fromType = getRouteType(from);
+  const toType = getRouteType(to);
   // 只有超管才可访问Admin
   const isSuperAdmin =
     Vue.ls.get("user", { loginName: "" }).loginName === SYS_ADMIN_NAME;
@@ -160,7 +166,8 @@ router.beforeEach(async (to, from, next) => {
   // console.log(store.state.app.validRoutes);
   // console.log(to.name);
 
-  if (!store.state.app.validRoutes.includes(to.name)) {
+  const toName = to.meta?.privilege ? to.meta.privilege : to.name;
+  if (!store.state.app.validRoutes.includes(toName)) {
     next({ name: "NotFound" });
     return;
   }