From f2d1b5615b05c002ec63db4df7164c9ed3ecc4a3 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期二, 26 八月 2025 16:42:21 +0800
Subject: [PATCH] 1、优化产品结构树以及设备结构树、列表右键菜单重复右键后出现window菜单问题 2、优化产品结构树节点删除后的loading展示时机 3、优化产品以及设备结构树权限配置获取列表时的loading展示时机

---
 src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue |   64 ++++++++++++++++---------------
 1 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue
index 001b2db..86ab05d 100644
--- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue
+++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue
@@ -1,18 +1,12 @@
 <template>
-  <a-dropdown :trigger="['contextmenu']">
-    <span v-if="treeParams.title.indexOf(treeParams.searchValue) > -1">{{ treeParams.title.substr(0, treeParams.title.indexOf(treeParams.searchValue)) }}<span
-      class="replaceSearch">{{ treeParams.searchValue }}</span>{{ treeParams.title.substr(treeParams.title.indexOf(treeParams.searchValue) + treeParams.searchValue.length) }}</span>
-    <span v-else>{{ treeParams.title }}</span>
-    <template #overlay>
-      <a-menu @click="({ key: menuKey }) => onContextMenuClick(treeParams.treeKey, menuKey)"
-              @contextmenu="event=>event.preventDefault()">
-        <a-menu-item v-for="item in defaultContextMenuList[getCurrentMenuLevel]" :key="item.code" v-has="item.code">
-          <a-icon :type="item.icon"/>
-          {{item.label}}
-        </a-menu-item>
-      </a-menu>
+  <a-menu :style="menuStyle" @click="menuItemClick" v-if="menuVisible" mode="vertical" @contextmenu="menuContextMenu">
+    <template v-for="menuItem in defaultContextMenuList[getCurrentMenuLevel]">
+      <a-menu-item :key="menuItem.code" v-has="menuItem.code">
+        <a-icon :type="menuItem.icon"/>
+        {{ menuItem.label }}
+      </a-menu-item>
     </template>
-  </a-dropdown>
+  </a-menu>
 </template>
 
 <script>
@@ -26,6 +20,15 @@
     },
     data() {
       return {
+        menuVisible: false,
+        menuStyle: {
+          position: 'fixed',
+          top: 0,
+          left: 0,
+          border: '1px solid #eee',
+          boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)',
+          zIndex: 999
+        },
         defaultContextMenuList: {
           //杞﹂棿
           workshop: [
@@ -33,7 +36,7 @@
           ],
           //璁惧
           device: [
-            { label: '瀵煎叆NC鏂囨。', code: 'device_import', icon: 'import', isCommonMethod: true },
+            { label: '瀵煎叆NC鏂囨。', code: 'device_nc_import', icon: 'import', isCommonMethod: true },
             { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
           ]
         }
@@ -41,15 +44,17 @@
     },
     computed: {
       getCurrentMenuLevel() {
-        if (!this.treeParams.equipmentId) return 'workshop'
+        if (this.treeParams.type === 1) return 'workshop'
         else return 'device'
       }
     },
     methods: {
-      onContextMenuClick(treeKey, menuKey) {
+      menuItemClick({ key }) {
+        const menuKey = key
         const level = this.getCurrentMenuLevel
-        const treeNodeInfo = Object.assign({}, this.treeParams)
-        if (treeNodeInfo.equipmentId) treeNodeInfo.type = 4
+        const treeNodeInfo = Object.assign({ treeKey: this.treeParams.key }, this.treeParams)
+        if (treeNodeInfo.type === 2) treeNodeInfo.type = 7
+        // 璁惧缁撴瀯鏍戣妭鐐逛腑鐨勮澶囧眰绾т负2锛屼絾鍦ㄤ骇鍝佺粨鏋勬爲涓皢璁惧灞傜骇鐨則ype璁剧疆涓�7锛屽洜姝ゅ湪姝ゅ璁剧疆涓�7
         const menuKeyArray = menuKey.split('_')
         const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod
         // product_add => handleAdd 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢
@@ -60,21 +65,18 @@
         } else {
           methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).join('')
         }
-        console.log('methodName------------------------------------', methodName)
-        console.log('treeParams------------------------------------', this.treeParams)
         const modalTitle = this.defaultContextMenuList[level].find(item => item.code === menuKey).label
-
         this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo })
+      },
+
+      /**
+       * 閬垮厤鍗曟閲嶅鍙抽敭鍚庡叧闂彍鍗曟垨鎵撳紑window鑿滃崟
+       * @param event 浜嬩欢瀵硅薄
+       */
+      menuContextMenu(event) {
+        event.preventDefault()
+        event.stopPropagation()
       }
     }
   }
-</script>
-
-<style scoped>
-  .replaceSearch {
-    color: #40a9ff;
-    font-weight: bold;
-    background-color: rgb(204, 204, 204);
-  }
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file

--
Gitblit v1.9.3