From 08e52db54ce1e7563f1efe402a3f6c3931188013 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 14 二月 2025 10:47:53 +0800 Subject: [PATCH] 产品结构树: 1、实现文档批量删除功能 2、实现文档列表的排序以及筛选功能 设备结构树: 1、新增权限配置弹窗,提交后由后端测试 --- src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue | 137 +++++++++++++++++++++++++++++++++++---------- 1 files changed, 106 insertions(+), 31 deletions(-) diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue index 492ec83..26a68a1 100644 --- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue +++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentAssignModal.vue @@ -10,13 +10,14 @@ <a-row :gutter="24"> <a-col :md="7" :sm="7"> <a-form-item label="鏂囦欢鍚嶇О"> - <a-input placeholder="璇疯緭鍏ユ枃浠跺悕绉�" v-model="queryParam.docName"></a-input> + <a-input placeholder="璇疯緭鍏ユ枃浠跺悕绉�" v-model="queryParam.docName" allow-clear></a-input> </a-form-item> </a-col> <a-col :md="11" :sm="11"> <a-form-item label="涓婁紶鏃堕棿"> - <a-range-picker v-model="queryParam.collectTime"></a-range-picker> + <a-range-picker v-model="date" value-format="YYYY-MM-DD" + @change="handleDateChange" allow-clear></a-range-picker> </a-form-item> </a-col> @@ -30,6 +31,7 @@ <a-table :columns="columns" :data-source="dataSource" bordered :pagination="false" :loading="loading" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + @change="handleTableChange" :scroll="{y:456}" :size="size" rowKey="docId"> </a-table> @@ -55,10 +57,10 @@ <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> - <span v-else>{{ label }}</span> + <template slot="title" slot-scope="{ title, parentId, entity, key:treeKey,type}"> + <span v-if="title.indexOf(searchValue) > -1">{{ title.substr(0, title.indexOf(searchValue)) }}<span + class="replaceSearch">{{ searchValue }}</span>{{ title.substr(title.indexOf(searchValue) + searchValue.length) }}</span> + <span v-else>{{ title }}</span> </template> </a-tree> </div> @@ -83,6 +85,7 @@ import { getAction } from '@/api/manage' import dncApi from '@/api/dnc' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import { mapActions } from 'vuex' export default { name: 'NcDocumentAssignModal', @@ -112,11 +115,43 @@ return parseInt(index) + 1 } }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center', width: 300 }, + { + title: '鏂囦欢鍚嶇О', + dataIndex: 'docName', + key: 'docName', + align: 'center', + width: 300, + sorter: true + }, { title: '璁惧缂栧彿', dataIndex: 'docCode', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center', width: 200 } + { + title: '鍑哄簱鐘舵��', + dataIndex: 'pullStatus_dictText', + key: 'pullStatus', + align: 'center', + filters: [ + { text: '鏈嚭搴�', value: 1 }, + { text: '宸插嚭搴�', value: 2 } + ] + }, + { + title: '鐘� 鎬�', + dataIndex: 'docStatus_dictText', + key: 'docStatus', + align: 'center', + filters: [ + { text: '璁捐', value: 1 }, + { text: '鍙戝竷', value: 2 }, + { text: '褰掓。', value: 3 } + ] + }, + { + title: '鍒涘缓鏃堕棿', + dataIndex: 'createTime', + align: 'center', + width: 200, + sorter: true + } ], searchValue: '', searchInput: '', @@ -127,6 +162,7 @@ expandedKeys: [], autoExpandParent: true, isExpandAllTreeNode: false, + date: [], url: { list: '/nc/doc/find/list' } @@ -150,6 +186,9 @@ } }, methods: { + ...mapActions(['QueryProduction']), + + // 鑾峰彇褰撳墠宸ュ簭鎴栧伐姝ュ搴旀枃妗e垪琛� loadData() { this.dataSource = [] if (!this.url.list) { @@ -157,14 +196,11 @@ return } var params = this.getQueryParams()//鏌ヨ鏉′欢 - if (!params) { - return false - } + if (!params) return false const { attributionType, attributionId, param } = this.currentDocumentInfo params.attributionType = attributionType params.attributionId = attributionId params.docClassCode = param - console.log('params', params) this.loading = true getAction(this.url.list, params).then((res) => { if (res.success) this.dataSource = res.result @@ -174,16 +210,18 @@ }) }, + // 鑾峰彇DNC璁惧鏍� getDocumentAssignDeviceTreeByApi() { this.spinning = true this.treeDataSource = [] - dncApi.getDocumentAssignDeviceTreeApi(this.currentDocumentInfo) + this.QueryProduction('DNC') .then(res => { if (res.success) { this.dataList = [] this.allTreeKeys = [] - this.treeDataSource = res.list + this.treeDataSource = res.result this.generateList(this.treeDataSource) + this.expandedKeys = this.allTreeKeys } else { this.$message.warn(res.message) } @@ -193,15 +231,42 @@ }) }, + // 鏃堕棿閫夋嫨鍣ㄩ�夋嫨瀹屾垚鍚庤Е鍙� + handleDateChange(value) { + this.queryParam.startTime = value[0] + this.queryParam.endTime = value[1] + }, + + /** + * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂 + * @param pagination 鍒嗛〉鍣ㄩ�夐」 + * @param filters 绛涢�夐�夐」 + * @param sorter 鎺掑簭閫夐」 + */ + handleTableChange(pagination, filters, sorter) { + if (sorter.order) { + this.isorter.column = sorter.field + this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc' + } else { + this.isorter.column = 'createTime' + this.isorter.order = 'desc' + } + for (let key in filters) { + this.filters[key] = filters[key].join(',') + } + this.loadData() + }, + + // 鎸囨淳鍒拌澶囩獥鍙g偣鍑荤‘瀹氭寚娲捐澶囧悗瑙﹀彂 handleAssignDocumentToDevice() { - const { checkedKeys, selectedRowKeys, dataList, $confirm, $notification, currentDocumentInfo, queryParam: { applyReason }, $set } = this - const { publishFileId, attributionId } = currentDocumentInfo + const { checkedKeys, selectedRowKeys, dataList, $confirm, $notification, currentDocumentInfo, queryParam: { applyReason }, $destroyAll, $bus } = this + const { publishFileId, attributionId, attributionType } = currentDocumentInfo const paramsArray = [] - // 杩囨护鍒嗙粍Id浠呮斁鍏ヨ澶嘔d + // 杩囨护杞﹂棿key浠呮斁鍏ヨ澶噆ey const treeCheckedDeviceKeys = [] checkedKeys.forEach(checkedKey => { - const deviceId = dataList.find(item => item.key === checkedKey && item.type === 2) - if (deviceId) treeCheckedDeviceKeys.push(deviceId.key) + const device = dataList.find(item => item.key === checkedKey && item.type === 2) + if (device) treeCheckedDeviceKeys.push(device.key) }) if (treeCheckedDeviceKeys.length === 0 || selectedRowKeys.length === 0) { @@ -218,13 +283,15 @@ okText: '纭', cancelText: '鍙栨秷', onOk: () => { + // 鍙岄噸寰幆纭畾姣忎竴缁勮澶囦笌鏂囨。鐨勫弬鏁� treeCheckedDeviceKeys.forEach(deviceId => { selectedRowKeys.forEach(docId => { paramsArray.push({ docId, deviceId, fileId: publishFileId, - processId: attributionId, + attributionId, + attributionType, applyReason }) }) @@ -234,7 +301,7 @@ dncApi.assignDocumentToDeviceApi(item) .then(res => { if (res.success) { - this.$bus.$emit('reloadMainBottomTableData', 'useDocumentEquipment') + $bus.$emit('reloadMainBottomTableData', 'useDocumentEquipment') $notification.success({ message: '娑堟伅', description: res.message @@ -252,13 +319,15 @@ description: err.message }) }) + .finally(() => { + $destroyAll() + }) }) - console.log('paramsArray', paramsArray) + }, + onCancel: () => { + $destroyAll() } }) - // console.log('table', this.selectedRowKeys) - // console.log('treeCheckedDeviceKeys', treeCheckedDeviceKeys) - // console.log('currentDocumentInfo', this.currentDocumentInfo) }, /* 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙� */ @@ -302,6 +371,11 @@ this.checkedKeys = checkedKeys }, + /** + * 鏍戣妭鐐归�変腑鏃惰Е鍙戯紙妯℃嫙鏍戣妭鐐瑰閫夋閫変腑鏃剁殑鏁堟灉锛� + * @param selectedKeys 閫変腑鑺傜偣key + * @param {node} node 鑺傜偣瀵硅薄 + */ handleTreeNodeSelect(selectedKeys, { node }) { node.$el.childNodes[1].click() }, @@ -330,14 +404,13 @@ /** * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key - * @param data + * @param data 璁惧鏍戞暟鎹� */ generateList(data) { for (let i = 0; i < data.length; i++) { - data[i].key = data[i].id const node = data[i] - const key = node.id - const title = node.label + const key = node.key + const title = node.title const type = node.type this.dataList.push({ key, title, type }) this.allTreeKeys.push(key) @@ -350,6 +423,8 @@ this.expandedKeys = [] this.selectedRowKeys = [] this.checkedKeys = [] + this.filters = {} + this.isorter = Object.assign({}, this.defaultSorter) } } } -- Gitblit v1.9.3