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/common/TableContextMenu.vue | 22 +++ src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue | 11 + src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue | 22 ++ src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue | 8 + src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainBottom.vue | 12 + src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue | 7 src/views/dnc/common/ImportFileModal.vue | 31 +++ src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue | 18 + src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue | 10 + src/views/dnc/base/modules/ProductStructure/Document/OtherDocumentTableList.vue | 14 + /dev/null | 133 ------------------- src/views/dnc/common/DocumentModalForm.vue | 15 - src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue | 50 +++++- src/views/dnc/base/modules/DeviceStructure/DeviceStructureTree.vue | 24 ++ src/views/dnc/base/modules/DeviceStructure/DeviceStructureMain.vue | 4 15 files changed, 197 insertions(+), 184 deletions(-) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMain.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMain.vue index 81ecbcd..fe7a04a 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMain.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMain.vue @@ -53,9 +53,9 @@ receiveCurrentTreeNodeInfo(treeNodeInfo) { // 浠庢爲缁勪欢鎺ュ彈鏍戣妭鐐逛俊鎭悗浠庣埗缁勪欢娴佸叆瀛愮粍浠� this.currentTreeNodeInfo = treeNodeInfo - if (treeNodeInfo.equipmentId) { + if (treeNodeInfo.type === 2) { this.$nextTick(() => { - if (this.$refs.mainTopRef) this.$refs.mainTopRef.loadHasSentDocumentListData() + if (this.$refs.mainTopRef) this.$refs.mainTopRef.releaseLoadDocumentListApi() }) } console.log('currentTreeNodeInfo------------------', this.currentTreeNodeInfo) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainBottom.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainBottom.vue index 308ce66..5de5c43 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainBottom.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainBottom.vue @@ -1,10 +1,10 @@ <template> <a-tabs style="height: 100%" v-model="activeTabKey" @change="handleTabChange"> - <a-tab-pane :key="1" tab="璁惧灞炴��" v-if="currentTreeNodeInfo.equipmentId"> + <a-tab-pane :key="1" tab="璁惧灞炴��" v-if="currentTreeNodeInfo.type===2&&!currentDocumentInfo.docId"> <DeviceInfo :currentLevelDetails="currentTreeNodeInfo.entity" :size="containerSize"/> </a-tab-pane> - <template v-else> + <template v-if="currentDocumentInfo.docId"> <a-tab-pane :key="1" tab="鏂囨。灞炴��"> <DocumentInfo :currentLevelDetails="currentDocumentInfo" :size="containerSize"/> </a-tab-pane> @@ -55,6 +55,14 @@ hasLoadedDataTabKeyArray: [] } }, + watch: { + currentTreeNodeInfo: { + handler(value) { + this.currentDocumentInfo = {} + }, + immediate: true + } + }, created() { this.$bus.$on('sendCurrentClickedDocumentInfo', this.receiveCurrentDocumentInfo) this.$bus.$on('reloadMainBottomTableData', this.reloadMainBottomTableData) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue index d5ae553..b56ba33 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue @@ -1,15 +1,15 @@ <template> - <a-tabs v-model="activeTabKey" @contextmenu.native="e=>e.preventDefault()" + <a-tabs v-model="activeTabKey" @change="handleTabChange" @contextmenu.native="e=>e.preventDefault()" v-if="Object.keys(currentTreeNodeInfo).length!==0"> <a-tab-pane :key="1" tab="鍙戦��"> - <!--<NcDocumentTableList ref="ncDocumentTableListRef" />--> <HasSentDocumentTableList ref="hasSentDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> </a-tab-pane> <a-tab-pane :key="2" tab="鎺ユ敹"> - <!--<OtherDocumentTableList ref="otherDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo"--> - <!--@handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>--> + <HasReceivedDocumentTableList ref="hasReceivedDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" + @handleTableContextMenuOpen="handleTableContextMenuOpen" + :size="tableContainerSize"/> </a-tab-pane> <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> @@ -19,11 +19,12 @@ <script> import dncApi from '@/api/dnc' import TableContextMenu from '../../../common/TableContextMenu' - import HasSentDocumentTableList from './HasSentDocumentTableList' + import HasSentDocumentTableList from './Document/HasSentDocumentTableList' + import HasReceivedDocumentTableList from './Document/HasReceivedDocumentTableList' export default { name: 'DeviceStructureMainTop', - components: { HasSentDocumentTableList, TableContextMenu }, + components: { HasReceivedDocumentTableList, HasSentDocumentTableList, TableContextMenu }, props: { currentTreeNodeInfo: { type: Object @@ -33,7 +34,8 @@ return { activeTabKey: 1, tableContainerSize: 'small', - currentRightClickedTableRowInfo: {} + currentRightClickedTableRowInfo: {}, + hasLoadedDataTabKeyArray: [] } }, created() { @@ -61,8 +63,31 @@ */ loadHasSentDocumentListData(treeNodeInfo) { this.$nextTick(() => { - if (this.$refs.hasSentDocumentTableListRef) this.$refs.hasSentDocumentTableListRef.loadData(1) + if (this.$refs.hasSentDocumentTableListRef) { + this.$refs.hasSentDocumentTableListRef.loadData(1) + this.hasLoadedDataTabKeyArray.push(this.activeTabKey) + } }) + }, + + /** + * tab鏍囩鍒囨崲鏃惰Е鍙� + * @param activeTabKey 褰撳墠宸叉縺娲籺ab鐨刱ey + */ + handleTabChange(activeTabKey) { + this.$bus.$emit('handleSwitchDeviceDocClassCode', activeTabKey) + if (activeTabKey && !this.hasLoadedDataTabKeyArray.includes(activeTabKey)) { + if (activeTabKey === 1) { + this.$nextTick(() => { + if (this.$refs.hasSentDocumentTableListRef) this.$refs.hasSentDocumentTableListRef.loadData(1) + }) + } else { + this.$nextTick(() => { + if (this.$refs.hasReceivedDocumentTableListRef) this.$refs.hasReceivedDocumentTableListRef.loadData(1) + }) + } + this.hasLoadedDataTabKeyArray.push(activeTabKey) + } }, /** @@ -75,6 +100,8 @@ if (this.currentTreeNodeInfo.key !== attributionId) return if (docClassCode === 'SEND') { if (this.$refs.hasSentDocumentTableListRef) this.$refs.hasSentDocumentTableListRef.loadData(1) + } else { + if (this.$refs.hasReceivedDocumentTableListRef) this.$refs.hasReceivedDocumentTableListRef.loadData(1) } }, @@ -223,7 +250,6 @@ }) }, - /** * 鐐瑰嚮鍙戝竷鏃惰Е鍙戝綋鍓嶆枃妗e彂甯� * @param menuLabel @@ -357,6 +383,12 @@ }) }, + // 閲嶇疆tabKey骞朵笖閲婃斁鍔犺浇鏂囨。鍒楄〃鐨勬帴鍙� + releaseLoadDocumentListApi() { + this.hasLoadedDataTabKeyArray = [] + this.handleTabChange(this.activeTabKey) + }, + // 鎺у埗鍙抽敭鑿滃崟鍏抽棴 handleMenuClose() { this.$refs.tableContextMenuRef.menuVisible = false diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTree.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTree.vue index 56c7ec9..f2bb570 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTree.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTree.vue @@ -22,9 +22,9 @@ <a-tree blockNode show-icon :expandedKeys.sync="expandedKeys" :selectedKeys="selectedKeys" :treeData="treeDataSource" :autoExpandParent="autoExpandParent" @select="handleTreeSelect" @expand="handleTreeExpand" @rightClick="handleTreeRightClick"> - <template slot="title" slot-scope="{ title, parentId, entity, key:treeKey,equipmentId}"> + <template slot="title" slot-scope="{ title, parentId, entity, key:treeKey,equipmentId,type}"> <DeviceStructureTreeContextMenu ref="contextMenuRef" - :treeParams="{title,treeKey,searchValue,equipmentId,entity}"/> + :treeParams="{title,treeKey,searchValue,equipmentId,entity,type,param:currentDeviceDocClassCode}"/> </template> <a-icon slot="switcherIcon" type="down"/> @@ -62,6 +62,7 @@ allTreeKeys: [], currentSelected: {}, rightClickSelected: {}, + currentDeviceDocClassCode: 'SEND', url: { delete: '/nc/product/delete' } @@ -70,6 +71,7 @@ created() { this.getTreeDataByApi() this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod) + this.$bus.$on('handleSwitchDeviceDocClassCode', this.setCurrentDeviceDocClassCode) }, methods: { ...mapActions(['QueryProduction']), @@ -94,6 +96,11 @@ }) }, + setCurrentDeviceDocClassCode(documentActiveTabKey) { + if (documentActiveTabKey === 1) this.currentDeviceDocClassCode = 'SEND' + else this.currentDeviceDocClassCode = 'REC' + }, + /** * 鏍戣妭鐐归�変腑鏃惰Е鍙� * @param selectedKeys 閫変腑鑺傜偣key @@ -114,24 +121,25 @@ */ handleTreeRightClick({ event, node }) { const record = node.dataRef + // 鑻ュ彸閿椂褰撳墠鍙充晶灞曠ず灞傜骇涓鸿澶囧眰绾т笖褰撳墠鍙抽敭鏍戝眰绾у悓涓鸿澶囧眰绾ф椂鍒欏湪瑙﹀彂鍙抽敭鑿滃崟鍔熻兘鏃跺悓鏃惰Е鍙戝乏閿�変腑鍔熻兘 + if (this.currentSelected.type === 2 && record.type === 2) this.handleTreeSelect([record.key], { node }) this.rightClickSelected = Object.assign({}, record) }, // 鏍戣妭鐐瑰彸閿崟鍑昏彍鍗曚腑鍒犻櫎鎸夐挳鏃惰Е鍙� handleDelete() { - this.$confirm({ + const that = this + that.$confirm({ title: '鎻愮ず', content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵', okText: '纭', okType: 'danger', cancelText: '鍙栨秷', onOk: () => { - console.log('this.rightClickSelected.id', this.rightClickSelected.id) if (!this.url.delete) { this.$message.error('璇疯缃畊rl.delete灞炴��!') return } - const that = this deleteAction(that.url.delete, { id: this.rightClickSelected.id }) .then((res) => { if (res.success) { @@ -147,6 +155,12 @@ }) } }) + .finally(() => { + that.$destroyAll() + }) + }, + onCancel: () => { + that.$destroyAll() } }) }, diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue index 001b2db..61f72e4 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue @@ -48,8 +48,11 @@ methods: { onContextMenuClick(treeKey, menuKey) { const level = this.getCurrentMenuLevel - const treeNodeInfo = Object.assign({}, this.treeParams) - if (treeNodeInfo.equipmentId) treeNodeInfo.type = 4 + const { param } = this.treeParams + const treeNodeInfo = Object.assign({}, this.treeParams, { param }) + console.log('treeNodeInfo++++++++++++++++++++++++++++', treeNodeInfo) + if (treeNodeInfo.type === 2) treeNodeInfo.type = 4 + // 璁惧缁撴瀯鏍戣妭鐐逛腑鐨勮澶囧眰绾т负2锛屼絾鍦ㄤ骇鍝佺粨鏋勬爲涓皢璁惧灞傜骇鐨則ype璁剧疆涓�4锛屼负淇濊瘉涓や釜缁撴瀯鏍戝叡鐢ㄧ殑鏂规硶鑳芥甯歌繍琛岋紝鍥犳鍦ㄦ澶勫悓鏍疯缃负4 const menuKeyArray = menuKey.split('_') const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod // product_add => handleAdd 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢 diff --git a/src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue similarity index 89% copy from src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue copy to src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue index fa63c2f..b4d946f 100644 --- a/src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue +++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue @@ -12,10 +12,10 @@ <script> import { getAction } from '@/api/manage' import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import DocumentModal from '../../../common/DocumentModal.vue' + import DocumentModal from '../../../../common/DocumentModal.vue' export default { - name: 'HasSentDocumentTableList', + name: 'HasReceivedDocumentTableList', components: { DocumentModal }, mixins: [JeecgListMixin], props: { @@ -55,6 +55,14 @@ } } }, + watch: { + currentTreeNodeInfo: { + handler(value) { + this.currentClickedDocumentInfo = {} + }, + immediate: true + } + }, created() { this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) }, @@ -70,7 +78,7 @@ console.log('currentTreeNodeInfo', this.currentTreeNodeInfo) params.attributionId = this.currentTreeNodeInfo.key params.attributionType = 4 - params.docClassCode = 'SEND' + params.docClassCode = 'REC' if (!params) return false this.dataSource = [] this.loading = true @@ -95,7 +103,7 @@ on: { contextmenu: event => { event.preventDefault() - this.currentRightClickedDocumentInfo = Object.assign({ param: 'SEND' }, record) + this.currentRightClickedDocumentInfo = Object.assign({ param: 'REC' }, record) this.$emit('handleTableContextMenuOpen', this.currentRightClickedDocumentInfo) }, click: () => { @@ -122,7 +130,7 @@ }, triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) { - if (this[methodName] && tableRowInfo.param === 'SEND') this[methodName](tableRowInfo, modalTitle) + if (this[methodName] && tableRowInfo.param === 'REC') this[methodName](tableRowInfo, modalTitle) } } } diff --git a/src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue similarity index 94% rename from src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue rename to src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue index fa63c2f..4272858 100644 --- a/src/views/dnc/base/modules/DeviceStructure/HasReceivedDocumentTableList.vue +++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue @@ -12,7 +12,7 @@ <script> import { getAction } from '@/api/manage' import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import DocumentModal from '../../../common/DocumentModal.vue' + import DocumentModal from '../../../../common/DocumentModal.vue' export default { name: 'HasSentDocumentTableList', @@ -55,6 +55,14 @@ } } }, + watch: { + currentTreeNodeInfo: { + handler(value) { + this.currentClickedDocumentInfo = {} + }, + immediate: true + } + }, created() { this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) }, diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/NcDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/NcDocumentTableList.vue deleted file mode 100644 index 1e80a84..0000000 --- a/src/views/dnc/base/modules/DeviceStructure/Document/NcDocumentTableList.vue +++ /dev/null @@ -1,126 +0,0 @@ -<template> - <div> - <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" - :scroll="{y:189}" :customRow="customRow" :size="size" rowKey="docId" @change="handleTableChange"/> - - <DocumentModal ref="modalForm" @ok="modalFormOk"/> - </div> -</template> - -<script> - import { getAction } from '@/api/manage' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import DocumentModal from '../../../../common/DocumentModal' - - export default { - name: 'NcDocumentTableList', - components: { DocumentModal }, - mixins: [JeecgListMixin], - props: { - currentTreeNodeInfo: { - type: Object - }, - size: { - type: String - } - }, - data() { - return { - disableMixinCreated: true, - columns: [ - { - title: '搴忓彿', - dataIndex: 'rowIndex', - key: 'rowIndex', - width: 65, - align: 'center', - customRender: function(t, r, index) { - return parseInt(index) + 1 - } - }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center' }, - { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, - { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } - ], - dataSource: [], - currentRightClickedDocumentInfo: {}, - currentClickedDocumentInfo: {}, - url: { - list: '/nc/doc/find/page' - } - } - }, - created() { - this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) - }, - methods: { - loadData(arg) { - if (!this.url.list) { - this.$message.error('璇疯缃畊rl.list灞炴��!') - return - } - //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 - if (arg === 1) this.ipagination.current = 1 - var params = this.getQueryParams()//鏌ヨ鏉′欢 - params.attributionId = this.currentTreeNodeInfo.id - params.attributionType = this.currentTreeNodeInfo.type - params.docClassCode = 'NC' - if (!params) return false - this.dataSource = [] - this.loading = true - getAction(this.url.list + `/${this.ipagination.current}/${this.ipagination.pageSize}`, params).then((res) => { - if (res.success) { - this.dataSource = res.result.records - if (res.result.total) { - this.ipagination.total = res.result.total - } else { - this.ipagination.total = 0 - } - } else { - this.$message.warning(res.message) - } - }).finally(() => { - this.loading = false - }) - }, - - customRow(record) { - return { - on: { - contextmenu: event => { - event.preventDefault() - this.currentRightClickedDocumentInfo = Object.assign({ param: 'NC' }, record) - this.$emit('handleTableContextMenuOpen', this.currentRightClickedDocumentInfo) - }, - click: () => { - if (this.currentClickedDocumentInfo.docId === record.docId) return - this.currentClickedDocumentInfo = Object.assign({}, record) - this.$bus.$emit('sendCurrentClickedDocumentInfo', record) - } - } - } - }, - - handleDocumentEdit(record, modalTitle) { - this.$refs.modalForm.edit(record) - this.$refs.modalForm.title = modalTitle - }, - - handleDocumentAssign(record, modalTitle) { - this.$refs.documentAssignModalRef.title = modalTitle - this.$refs.documentAssignModalRef.visible = true - }, - - triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) { - if (this[methodName]) this[methodName](tableRowInfo, modalTitle) - } - } - } -</script> - -<style scoped> - -</style> \ No newline at end of file diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/OtherDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/OtherDocumentTableList.vue deleted file mode 100644 index 242ec75..0000000 --- a/src/views/dnc/base/modules/DeviceStructure/Document/OtherDocumentTableList.vue +++ /dev/null @@ -1,121 +0,0 @@ -<template> - <div> - <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" - :scroll="{y:189}" :customRow="customRow" :size="size" rowKey="docId" @change="handleTableChange"> - - </a-table> - - <DocumentModal ref="modalForm" @ok="modalFormOk"/> - </div> -</template> - -<script> - import { getAction } from '@/api/manage' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import DocumentModal from '../../../../common/DocumentModal' - - export default { - name: 'OtherDocumentTableList', - components: { DocumentModal }, - mixins: [JeecgListMixin], - props: { - currentTreeNodeInfo: { - type: Object - }, - size: { - type: String - } - }, - data() { - return { - disableMixinCreated: true, - columns: [ - { - title: '搴忓彿', - dataIndex: 'rowIndex', - key: 'rowIndex', - width: 65, - align: 'center', - customRender: function(t, r, index) { - return parseInt(index) + 1 - } - }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center' }, - { title: '璁惧缂栧彿', dataIndex: 'docCode', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, - { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } - ], - dataSource: [], - currentDocumentInfo: {}, - url: { - list: '/nc/doc/find/page' - } - } - }, - created() { - this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) - }, - methods: { - loadData(arg) { - if (!this.url.list) { - this.$message.error('璇疯缃畊rl.list灞炴��!') - return - } - //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 - if (arg === 1) this.ipagination.current = 1 - var params = this.getQueryParams()//鏌ヨ鏉′欢 - params.attributionId = this.currentTreeNodeInfo.id - params.attributionType = this.currentTreeNodeInfo.type - params.docClassCode = 'OTHER' - if (!params) return false - this.dataSource = [] - this.loading = true - getAction(this.url.list + `/${this.ipagination.current}/${this.ipagination.pageSize}`, params).then((res) => { - if (res.success) { - this.dataSource = res.result.records - if (res.result.total) { - this.ipagination.total = res.result.total - } else { - this.ipagination.total = 0 - } - } else { - this.$message.warning(res.message) - } - }).finally(() => { - this.loading = false - }) - }, - - customRow(record) { - return { - on: { - contextmenu: event => { - event.preventDefault() - this.$emit('handleTableContextMenuOpen', { ...record, param: 'OTHER' }) - }, - click: () => { - if (this.currentDocumentInfo.docId === record.docId) return - this.currentDocumentInfo = Object.assign({}, record) - this.$bus.$emit('sendCurrentClickedDocumentInfo', record) - } - } - } - }, - - handleDocumentEdit(record, modalTitle) { - this.$refs.modalForm.edit(record) - this.$refs.modalForm.title = modalTitle - }, - - triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) { - if (this[methodName] && tableRowInfo.attributionType === 1) this[methodName](tableRowInfo, modalTitle) - } - } - } -</script> - -<style scoped> - -</style> \ No newline at end of file diff --git a/src/views/dnc/base/modules/DeviceStructure/HasSentDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/HasSentDocumentTableList.vue deleted file mode 100644 index fa63c2f..0000000 --- a/src/views/dnc/base/modules/DeviceStructure/HasSentDocumentTableList.vue +++ /dev/null @@ -1,133 +0,0 @@ -<template> - <div> - <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" - :scroll="{y:189}" :customRow="customRow" :size="size" rowKey="docId" @change="handleTableChange"> - - </a-table> - - <DocumentModal ref="modalForm" @ok="modalFormOk"/> - </div> -</template> - -<script> - import { getAction } from '@/api/manage' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import DocumentModal from '../../../common/DocumentModal.vue' - - export default { - name: 'HasSentDocumentTableList', - components: { DocumentModal }, - mixins: [JeecgListMixin], - props: { - currentTreeNodeInfo: { - type: Object - }, - size: { - type: String - } - }, - data() { - return { - disableMixinCreated: true, - columns: [ - { - title: '搴忓彿', - dataIndex: 'rowIndex', - key: 'rowIndex', - width: 65, - align: 'center', - customRender: function(t, r, index) { - return parseInt(index) + 1 - } - }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center' }, - { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, - { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } - ], - dataSource: [], - currentRightClickedDocumentInfo: {}, - currentClickedDocumentInfo: {}, - url: { - list: '/nc/doc/find/page/device' - } - } - }, - created() { - this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) - }, - methods: { - loadData(arg) { - if (!this.url.list) { - this.$message.error('璇疯缃畊rl.list灞炴��!') - return - } - //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 - if (arg === 1) this.ipagination.current = 1 - var params = this.getQueryParams()//鏌ヨ鏉′欢 - console.log('currentTreeNodeInfo', this.currentTreeNodeInfo) - params.attributionId = this.currentTreeNodeInfo.key - params.attributionType = 4 - params.docClassCode = 'SEND' - if (!params) return false - this.dataSource = [] - this.loading = true - getAction(this.url.list + `/${this.ipagination.current}/${this.ipagination.pageSize}`, params).then((res) => { - if (res.success) { - this.dataSource = res.result.records - if (res.result.total) { - this.ipagination.total = res.result.total - } else { - this.ipagination.total = 0 - } - } else { - this.$message.warning(res.message) - } - }).finally(() => { - this.loading = false - }) - }, - - customRow(record) { - return { - on: { - contextmenu: event => { - event.preventDefault() - this.currentRightClickedDocumentInfo = Object.assign({ param: 'SEND' }, record) - this.$emit('handleTableContextMenuOpen', this.currentRightClickedDocumentInfo) - }, - click: () => { - if (this.currentClickedDocumentInfo.docId === record.docId) return - this.currentClickedDocumentInfo = Object.assign({}, record) - this.$bus.$emit('sendCurrentClickedDocumentInfo', record) - } - } - } - }, - - handleDocumentEdit(record, modalTitle) { - this.$refs.modalForm.edit(record) - this.$refs.modalForm.title = modalTitle - }, - - handleDocumentAssign(record, modalTitle) { - this.$refs.documentAssignModalRef.title = modalTitle - this.$refs.documentAssignModalRef.visible = true - }, - - handleDelete() { - // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓� - }, - - triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) { - if (this[methodName] && tableRowInfo.param === 'SEND') this[methodName](tableRowInfo, modalTitle) - } - } - } -</script> - -<style scoped> - -</style> \ No newline at end of file diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue index d3cd229..ab19d41 100644 --- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue +++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue @@ -59,6 +59,14 @@ } } }, + watch: { + currentTreeNodeInfo: { + handler(value) { + this.currentClickedDocumentInfo = {} + }, + immediate: true + } + }, created() { this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod) }, diff --git a/src/views/dnc/base/modules/ProductStructure/Document/OtherDocumentTableList.vue b/src/views/dnc/base/modules/ProductStructure/Document/OtherDocumentTableList.vue index d305e4e..e73697e 100644 --- a/src/views/dnc/base/modules/ProductStructure/Document/OtherDocumentTableList.vue +++ b/src/views/dnc/base/modules/ProductStructure/Document/OtherDocumentTableList.vue @@ -48,10 +48,18 @@ { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } ], dataSource: [], - currentDocumentInfo: {}, + currentClickedDocumentInfo: {}, url: { list: '/nc/doc/find/page' } + } + }, + watch: { + currentTreeNodeInfo: { + handler(value) { + this.currentClickedDocumentInfo = {} + }, + immediate: true } }, created() { @@ -97,8 +105,8 @@ this.$emit('handleTableContextMenuOpen', { ...record, param: 'OTHER' }) }, click: () => { - if (this.currentDocumentInfo.docId === record.docId) return - this.currentDocumentInfo = Object.assign({}, record) + if (this.currentClickedDocumentInfo.docId === record.docId) return + this.currentClickedDocumentInfo = Object.assign({}, record) this.$bus.$emit('sendCurrentClickedDocumentInfo', record) } } diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue index c19f1d8..0a5eee6 100644 --- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue +++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue @@ -151,19 +151,18 @@ // 鏍戣妭鐐瑰彸閿崟鍑昏彍鍗曚腑鍒犻櫎鎸夐挳鏃惰Е鍙� handleDelete() { - this.$confirm({ + const that = this + that.$confirm({ title: '鎻愮ず', content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵', okText: '纭', okType: 'danger', cancelText: '鍙栨秷', onOk: () => { - console.log('this.rightClickSelected.id', this.rightClickSelected.id) if (!this.url.delete) { this.$message.error('璇疯缃畊rl.delete灞炴��!') return } - const that = this deleteAction(that.url.delete, { id: this.rightClickSelected.id }) .then((res) => { if (res.success) { @@ -179,6 +178,12 @@ }) } }) + .finally(() => { + that.$destroyAll() + }) + }, + onCancel: () => { + that.$destroyAll() } }) }, diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue index 8f3ff1d..68fa9e7 100644 --- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue +++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue @@ -94,12 +94,30 @@ 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 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢 @@ -110,10 +128,8 @@ } else { methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).join('') } - console.log('methodName------------------------------------', methodName) - console.log('treeParams------------------------------------', this.treeParams) const modalTitle = this.defaultContextMenuList[level].find(item => item.code === menuKey).label - this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo: this.treeParams }) + this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo }) } } } diff --git a/src/views/dnc/common/DocumentModalForm.vue b/src/views/dnc/common/DocumentModalForm.vue index 804181d..d6e34da 100644 --- a/src/views/dnc/common/DocumentModalForm.vue +++ b/src/views/dnc/common/DocumentModalForm.vue @@ -58,10 +58,10 @@ validatorRules: { docName: [ { required: true, message: '璇疯緭鍏ユ枃妗e師鍚嶇О!' } - ], + ] }, url: { - edit: '/mdc/mdcPartProcessInfo/edit' + edit: '/nc/doc/edit' } } }, @@ -86,14 +86,9 @@ this.$refs.form.validate(valid => { if (valid) { that.confirmLoading = true - let httpUrl = '' - let method = 'post' - if (!this.model.id) { - httpUrl += this.url.add - } else { - httpUrl += this.url.edit - } - httpAction(httpUrl, this.model, method).then((res) => { + let httpUrl = this.url.edit + let method = 'put' + httpAction(httpUrl + `/${that.model.docId}`, this.model, method).then((res) => { if (res.success) { that.$notification.success({ message: '娑堟伅', diff --git a/src/views/dnc/common/ImportFileModal.vue b/src/views/dnc/common/ImportFileModal.vue index b058e42..e9ae1a0 100644 --- a/src/views/dnc/common/ImportFileModal.vue +++ b/src/views/dnc/common/ImportFileModal.vue @@ -38,7 +38,9 @@ fileList: [], uploadParams: {}, uploading: false, - isUploadMultiple: true + isUploadMultiple: true, + currentDeviceDocClassCode: 'SEND', + currentTitleAfterClass: '' } }, created() { @@ -50,8 +52,9 @@ * 鐐瑰嚮瀵煎叆鏂囨。鎴朜C绋嬪簭鏃惰Е鍙� * @param treeNodeInfo 鐐瑰嚮鏍戣妭鐐瑰彸閿彍鍗曞鍏ョ▼搴忔椂浼犲叆鏍戣妭鐐逛俊鎭� * @param tableRowInfo 鍙抽敭琛ㄦ牸琛屾椂浼犲叆琛屼俊鎭� + * @param modalTitle 寮圭獥鏍囬 */ - handleImport(treeNodeInfo, tableRowInfo) { + handleImport(treeNodeInfo, tableRowInfo, modalTitle) { this.isUploadMultiple = true let attributionId // 鏂囨。鎵�灞炲眰绾d let attributionType // 鏂囨。鎵�灞炲眰绾х被鍨� @@ -59,15 +62,15 @@ if (treeNodeInfo) { attributionId = treeNodeInfo.treeKey attributionType = treeNodeInfo.type - if (attributionType === 5 || attributionType === 6) docClassCode = 'NC' - else if (attributionType === 4) docClassCode = 'SEND' - else docClassCode = 'OTHER' + docClassCode = treeNodeInfo.param } else { attributionId = tableRowInfo.attributionId attributionType = tableRowInfo.attributionType docClassCode = tableRowInfo.param } + this.setModalTitle(modalTitle, docClassCode) this.uploadParams = Object.assign({}, { attributionId, attributionType, docClassCode }) + console.log('uploadParams=====================', this.uploadParams) this.visible = true }, @@ -177,10 +180,26 @@ this.fileList = [] }, + /** + * 璁剧疆寮圭獥鏍囬 + * @param modalTitle 寮圭獥鏍囬 + * @param docClassCode 鏂囨。绫诲瀷 + */ + setModalTitle(modalTitle, docClassCode) { + switch (docClassCode) { + case 'SEND': + this.title = modalTitle + '锛堝彂閫侊級' + break + case 'REC': + this.title = modalTitle + '锛堟帴鏀讹級' + break + } + }, + triggerCorrespondingMethod({ methodName, modalTitle, treeNodeInfo, tableRowInfo }) { if (this[methodName]) { - this[methodName](treeNodeInfo, tableRowInfo) this.title = modalTitle + this[methodName](treeNodeInfo, tableRowInfo, modalTitle) } } } diff --git a/src/views/dnc/common/TableContextMenu.vue b/src/views/dnc/common/TableContextMenu.vue index 6a6385e..9e5b1ec 100644 --- a/src/views/dnc/common/TableContextMenu.vue +++ b/src/views/dnc/common/TableContextMenu.vue @@ -62,6 +62,7 @@ icon: 'hourglass' } ], + //鍏跺畠鏂囨。 OTHER: [ { label: '缂栬緫鏂囨。淇℃伅', code: 'document_edit', subMenu: [], icon: 'edit', isCommonMethod: false }, { label: '瀵煎叆鏂囨。', code: 'document_import', subMenu: [], icon: 'import', isCommonMethod: true }, @@ -81,6 +82,7 @@ icon: 'hourglass' } ], + //宸插彂閫佹枃妗� SEND: [ { label: '缂栬緫鏂囨。淇℃伅', code: 'document_edit', subMenu: [], icon: 'edit', isCommonMethod: false }, { label: '瀵煎叆NC绋嬪簭', code: 'document_import', subMenu: [], icon: 'import', isCommonMethod: true }, @@ -100,6 +102,26 @@ icon: 'hourglass' } ], + //宸叉帴鏀舵枃妗� + REC: [ + { label: '缂栬緫鏂囨。淇℃伅', code: 'document_edit', subMenu: [], icon: 'edit', isCommonMethod: false }, + { label: '瀵煎叆NC绋嬪簭', code: 'document_import', subMenu: [], icon: 'import', isCommonMethod: true }, + { label: '涓嬭浇', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, + { label: '鍒犻櫎', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, + { label: '鎵归噺鍒犻櫎', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: false }, + { + label: '鐢熷懡鍛ㄦ湡', + subMenu: [ + { label: '鍑哄簱', code: 'document_pull', icon: 'export', isCommonMethod: true }, + { label: '鍙栨秷鍑哄簱', code: 'document_cancel_pull', icon: 'stop', isCommonMethod: true }, + { label: '鍏ュ簱', code: 'document_push', icon: 'import', isCommonMethod: true }, + { label: '鍙戝竷', code: 'document_publish', icon: 'flag', isCommonMethod: true }, + { label: '閲嶆柊鍙戝竷', code: 'document_republish', icon: 'reload', isCommonMethod: true }, + { label: '褰掓。', code: 'document_pigeonhole', icon: 'database', isCommonMethod: true } + ], + icon: 'hourglass' + } + ], //鏂囦欢 file: [ { label: '鎸囧畾褰撳墠鐗堟湰', code: 'file_assign', subMenu: [], icon: 'highlight', isCommonMethod: false },//鏂囦欢-鎸囧畾褰撳墠鐗堟湰 -- Gitblit v1.9.3