Forráskód Böngészése

feat: hidden: true时隐藏菜单

louhangfei 11 hónapja
szülő
commit
546b68b6d1
2 módosított fájl, 20 hozzáadás és 3 törlés
  1. 2 2
      mock/login/routers.ts
  2. 18 1
      src/layout/MenuLayout.vue

+ 2 - 2
mock/login/routers.ts

@@ -10,7 +10,7 @@ const list = [
           activeMenu: null,
           alwaysShow: false,
           frameSrc: '',
-          hidden: false,
+          hidden: true,
           icon: 'OverviewIcon',
           isFrame: 0,
           isRoot: false,
@@ -114,7 +114,7 @@ const list = [
               activeMenu: null,
               alwaysShow: false,
               frameSrc: '',
-              hidden: false,
+              hidden: true,
               icon: '',
               isFrame: 0,
               isRoot: false,

+ 18 - 1
src/layout/MenuLayout.vue

@@ -40,8 +40,25 @@
 
   const openKeys = ref<string[]>([]);
 
+  // 将菜单数组过滤掉隐藏的菜单
+  const filterHiddenMenus = (menus: any[]) => {
+    return menus.filter((menu) => !menu.meta?.hidden);
+  };
+
+  function filterHiddenItems(arr: any[]): any[] {
+    return arr.filter((item) => {
+      if (item.meta && item.meta.hidden) {
+        return false;
+      }
+      if (item.children && Array.isArray(item.children)) {
+        item.children = filterHiddenItems(item.children);
+      }
+      return true;
+    });
+  }
+
   const subMenus = computed(() => {
-    return currentRoute.matched[0].children;
+    return filterHiddenItems(currentRoute.matched[0].children);
   });
 
   // 跟随页面路由变化,切换菜单选中状态