From 5c11db14675b3a0f409e8c79e07304f37514b52a Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期六, 26 十一月 2022 21:14:39 +0800
Subject: [PATCH] 添加综合展示,在线制图,资料馆跳转页面功能,修改数据管理,运维管理页面数据获取

---
 src/components/navMenu.vue |  147 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 98 insertions(+), 49 deletions(-)

diff --git a/src/components/navMenu.vue b/src/components/navMenu.vue
index 9825020..a4db331 100644
--- a/src/components/navMenu.vue
+++ b/src/components/navMenu.vue
@@ -8,20 +8,27 @@
     <div class="rightWrapper">
       <div class="rightMenu">
         <ul class="infinite-list menu_ul">
-          <li
-            @click="setMenuMove(index, item)"
-            v-for="(item, index) in listMenu"
-            class="infinite-list-item"
-          >
-            <div
-              class="menuImage"
-              :class="changeSelectStyle == index ? item.checkClass : item.class"
-            ></div>
-            <div
-              class="menulabel"
-              :class="{ changeStyle: changeSelectStyle == index }"
-            >
-              {{ item.label }}
+          <li v-for="(item, index) in listMenu" class="infinite-list-item">
+            <div @click="setMenuMove(index, item)">
+              <div
+                class="menuImage"
+                :class="changeSelectStyle == index ? item.checkClass : item.css"
+              ></div>
+              <div
+                class="menulabel"
+                :class="{ changeStyle: changeSelectStyle == index }"
+              >
+                {{ item.cnName }}
+              </div>
+            </div>
+            <div class="secondMenuDiv" v-show="item.show">
+              <div
+                v-for="res in item.children"
+                @click="setLiClick(res)"
+                :class="{ changeLiStyle: changeliSelect == res.cnName }"
+              >
+                {{ res.cnName }}
+              </div>
             </div>
           </li>
         </ul>
@@ -40,7 +47,7 @@
         </div>
         <color-change></color-change>
       </div>
-
+      <!-- -->
       <!-- <div class="menu"></div>
       <div class="userInfo">
         <img src="../assets/img/user.png" alt="" />
@@ -54,11 +61,13 @@
 </template>
 
 <script>
-import { logout } from '@/api/api';
+import { logout, selectMenuRecursive } from '@/api/api';
 import { removeToken, getToken } from '@/utils/auth';
 import customElMenu from '../components/customElMenu.vue';
 import { queryMenuTree } from '../api/api';
 import colorChange from '../views/maintenance/colorChange.vue';
+import { containsCoordinate } from 'ol/extent';
+import Vue from 'vue';
 export default {
   name: 'navMenu',
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
@@ -86,44 +95,29 @@
       formLabelWidth: '70px',
       count: 5,
       changeSelectStyle: 5,
+      changeliSelect: null,
+      changeSelectdiv: false,
       listMenu: [
         {
-          label: '鏁版嵁璐ㄦ',
-          class: 'm1',
+          cnName: '鏁版嵁璐ㄦ',
+          css: 'm1',
           checkClass: 'm11',
           url: '',
         },
         {
-          label: '鏁版嵁浜ゆ崲',
-          class: 'm2',
+          cnName: '鏁版嵁浜ゆ崲',
+          css: 'm2',
           checkClass: 'm21',
           url: '',
         },
         {
-          label: '鏁版嵁绠$悊',
-          class: 'm3',
-          checkClass: 'm31',
-          url: '',
-        },
-        {
-          label: '鏈嶅姟绠$悊',
-          class: 'm4',
+          cnName: '鏈嶅姟绠$悊',
+          css: 'm4',
           checkClass: 'm41',
           url: '',
         },
-        {
-          label: '缁煎悎灞曠ず',
-          class: 'm5',
-          checkClass: 'm51',
-          url: '',
-        },
-        {
-          label: '杩愮淮绠$悊',
-          class: 'm6',
-          checkClass: 'm61',
-          url: '',
-        },
       ],
+      showFlag: null,
     };
   },
   created() {},
@@ -158,8 +152,36 @@
     },
     //榧犳爣绉诲叆鑿滃崟浜嬩欢
     setMenuMove(index, item) {
-      this.$router.push(item.url);
+      var that = this;
+
+      if (item.perms != null) {
+        this.$router.push(item.url);
+        this.setShowFalseDiv(false);
+        this.changeliSelect = '鍛靛懙';
+        this.showFlag = null;
+      } else {
+        if (this.showFlag != index) {
+          this.showFlag = index;
+          this.setShowFalseDiv(true);
+        } else {
+          let newItem = this.listMenu[index];
+          newItem.show = !this.listMenu[index].show;
+          Vue.set(this.listMenu, index, newItem);
+        }
+      }
+
       this.changeSelectStyle = index;
+    },
+    setShowFalseDiv(bolean) {
+      var index = this.showFlag;
+      let newItem = this.listMenu[index];
+      newItem.show = bolean;
+      Vue.set(this.listMenu, index, newItem);
+    },
+    setLiClick(res) {
+      this.setShowFalseDiv(false);
+      this.changeliSelect = res.cnName;
+      this.$router.push(res.url);
     },
     async getMenuTree() {
       //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
@@ -183,16 +205,18 @@
         }
       }
     },
-    setMenuTree(res) {
-      console.log(res);
-      for (var i = 0; i < res.length; i++) {
-        for (var j = 0; j < this.listMenu.length; j++) {
-          if (this.listMenu[j].label == res[i].cnName) {
-            this.listMenu[j].url = res[i].perms;
-          }
+    async setMenuTree(res) {
+      for (var i in res) {
+        res[i].checkClass = res[i].css + '1';
+        res[i].show = false; //鎺у埗鏄鹃殣
+        if (res[i].perms == null) {
+          const result = await selectMenuRecursive({ name: res[i].cnName });
+          res[i].children = result.result.filter((value) => {
+            return value.pid == res[i].id;
+          });
         }
+        this.listMenu.push(res[i]);
       }
-      console.log(this.listMenu);
     },
     treeData(source) {
       let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
@@ -507,5 +531,30 @@
     color: #2e95fb !important;
     background: linear-gradient(#112f57, #122344) !important;
   }
+  .secondMenuDiv {
+    position: absolute;
+    z-index: 30;
+    margin-top: 10px;
+    border: 1px solid white;
+    border-radius: 5px;
+    div {
+      line-height: 30px;
+
+      background: #303030;
+      padding: 10px;
+
+      font-size: 18px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #ffffff;
+      line-height: 49px;
+      width: 100px;
+    }
+
+    .changeLiStyle {
+      color: #fec801;
+      background: linear-gradient(180deg, #002992, #080472);
+    }
+  }
 }
 </style>

--
Gitblit v1.9.3