From 66d1227cd753d6d747b1cc54be1e5898d9d662c8 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期三, 27 八月 2025 20:13:43 +0800
Subject: [PATCH] 设备结构树模块指派NC文件到产品中的产品结构树展开选中节点下的所有子项功能

---
 src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentAssignModal.vue |   54 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentAssignModal.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentAssignModal.vue
index f640e40..07e7ef2 100644
--- a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentAssignModal.vue
+++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentAssignModal.vue
@@ -45,14 +45,17 @@
 
       <div style="width: 26%">
         <a-tabs>
-          <a-tab-pane tab="璁惧鍒楄〃">
+          <a-tab-pane tab="浜у搧鍒楄〃">
             <a-spin :spinning="spinning">
               <div style="display: flex;flex-direction: column;">
                 <div style="display: flex">
                   <a-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" allowClear v-model="searchInput"
                            @change="handleSearchInputChange"/>
-                  <a-button type="primary" @click="isExpandAllTreeNode=!isExpandAllTreeNode" style="margin: 0 8px">
-                    灞曞紑/鎶樺彔
+                  <a-button type="primary" @click="expandCurrentActiveTreeNodeSon" style="margin: 0 8px"
+                            :disabled="!currentActiveTreeNode.children||(currentActiveTreeNode.children&&currentActiveTreeNode.children.length===0)">
+                    <span v-if="!expandedKeys.includes(currentActiveTreeNode.id)">灞曞紑</span>
+                    <span v-else>鎶樺彔</span>
+                    褰撳墠鑺傜偣
                   </a-button>
                 </div>
 
@@ -62,6 +65,7 @@
                           :autoExpandParent="autoExpandParent" @select="handleTreeNodeSelect" checkStrictly
                           :treeData="treeDataSource" @check="handleTreeNodeCheck" @expand="handleTreeNodeExpand">
                     <template slot="title" slot-scope="{ label, parentId, entity, key:treeKey,type}">
+                      <!--nc鏂囦欢灞傜骇-->
                       <a-tooltip :title="label" v-if="type==99">
                           <span v-if="label.indexOf(searchValue) > -1">
                       {{ label.substr(0, label.indexOf(searchValue)) }}
@@ -70,6 +74,8 @@
                     </span>
                         <span v-else>{{ label }}</span>
                       </a-tooltip>
+
+                      <!--闈炴枃浠跺眰绾�-->
                       <template v-else>
                          <span v-if="label.indexOf(searchValue) > -1">
                       {{ label.substr(0, label.indexOf(searchValue)) }}
@@ -187,6 +193,7 @@
         autoExpandParent: true,
         isExpandAllTreeNode: false,
         confirmLoading: false,
+        currentActiveTreeNode: {},
         date: [],
         url: {
           list: '/nc/doc/find/list'
@@ -412,12 +419,10 @@
 
       /**
        * 鏍戣妭鐐瑰閫夋閫変腑鏃惰Е鍙�
-       * @param selectedKeys 閫変腑鑺傜偣key
+       * @param checkedObj 閫変腑鑺傜偣瀵硅薄
        * @param {node} node 鑺傜偣瀵硅薄
        */
       handleTreeNodeCheck(checkedObj, { node }) {
-        console.log('checkedObj', checkedObj)
-        console.log('node', node.dataRef)
         let record = node.dataRef
         if (record.type !== 99) return
         this.checkedKeys = checkedObj.checked.slice(-1)
@@ -429,7 +434,40 @@
        * @param {node} node 鑺傜偣瀵硅薄
        */
       handleTreeNodeSelect(selectedKeys, { node }) {
+        const record = node.dataRef
         node.$el.childNodes[1].click()
+        if (this.currentActiveTreeNode.key === record.key) {
+          this.currentActiveTreeNode = {}
+          return
+        }
+        this.currentActiveTreeNode = Object.assign({}, record)
+      },
+
+      // 灞曞紑褰撳墠閫変腑鏍戣妭鐐逛笅鎵�鏈夊瓙椤�
+      expandCurrentActiveTreeNodeSon() {
+        const activeNode = this.currentActiveTreeNode
+        const sonKeys = this.getCurrentTreeNodeSonKeys(activeNode)
+        if (!this.expandedKeys.includes(activeNode.id)) {
+          this.expandedKeys = [...this.expandedKeys, this.currentActiveTreeNode.id, ...sonKeys]
+        } else {
+          this.expandedKeys = this.expandedKeys.filter(expandKey => !sonKeys.includes(expandKey) && expandKey !== activeNode.id)
+        }
+      },
+
+      /**
+       * 閫掑綊鑾峰彇閫変腑鑺傜偣鎵�鏈夊瓙鑺傜偣key
+       * @param treeNode 鏍戣妭鐐�
+       */
+      getCurrentTreeNodeSonKeys(treeNode) {
+        let sonKeys = []
+        if (treeNode.children && treeNode.children.length > 0) {
+          for (let index = 0; index < treeNode.children.length; index++) {
+            const node = treeNode.children[index]
+            sonKeys.push(node.id)
+            sonKeys = [...sonKeys, ...this.getCurrentTreeNodeSonKeys(node)]
+          }
+        }
+        return sonKeys
       },
 
       /**
@@ -455,7 +493,7 @@
 
       /**
        * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key
-       * @param data 璁惧鏍戞暟鎹�
+       * @param data 鏍戞暟鎹�
        */
       generateList(data) {
         for (let i = 0; i < data.length; i++) {
@@ -502,7 +540,7 @@
         this.searchInput = this.searchValue = ''
         this.expandedKeys = []
         this.selectedRowKeys = []
-        this.selectionRows = {}
+        this.selectionRows = this.currentActiveTreeNode = {}
         this.checkedKeys = []
         this.filters = {}
         this.isorter = Object.assign({}, this.defaultSorter)

--
Gitblit v1.9.3