From 0e9500211e1a10a94dbca72e754cc5cf7eb16e3d Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期六, 08 二月 2025 13:53:12 +0800
Subject: [PATCH] 产品结构树: 1、调整权限配置分配部门树组件逻辑

---
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue |  104 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 83 insertions(+), 21 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue
index f00bfda..492ec83 100644
--- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue
@@ -45,22 +45,16 @@
                 <div style="display: flex">
                   <a-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" allowClear v-model="searchInput"
                            @change="handleSearchInputChange"/>
-                  <a-dropdown :trigger="['click']" placement="bottomCenter" style="margin: 0 8px">
-                    <a-menu slot="overlay">
-                      <a-menu-item key="1" @click="expandedKeys = allTreeKeys">灞曞紑鎵�鏈�</a-menu-item>
-                      <a-menu-item key="2" @click="expandedKeys = []">鍚堝苟鎵�鏈�</a-menu-item>
-                    </a-menu>
-                    <a-button>
-                      <a-icon type="bars"/>
-                    </a-button>
-                  </a-dropdown>
+                  <a-button type="primary" @click="isExpandAllTreeNode=!isExpandAllTreeNode" style="margin: 0 8px">
+                    灞曞紑/鎶樺彔
+                  </a-button>
                 </div>
 
                 <!--浜у搧缁撴瀯鏍�-->
                 <div style="overflow:auto;margin-top: 10px;height: 400px">
-                  <a-tree ref="tree" checkable :checkedKeys="checkedKeys" :expandedKeys.sync="expandedKeys"
-                          :autoExpandParent="autoExpandParent"
-                          :treeData="treeDataSource" @check="handleTreeNodeCheck" @expand="handleTreeExpand">
+                  <a-tree blockNode checkable :checkedKeys="checkedKeys" :expandedKeys.sync="expandedKeys"
+                          :autoExpandParent="autoExpandParent" @select="handleTreeNodeSelect"
+                          :treeData="treeDataSource" @check="handleTreeNodeCheck" @expand="handleTreeNodeExpand">
                     <template slot="title" slot-scope="{ label, parentId, entity, key:treeKey,type}">
                      <span v-if="label.indexOf(searchValue) > -1">{{ label.substr(0, label.indexOf(searchValue)) }}<span
                        class="replaceSearch">{{ searchValue }}</span>{{ label.substr(label.indexOf(searchValue) + searchValue.length) }}</span>
@@ -89,11 +83,10 @@
   import { getAction } from '@/api/manage'
   import dncApi from '@/api/dnc'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-  import ATextarea from 'ant-design-vue/es/input/TextArea'
 
   export default {
     name: 'NcDocumentAssignModal',
-    components: { ATextarea },
+    components: {},
     mixins: [JeecgListMixin],
     props: {
       currentDocumentInfo: {
@@ -133,6 +126,7 @@
         checkedKeys: [],
         expandedKeys: [],
         autoExpandParent: true,
+        isExpandAllTreeNode: false,
         url: {
           list: '/nc/doc/find/list'
         }
@@ -146,6 +140,12 @@
             this.loadData()
             this.getDocumentAssignDeviceTreeByApi()
           }
+        }
+      },
+      isExpandAllTreeNode: {
+        handler(value) {
+          if (value) this.expandedKeys = this.allTreeKeys
+          else this.expandedKeys = []
         }
       }
     },
@@ -161,7 +161,6 @@
           return false
         }
         const { attributionType, attributionId, param } = this.currentDocumentInfo
-        console.log('currentDocumentInfo', this.currentDocumentInfo)
         params.attributionType = attributionType
         params.attributionId = attributionId
         params.docClassCode = param
@@ -195,15 +194,71 @@
       },
 
       handleAssignDocumentToDevice() {
-        const param = {}
-        console.log('table', this.selectedRowKeys)
+        const { checkedKeys, selectedRowKeys, dataList, $confirm, $notification, currentDocumentInfo, queryParam: { applyReason }, $set } = this
+        const { publishFileId, attributionId } = currentDocumentInfo
+        const paramsArray = []
+        // 杩囨护鍒嗙粍Id浠呮斁鍏ヨ澶嘔d
         const treeCheckedDeviceKeys = []
-        this.checkedKeys.forEach(checkedKey => {
-          const deviceId = this.dataList.find(item => item.key === checkedKey && item.type === 2)
+        checkedKeys.forEach(checkedKey => {
+          const deviceId = dataList.find(item => item.key === checkedKey && item.type === 2)
           if (deviceId) treeCheckedDeviceKeys.push(deviceId.key)
         })
 
-        console.log('treeCheckedDeviceKeys', treeCheckedDeviceKeys)
+        if (treeCheckedDeviceKeys.length === 0 || selectedRowKeys.length === 0) {
+          $notification.warning({
+            message: '娑堟伅',
+            description: '璇烽�夋嫨璁惧鎴栨枃妗�'
+          })
+          return
+        }
+
+        $confirm({
+          title: '鎻愮ず',
+          content: `纭鎻愪氦鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            treeCheckedDeviceKeys.forEach(deviceId => {
+              selectedRowKeys.forEach(docId => {
+                paramsArray.push({
+                  docId,
+                  deviceId,
+                  fileId: publishFileId,
+                  processId: attributionId,
+                  applyReason
+                })
+              })
+            })
+
+            paramsArray.forEach(item => {
+              dncApi.assignDocumentToDeviceApi(item)
+                .then(res => {
+                  if (res.success) {
+                    this.$bus.$emit('reloadMainBottomTableData', 'useDocumentEquipment')
+                    $notification.success({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                  } else {
+                    $notification.error({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  $notification.error({
+                    message: '娑堟伅',
+                    description: err.message
+                  })
+                })
+            })
+            console.log('paramsArray', paramsArray)
+          }
+        })
+        // console.log('table', this.selectedRowKeys)
+        // console.log('treeCheckedDeviceKeys', treeCheckedDeviceKeys)
+        // console.log('currentDocumentInfo', this.currentDocumentInfo)
       },
 
       /* 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙� */
@@ -232,7 +287,7 @@
        * 鏍戣妭鐐瑰睍寮�鍚堝苟鏃惰Е鍙�
        * @param expandedKeys 灞曞紑椤筴ey
        */
-      handleTreeExpand(expandedKeys) {
+      handleTreeNodeExpand(expandedKeys) {
         this.expandedKeys = expandedKeys
         this.autoExpandParent = false
       },
@@ -245,6 +300,10 @@
       handleTreeNodeCheck(checkedKeys, { node }) {
         let record = node.dataRef
         this.checkedKeys = checkedKeys
+      },
+
+      handleTreeNodeSelect(selectedKeys, { node }) {
+        node.$el.childNodes[1].click()
       },
 
       /**
@@ -311,4 +370,7 @@
 
   }
 
+  ::-webkit-scrollbar {
+    width: 8px;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3