From 09891cea3bd0c4c6182a786c302dc20921f07ccd Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 11 二月 2025 18:01:50 +0800 Subject: [PATCH] 设备结构树: 1、实现点击设备关联NC程序展示文档详细信息、文件内容预览以及文档内容对比功能 2、实现设备层级导入已接收NC程序功能 全局: 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