From 86f0166e2a759e6ec2c34b0dd0b388bafa80cedd Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期二, 15 七月 2025 19:41:12 +0800
Subject: [PATCH] 数据报表页面数据列设置固定宽度

---
 src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue |  174 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 133 insertions(+), 41 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
index 4dcd066..e0d1f7d 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
@@ -1,10 +1,19 @@
 <template>
-  <div v-if="currentTreeNodeInfo.type!==4">
+  <div>
     <a-tabs v-model="activeTabKey" @contextmenu.native="e=>e.preventDefault()" @change="handleTabChange"
             v-if="Object.keys(currentTreeNodeInfo).length!==0">
-      <a-tab-pane :key="1" tab="NC鏂囨。" v-if="currentTreeNodeInfo.type===5||currentTreeNodeInfo.type===6">
-        <NcDocumentTableList ref="ncDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo"
-                             @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
+      <a-tab-pane :key="1" tab="NC绠$悊" v-if="+currentTreeNodeInfo.type===5||+currentTreeNodeInfo.type===6">
+        <div style="display: flex;">
+          <!--绯荤粺鍙傛暟閰嶇疆涓嫢鍙傛暟涓�1鏃舵墠灞曠ず瀵瑰簲灞傜骇鐨勮澶囩被鍒楄〃-->
+          <DeviceCustomTypeTableList
+            v-if="+currentTreeNodeInfo.type===5&&isProcessHasDeviceTypeList||+currentTreeNodeInfo.type===6&&isProcessStepHasDeviceTypeList"
+            ref="deviceCustomTypeTableList" :currentTreeNodeInfo="currentTreeNodeInfo"
+            @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
+
+          <NcDocumentTableList ref="ncDocumentTableListRef"
+                               :currentNCDocumentAttributionInfo="currentNCDocumentAttributionInfo"
+                               @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
+        </div>
       </a-tab-pane>
 
       <a-tab-pane :key="2" tab="鍏朵粬鏂囨。">
@@ -26,37 +35,58 @@
   import OtherDocumentTableList from './Document/OtherDocumentTableList'
   import TableContextMenu from '../../../common/TableContextMenu'
   import DocumentBatchDeleteModal from '../../../common/DocumentBatchDeleteModal'
