From 2a7f7124c307216faaef321dff84aa5c67c7058c Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 13 六月 2025 15:48:13 +0800
Subject: [PATCH] 实现产品结构树页面检索NC文件窗口中点击NC文件后界面跳转至树节点层级下NC文件界面功能

---
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue |  426 +++++++++++++++++++++++++++-------------------------
 1 files changed, 221 insertions(+), 205 deletions(-)

diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue
index 25d1a1a..c3c709f 100644
--- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue
@@ -17,234 +17,250 @@
 </template>
 
 <script>
-import { getAction } from '@/api/manage'
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import DocumentModal from '../../../../common/DocumentModal'
-import NcDocumentAssignModal from './NcDocumentAssignModal'
-import dncApi from '@api/dnc'
+  import { getAction } from '@/api/manage'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import DocumentModal from '../../../../common/DocumentModal'
+  import NcDocumentAssignModal from './NcDocumentAssignModal'
+  import dncApi from '@api/dnc'
 
-export default {
-  name: 'NcDocumentTableList',
-  components: { NcDocumentAssignModal, DocumentModal },
-  mixins: [JeecgListMixin],
-  props: {
-    currentNCDocumentAttributionInfo: {
-      type: Object
-    },
-    size: {
-      type: String
-    }
-  },
-  data() {
-    return {
-      disableMixinCreated: true,
-      columns: [
-        {
-          title: '搴忓彿',
-          dataIndex: 'rowIndex',
-          key: 'rowIndex',
-          width: 50,
-          align: 'center',
-          customRender: function(t, r, index) {
-            return parseInt(index) + 1
-          }
-        },
-        {
-          title: '鏂囦欢鍚嶇О',
-          dataIndex: 'docName',
-          key: 'docName',
-          align: 'center',
-          scopedSlots: {customRender: 'docName'},
-          width: 500,
-          sorter: true
-        },
-        {
-          title: '鍑哄簱鐘舵��',
-          dataIndex: 'pullStatus_dictText',
-          key: 'pullStatus',
-          align: 'center',
-          filters: [
-            { text: '鏈嚭搴�', value: 1 },
-            { text: '宸插嚭搴�', value: 2 }
-          ],
-          width: 100
-        },
-        {
-          title: '鐘舵��',
-          dataIndex: 'docDispatchStatus_dictText',
-          key: 'docDispatchStatus',
-          align: 'center',
-          filters: [
-            { text: '缂栧埗', value: 1 },
-            { text: '鏍″', value: 2 },
-            { text: '鎵瑰噯', value: 3 },
-            { text: '璇曞垏', value: 4 },
-            { text: '瀹氬瀷', value: 5 }
-          ],
-          width: 70
-        },
-        { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 120 },
-        {
-          title: '鍒涘缓鏃堕棿',
-          dataIndex: 'createTime',
-          align: 'center',
-          width: 150,
-          sorter: true
-        }
-      ],
-      dataSource: [],
-      currentRightClickedDocumentInfo: {},
-      currentClickedDocumentInfo: {},
-      url: {
-        list: '/nc/doc/find/page'
-      }
-    }
-  },
-  watch: {
-    currentNCDocumentAttributionInfo: {
-      handler(value) {
-        this.currentClickedDocumentInfo = this.currentRightClickedDocumentInfo = {}
+  export default {
+    name: 'NcDocumentTableList',
+    components: { NcDocumentAssignModal, DocumentModal },
+    mixins: [JeecgListMixin],
+    props: {
+      currentNCDocumentAttributionInfo: {
+        type: Object
       },
-      immediate: true
-    }
-  },
-  created() {
-    this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
-  },
-  methods: {
-    loadData(arg) {
-      if (!this.url.list) {
-        this.$message.error('璇疯缃畊rl.list灞炴��!')
-        return
+      size: {
+        type: String
       }
-      console.log('currentNCDocumentAttributionInfo', this.currentNCDocumentAttributionInfo)
-      const { attributionId, attributionType, docClassCode } = this.currentNCDocumentAttributionInfo
-      //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭
-      if (arg === 1) this.ipagination.current = 1
-      var params = this.getQueryParams()//鏌ヨ鏉′欢
-      params.attributionId = attributionId
-      params.attributionType = attributionType
-      params.docClassCode = docClassCode
-      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) {
+    data() {
       return {
-        style: {
-          backgroundColor: this.currentClickedDocumentInfo.docId === record.docId ? '#BAE7FF' : 'transparent'
-        },
-        on: {
-          contextmenu: event => {
-            event.preventDefault()
-            this.currentRightClickedDocumentInfo = Object.assign({ param: 'NC' }, record)
-            this.$emit('handleTableContextMenuOpen', this.currentRightClickedDocumentInfo)
+        disableMixinCreated: true,
+        columns: [
+          {
+            title: '搴忓彿',
+            dataIndex: 'rowIndex',
+            key: 'rowIndex',
+            width: 50,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
           },
-          click: () => {
-            if (this.currentClickedDocumentInfo.docId === record.docId) return
-            this.currentClickedDocumentInfo = Object.assign({}, record)
-            this.$bus.$emit('sendCurrentClickedDocumentInfo', record)
+          {
+            title: '鏂囦欢鍚嶇О',
+            dataIndex: 'docName',
+            key: 'docName',
+            align: 'center',
+            scopedSlots: { customRender: 'docName' },
+            width: 500,
+            sorter: true
+          },
+          {
+            title: '鍑哄簱鐘舵��',
+            dataIndex: 'pullStatus_dictText',
+            key: 'pullStatus',
+            align: 'center',
+            filters: [
+              { text: '鏈嚭搴�', value: 1 },
+              { text: '宸插嚭搴�', value: 2 }
+            ],
+            width: 100
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'docDispatchStatus_dictText',
+            key: 'docDispatchStatus',
+            align: 'center',
+            filters: [
+              { text: '缂栧埗', value: 1 },
+              { text: '鏍″', value: 2 },
+              { text: '鎵瑰噯', value: 3 },
+              { text: '璇曞垏', value: 4 },
+              { text: '瀹氬瀷', value: 5 }
+            ],
+            width: 70
+          },
+          { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 120 },
+          {
+            title: '鍒涘缓鏃堕棿',
+            dataIndex: 'createTime',
+            align: 'center',
+            width: 150,
+            sorter: true
           }
+        ],
+        dataSource: [],
+        currentRightClickedDocumentInfo: {},
+        currentClickedDocumentInfo: {},
+        url: {
+          list: '/nc/doc/find/page'
         }
       }
     },
-
-    /**
-     * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
-     * @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'
+    watch: {
+      currentNCDocumentAttributionInfo: {
+        handler(value) {
+          this.currentClickedDocumentInfo = this.currentRightClickedDocumentInfo = {}
+        },
+        immediate: true
       }
-      for (let key in filters) {
-        this.filters[key] = filters[key].join(',')
-      }
-      this.ipagination = pagination
-      this.loadData()
     },
-
-    handleDocumentEdit(record, modalTitle) {
-      if (!this.$refs.modalForm) return
-      this.$refs.modalForm.edit(record)
-      this.$refs.modalForm.title = modalTitle
+    created() {
+      this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
     },
+    methods: {
+      loadData(arg) {
+        if (!this.url.list) {
+          this.$message.error('璇疯缃畊rl.list灞炴��!')
+          return
+        }
+        const { attributionId, attributionType, docClassCode, autoClickedLevelInfo } = this.currentNCDocumentAttributionInfo
+        //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭
+        if (arg === 1) this.ipagination.current = 1
+        var params = this.getQueryParams()//鏌ヨ鏉′欢
+        params.attributionId = attributionId
+        params.attributionType = attributionType
+        params.docClassCode = docClassCode
+        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 (autoClickedLevelInfo) {
+              const tableRowRecord = this.dataSource.find(item => item.docId === autoClickedLevelInfo.docId)
+              this.handleTableRowClick(tableRowRecord)
+              this.$bus.$emit('searchNcFinished')
+            }
+            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
+        })
+      },
 
-    handleDocumentAssign(record, modalTitle) {
-      if (!this.$refs.documentAssignModalRef) return
-      this.$refs.documentAssignModalRef.title = modalTitle
-      this.$refs.documentAssignModalRef.visible = true
-    },
+      /**
+       * 鑷畾涔夎〃鏍艰鍔熻兘
+       * @param record 琛ㄦ牸琛岃褰�
+       */
+      customRow(record) {
+        return {
+          style: {
+            backgroundColor: this.currentClickedDocumentInfo.docId === record.docId ? '#BAE7FF' : 'transparent'
+          },
+          on: {
+            contextmenu: event => {
+              event.preventDefault()
+              this.currentRightClickedDocumentInfo = Object.assign({ param: 'NC' }, record)
+              this.$emit('handleTableContextMenuOpen', this.currentRightClickedDocumentInfo)
+            },
+            click: () => {
+              this.handleTableRowClick(record)
+            }
+          }
+        }
+      },
 
-    handleDocumentExtract(record){
-      const that = this
-      const { docId,attributionId, attributionType } = record
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `纭鎻愬彇鍒�鍏峰悧锛焋,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.extractToolsApi({ docId, attributionId, attributionType })
-            .then(res => {
-              if (res.success) {
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: `鎻愬彇鎴愬姛`
-                })
-              } else {
+      /**
+       * 琛ㄦ牸琛岀偣鍑讳簨浠�
+       * @param record 琛ㄦ牸琛岃褰�
+       */
+      handleTableRowClick(record) {
+        if (this.currentClickedDocumentInfo.docId === record.docId) return
+        this.currentClickedDocumentInfo = Object.assign({}, record)
+        this.$bus.$emit('sendCurrentClickedDocumentInfo', record)
+      },
+
+      /**
+       * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
+       * @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.ipagination = pagination
+        this.loadData()
+      },
+
+      handleDocumentEdit(record, modalTitle) {
+        if (!this.$refs.modalForm) return
+        this.$refs.modalForm.edit(record)
+        this.$refs.modalForm.title = modalTitle
+      },
+
+      handleDocumentAssign(record, modalTitle) {
+        if (!this.$refs.documentAssignModalRef) return
+        this.$refs.documentAssignModalRef.title = modalTitle
+        this.$refs.documentAssignModalRef.visible = true
+      },
+
+      handleDocumentExtract(record) {
+        const that = this
+        const { docId, attributionId, attributionType } = record
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `纭鎻愬彇鍒�鍏峰悧锛焋,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.extractToolsApi({ docId, attributionId, attributionType })
+              .then(res => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: `鎻愬彇鎴愬姛`
+                  })
+                } else {
+                  that.$notification.error({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .catch(err => {
                 that.$notification.error({
                   message: '娑堟伅',
-                  description: res.message
+                  description: err.message
                 })
-              }
-            })
-            .catch(err => {
-              that.$notification.error({
-                message: '娑堟伅',
-                description: err.message
               })
-            })
-            .finally(() => {
-              that.$destroyAll()
-            })
-        },
-        onCancel: () => {
-          that.$destroyAll()
-        }
-      })
-    },
+              .finally(() => {
+                that.$destroyAll()
+              })
+          },
+          onCancel: () => {
+            that.$destroyAll()
+          }
+        })
+      },
 
-    handleDelete() {
-      // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
-    },
+      handleDelete() {
+        // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
+      },
 
-    triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) {
-      if (this[methodName] && tableRowInfo.param === 'NC') this[methodName](tableRowInfo, modalTitle)
+      triggerCorrespondingMethod({ methodName, level, modalTitle, tableRowInfo }) {
+        if (this[methodName] && tableRowInfo.param === 'NC') this[methodName](tableRowInfo, modalTitle)
+      }
     }
   }
-}
 </script>
 
 <style scoped>

--
Gitblit v1.9.3