From 9c7505a22f6c249184228de7c6f256a4d880dfed Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 14 三月 2025 09:36:06 +0800
Subject: [PATCH] 1、设备类管理页面完成增删改查功能 2、产品结构树工序及工步层级引入设备类概念由系统参数配置决定是否展示,若设备类存在时则NC文档挂载在设备类下不存在时则按照对应工序或工步层级下 3、产品结构树工序及工步层级的刀具列表实现增删改查功能 4、新增设备类管理页面并完成布局 5、产品结构树接口调整,产品结构树节点实体信息通过点击后调取接口获取 6、产品结构树搜素输入框增加防抖机制,避免每次输入都重新计算消耗性能使页面卡顿 7、新增工序及工步层级的刀具列表并添加系统权限 8、用户管理页面移除新增用户时的密码校验 9、产品结构树各层级属性信息展示由每行3列调整为每行4列 10、产品结构树页面在工序和工步层级实现对设备类的增删改查功能

---
 src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue |  275 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 142 insertions(+), 133 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
index fc878a6..338a3a0 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
@@ -1,14 +1,20 @@
 <template>
   <a-dropdown :trigger="['contextmenu']">
-    <span v-if="treeParams.label.indexOf(treeParams.searchValue) > -1">{{ treeParams.label.substr(0, treeParams.label.indexOf(treeParams.searchValue)) }}<span
-      class="replaceSearch">{{ treeParams.searchValue }}</span>{{ treeParams.label.substr(treeParams.label.indexOf(treeParams.searchValue) + treeParams.searchValue.length) }}</span>
+    <span v-if="treeParams.label.indexOf(treeParams.searchValue) > -1">{{
+        treeParams.label.substr(0, treeParams.label.indexOf(treeParams.searchValue))
+      }}<span
+        class="replaceSearch">{{
+          treeParams.searchValue
+        }}</span>{{
+        treeParams.label.substr(treeParams.label.indexOf(treeParams.searchValue) + treeParams.searchValue.length)
+      }}</span>
     <span v-else>{{ treeParams.label }}</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}}
+          {{ item.label }}
         </a-menu-item>
       </a-menu>
     </template>
@@ -16,141 +22,144 @@
 </template>
 
 <script>