+  import DeviceCustomTypeTableList
+    from '@views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue'
+  import { getAction } from '@api/manage'
 
   export default {
     name: 'ProductStructureMainTop',
-    components: { DocumentBatchDeleteModal, TableContextMenu, OtherDocumentTableList, NcDocumentTableList },
+    components: {
+      DeviceCustomTypeTableList,
+      DocumentBatchDeleteModal,
+      TableContextMenu,
+      OtherDocumentTableList,
+      NcDocumentTableList
+    },
     data() {
       return {
         activeTabKey: 2,
         tableContainerSize: 'small',
+        isProcessHasDeviceTypeList: false,
+        isProcessStepHasDeviceTypeList: false,
         currentRightClickedTableRowInfo: {},
         currentTreeNodeInfo: {},
+        currentClickedTypeInfo: {},
+        currentNCDocumentAttributionInfo: {},//褰撳墠NC鏂囨。鐨勬墍灞炵骇鍗崇埗绾х殑璇︾粏淇℃伅锛堝紩鍏ヨ澶囩被鍚嶯C鎸傝浇鑷宠澶囩被涓嬪弽涔嬪垯鎸傝浇鍦ㄥ伐搴忓拰宸ユ涓嬶級
         hasLoadedDataTabKeyArray: []
       }
     },
     created() {
       this.$bus.$on('sendCurrentTreeNodeInfo', this.receiveCurrentTreeNodeInfo)
+      this.$bus.$on('sendCurrentClickedTypeInfo', this.receiveCurrentClickedTypeInfo)
       this.$bus.$on('reloadDocumentListData', this.reloadDocumentListData)
       this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
+      this.getDeviceTypeListDisplayPermission('dnc_device_type_process', 'isProcessHasDeviceTypeList')
+      this.getDeviceTypeListDisplayPermission('dnc_device_type_step', 'isProcessStepHasDeviceTypeList')
+    },
+    beforeDestroy() {
+      this.$bus.$off('sendCurrentTreeNodeInfo', this.receiveCurrentTreeNodeInfo)
+      this.$bus.$off('sendCurrentClickedTypeInfo', this.receiveCurrentClickedTypeInfo)
+      this.$bus.$off('reloadDocumentListData', this.reloadDocumentListData)
+      this.$bus.$off('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
     },
     methods: {
       /**
-       * 鎺у埗鍙抽敭鑿滃崟寮�鍚�
-       * @param record 褰撳墠琛ㄦ牸琛屼俊鎭�
+       * 鑾峰彇璁惧绫诲瀷鍒楄〃鍦ㄥ伐搴忓拰宸ユ灞傜骇鐨勫睍绀烘潈闄�
+       * @param settingKey 鍚勫眰绾у睍绀烘潈闄恔ey
+       * @param dataProperty 缁勪欢data涓殑灞炴�у�肩敤鏉ユ帶鍒舵槸鍚﹀睍绀�
        */
-      handleTableContextMenuOpen(record) {
-        this.currentRightClickedTableRowInfo = Object.assign({}, record)
-        console.log('currentRightClickedTableRowInfo', this.currentRightClickedTableRowInfo)
-        this.$refs.tableContextMenuRef.currentMenuLevel = record.param
-        this.$refs.tableContextMenuRef.menuStyle.top = event.clientY + 'px'
-        this.$refs.tableContextMenuRef.menuStyle.left = event.clientX + 'px'
-        this.$refs.tableContextMenuRef.menuVisible = true
-        document.body.addEventListener('click', this.handleMenuClose)
+      getDeviceTypeListDisplayPermission(settingKey, dataProperty) {
+        getAction(`/system/sysParams/query/by/settingKey?settingKey=${settingKey}`).then(res => {
+          if (res.success) {
+            this[dataProperty] = res.result.settingValue === '1'
+          }
+        })
       },
 
       /**
@@ -64,14 +94,27 @@
        * @param treeNodeInfo 鏍戣妭鐐逛俊鎭�
        */
       receiveCurrentTreeNodeInfo(treeNodeInfo) {
-        // 浠庢爲缁勪欢鎺ュ彈鏍戣妭鐐逛俊鎭悗浠庣埗缁勪欢娴佸叆瀛愮粍浠�
+        const { id, type, autoClickedLevelInfo } = treeNodeInfo
+        // 浠庢爲缁勪欢鎺ュ彈鏍戣妭鐐逛俊鎭悗浠庣埗缁勪欢娴佸叆瀛愮粍浠跺苟閲嶇疆鏁版嵁
+        this.currentClickedTypeInfo = this.currentRightClickedTableRowInfo = {}
         this.currentTreeNodeInfo = treeNodeInfo
-        // 娓呯┖涓婁竴鑺傜偣宸茬粡鍔犺浇杩囧緱鏂囨。鍒楄〃tabKey
+        this.currentNCDocumentAttributionInfo = Object.assign({}, {
+          attributionId: id,
+          attributionType: type,
+          docClassCode: 'NC',
+          autoClickedLevelInfo
+        })
         this.hasLoadedDataTabKeyArray = []
-        if (treeNodeInfo.type === 5 || treeNodeInfo.type === 6) {
+
+        if (+type === 5 || +type === 6) {
           this.activeTabKey = 1
           this.$nextTick(() => {
-            if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
+            if (this.$refs.deviceCustomTypeTableList) {
+              this.$refs.deviceCustomTypeTableList.setQueryParamAndLoadData()
+              // 鍒囨崲鏍戜箣鍚庢竻绌篘C绋嬪簭鍒楄〃
+              if (this.$refs.ncDocumentTableListRef && this.$refs.ncDocumentTableListRef.dataSource.length > 0) this.$refs.ncDocumentTableListRef.dataSource = []
+            }
+            else if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
           })
         } else {
           this.activeTabKey = 2
@@ -80,6 +123,38 @@
           })
         }
         this.hasLoadedDataTabKeyArray.push(this.activeTabKey)
+      },
+
+      /**
+       * 鎺ュ彈褰撳墠鐐瑰嚮鐨勮澶囩被淇℃伅
+       * @param record 褰撳墠鐐瑰嚮鐨勮澶囩被琛屼俊鎭�
+       */
+      receiveCurrentClickedTypeInfo(record) {
+        const { id, attributionType } = record
+        const { autoClickedLevelInfo } = this.currentTreeNodeInfo
+        this.currentClickedTypeInfo = Object.assign({}, record)
+        this.currentNCDocumentAttributionInfo = Object.assign({}, {
+          attributionId: id,
+          attributionType,
+          docClassCode: 'NC',
+          autoClickedLevelInfo
+        })
+        this.$nextTick(() => {
+          if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
+        })
+      },
+
+      /**
+       * 鎺у埗鍙抽敭鑿滃崟寮�鍚�
+       * @param record 褰撳墠琛ㄦ牸琛屼俊鎭�
+       */
+      handleTableContextMenuOpen(record) {
+        this.currentRightClickedTableRowInfo = Object.assign({}, record)
+        this.$refs.tableContextMenuRef.currentMenuLevel = record.param
+        this.$refs.tableContextMenuRef.menuStyle.top = event.clientY + 'px'
+        this.$refs.tableContextMenuRef.menuStyle.left = event.clientX + 'px'
+        this.$refs.tableContextMenuRef.menuVisible = true
+        document.body.addEventListener('click', this.handleMenuClose)
       },
 
       /**
@@ -95,16 +170,34 @@
           this.hasLoadedDataTabKeyArray.push(activeTabKey)
         }
       },
+
       /**
-       * 鏂囨。浠ュ強NC绋嬪簭瀵煎叆/鍑哄簱/鍏ュ簱鎴愬姛鍚庤Е鍙戦噸鏂板姞杞芥枃妗e垪琛�
+       * 鏂囨。浠ュ強NC绋嬪簭瀵煎叆/鍑哄簱/鍏ュ簱/鍙栨秷鍑哄簱/鍙戝竷/褰掓。鎴愬姛鍚庤Е鍙戦噸鏂板姞杞芥枃妗e垪琛�
        * @param docClassCode 鏂囨。绫诲埆
-       * @param attributionId 鑺傜偣Id
+       * @param attributionType 鏂囨。鐖剁骇type绫诲瀷
+       * @param attributionId 鏂囨。鐖剁骇Id
        */
-      reloadDocumentListData({ docClassCode, attributionId }) {
-        // 濡傛灉涓婁紶鐨勬枃妗d笉鏄墍灞炰簬褰撳墠鎵�灞曠ず鑺傜偣鐨勬枃妗e垯涓嶉噸鏂拌幏鍙栨枃妗e垪琛�
-        if (this.currentTreeNodeInfo.id !== attributionId) return
+      reloadDocumentListData({ docClassCode, attributionType, attributionId }) {
+        console.log('docClassCode, attributionType, attributionId', docClassCode, attributionType, attributionId)
+        // 鍦ㄦ澶勮澶嘚C鏂囨。鐖剁骇鍙傛暟鏄彲姝ゆ柟娉曟槸缁撴瀯鏍戜互鍙婅澶囩被涓ょ涓嶅悓瀵煎叆鏂瑰紡鐨勫叡鍚屽嚭鍙�
+        this.currentNCDocumentAttributionInfo = Object.assign({}, { docClassCode, attributionId, attributionType })
+
+        // 鍒ゆ柇褰撳墠鍙充晶灞曠ず鐨勬枃妗g殑鎵�灞炴槸鍚︽槸褰撳墠宸﹂敭閫変腑鏍戣妭鐐规垨璁惧绫伙紝鑻ヤ笉鏄綋鍓嶅乏閿�変腑鐨勫垯鍦ㄥ鍏ュ悗涓嶅埛鏂板彸渚х殑鏂囨。鍒楄〃(閬垮厤鏃犳晥鍒锋柊)
+        // 鍒ゆ柇鏄惁鏄湪鏂囨。鍒楄〃涓繘琛屽嚭搴�/鍏ュ簱/鍙戝竷/褰掓。绛夋搷浣�,鑻ユ槸鍦ㄦ枃妗e垪琛ㄤ腑鎿嶄綔鍒欐搷浣滄垚鍔熷悗鐩存帴鍒锋柊鏂囨。鍒楄〃
+        if (!this.currentRightClickedTableRowInfo.hasOwnProperty('docId')) {
+          if (this.currentRightClickedTableRowInfo.hasOwnProperty('deviceManagementId')) {
+            // 姝ょ鎯呭喌鏄湪寮曞叆璁惧绫诲苟鍦ㄨ澶囩被鍒楄〃涓繘琛孨C鏂囨。瀵煎叆
+            if (this.currentClickedTypeInfo.id !== attributionId) return
+          } else {
+            // 姝ょ鎯呭喌鏄湪缁撴瀯鏍戣妭鐐逛笂杩涜鏂囨。瀵煎叆
+            if (this.currentTreeNodeInfo.id !== attributionId) return
+          }
+        }
+
         if (docClassCode === 'NC') {
-          if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
+          this.$nextTick(() => {
+            if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
+          })
         } else {
           if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
         }
@@ -116,7 +209,7 @@
         const { docId, docName } = this.currentRightClickedTableRowInfo
         dncApi.downloadDocumentApi({ docId, docName })
           .then(res => {
-            if (res && !res.success) {
+            if (!res.success) {
               that.$notification.error({
                 message: '娑堟伅',
                 description: res.message
@@ -133,7 +226,7 @@
 
       // 鍒犻櫎褰撳墠鍙抽敭閫変腑鏂囨。
       handleDelete() {
-        const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         const that = this
         that.$confirm({
           title: '鎻愮ず',
@@ -141,14 +234,14 @@
           okText: '纭',
           cancelText: '鍙栨秷',
           onOk: () => {
-            dncApi.deleteDocumentApi(docId)
+            dncApi.deleteDocumentApi({ docId, attributionType, attributionId })
               .then((res) => {
                 if (res.success) {
                   that.$notification.success({
                     message: '娑堟伅',
                     description: res.message
                   })
-                  that.reloadDocumentListData({ docClassCode: param, attributionId })
+                  that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                 } else {
                   that.$notification.warning({
                     message: '娑堟伅',
@@ -182,7 +275,7 @@
        */
       handlePull(menuLabel) {
         const that = this
-        const { docId, docName, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, docName, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         that.$confirm({
           title: '鎻愮ず',
           content: `纭${menuLabel}鍚楋紵`,
@@ -191,9 +284,8 @@
           onOk: () => {
             dncApi.documentOutboundApi({ docId, docName })
               .then(res => {
-                console.log('res------------------', res)
                 if (res.success) {
-                  that.reloadDocumentListData({ docClassCode: param, attributionId })
+                  that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                   that.$notification.success({
                     message: '娑堟伅',
                     description: `${menuLabel}鎴愬姛`
@@ -227,7 +319,7 @@
        */
       handleCancelPull(menuLabel) {
         const that = this
-        const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         that.$confirm({
           title: '鎻愮ず',
           content: `纭${menuLabel}鍚楋紵`,
@@ -237,7 +329,7 @@
             dncApi.documentCancelOutboundApi(docId)
               .then(res => {
                 if (res.success) {
-                  this.reloadDocumentListData({ docClassCode: param, attributionId })
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                   that.$notification.success({
                     message: '娑堟伅',
                     description: res.message
@@ -271,7 +363,7 @@
        */
       handlePublish(menuLabel) {
         const that = this
-        const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         that.$confirm({
           title: '鎻愮ず',
           content: `纭${menuLabel}鍚楋紵`,
@@ -281,7 +373,7 @@
             dncApi.documentPublishApi(docId)
               .then(res => {
                 if (res.success) {
-                  this.reloadDocumentListData({ docClassCode: param, attributionId })
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                   this.$bus.$emit('reloadMainBottomTableData', 'documentVersion')
                   that.$notification.success({
                     message: '娑堟伅',
@@ -316,7 +408,7 @@
        */
       handleRepublish(menuLabel) {
         const that = this
-        const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         that.$confirm({
           title: '鎻愮ず',
           content: `纭${menuLabel}鍚楋紵`,
@@ -326,7 +418,7 @@
             dncApi.documentRepublishApi(docId)
               .then(res => {
                 if (res.success) {
-                  this.reloadDocumentListData({ docClassCode: param, attributionId })
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                   that.$notification.success({
                     message: '娑堟伅',
                     description: res.message
@@ -355,12 +447,12 @@
       },
 
       /**
-       * 閲嶅綊妗e綋鍓嶅彸閿�変腑鏂囨。涓斿悗缁棤娉曠户缁彂甯冩垨褰掓。
+       * 褰掓。褰撳墠鍙抽敭閫変腑鏂囨。涓斿悗缁棤娉曠户缁彂甯冩垨褰掓。
        * @param menuLabel
        */
       handlePigeonhole(menuLabel) {
         const that = this
-        const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
         that.$confirm({
           title: '鎻愮ず',
           content: `${menuLabel}鍚庝笉鍙彇娑堬紝纭${menuLabel}鍚楋紵`,
@@ -370,7 +462,7 @@
             dncApi.documentPigeonholeApi(docId)
               .then(res => {
                 if (res.success) {
-                  this.reloadDocumentListData({ docClassCode: param, attributionId })
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                   that.$notification.success({
                     message: '娑堟伅',
                     description: res.message

--
Gitblit v1.9.3