From 8ef827c62d8c7817ad9f9a21b9b4e5bf63a01202 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 07 三月 2025 17:42:19 +0800
Subject: [PATCH] 添加刀具信息

---
 src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue |  150 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 114 insertions(+), 36 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
index 8651ed1..3ec0b3e 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
@@ -1,39 +1,55 @@
 <template>
-  <a-tabs style="height: 100%" v-model="activeTabKey" v-if="Object.keys(currentLevelInfo).length>0">
-    <a-tab-pane :key="1" tab="浜у搧灞炴��" v-if="currentLevelInfo.type===1">
-      <ProductInfo :currentLevelDetails="currentLevelInfo.entity" :size="descriptionsContainerSize"/>
-    </a-tab-pane>
-
-    <a-tab-pane :key="1" tab="閮ㄤ欢灞炴��" v-if="currentLevelInfo.type===2">
-      <ComponentInfo :currentLevelDetails="currentLevelInfo.entity" :size="descriptionsContainerSize"/>
-    </a-tab-pane>
-
-    <a-tab-pane :key="1" tab="闆朵欢灞炴��" v-if="currentLevelInfo.type===3">
-      <PartInfo :currentLevelDetails="currentLevelInfo.entity" :size="descriptionsContainerSize"/>
-    </a-tab-pane>
-
-    <a-tab-pane :key="1" tab="宸ュ簭灞炴��" v-if="currentLevelInfo.hasOwnProperty('processType')">
-      <ProcessInfo :currentLevelDetails="currentLevelInfo" :size="descriptionsContainerSize"/>
-    </a-tab-pane>
-
-    <template v-if="currentLevelInfo.hasOwnProperty('attributionType')">
-      <a-tab-pane :key="1" tab="鏂囨。灞炴��">
-        <DocumentInfo :currentLevelDetails="currentLevelInfo" :size="descriptionsContainerSize"/>
+  <div v-if="currentLevelInfo.type!==4">
+    <a-tabs v-model="activeTabKey" v-if="Object.keys(currentLevelInfo).length>0" @change="handleTabChange">
+      <a-tab-pane :key="1" tab="灞炴�т俊鎭�" v-if="currentLevelInfo.type===1">
+        <ProductInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
       </a-tab-pane>
 
-      <a-tab-pane :key="2" tab="棰勮">
-
+      <a-tab-pane :key="1" tab="灞炴�т俊鎭�" v-if="currentLevelInfo.type===2">
+        <ComponentInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
       </a-tab-pane>
 
-      <a-tab-pane :key="3" tab="鏂囨。鐗堟湰">
-        <DocumentVersionTableList/>
+      <a-tab-pane :key="1" tab="闆朵欢灞炴��" v-if="currentLevelInfo.type===3">
+        <PartInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
       </a-tab-pane>
 
-      <a-tab-pane :key="4" tab="浣跨敤璁惧" v-if="currentLevelInfo.attributionType===5">
-        <UseDocumentEquipmentTableList/>
+      <a-tab-pane :key="1" tab="宸ュ簭灞炴��" v-if="currentLevelInfo.type===5">
+        <ProcessInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
       </a-tab-pane>
-    </template>
-  </a-tabs>
+
+      <a-tab-pane :key="1" tab="宸ユ灞炴��" v-if="currentLevelInfo.type===6">
+        <ProcessStepInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
+      </a-tab-pane>
+
+      <a-tab-pane :key="2" tab="鍒�鍏蜂俊鎭�" v-if="currentLevelInfo.type===5||currentLevelInfo.type===6">
+        <CutterInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
+      </a-tab-pane>
+
+      <template v-if="currentLevelInfo.hasOwnProperty('attributionType')">
+        <a-tab-pane :key="1" tab="鏂囨。灞炴��">
+          <DocumentInfo :currentLevelDetails="currentLevelInfo" :size="containerSize"/>
+        </a-tab-pane>
+
+        <a-tab-pane :key="2" tab="棰勮">
+          <FilePreview ref="filePreviewRef" :currentDocumentInfo="currentLevelInfo"/>
+        </a-tab-pane>
+
+        <a-tab-pane :key="3" tab="鏂囨。鐗堟湰">
+          <DocumentVersionTableList ref="documentVersionTableRef" :currentDocumentInfo="currentLevelInfo"
+                                    @handleTableContextMenuOpen="handleTableContextMenuOpen"
+                                    @releaseFilePreviewApi="releaseFilePreviewApi"
+                                    :size="containerSize"/>
+        </a-tab-pane>
+
+        <a-tab-pane :key="4" tab="浣跨敤璁惧" v-if="currentLevelInfo.attributionType===5">
+          <UseDocumentEquipmentTableList ref="useDocumentEquipmentTableRef" :currentDocumentInfo="currentLevelInfo"
+                                         :size="containerSize"/>
+        </a-tab-pane>
+      </template>
+    </a-tabs>
+
+    <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/>
+  </div>
 </template>
 
 <script>