-  export default {
-    name: 'ProductStructureTreeContextMenu',
-    components: {},
-    props: {
-      treeParams: {
-        type: Object
-      }
-    },
-    data() {
-      return {
-        defaultContextMenuList: {
-          //浜у搧
-          product: [
-            { label: '娣诲姞浜у搧', code: 'product_add', icon: 'plus', isCommonMethod: false },
-            { label: '娣诲姞閮ㄤ欢', code: 'product_add_child', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫浜у搧淇℃伅', code: 'product_edit', icon: 'edit', isCommonMethod: false },
-            // {  label: '瀵煎嚭鏂囨。', code: 'product_export', icon: 'export', isCommonMethod: true },
-            { label: '瀵煎叆鍏朵粬鏂囨。', code: 'product_import', icon: 'import', isCommonMethod: true },
-            { label: '鍒犻櫎', code: 'product_delete', icon: 'delete', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ],
-          //閮ㄤ欢
-          component: [
-            { label: '娣诲姞瀛愰儴浠�', code: 'component_add', icon: 'plus', isCommonMethod: false },
-            { label: '娣诲姞闆朵欢', code: 'component_add_child', icon: 'plus', isCommonMethod: false },
-            { label: '鍒涘缓宸ュ簭', code: 'component_add_relative', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫閮ㄤ欢淇℃伅', code: 'component_edit', icon: 'edit', isCommonMethod: false },
-            // {  label: '瀵煎嚭鏂囨。', code: 'component_export', icon: 'export', isCommonMethod: true },
-            { label: '瀵煎叆鍏朵粬鏂囨。', code: 'component_import', icon: 'import', isCommonMethod: true },
-            { label: '鍒犻櫎', code: 'component_delete', icon: 'delete', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ],
-          //闆朵欢
-          part: [
-            { label: '娣诲姞闆朵欢', code: 'parts_add', icon: 'plus', isCommonMethod: false },
-            { label: '鍒涘缓宸ヨ壓瑙勭▼鐗堟湰', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false },
-            // { label: '鍒涘缓宸ュ簭', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫闆朵欢淇℃伅', code: 'parts_edit', icon: 'edit', isCommonMethod: false },
-            // {  label: '瀵煎嚭鏂囨。', code: 'parts_export', icon: 'export', isCommonMethod: true },
-            { label: '瀵煎叆鍏朵粬鏂囨。', code: 'parts_import', icon: 'import', isCommonMethod: true },
-            { label: '鍒犻櫎', code: 'parts_delete', icon: 'delete', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ],
-          //宸ヨ壓瑙勭▼鐗堟湰
-          processSpecVersion: [
-            { label: '鍒涘缓宸ヨ壓瑙勭▼鐗堟湰', code: 'version_add', icon: 'plus', isCommonMethod: false },
-            { label: '鍒涘缓宸ュ簭', code: 'version_add_child', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫宸ヨ壓瑙勭▼鐗堟湰淇℃伅', code: 'version_edit', icon: 'edit', isCommonMethod: false },
-            { label: '鍒犻櫎', code: 'version_delete', icon: 'delete', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ],
-          //宸ュ簭
-          process: [
-            { label: '鍒涘缓宸ュ簭', code: 'process_add', icon: 'plus', isCommonMethod: false },
-            { label: '鍒涘缓宸ユ', code: 'process_add_child', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫宸ュ簭淇℃伅', code: 'process_edit', icon: 'edit', isCommonMethod: false },
-            { label: '鍒犻櫎', code: 'process_delete', icon: 'delete', isCommonMethod: true },
-            // {  label: '瀵煎嚭NC绋嬪簭', code: 'process_export', icon: 'export', isCommonMethod: true },
-            { label: '瀵煎叆NC绋嬪簭', code: 'process_import', icon: 'import', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ],
-          //宸ユ
-          processStep: [
-            { label: '鍒涘缓宸ユ', code: 'processStep_add', icon: 'plus', isCommonMethod: false },
-            { label: '缂栬緫宸ユ淇℃伅', code: 'processStep_edit', icon: 'edit', isCommonMethod: false },
-            { label: '鍒犻櫎', code: 'processStep_delete', icon: 'delete', isCommonMethod: true },
-            // {  label: '瀵煎嚭NC绋嬪簭', code: 'processStep_export', icon: 'import', isCommonMethod: true },
-            { label: '瀵煎叆NC绋嬪簭', code: 'processStep_import', icon: 'import', isCommonMethod: true },
-            { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
-          ]
-        }
-      }
-    },
-    computed: {
-      getCurrentMenuLevel() {
-        switch (this.treeParams.type) {
-          case 1:
-            return 'product'
-          case 2:
-            return 'component'
-          case 3:
-            return 'part'
-          case 4:
-            return 'processSpecVersion'
-          case 5:
-            return 'process'
-          case 6:
-            return 'processStep'
-        }
-      },
-      getCurrentDocClassCode() {
-        switch (this.treeParams.type) {
-          case 1:
-            return 'OTHER'
-          case 2:
-            return 'OTHER'
-          case 3:
-            return 'OTHER'
-          case 5:
-            return 'NC'
-          case 6:
-            return 'NC'
-        }
-      }
-    },
-    methods: {
-      onContextMenuClick(treeKey, menuKey) {
-        const level = this.getCurrentMenuLevel
-        const param = this.getCurrentDocClassCode
-        console.log('level---------------------', level)
-        console.log('param---------------------', param)
-        const treeNodeInfo = Object.assign({}, this.treeParams, { param })
-        console.log('treeNodeInfo******************', treeNodeInfo)
-        const menuKeyArray = menuKey.split('_')
-        const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod
-        // product_add => handleAdd 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢
-        let methodName
-        // 鍒ゆ柇鏄惁涓哄叕鍏辨柟娉曪紝濡傛灉涓哄叕鍏辨柟娉曞垯鎴彇涓撴湁灞炴�roduct/component/part/process绛夊瓧娈�
-        if (isCommonMethod) {
-          methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).slice(1).join('')
-        } else {
-          methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).join('')
-        }
-        const modalTitle = this.defaultContextMenuList[level].find(item => item.code === menuKey).label
-        this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo })
+export default {
+  name: 'ProductStructureTreeContextMenu',
+  components: {},
+  props: {
+    treeParams: {
+      type: Object
+    }
+  },
+  data() {
+    return {
+      defaultContextMenuList: {
+        //浜у搧
+        product: [
+          { label: '娣诲姞浜у搧', code: 'product_add', icon: 'plus', isCommonMethod: false },
+          { label: '娣诲姞閮ㄤ欢', code: 'product_add_child', icon: 'plus', isCommonMethod: false },
+          { label: '缂栬緫浜у搧淇℃伅', code: 'product_edit', icon: 'edit', isCommonMethod: false },
+          // {  label: '瀵煎嚭鏂囨。', code: 'product_export', icon: 'export', isCommonMethod: true },
+          { label: '瀵煎叆鍏朵粬鏂囨。', code: 'product_import', icon: 'import', isCommonMethod: true },
+          { label: '鍒犻櫎', code: 'product_delete', icon: 'delete', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ],
+        //閮ㄤ欢
+        component: [
+          { label: '娣诲姞瀛愰儴浠�', code: 'component_add', icon: 'plus', isCommonMethod: false },
+          { label: '娣诲姞闆朵欢', code: 'component_add_child', icon: 'plus', isCommonMethod: false },
+          { label: '鍒涘缓宸ュ簭', code: 'component_add_relative', icon: 'plus', isCommonMethod: false },
+          { label: '缂栬緫閮ㄤ欢淇℃伅', code: 'component_edit', icon: 'edit', isCommonMethod: false },
+          // {  label: '瀵煎嚭鏂囨。', code: 'component_export', icon: 'export', isCommonMethod: true },
+          { label: '瀵煎叆鍏朵粬鏂囨。', code: 'component_import', icon: 'import', isCommonMethod: true },
+          { label: '鍒犻櫎', code: 'component_delete', icon: 'delete', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ],
+        //闆朵欢
+        part: [
+          { label: '娣诲姞闆朵欢', code: 'parts_add', icon: 'plus', isCommonMethod: false },
+          { label: '鍒涘缓宸ヨ壓瑙勭▼鐗堟湰', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false },
+          // { label: '鍒涘缓宸ュ簭', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false },
+          { label: '缂栬緫闆朵欢淇℃伅', code: 'parts_edit', icon: 'edit', isCommonMethod: false },
+          // {  label: '瀵煎嚭鏂囨。', code: 'parts_export', icon: 'export', isCommonMethod: true },
+          { label: '瀵煎叆鍏朵粬鏂囨。', code: 'parts_import', icon: 'import', isCommonMethod: true },
+          { label: '鍒犻櫎', code: 'parts_delete', icon: 'delete', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ],
+        //宸ヨ壓瑙勭▼鐗堟湰
+        processSpecVersion: [
+          { label: '鍒涘缓宸ヨ壓瑙勭▼鐗堟湰', code: 'version_add', icon: 'plus', isCommonMethod: false },
+          { label: '鍒涘缓宸ュ簭', code: 'version_add_child', icon: 'plus', isCommonMethod: false },
+          { label: '缂栬緫宸ヨ壓瑙勭▼鐗堟湰淇℃伅', code: 'version_edit', icon: 'edit', isCommonMethod: false },
+          { label: '鍒犻櫎', code: 'version_delete', icon: 'delete', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ],
+        //宸ュ簭
+        process: [
+          { label: '鍒涘缓宸ュ簭', code: 'process_add', icon: 'plus', isCommonMethod: false },
+          { label: '鍒涘缓宸ユ', code: 'process_add_child', icon: 'plus', isCommonMethod: false },
+          { label: '娣诲姞璁惧绫�', code: 'process_add_type', icon: 'plus', isCommonMethod: true },
+          { label: '缂栬緫宸ュ簭淇℃伅', code: 'process_edit', icon: 'edit', isCommonMethod: false },
+          { label: '鍒犻櫎', code: 'process_delete', icon: 'delete', isCommonMethod: true },
+          // {  label: '瀵煎嚭NC绋嬪簭', code: 'process_export', icon: 'export', isCommonMethod: true },
+          { label: '瀵煎叆NC绋嬪簭', code: 'process_import', icon: 'import', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ],
+        //宸ユ
+        processStep: [
+          { label: '鍒涘缓宸ユ', code: 'processStep_add', icon: 'plus', isCommonMethod: false },
+          { label: '缂栬緫宸ユ淇℃伅', code: 'processStep_edit', icon: 'edit', isCommonMethod: false },
+          { label: '娣诲姞璁惧绫�', code: 'processStep_add_type', icon: 'plus', isCommonMethod: true },
+          { label: '鍒犻櫎', code: 'processStep_delete', icon: 'delete', isCommonMethod: true },
+          // {  label: '瀵煎嚭NC绋嬪簭', code: 'processStep_export', icon: 'import', isCommonMethod: true },
+          { label: '瀵煎叆NC绋嬪簭', code: 'processStep_import', icon: 'import', isCommonMethod: true },
+          { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
+        ]
       }
     }
+  },
+  computed: {
+    getCurrentMenuLevel() {
+      switch (+this.treeParams.type) {
+        case 1:
+          return 'product'
+        case 2:
+          return 'component'
+        case 3:
+          return 'part'
+        case 4:
+          return 'processSpecVersion'
+        case 5:
+          return 'process'
+        case 6:
+          return 'processStep'
+      }
+    },
+    getCurrentDocClassCode() {
+      switch (+this.treeParams.type) {
+        case 1:
+          return 'OTHER'
+        case 2:
+          return 'OTHER'
+        case 3:
+          return 'OTHER'
+        case 5:
+          return 'NC'
+        case 6:
+          return 'NC'
+      }
+    }
+  },
+  methods: {
+    onContextMenuClick(treeKey, menuKey) {
+      const level = this.getCurrentMenuLevel
+      const param = this.getCurrentDocClassCode
+      console.log('level---------------------', level)
+      console.log('param---------------------', param)
+      const treeNodeInfo = Object.assign({}, this.treeParams, { param })
+      console.log('treeNodeInfo******************', treeNodeInfo)
+      const menuKeyArray = menuKey.split('_')
+      const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod
+      // product_add => handleAdd 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢
+      let methodName
+      // 鍒ゆ柇鏄惁涓哄叕鍏辨柟娉曪紝濡傛灉涓哄叕鍏辨柟娉曞垯鎴彇涓撴湁灞炴�roduct/component/part/process绛夊瓧娈�
+      if (isCommonMethod) {
+        methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).slice(1).join('')
+      } else {
+        methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).join('')
+      }
+      console.log('methodName', methodName)
+      const modalTitle = this.defaultContextMenuList[level].find(item => item.code === menuKey).label
+      this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo })
+    }
   }
+}
 </script>
 
 <style scoped>
-  .replaceSearch {
-    color: #40a9ff;
-    font-weight: bold;
-    background-color: rgb(204, 204, 204);
-  }
+.replaceSearch {
+  color: #40a9ff;
+  font-weight: bold;
+  background-color: rgb(204, 204, 204);
+}
 
 </style>
\ No newline at end of file

--
Gitblit v1.9.3