guhongwei 5 년 전
부모
커밋
e2fa92310d
2개의 변경된 파일35개의 추가작업 그리고 7개의 파일을 삭제
  1. 34 7
      src/layout/layout-part/menus.vue
  2. 1 0
      src/layout/layout-part/top-menu.vue

+ 34 - 7
src/layout/layout-part/menus.vue

@@ -1,12 +1,7 @@
 <template>
   <div id="menus">
     <el-menu :default-active="activeMenu" active-text-color="#850000" @select="changeMenu">
-      <el-menu-item
-        v-for="(item, index) in menuList"
-        :key="index"
-        :index="item.path"
-        :style="`${activeMenu === item.path ? 'border-left:2px solid #850000' : ''}`"
-      >
+      <el-menu-item v-for="(item, index) in list" :key="index" :index="item.path" :style="`${activeMenu === item.path ? 'border-left:2px solid #850000' : ''}`">
         <span slot="title">{{ item.name }}</span>
       </el-menu-item>
     </el-menu>
@@ -22,8 +17,11 @@ export default {
   },
   data: () => ({
     activeMenu: '',
+    list: [],
   }),
-  created() {},
+  created() {
+    this.getMenu();
+  },
   mounted() {
     this.getPage();
   },
@@ -36,6 +34,35 @@ export default {
     },
   },
   methods: {
+    getMenu() {
+      let route = this.$route.path;
+      let menu = sessionStorage.getItem('menu');
+      if (menu) {
+        menu = JSON.parse(menu);
+        let res = menu.filter(fil => {
+          if (fil.path === route) return;
+          else {
+            let is_this = false;
+            if (fil.children) {
+              for (const item of fil.children) {
+                if (item.path === route) {
+                  is_this = true;
+                  break;
+                }
+              }
+            }
+            return is_this;
+          }
+        });
+        if (res.length > 0) {
+          let this_menu = res[0];
+          if (this_menu.children.length > 0) {
+            this_menu = this_menu.children;
+          }
+          this.$set(this, `list`, this_menu);
+        }
+      }
+    },
     changeMenu(val) {
       this.$router.push({ path: val });
       this.$set(this, `activeMenu`, val);

+ 1 - 0
src/layout/layout-part/top-menu.vue

@@ -97,6 +97,7 @@ export default {
           if (index > -1) fMenu[index].children.push(item);
         });
         this.$set(this, `menu`, fMenu);
+        sessionStorage.setItem('menu', JSON.stringify(fMenu));
       }
       result = await this.siteOperation({ type: 'search', data: { site: site } });
       sessionStorage.setItem('site', JSON.stringify(result.data));