@@ -41,13 +57,21 @@
   import ComponentInfo from './Component/ComponentInfo'
   import PartInfo from './Part/PartInfo'
   import ProcessInfo from './Process/ProcessInfo'
-  import DocumentInfo from './Document/DocumentInfo'
-  import DocumentVersionTableList from './Document/DocumentVersionTableList'
-  import UseDocumentEquipmentTableList from './Document/UseDocumentEquipmentTableList'
+  import DocumentInfo from '../../../common/DocumentInfo'
+  import DocumentVersionTableList from '../../../common/DocumentVersionTableList'
+  import UseDocumentEquipmentTableList from './Document/UseNcDocumentEquipmentTableList'
+  import ProcessStepInfo from './ProcessStep/ProcessStepInfo'
+  import FilePreview from '../../../common/FilePreview'
+  import TableContextMenu from '../../../common/TableContextMenu'
+  import CutterInfo from '@views/dnc/base/modules/ProductStructure/Cutter/CutterInfo.vue'
 
   export default {
     name: 'ProductStructureMainBottom',
     components: {
+      CutterInfo,
+      TableContextMenu,
+      FilePreview,
+      ProcessStepInfo,
       UseDocumentEquipmentTableList,
       DocumentVersionTableList,
       DocumentInfo,
@@ -59,22 +83,76 @@
     data() {
       return {
         activeTabKey: 1,
-        descriptionsContainerSize: 'small',
-        currentLevelInfo: {}
+        containerSize: 'small',
+        currentLevelInfo: {},
+        currentRightClickedTableRowInfo: {},
+        hasLoadedDataTabKeyArray: []
       }
     },
     created() {
-      this.$bus.$on('sendCurrentLevelInfo', this.receiveCurrentLevelInfo)
+      this.$bus.$on('sendCurrentClickedDocumentInfo', this.receiveCurrentLevelInfo)
       this.$bus.$on('sendCurrentTreeNodeInfo', this.receiveCurrentLevelInfo)
+      this.$bus.$on('reloadMainBottomTableData', this.reloadMainBottomTableData)
     },
     methods: {
       /**
        * 鎺ユ敹鏍戠粍浠朵互鍙婅〃鏍间紶鏉ョ殑褰撳墠閫変腑鎴栫偣鍑荤殑椤逛俊鎭�
-       * @param levelInfo
+       * @param levelInfo 褰撳墠灞傜骇淇℃伅
        */
       receiveCurrentLevelInfo(levelInfo) {
         this.currentLevelInfo = levelInfo
-        if (levelInfo.attributionType) this.activeTabKey = 1
+        this.activeTabKey = 1
+        this.hasLoadedDataTabKeyArray = []
+      },
+
+      handleTabChange(activeTabKey) {
+        if (!this.hasLoadedDataTabKeyArray.includes(activeTabKey)) {
+          switch (activeTabKey) {
+            case 2:
+              this.$nextTick(() => this.$refs.filePreviewRef.getFilePreviewByApi())
+              break
+            case 3:
+              this.$nextTick(() => this.$refs.documentVersionTableRef.loadData())
+              break
+            case 4:
+              this.$nextTick(() => this.$refs.useDocumentEquipmentTableRef.loadData())
+              break
+            default:
+          }
+          // 闃绘鎺ュ彛鍦ㄥ悓涓�鏂囨。涓�娆$偣鍑诲唴澶氭瑙﹀彂
+          this.hasLoadedDataTabKeyArray.push(activeTabKey)
+        }
+      },
+
+      // 閲婃斁鏂囦欢棰勮鎺ュ彛
+      releaseFilePreviewApi() {
+        // 濡傛灉宸茬粡棰勮杩囨鏂囨。锛屽彲鍦ㄦ鏂囨。褰撳墠鐗堟湰鍙戠敓鏀瑰彉鍚庡啀娆¢瑙堟柊鐗堟湰鍐呭
+        if (this.hasLoadedDataTabKeyArray.includes(2)) this.hasLoadedDataTabKeyArray = this.hasLoadedDataTabKeyArray.filter(item => item !== 2)
+      },
+
+      /**
+       * 鎺у埗鍙抽敭鑿滃崟寮�鍚�
+       * @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)
+      },
+
+      /**
+       * 鎺у埗鍙抽敭鑿滃崟鐐瑰嚮鍏抽棴
+       */
+      handleMenuClose() {
+        this.$refs.tableContextMenuRef.menuVisible = false
+        document.body.removeEventListener('click', this.handleMenuClose)
+      },
+
+      reloadMainBottomTableData(tableName) {
+        if (this.$refs[tableName + 'TableRef']) this.$refs[tableName + 'TableRef'].loadData()
       }
     }
   }

--
Gitblit v1.9.3