From ba9490368b8bf27e0d4a6471420044dadf5b720e Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期二, 21 一月 2025 15:33:42 +0800
Subject: [PATCH] 产品结构树: 1、新增指定文档为当前版本功能与文档版本内容差异比对功能(新增插件vue-code-diff) 2、调整产品及部件属性tab栏标题为属性信息 3、删除产品及部件属性信息中对应层级名称 全局: 调整设置后端接口地址方式由vue.config.js改为env环境文件配置

---
 src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 52 insertions(+), 8 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
index e5a321e..4d36158 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
@@ -1,11 +1,11 @@
 <template>
   <a-tabs style="height: 100%" v-model="activeTabKey" v-if="Object.keys(currentLevelInfo).length>0"
           @change="handleTabChange">
-    <a-tab-pane :key="1" tab="浜у搧灞炴��" v-if="currentLevelInfo.type===1">
+    <a-tab-pane :key="1" tab="灞炴�т俊鎭�" v-if="currentLevelInfo.type===1">
       <ProductInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
     </a-tab-pane>
 
-    <a-tab-pane :key="1" tab="閮ㄤ欢灞炴��" v-if="currentLevelInfo.type===2">
+    <a-tab-pane :key="1" tab="灞炴�т俊鎭�" v-if="currentLevelInfo.type===2">
       <ComponentInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/>
     </a-tab-pane>
 
@@ -27,11 +27,13 @@
       </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>
 
@@ -40,6 +42,8 @@
                                        :size="containerSize"/>
       </a-tab-pane>
     </template>
+
+    <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/>
   </a-tabs>
 </template>
 
@@ -52,10 +56,14 @@
   import DocumentVersionTableList from './Document/DocumentVersionTableList'
   import UseDocumentEquipmentTableList from './Document/UseNcDocumentEquipmentTableList'
   import ProcessStepInfo from './ProcessStep/ProcessStepInfo'
+  import FilePreview from './Document/FilePreview'
+  import TableContextMenu from '../../../common/TableContextMenu'
 
   export default {
     name: 'ProductStructureMainBottom',
     components: {
+      TableContextMenu,
+      FilePreview,
       ProcessStepInfo,
       UseDocumentEquipmentTableList,
       DocumentVersionTableList,
@@ -70,6 +78,7 @@
         activeTabKey: 1,
         containerSize: 'small',
         currentLevelInfo: {},
+        currentRightClickedTableRowInfo: {},
         hasLoadedDataTabKeyArray: []
       }
     },
@@ -81,7 +90,7 @@
     methods: {
       /**
        * 鎺ユ敹鏍戠粍浠朵互鍙婅〃鏍间紶鏉ョ殑褰撳墠閫変腑鎴栫偣鍑荤殑椤逛俊鎭�
-       * @param levelInfo
+       * @param levelInfo 褰撳墠灞傜骇淇℃伅
        */
       receiveCurrentLevelInfo(levelInfo) {
         this.currentLevelInfo = levelInfo
@@ -91,15 +100,50 @@
 
       handleTabChange(activeTabKey) {
         if (!this.hasLoadedDataTabKeyArray.includes(activeTabKey)) {
-          if (activeTabKey === 3) {
-            this.$nextTick(() => this.$refs.documentVersionTableRef.loadData())
-          } else if (activeTabKey === 4) {
-            this.$nextTick(() => this.$refs.useDocumentEquipmentTableRef.loadData())
+          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