From 1b8b8bafca4fe4c3556bda5e66e3ff6252bd7acc Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期一, 16 六月 2025 14:27:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/tms/requirement/ToolSharpeningList .vue                                          |   11 
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue           |  805 ++++++-----
 src/views/tms/modules/outBound/OutboundDetailSelectList.vue                                |   48 
 src/views/tms/requirement/modules/ToolsSharpeningModal.vue                                 |   81 
 src/views/dnc/common/TableContextMenu.vue                                                  |    1 
 src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue                       |  824 ++++++-----
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue               |  426 +++---
 src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue |  316 ++--
 src/views/tms/modules/baseTools/BaseToolsListRight.vue                                     |   30 
 src/views/tms/modules/outBound/OutboundModal.vue                                           |   35 
 src/views/tms/modules/outBound/OutboundOrderSelectList.vue                                 |    4 
 src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue                    |  857 ++++++------
 src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue              |  413 ++++++
 src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue                      |   48 
 src/views/tms/modules/outBound/OutboundOrderModal.vue                                      |   32 
 src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue                             |    4 
 src/views/flowable/workflow/FlowTodo.vue                                                   |   18 
 src/views/tms/stocktakingBound/modules/ToolsStocktakingBoundModal.vue                      |   11 
 src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue |    2 
 src/views/tms/stocktakingBound/modules/ToolSelectorModal.vue                               |    9 
 20 files changed, 2,348 insertions(+), 1,627 deletions(-)

diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue
index bdca851..bb21be2 100644
--- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue
+++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue
@@ -29,6 +29,7 @@
 import HasSentDocumentTableList from './Document/HasSentDocumentTableList'
 import HasReceivedDocumentTableList from './Document/HasReceivedDocumentTableList'
 import DocumentBatchDeleteModal from '../../../common/DocumentBatchDeleteModal'
+import { postAction } from '@api/manage'
 
 export default {
   name: 'DeviceStructureMainTop',
@@ -44,7 +45,10 @@
       tableContainerSize: 'small',
       currentTypeOfDevice: 7,// 浜у搧缁撴瀯鏍戜腑瀹氫箟鐨勮澶囧眰绾ype涓�7
       currentRightClickedTableRowInfo: {},
-      hasLoadedDataTabKeyArray: []
+      hasLoadedDataTabKeyArray: [],
+      url:{
+        submitProccess:'/dncFlow/dispatchFile/submitProccess'
+      }
     }
   },
   created() {
@@ -172,7 +176,47 @@
         }
       })
     },
-
+    handleAppoint(){
+      const that = this
+      const { docId, param, attributionId,attributionType,publishFileId } = this.currentRightClickedTableRowInfo
+      that.$confirm({
+        title: '鎻愮ず',
+        content: `纭瀹氬瀷鍚楋紵`,
+        okText: '纭',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          let dispatchFile = {
+            'docId':docId,
+            'attributionId':attributionId,
+            'attributionType':attributionType,
+            'fileId':publishFileId
+          }
+          postAction(this.url.submitProccess,dispatchFile)
+            .then(res => {
+              if (res.success) {
+                this.$message.success('娴佺▼鍙戣捣鎴愬姛')
+              } else {
+                that.$notification.error({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+              }
+            })
+            .catch(err => {
+              that.$notification.error({
+                message: '娑堟伅',
+                description: err.message
+              })
+            })
+            .finally(() => {
+              that.$destroyAll()
+            })
+        },
+        onCancel: () => {
+          that.$destroyAll()
+        }
+      })
+    },
     /**
      * 鐐瑰嚮鎵归噺鍒犻櫎鍚庡嚭鐜板脊绐�
      * @param modalTitle 寮圭獥鏍囬
diff --git a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
index cc8b2e5..3acc91b 100644
--- a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
+++ b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
@@ -49,7 +49,7 @@
       deviceCustomTypeList: [],
       labelCol: {
         xs: { span: 24 },
-        sm: { span: 6 }
+        sm: { span: 7 }
       },
       wrapperCol: {
         xs: { span: 24 },
diff --git a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
index 5619cec..549e6c6 100644
--- a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
+++ b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
@@ -8,162 +8,194 @@
 </template>
 
 <script>
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import DeviceCustomTypeModal from '@views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModal.vue'
-import { deleteAction } from '@api/manage'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import DeviceCustomTypeModal
+    from '@views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModal.vue'
+  import { getAction, deleteAction } from '@api/manage'
 
-export default {
-  name: 'DeviceCustomTypeTableList',
-  components: { DeviceCustomTypeModal },
-  mixins: [JeecgListMixin],
-  props: {
-    currentTreeNodeInfo: {
-      type: Object
-    },
-    size: {
-      type: String
-    }
-  },
-  data() {
-    return {
-      disableMixinCreated: true,
-      columns: [
-        // {
-        //   title: '杞﹂棿',
-        //   dataIndex: 'productionId_dictText',
-        //   align: 'center'
-        // },
-        {
-          title: '杞存暟',
-          dataIndex: 'deviceManagementCode_dictText',
-          align: 'center'
-        },
-        {
-          title: '鏁版帶绯荤粺绫诲埆',
-          dataIndex: 'deviceManagementId_dictText',
-          align: 'center'
-        }
-      ],
-      dataSource: [],
-      currentRightClickedTypeInfo: {},
-      currentClickedTypeInfo: {},
-      url: {
-        list: '/nc/deviceType/getByBusinessId',
-        delete: '/nc/deviceType/delete'
-      }
-    }
-  },
-  watch: {
-    currentTreeNodeInfo: {
-      handler(value) {
-        this.currentClickedTypeInfo = {}
+  export default {
+    name: 'DeviceCustomTypeTableList',
+    components: { DeviceCustomTypeModal },
+    mixins: [JeecgListMixin],
+    props: {
+      currentTreeNodeInfo: {
+        type: Object
       },
-      immediate: true
-    }
-  },
-  created() {
-    this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
-    this.$bus.$on('deviceCustomTypeAddSubmitSuccess', this.loadData)
-  },
-  methods: {
-    setQueryParamAndLoadData() {
-      console.log('currentLevelInfo', this.currentTreeNodeInfo)
-      const { id, type } = this.currentTreeNodeInfo
-      this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
-      this.dataSource = []
-      this.loadData()
+      size: {
+        type: String
+      }
     },
-
-    customRow(record) {
+    data() {
       return {
-        style: {
-          backgroundColor: this.currentClickedTypeInfo.id === record.id ? '#BAE7FF' : 'transparent'
-        },
-        on: {
-          contextmenu: event => {
-            event.preventDefault()
-            this.currentRightClickedTypeInfo = Object.assign({ param: 'deviceCustomType' }, record)
-            this.$emit('handleTableContextMenuOpen', this.currentRightClickedTypeInfo)
+        disableMixinCreated: true,
+        columns: [
+          // {
+          //   title: '杞﹂棿',
+          //   dataIndex: 'productionId_dictText',
+          //   align: 'center'
+          // },
+          {
+            title: '杞存暟',
+            dataIndex: 'deviceManagementCode_dictText',
+            align: 'center'
           },
-          click: () => {
-            if (this.currentClickedTypeInfo.id === record.id) return
-            this.currentClickedTypeInfo = Object.assign({}, record)
-            this.$bus.$emit('sendCurrentClickedTypeInfo', record)
+          {
+            title: '鏁版帶绯荤粺绫诲埆',
+            dataIndex: 'deviceManagementId_dictText',
+            align: 'center'
           }
+        ],
+        dataSource: [],
+        currentRightClickedTypeInfo: {},
+        currentClickedTypeInfo: {},
+        url: {
+          list: '/nc/deviceType/getByBusinessId',
+          delete: '/nc/deviceType/delete'
         }
       }
     },
-
-    /**
-     * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
-     * @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()
-    },
-
-    /**
-     * 鍒犻櫎宸ュ簭鎴栧伐姝ュ眰绾ф坊鍔犵殑璁惧绫�
-     * @param tableRowInfo
-     */
-    handleTypeDelete(tableRowInfo) {
-      const { id } = tableRowInfo
-      const { $confirm, url, loadData, $notification, $destroyAll } = this
-      $confirm({
-        title: '鎻愮ず',
-        content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
-        okText: '纭',
-        okType: 'danger',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          if (!url.delete) {
-            this.$message.error('璇疯缃畊rl.delete灞炴��!')
-            return
-          }
-
-          deleteAction(url.delete, { id: id })
-            .then((res) => {
-              if (res.success) {
-                $notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-                loadData()
-              } else {
-                $notification.warning({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              }
-            })
-            .finally(() => {
-              $destroyAll()
-            })
+    watch: {
+      currentTreeNodeInfo: {
+        handler(value) {
+          this.currentClickedTypeInfo = {}
         },
-        onCancel: () => {
-          $destroyAll()
-        }
-      })
+        immediate: true
+      }
     },
+    created() {
+      this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
+      this.$bus.$on('deviceCustomTypeAddSubmitSuccess', this.loadData)
+    },
+    methods: {
+      setQueryParamAndLoadData() {
+        const { id, type } = this.currentTreeNodeInfo
+        this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
+        this.dataSource = []
+        this.loadData()
+      },
 
-    triggerCorrespondingMethod({ methodName, modalTitle, tableRowInfo }) {
-      if (this[methodName] && tableRowInfo.param === 'deviceCustomType') this[methodName](tableRowInfo, modalTitle)
+      loadData() {
+        const params = this.getQueryParams()//鏌ヨ鏉′欢
+        this.loading = true
+        getAction(this.url.list, params)
+          .then((res) => {
+            if (res.success) {
+              this.dataSource = res.result.records || res.result
+              const { autoClickedLevelInfo } = this.currentTreeNodeInfo
+              if (autoClickedLevelInfo) {
+                const tableRowRecord = this.dataSource.find(item => item.id === autoClickedLevelInfo.attributionId)
+                this.handleTableRowClick(tableRowRecord)
+              }
+            } else {
+              this.$message.warning(res.message)
+            }
+          }).finally(() => {
+          this.loading = false
+        })
+      },
+
+      /**
+       * 鑷畾涔夎〃鏍艰鍔熻兘
+       * @param record 琛ㄦ牸琛岃褰�
+       */
+      customRow(record) {
+        return {
+          style: {
+            backgroundColor: this.currentClickedTypeInfo.id === record.id ? '#BAE7FF' : 'transparent'
+          },
+          on: {
+            contextmenu: event => {
+              event.preventDefault()
+              this.currentRightClickedTypeInfo = Object.assign({ param: 'deviceCustomType' }, record)
+              this.$emit('handleTableContextMenuOpen', this.currentRightClickedTypeInfo)
+            },
+            click: () => {
+              this.handleTableRowClick(record)
+            }
+          }
+        }
+      },
+
+      /**
+       * 琛ㄦ牸琛岀偣鍑讳簨浠�
+       * @param record 琛ㄦ牸琛岃褰�
+       */
+      handleTableRowClick(record) {
+        if (this.currentClickedTypeInfo.id === record.id) return
+        this.currentClickedTypeInfo = Object.assign({}, record)
+        this.$bus.$emit('sendCurrentClickedTypeInfo', 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()
+      },
+
+      /**
+       * 鍒犻櫎宸ュ簭鎴栧伐姝ュ眰绾ф坊鍔犵殑璁惧绫�
+       * @param tableRowInfo
+       */
+      handleTypeDelete(tableRowInfo) {
+        const { id } = tableRowInfo
+        const { $confirm, url, loadData, $notification, $destroyAll } = this
+        $confirm({
+          title: '鎻愮ず',
+          content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
+          okText: '纭',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            if (!url.delete) {
+              this.$message.error('璇疯缃畊rl.delete灞炴��!')
+              return
+            }
+
+            deleteAction(url.delete, { id: id })
+              .then((res) => {
+                if (res.success) {
+                  $notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  loadData()
+                } else {
+                  $notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                $destroyAll()
+              })
+          },
+          onCancel: () => {
+            $destroyAll()
+          }
+        })
+      },
+
+      triggerCorrespondingMethod({ methodName, modalTitle, tableRowInfo }) {
+        if (this[methodName] && tableRowInfo.param === 'deviceCustomType') this[methodName](tableRowInfo, modalTitle)
+      }
     }
   }
-}
 </script>
 
 <style scoped>
diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue
index 14e6a1e..bc4c54c 100644
--- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue
@@ -49,7 +49,7 @@
                     </a-form-item>
                   </a-col>
 
-                  <a-col :md="11" :sm="11">
+                  <a-col :md="7" :sm="7">
                     <a-form-item label="涓婁紶鏃堕棿">
                       <a-range-picker v-model="date" value-format="YYYY-MM-DD"
                                       @change="handleDateChange" allow-clear></a-range-picker>
@@ -66,7 +66,7 @@
 
             <a-table :columns="columns" :data-source="dataSource" bordered :pagination="false" :loading="loading"
                      :rowSelection="{selectedRowKeys: selectedRowKeys,selectedRows:selectionRows, onChange: onSelectChange}"
-                     @change="handleTableChange"
+                     @change="handleTableChange" :customRow="customRow"
                      :scroll="{y:456}" :size="size" rowKey="docId">
 
               <!-- 瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず-->
@@ -120,430 +120,463 @@
         </a-tabs>
       </div>
     </div>
+
+
   </a-modal>
 </template>
 
 <script>
-import { getAction } from '@/api/manage'
-import dncApi from '@/api/dnc'
-import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import { getAction } from '@/api/manage'
+  import dncApi from '@/api/dnc'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 
-export default {
-  name: 'NcDocumentSearchNcModal',
-  components: {},
-  mixins: [JeecgListMixin],
-  props: {
-    currentDocumentInfo: {
-      type: Object
-    },
-    size: {
-      type: String
-    }
-  },
-  data() {
-    return {
-      disableMixinCreated: true,
-      visible: false,
-      title: '',
-      columns: [
-        {
-          title: '搴忓彿',
-          dataIndex: 'rowIndex',
-          key: 'rowIndex',
-          width: 50,
-          align: 'center',
-          customRender: function(t, r, index) {
-            return parseInt(index) + 1
-          }
-        },
-        {
-          title: '鑺傜偣鍚嶇О',
-          dataIndex: 'nodeName',
-          align: 'center',
-          width: 80,
-          sorter: false
-        },
-        {
-          title: '鑺傜偣浠e彿',
-          dataIndex: 'nodeCode',
-          align: 'center',
-          width: 80,
-          sorter: false
-        },
-        {
-          title: '鏁版帶绯荤粺绫诲埆',
-          dataIndex: 'deviceName',
-          align: 'center',
-          width: 80,
-          sorter: false
-        },
-        {
-          title: '杞存暟',
-          dataIndex: 'deviceCode',
-          align: 'center',
-          width: 50,
-          sorter: false
-        },
-        {
-          title: '鏂囦欢鍚嶇О',
-          dataIndex: 'docName',
-          key: 'docName',
-          align: 'center',
-          scopedSlots: { customRender: 'docName' },
-          width: 240,
-          sorter: true
-        },
-        {
-          title: '鍑哄簱鐘舵��',
-          dataIndex: 'pullStatus_dictText',
-          key: 'pullStatus',
-          align: 'center',
-          width: 80,
-          filters: [
-            { text: '鏈嚭搴�', value: 1 },
-            { text: '宸插嚭搴�', value: 2 }
-          ]
-        },
-        {
-          title: '鐘�  鎬�',
-          dataIndex: 'docDispatchStatus_dictText',
-          key: 'docDispatchStatus',
-          align: 'center',
-          width: 60,
-          filters: [
-            { text: '缂栧埗', value: 1 },
-            { text: '鏍″', value: 2 },
-            { text: '鎵瑰噯', value: 3 },
-            { text: '璇曞垏', value: 4 },
-            { text: '瀹氬瀷', value: 5 }
-          ]
-        },
-        {
-          title: '鍒涘缓鏃堕棿',
-          dataIndex: 'createTime',
-          align: 'center',
-          width: 150,
-          sorter: true
-        }
-      ],
-      searchValue: '',
-      searchInput: '',
-      spinning: false,
-      treeDataSource: [],
-      allTreeKeys: [],
-      checkedKeys: [],
-      expandedKeys: [],
-      autoExpandParent: true,
-      isExpandAllTreeNode: true,
-      date: [],
-      url: {
-        list: '/nc/product/query/nc'
+  export default {
+    name: 'NcDocumentSearchNcModal',
+    components: {},
+    mixins: [JeecgListMixin],
+    props: {
+      currentDocumentInfo: {
+        type: Object
+      },
+      size: {
+        type: String
       }
-    }
-  },
-  watch: {
-    visible: {
-      handler(value) {
-        if (value) {
-          this.resetData()
-          this.loadData()
-          this.getDocumentAssignDeviceTreeByApi()
+    },
+    data() {
+      return {
+        disableMixinCreated: true,
+        visible: false,
+        title: '',
+        columns: [
+          {
+            title: '搴忓彿',
+            dataIndex: 'rowIndex',
+            key: 'rowIndex',
+            width: 50,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
+          },
+          {
+            title: '鑺傜偣鍚嶇О',
+            dataIndex: 'nodeName',
+            align: 'center',
+            width: 80,
+            sorter: false
+          },
+          {
+            title: '鑺傜偣浠e彿',
+            dataIndex: 'nodeCode',
+            align: 'center',
+            width: 80,
+            sorter: false
+          },
+          {
+            title: '鏁版帶绯荤粺绫诲埆',
+            dataIndex: 'deviceName',
+            align: 'center',
+            width: 80,
+            sorter: false
+          },
+          {
+            title: '杞存暟',
+            dataIndex: 'deviceCode',
+            align: 'center',
+            width: 50,
+            sorter: false
+          },
+          {
+            title: '鏂囦欢鍚嶇О',
+            dataIndex: 'docName',
+            key: 'docName',
+            align: 'center',
+            scopedSlots: { customRender: 'docName' },
+            width: 240,
+            sorter: true
+          },
+          {
+            title: '鍑哄簱鐘舵��',
+            dataIndex: 'pullStatus_dictText',
+            key: 'pullStatus',
+            align: 'center',
+            width: 80,
+            filters: [
+              { text: '鏈嚭搴�', value: 1 },
+              { text: '宸插嚭搴�', value: 2 }
+            ]
+          },
+          {
+            title: '鐘�  鎬�',
+            dataIndex: 'docDispatchStatus_dictText',
+            key: 'docDispatchStatus',
+            align: 'center',
+            width: 60,
+            filters: [
+              { text: '缂栧埗', value: 1 },
+              { text: '鏍″', value: 2 },
+              { text: '鎵瑰噯', value: 3 },
+              { text: '璇曞垏', value: 4 },
+              { text: '瀹氬瀷', value: 5 }
+            ]
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            dataIndex: 'createTime',
+            align: 'center',
+            width: 150,
+            sorter: true
+          }
+        ],
+        searchValue: '',
+        searchInput: '',
+        spinning: false,
+        fullScreenSpinning: false,
+        treeDataSource: [],
+        allTreeKeys: [],
+        checkedKeys: [],
+        expandedKeys: [],
+        autoExpandParent: true,
+        isExpandAllTreeNode: true,
+        date: [],
+        url: {
+          list: '/nc/product/query/nc'
         }
       }
     },
-    isExpandAllTreeNode: {
-      handler(value) {
-        if (value) this.expandedKeys = this.allTreeKeys
-        else this.expandedKeys = []
-      }
-    }
-  },
-  created() {
-    this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
-  },
-  methods: {
-    handleSearchNc() {
-      this.visible = true
-    },
-    // 鑾峰彇褰撳墠瀵瑰簲鏂囨。鍒楄〃
-    loadData() {
-      this.dataSource = []
-      if (!this.url.list) {
-        this.$message.error('璇疯缃畊rl.list灞炴��!')
-        return
-      }
-      var params = this.getQueryParams()//鏌ヨ鏉′欢
-      if (!params) return false
-      params.attributionType = this.currentDocumentInfo.type
-      params.attributionId = this.currentDocumentInfo.key
-      this.loading = true
-      getAction(this.url.list, params).then((res) => {
-        if (res.success) this.dataSource = res.result
-        else this.$message.warning(res.message)
-      }).finally(() => {
-        this.loading = false
-      })
-    },
-
-    // 鑾峰彇DNC璁惧鏍�
-    getDocumentAssignDeviceTreeByApi() {
-      this.spinning = true
-      this.treeDataSource = []
-      dncApi.getDeviceTreeDataApi()
-        .then(res => {
-          if (res.success) {
-            this.dataList = []
-            this.allTreeKeys = []
-            this.treeDataSource = res.result
-            this.generateList(this.treeDataSource)
-            this.expandedKeys = this.allTreeKeys
-          } else {
-            this.$message.warn(res.message)
+    watch: {
+      visible: {
+        handler(value) {
+          if (value) {
+            this.resetData()
+            this.loadData()
+            this.getDocumentAssignDeviceTreeByApi()
           }
-        })
-        .finally(() => {
-          this.spinning = false
-        })
-    },
-
-    // 鏃堕棿閫夋嫨鍣ㄩ�夋嫨瀹屾垚鍚庤Е鍙�
-    handleDateChange(value) {
-      this.queryParam.startTime = value[0]
-      this.queryParam.endTime = value[1]
-    },
-
-    /**
-     * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
-     * @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'
+        }
+      },
+      isExpandAllTreeNode: {
+        handler(value) {
+          if (value) this.expandedKeys = this.allTreeKeys
+          else this.expandedKeys = []
+        }
       }
-      for (let key in filters) {
-        this.filters[key] = filters[key].join(',')
-      }
-      this.loadData()
     },
+    created() {
+      this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
+    },
+    methods: {
+      handleSearchNc() {
+        this.visible = true
+      },
 
-    // 鎸囨淳鍒拌澶囩獥鍙g偣鍑荤‘瀹氭寚娲捐澶囧悗瑙﹀彂
-    handleAssignDocumentToDevice() {
-      const {
-        checkedKeys,
-        selectedRowKeys,
-        selectionRows,
-        dataList,
-        $confirm,
-        $notification,
-        currentDocumentInfo,
-        queryParam: { applyReason },
-        $destroyAll,
-        $bus
-      } = this
-      const { attributionId, attributionType } = currentDocumentInfo
-      const paramsArray = []
-      // 杩囨护杞﹂棿key浠呮斁鍏ヨ澶噆ey
-      const treeCheckedDeviceKeys = []
-      checkedKeys.forEach(checkedKey => {
-        const device = dataList.find(item => item.key === checkedKey && item.type === 2)
-        if (device) treeCheckedDeviceKeys.push(device.key)
-      })
-
-      if (treeCheckedDeviceKeys.length === 0 || selectedRowKeys.length === 0) {
-        $notification.warning({
-          message: '娑堟伅',
-          description: '璇烽�夋嫨璁惧鎴栨枃妗�'
+      // 鑾峰彇褰撳墠瀵瑰簲鏂囨。鍒楄〃
+      loadData() {
+        this.dataSource = []
+        if (!this.url.list) {
+          this.$message.error('璇疯缃畊rl.list灞炴��!')
+          return
+        }
+        var params = this.getQueryParams()//鏌ヨ鏉′欢
+        if (!params) return false
+        params.attributionType = this.currentDocumentInfo.type
+        params.attributionId = this.currentDocumentInfo.key
+        this.loading = true
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) this.dataSource = res.result
+          else this.$message.warning(res.message)
+        }).finally(() => {
+          this.loading = false
         })
-        return
-      }
+      },
 
-      $confirm({
-        title: '鎻愮ず',
-        content: `纭鎻愪氦鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          // 鍙岄噸寰幆纭畾姣忎竴缁勮澶囦笌鏂囨。鐨勫弬鏁�
-          treeCheckedDeviceKeys.forEach(deviceId => {
-            selectionRows.forEach(({ docId, publishFileId ,attributionId,attributionType}) => {
-              paramsArray.push({
-                docId,
-                deviceId,
-                fileId: publishFileId,
-                attributionId,
-                attributionType,
-                applyReason
-              })
-            })
+      /**
+       * 鍒楄〃鑷畾涔夎
+       * @param record 鍒楄〃琛岃褰�
+       */
+      customRow(record) {
+        return {
+          style: {
+            cursor: 'pointer'
+          },
+          on: {
+            click: () => {
+              let selectedRowKeys = [...this.selectedRowKeys]
+              let selectionRows = [...this.selectionRows]
+              if (selectedRowKeys.includes(record.docId)) {
+                selectedRowKeys = selectedRowKeys.filter(item => item !== record.docId)
+                selectionRows = selectionRows.filter(item => item.docId !== record.docId)
+              } else {
+                selectedRowKeys.push(record.docId)
+                selectionRows.push(record)
+              }
+              this.onSelectChange(selectedRowKeys, selectionRows)
+            },
+            dblclick: () => {
+              this.$emit('searchTreeNode', record)
+              this.visible = false
+            }
+          }
+        }
+      },
+
+      // 鑾峰彇DNC璁惧鏍�
+      getDocumentAssignDeviceTreeByApi() {
+        this.spinning = true
+        this.treeDataSource = []
+        dncApi.getDeviceTreeDataApi()
+          .then(res => {
+            if (res.success) {
+              this.dataList = []
+              this.allTreeKeys = []
+              this.treeDataSource = res.result
+              this.generateList(this.treeDataSource)
+              this.expandedKeys = this.allTreeKeys
+            } else {
+              this.$message.warn(res.message)
+            }
           })
+          .finally(() => {
+            this.spinning = false
+          })
+      },
 
-          paramsArray.forEach(item => {
-            dncApi.assignDocumentToDeviceApi(item)
-              .then(res => {
-                if (res.success) {
-                  $bus.$emit('reloadMainBottomTableData', 'useDocumentEquipment')
-                  $notification.success({
-                    message: '娑堟伅',
-                    description: res.message
-                  })
-                } else {
-                  $notification.error({
-                    message: '娑堟伅',
-                    description: res.message
-                  })
-                }
-              })
-              .catch(err => {
-                $notification.error({
-                  message: '娑堟伅',
-                  description: err.message
+      // 鏃堕棿閫夋嫨鍣ㄩ�夋嫨瀹屾垚鍚庤Е鍙�
+      handleDateChange(value) {
+        this.queryParam.startTime = value[0]
+        this.queryParam.endTime = value[1]
+      },
+
+      /**
+       * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
+       * @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.loadData()
+      },
+
+      // 鎸囨淳鍒拌澶囩獥鍙g偣鍑荤‘瀹氭寚娲捐澶囧悗瑙﹀彂
+      handleAssignDocumentToDevice() {
+        const {
+          checkedKeys,
+          selectedRowKeys,
+          selectionRows,
+          dataList,
+          $confirm,
+          $notification,
+          currentDocumentInfo,
+          queryParam: { applyReason },
+          $destroyAll,
+          $bus
+        } = this
+        const { attributionId, attributionType } = currentDocumentInfo
+        const paramsArray = []
+        // 杩囨护杞﹂棿key浠呮斁鍏ヨ澶噆ey
+        const treeCheckedDeviceKeys = []
+        checkedKeys.forEach(checkedKey => {
+          const device = dataList.find(item => item.key === checkedKey && item.type === 2)
+          if (device) treeCheckedDeviceKeys.push(device.key)
+        })
+
+        if (treeCheckedDeviceKeys.length === 0 || selectedRowKeys.length === 0) {
+          $notification.warning({
+            message: '娑堟伅',
+            description: '璇烽�夋嫨璁惧鎴栨枃妗�'
+          })
+          return
+        }
+
+        $confirm({
+          title: '鎻愮ず',
+          content: `纭鎻愪氦鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            // 鍙岄噸寰幆纭畾姣忎竴缁勮澶囦笌鏂囨。鐨勫弬鏁�
+            treeCheckedDeviceKeys.forEach(deviceId => {
+              selectionRows.forEach(({ docId, publishFileId, attributionId, attributionType }) => {
+                paramsArray.push({
+                  docId,
+                  deviceId,
+                  fileId: publishFileId,
+                  attributionId,
+                  attributionType,
+                  applyReason
                 })
               })
-              .finally(() => {
-                $destroyAll()
-              })
-          })
-        },
-        onCancel: () => {
-          $destroyAll()
-        }
-      })
-    },
+            })
 
-    /* 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙� */
-    handleSearchInputChange() {
-      let search = this.searchInput
-      console.log('data', this.dataList)
-      console.log('search', search)
-      let expandedKeys = this.dataList
-        .map(item => {
-          if (item.title != null) {
-            if (item.title.indexOf(search) > -1) {
-              return this.getParentKey(item.key, this.treeDataSource)
-            }
-            return null
+            paramsArray.forEach(item => {
+              dncApi.assignDocumentToDeviceApi(item)
+                .then(res => {
+                  if (res.success) {
+                    $bus.$emit('reloadMainBottomTableData', 'useDocumentEquipment')
+                    $notification.success({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                  } else {
+                    $notification.error({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  $notification.error({
+                    message: '娑堟伅',
+                    description: err.message
+                  })
+                })
+                .finally(() => {
+                  $destroyAll()
+                })
+            })
+          },
+          onCancel: () => {
+            $destroyAll()
           }
         })
-        .filter((item, i, self) => item && self.indexOf(item) === i)
-      Object.assign(this, {
-        expandedKeys,
-        searchValue: search,
-        autoExpandParent: true
-      })
-    },
+      },
 
-    /**
-     * 鏍戣妭鐐瑰睍寮�鍚堝苟鏃惰Е鍙�
-     * @param expandedKeys 灞曞紑椤筴ey
-     */
-    handleTreeNodeExpand(expandedKeys) {
-      this.expandedKeys = expandedKeys
-      this.autoExpandParent = false
-    },
+      /* 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙� */
+      handleSearchInputChange() {
+        let search = this.searchInput
+        console.log('data', this.dataList)
+        console.log('search', search)
+        let expandedKeys = this.dataList
+          .map(item => {
+            if (item.title != null) {
+              if (item.title.indexOf(search) > -1) {
+                return this.getParentKey(item.key, this.treeDataSource)
+              }
+              return null
+            }
+          })
+          .filter((item, i, self) => item && self.indexOf(item) === i)
+        Object.assign(this, {
+          expandedKeys,
+          searchValue: search,
+          autoExpandParent: true
+        })
+      },
 
-    /**
-     * 鏍戣妭鐐瑰閫夋閫変腑鏃惰Е鍙�
-     * @param selectedKeys 閫変腑鑺傜偣key
-     * @param {node} node 鑺傜偣瀵硅薄
-     */
-    handleTreeNodeCheck(checkedKeys, { node }) {
-      let record = node.dataRef
-      this.checkedKeys = checkedKeys
-    },
+      /**
+       * 鏍戣妭鐐瑰睍寮�鍚堝苟鏃惰Е鍙�
+       * @param expandedKeys 灞曞紑椤筴ey
+       */
+      handleTreeNodeExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
 
-    /**
-     * 鏍戣妭鐐归�変腑鏃惰Е鍙戯紙妯℃嫙鏍戣妭鐐瑰閫夋閫変腑鏃剁殑鏁堟灉锛�
-     * @param selectedKeys 閫変腑鑺傜偣key
-     * @param {node} node 鑺傜偣瀵硅薄
-     */
-    handleTreeNodeSelect(selectedKeys, { node }) {
-      node.$el.childNodes[1].click()
-    },
+      /**
+       * 鏍戣妭鐐瑰閫夋閫変腑鏃惰Е鍙�
+       * @param selectedKeys 閫変腑鑺傜偣key
+       * @param {node} node 鑺傜偣瀵硅薄
+       */
+      handleTreeNodeCheck(checkedKeys, { node }) {
+        let record = node.dataRef
+        this.checkedKeys = checkedKeys
+      },
 
-    /**
-     * 閫掑綊鑾峰緱杈撳叆椤圭殑鐖剁骇key
-     * @param key 瀛愰」key
-     * @param tree 瀛愰」
-     */
-    getParentKey(key, tree) {
-      let parentKey
-      for (let i = 0; i < tree.length; i++) {
-        const node = tree[i]
-        if (node.children) {
-          if (node.children.some(item => item.key === key)) {
-            parentKey = node.key
-            console.log('parentKey', parentKey)
-          } else if (
-            this.getParentKey(key, node.children)) {
-            parentKey = this.getParentKey(key, node.children)
+      /**
+       * 鏍戣妭鐐归�変腑鏃惰Е鍙戯紙妯℃嫙鏍戣妭鐐瑰閫夋閫変腑鏃剁殑鏁堟灉锛�
+       * @param selectedKeys 閫変腑鑺傜偣key
+       * @param {node} node 鑺傜偣瀵硅薄
+       */
+      handleTreeNodeSelect(selectedKeys, { node }) {
+        node.$el.childNodes[1].click()
+      },
+
+      /**
+       * 閫掑綊鑾峰緱杈撳叆椤圭殑鐖剁骇key
+       * @param key 瀛愰」key
+       * @param tree 瀛愰」
+       */
+      getParentKey(key, tree) {
+        let parentKey
+        for (let i = 0; i < tree.length; i++) {
+          const node = tree[i]
+          if (node.children) {
+            if (node.children.some(item => item.key === key)) {
+              parentKey = node.key
+              console.log('parentKey', parentKey)
+            } else if (
+              this.getParentKey(key, node.children)) {
+              parentKey = this.getParentKey(key, node.children)
+            }
           }
         }
-      }
-      return parentKey
-    },
+        return parentKey
+      },
 
-    /**
-     * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key
-     * @param data 璁惧鏍戞暟鎹�
-     */
-    generateList(data) {
-      for (let i = 0; i < data.length; i++) {
-        const node = data[i]
-        const key = node.key
-        const title = node.title
-        const type = node.type
-        this.dataList.push({ key, title, type })
-        this.allTreeKeys.push(key)
-        if (node.children) this.generateList(node.children)
-      }
-    },
+      /**
+       * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key
+       * @param data 璁惧鏍戞暟鎹�
+       */
+      generateList(data) {
+        for (let i = 0; i < data.length; i++) {
+          const node = data[i]
+          const key = node.key
+          const title = node.title
+          const type = node.type
+          this.dataList.push({ key, title, type })
+          this.allTreeKeys.push(key)
+          if (node.children) this.generateList(node.children)
+        }
+      },
 
-    resetData() {
-      this.searchInput = ''
-      this.expandedKeys = []
-      this.selectedRowKeys = []
-      this.selectionRows = {}
-      this.checkedKeys = []
-      this.filters = {}
-      this.isorter = Object.assign({}, this.defaultSorter)
-    },
+      resetData() {
+        this.searchInput = ''
+        this.expandedKeys = []
+        this.selectedRowKeys = []
+        this.selectionRows = []
+        this.checkedKeys = []
+        this.filters = {}
+        this.isorter = Object.assign({}, this.defaultSorter)
+      },
 
-    handleDelete() {
-      // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
-    },
+      handleDelete() {
+        // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
+      },
 
-    triggerCorrespondingMethod({ methodName, modalTitle }) {
-      if (this[methodName]) {
-        this[methodName]()
-        this.title = modalTitle
+      triggerCorrespondingMethod({ methodName, modalTitle }) {
+        if (this[methodName]) {
+          this[methodName]()
+          this.title = modalTitle
+        }
       }
     }
   }
-}
 </script>
 
 <style scoped lang="less">
-/deep/ .ant-modal {
-  .tabs-container {
-    display: flex;
-    justify-content: space-between;
+  /deep/ .ant-modal {
+    .tabs-container {
+      display: flex;
+      justify-content: space-between;
 
-    .replaceSearch {
-      color: #40a9ff;
-      font-weight: bold;
-      background-color: rgb(204, 204, 204);
+      .replaceSearch {
+        color: #40a9ff;
+        font-weight: bold;
+        background-color: rgb(204, 204, 204);
+      }
     }
   }
 
-}
-
-::-webkit-scrollbar {
-  width: 8px;
-}
+  ::-webkit-scrollbar {
+    width: 8px;
+  }
 </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 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>
diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
index a63cbc8..e0d1f7d 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
@@ -30,478 +30,481 @@
 </template>
 
 <script>
-import dncApi from '@/api/dnc'
-import NcDocumentTableList from './Document/NcDocumentTableList'
-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'
+  import dncApi from '@/api/dnc'
+  import NcDocumentTableList from './Document/NcDocumentTableList'
+  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: {
-    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 settingKey 鍚勫眰绾у睍绀烘潈闄恔ey
-     * @param dataProperty 缁勪欢data涓殑灞炴�у�肩敤鏉ユ帶鍒舵槸鍚﹀睍绀�
-     */
-    getDeviceTypeListDisplayPermission(settingKey, dataProperty) {
-      getAction(`/system/sysParams/query/by/settingKey?settingKey=${settingKey}`).then(res => {
-        if (res.success) {
-          this[dataProperty] = res.result.settingValue === '1'
-        }
-      })
+  export default {
+    name: 'ProductStructureMainTop',
+    components: {
+      DeviceCustomTypeTableList,
+      DocumentBatchDeleteModal,
+      TableContextMenu,
+      OtherDocumentTableList,
+      NcDocumentTableList
     },
-
-    /**
-     * 鎺ユ敹鏍戠粍浠朵紶鏉ョ殑褰撳墠閫変腑鐨勬爲鑺傜偣淇℃伅
-     * @param treeNodeInfo 鏍戣妭鐐逛俊鎭�
-     */
-    receiveCurrentTreeNodeInfo(treeNodeInfo) {
-      console.log('treeNodeInfo', treeNodeInfo)
-      const { id, type } = treeNodeInfo
-      // 浠庢爲缁勪欢鎺ュ彈鏍戣妭鐐逛俊鎭悗浠庣埗缁勪欢娴佸叆瀛愮粍浠跺苟閲嶇疆鏁版嵁
-      this.currentClickedTypeInfo = this.currentRightClickedTableRowInfo = {}
-      this.currentTreeNodeInfo = treeNodeInfo
-      this.currentNCDocumentAttributionInfo = Object.assign({}, {
-        attributionId: id,
-        attributionType: type,
-        docClassCode: 'NC'
-      })
-      this.hasLoadedDataTabKeyArray = []
-
-      if (+type === 5 || +type === 6) {
-        this.activeTabKey = 1
-        this.$nextTick(() => {
-          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
-        this.$nextTick(() => {
-          if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
-        })
-      }
-      this.hasLoadedDataTabKeyArray.push(this.activeTabKey)
-    },
-
-    /**
-     * 鎺ュ彈褰撳墠鐐瑰嚮鐨勮澶囩被淇℃伅
-     * @param record 褰撳墠鐐瑰嚮鐨勮澶囩被琛屼俊鎭�
-     */
-    receiveCurrentClickedTypeInfo(record) {
-      const { id, attributionType } = record
-      this.currentClickedTypeInfo = Object.assign({}, record)
-      this.currentNCDocumentAttributionInfo = Object.assign({}, {
-        attributionId: id,
-        attributionType,
-        docClassCode: 'NC'
-      })
-      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)
-    },
-
-    /**
-     * tab鏍忓垏鎹㈡椂瑙﹀彂
-     * @param activeTabKey 鍒囨崲鍚庣殑tabKey
-     */
-    handleTabChange(activeTabKey) {
-      if (!this.hasLoadedDataTabKeyArray.includes(activeTabKey)) {
-        this.$nextTick(() => {
-          if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
-        })
-        // 闃绘鎺ュ彛鍦ㄥ悓涓�鏂囨。涓�娆$偣鍑诲唴澶氭瑙﹀彂
-        this.hasLoadedDataTabKeyArray.push(activeTabKey)
+    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 settingKey 鍚勫眰绾у睍绀烘潈闄恔ey
+       * @param dataProperty 缁勪欢data涓殑灞炴�у�肩敤鏉ユ帶鍒舵槸鍚﹀睍绀�
+       */
+      getDeviceTypeListDisplayPermission(settingKey, dataProperty) {
+        getAction(`/system/sysParams/query/by/settingKey?settingKey=${settingKey}`).then(res => {
+          if (res.success) {
+            this[dataProperty] = res.result.settingValue === '1'
+          }
+        })
+      },
 
-    /**
-     * 鏂囨。浠ュ強NC绋嬪簭瀵煎叆/鍑哄簱/鍏ュ簱/鍙栨秷鍑哄簱/鍙戝竷/褰掓。鎴愬姛鍚庤Е鍙戦噸鏂板姞杞芥枃妗e垪琛�
-     * @param docClassCode 鏂囨。绫诲埆
-     * @param attributionType 鏂囨。鐖剁骇type绫诲瀷
-     * @param attributionId 鏂囨。鐖剁骇Id
-     */
-    reloadDocumentListData({ docClassCode, attributionType, attributionId }) {
-      console.log('docClassCode, attributionType, attributionId', docClassCode, attributionType, attributionId)
-      // 鍦ㄦ澶勮澶嘚C鏂囨。鐖剁骇鍙傛暟鏄彲姝ゆ柟娉曟槸缁撴瀯鏍戜互鍙婅澶囩被涓ょ涓嶅悓瀵煎叆鏂瑰紡鐨勫叡鍚屽嚭鍙�
-      this.currentNCDocumentAttributionInfo = Object.assign({}, { docClassCode, attributionId, attributionType })
+      /**
+       * 鎺ユ敹鏍戠粍浠朵紶鏉ョ殑褰撳墠閫変腑鐨勬爲鑺傜偣淇℃伅
+       * @param treeNodeInfo 鏍戣妭鐐逛俊鎭�
+       */
+      receiveCurrentTreeNodeInfo(treeNodeInfo) {
+        const { id, type, autoClickedLevelInfo } = treeNodeInfo
+        // 浠庢爲缁勪欢鎺ュ彈鏍戣妭鐐逛俊鎭悗浠庣埗缁勪欢娴佸叆瀛愮粍浠跺苟閲嶇疆鏁版嵁
+        this.currentClickedTypeInfo = this.currentRightClickedTableRowInfo = {}
+        this.currentTreeNodeInfo = treeNodeInfo
+        this.currentNCDocumentAttributionInfo = Object.assign({}, {
+          attributionId: id,
+          attributionType: type,
+          docClassCode: 'NC',
+          autoClickedLevelInfo
+        })
+        this.hasLoadedDataTabKeyArray = []
 
-      // 鍒ゆ柇褰撳墠鍙充晶灞曠ず鐨勬枃妗g殑鎵�灞炴槸鍚︽槸褰撳墠宸﹂敭閫変腑鏍戣妭鐐规垨璁惧绫伙紝鑻ヤ笉鏄綋鍓嶅乏閿�変腑鐨勫垯鍦ㄥ鍏ュ悗涓嶅埛鏂板彸渚х殑鏂囨。鍒楄〃(閬垮厤鏃犳晥鍒锋柊)
-      // 鍒ゆ柇鏄惁鏄湪鏂囨。鍒楄〃涓繘琛屽嚭搴�/鍏ュ簱/鍙戝竷/褰掓。绛夋搷浣�,鑻ユ槸鍦ㄦ枃妗e垪琛ㄤ腑鎿嶄綔鍒欐搷浣滄垚鍔熷悗鐩存帴鍒锋柊鏂囨。鍒楄〃
-      if (!this.currentRightClickedTableRowInfo.hasOwnProperty('docId')) {
-        if (this.currentRightClickedTableRowInfo.hasOwnProperty('deviceManagementId')) {
-          // 姝ょ鎯呭喌鏄湪寮曞叆璁惧绫诲苟鍦ㄨ澶囩被鍒楄〃涓繘琛孨C鏂囨。瀵煎叆
-          if (this.currentClickedTypeInfo.id !== attributionId) return
+        if (+type === 5 || +type === 6) {
+          this.activeTabKey = 1
+          this.$nextTick(() => {
+            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 {
-          // 姝ょ鎯呭喌鏄湪缁撴瀯鏍戣妭鐐逛笂杩涜鏂囨。瀵煎叆
-          if (this.currentTreeNodeInfo.id !== attributionId) return
+          this.activeTabKey = 2
+          this.$nextTick(() => {
+            if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
+          })
         }
-      }
+        this.hasLoadedDataTabKeyArray.push(this.activeTabKey)
+      },
 
-      if (docClassCode === 'NC') {
+      /**
+       * 鎺ュ彈褰撳墠鐐瑰嚮鐨勮澶囩被淇℃伅
+       * @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)
         })
-      } else {
-        if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
-      }
-    },
+      },
 
-    // 涓嬭浇褰撳墠鍙抽敭閫変腑鏂囨。
-    handleDownload() {
-      const that = this
-      const { docId, docName } = this.currentRightClickedTableRowInfo
-      dncApi.downloadDocumentApi({ docId, docName })
-        .then(res => {
-          if (!res.success) {
+      /**
+       * 鎺у埗鍙抽敭鑿滃崟寮�鍚�
+       * @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)
+      },
+
+      /**
+       * tab鏍忓垏鎹㈡椂瑙﹀彂
+       * @param activeTabKey 鍒囨崲鍚庣殑tabKey
+       */
+      handleTabChange(activeTabKey) {
+        if (!this.hasLoadedDataTabKeyArray.includes(activeTabKey)) {
+          this.$nextTick(() => {
+            if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
+          })
+          // 闃绘鎺ュ彛鍦ㄥ悓涓�鏂囨。涓�娆$偣鍑诲唴澶氭瑙﹀彂
+          this.hasLoadedDataTabKeyArray.push(activeTabKey)
+        }
+      },
+
+      /**
+       * 鏂囨。浠ュ強NC绋嬪簭瀵煎叆/鍑哄簱/鍏ュ簱/鍙栨秷鍑哄簱/鍙戝竷/褰掓。鎴愬姛鍚庤Е鍙戦噸鏂板姞杞芥枃妗e垪琛�
+       * @param docClassCode 鏂囨。绫诲埆
+       * @param attributionType 鏂囨。鐖剁骇type绫诲瀷
+       * @param attributionId 鏂囨。鐖剁骇Id
+       */
+      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') {
+          this.$nextTick(() => {
+            if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
+          })
+        } else {
+          if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
+        }
+      },
+
+      // 涓嬭浇褰撳墠鍙抽敭閫変腑鏂囨。
+      handleDownload() {
+        const that = this
+        const { docId, docName } = this.currentRightClickedTableRowInfo
+        dncApi.downloadDocumentApi({ docId, docName })
+          .then(res => {
+            if (!res.success) {
+              that.$notification.error({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .catch(err => {
             that.$notification.error({
               message: '娑堟伅',
-              description: res.message
+              description: err.message
             })
+          })
+      },
+
+      // 鍒犻櫎褰撳墠鍙抽敭閫変腑鏂囨。
+      handleDelete() {
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        const that = this
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `鍒犻櫎鍚庝笉鍙彇娑堬紝纭鍒犻櫎鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.deleteDocumentApi({ docId, attributionType, attributionId })
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.$destroyAll()
+              })
+          },
+          onCancel: () => {
+            that.$destroyAll()
           }
         })
-        .catch(err => {
-          that.$notification.error({
-            message: '娑堟伅',
-            description: err.message
-          })
+      },
+
+      /**
+       * 鐐瑰嚮鎵归噺鍒犻櫎鍚庡嚭鐜板脊绐�
+       * @param modalTitle 寮圭獥鏍囬
+       */
+      handleBatchRemove(modalTitle) {
+        if (!this.$refs.documentBatchDeleteModalRef) return
+        this.$refs.documentBatchDeleteModalRef.title = modalTitle
+        this.$refs.documentBatchDeleteModalRef.visible = true
+      },
+
+      /**
+       * 鍑哄簱褰撳墠鍙抽敭閫変腑鏂囨。
+       * @param menuLabel
+       */
+      handlePull(menuLabel) {
+        const that = this
+        const { docId, docName, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `纭${menuLabel}鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.documentOutboundApi({ docId, docName })
+              .then(res => {
+                if (res.success) {
+                  that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: `${menuLabel}鎴愬姛`
+                  })
+                } else {
+                  that.$notification.error({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .catch(err => {
+                that.$notification.error({
+                  message: '娑堟伅',
+                  description: err.message
+                })
+              })
+              .finally(() => {
+                that.$destroyAll()
+              })
+          },
+          onCancel: () => {
+            that.$destroyAll()
+          }
         })
-    },
+      },
 
-    // 鍒犻櫎褰撳墠鍙抽敭閫変腑鏂囨。
-    handleDelete() {
-      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      const that = this
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `鍒犻櫎鍚庝笉鍙彇娑堬紝纭鍒犻櫎鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.deleteDocumentApi({docId,attributionType,attributionId})
-            .then((res) => {
-              if (res.success) {
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-                that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-              } else {
-                that.$notification.warning({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              }
-            })
-            .finally(() => {
-              that.$destroyAll()
-            })
-        },
-        onCancel: () => {
-          that.$destroyAll()
-        }
-      })
-    },
-
-    /**
-     * 鐐瑰嚮鎵归噺鍒犻櫎鍚庡嚭鐜板脊绐�
-     * @param modalTitle 寮圭獥鏍囬
-     */
-    handleBatchRemove(modalTitle) {
-      if (!this.$refs.documentBatchDeleteModalRef) return
-      this.$refs.documentBatchDeleteModalRef.title = modalTitle
-      this.$refs.documentBatchDeleteModalRef.visible = true
-    },
-
-    /**
-     * 鍑哄簱褰撳墠鍙抽敭閫変腑鏂囨。
-     * @param menuLabel
-     */
-    handlePull(menuLabel) {
-      const that = this
-      const { docId, docName, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `纭${menuLabel}鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.documentOutboundApi({ docId, docName })
-            .then(res => {
-              if (res.success) {
-                that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: `${menuLabel}鎴愬姛`
-                })
-              } else {
+      /**
+       * 鍙栨秷鍑哄簱褰撳墠鍙抽敭閫変腑鏂囨。
+       * @param menuLabel
+       */
+      handleCancelPull(menuLabel) {
+        const that = this
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `纭${menuLabel}鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.documentCancelOutboundApi(docId)
+              .then(res => {
+                if (res.success) {
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                } 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()
+          }
+        })
+      },
 
-    /**
-     * 鍙栨秷鍑哄簱褰撳墠鍙抽敭閫変腑鏂囨。
-     * @param menuLabel
-     */
-    handleCancelPull(menuLabel) {
-      const that = this
-      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `纭${menuLabel}鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.documentCancelOutboundApi(docId)
-            .then(res => {
-              if (res.success) {
-                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              } else {
+      /**
+       * 鍙戝竷褰撳墠鍙抽敭閫変腑鏂囨。
+       * @param menuLabel
+       */
+      handlePublish(menuLabel) {
+        const that = this
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `纭${menuLabel}鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.documentPublishApi(docId)
+              .then(res => {
+                if (res.success) {
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                  this.$bus.$emit('reloadMainBottomTableData', 'documentVersion')
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                } 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()
+          }
+        })
+      },
 
-    /**
-     * 鍙戝竷褰撳墠鍙抽敭閫変腑鏂囨。
-     * @param menuLabel
-     */
-    handlePublish(menuLabel) {
-      const that = this
-      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `纭${menuLabel}鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.documentPublishApi(docId)
-            .then(res => {
-              if (res.success) {
-                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-                this.$bus.$emit('reloadMainBottomTableData', 'documentVersion')
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              } else {
+      /**
+       * 閲嶆柊鍙戝竷褰撳墠鍙抽敭閫変腑鏂囨。骞堕噸鏂板彂甯冮��鍥炰笂涓�鏂囨。鐗堟湰
+       * @param menuLabel
+       */
+      handleRepublish(menuLabel) {
+        const that = this
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `纭${menuLabel}鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.documentRepublishApi(docId)
+              .then(res => {
+                if (res.success) {
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                } 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()
+          }
+        })
+      },
 
-    /**
-     * 閲嶆柊鍙戝竷褰撳墠鍙抽敭閫変腑鏂囨。骞堕噸鏂板彂甯冮��鍥炰笂涓�鏂囨。鐗堟湰
-     * @param menuLabel
-     */
-    handleRepublish(menuLabel) {
-      const that = this
-      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `纭${menuLabel}鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.documentRepublishApi(docId)
-            .then(res => {
-              if (res.success) {
-                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              } else {
+      /**
+       * 褰掓。褰撳墠鍙抽敭閫変腑鏂囨。涓斿悗缁棤娉曠户缁彂甯冩垨褰掓。
+       * @param menuLabel
+       */
+      handlePigeonhole(menuLabel) {
+        const that = this
+        const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
+        that.$confirm({
+          title: '鎻愮ず',
+          content: `${menuLabel}鍚庝笉鍙彇娑堬紝纭${menuLabel}鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            dncApi.documentPigeonholeApi(docId)
+              .then(res => {
+                if (res.success) {
+                  this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                } 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()
-        }
-      })
-    },
-
-    /**
-     * 褰掓。褰撳墠鍙抽敭閫変腑鏂囨。涓斿悗缁棤娉曠户缁彂甯冩垨褰掓。
-     * @param menuLabel
-     */
-    handlePigeonhole(menuLabel) {
-      const that = this
-      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
-      that.$confirm({
-        title: '鎻愮ず',
-        content: `${menuLabel}鍚庝笉鍙彇娑堬紝纭${menuLabel}鍚楋紵`,
-        okText: '纭',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          dncApi.documentPigeonholeApi(docId)
-            .then(res => {
-              if (res.success) {
-                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
-                that.$notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              } else {
-                that.$notification.error({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              }
-            })
-            .catch(err => {
-              that.$notification.error({
-                message: '娑堟伅',
-                description: err.message
+              .finally(() => {
+                that.$destroyAll()
               })
-            })
-            .finally(() => {
-              that.$destroyAll()
-            })
-        },
-        onCancel() {
-          that.$destroyAll()
-        }
-      })
-    },
+          },
+          onCancel() {
+            that.$destroyAll()
+          }
+        })
+      },
 
-    // 鎺у埗鍙抽敭鑿滃崟鍏抽棴
-    handleMenuClose() {
-      this.$refs.tableContextMenuRef.menuVisible = false
-      document.body.removeEventListener('click', this.handleMenuClose)
-    },
+      // 鎺у埗鍙抽敭鑿滃崟鍏抽棴
+      handleMenuClose() {
+        this.$refs.tableContextMenuRef.menuVisible = false
+        document.body.removeEventListener('click', this.handleMenuClose)
+      },
 
-    triggerCorrespondingMethod({ methodName, modalTitle }) {
-      if (this[methodName]) this[methodName](modalTitle)
+      triggerCorrespondingMethod({ methodName, modalTitle }) {
+        if (this[methodName]) this[methodName](modalTitle)
+      }
     }
   }
-}
 </script>
 
 <style scoped>
-/deep/ .ant-table-tbody .ant-table-row {
-  cursor: pointer;
-}
+  /deep/ .ant-table-tbody .ant-table-row {
+    cursor: pointer;
+  }
 </style>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
index 9d8320b..7ca8dcb 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
@@ -4,7 +4,7 @@
       <div style="display: flex;flex-direction: column;height: 100%">
         <div style="display: flex;justify-content: space-between">
           <a-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" allowClear v-model="searchInput"
-                   @change="handleSearchInputChange" />
+                   @change="handleSearchInputChange"/>
           <!--          <a-tooltip title="鍒锋柊">-->
           <!--            <a-button icon="reload" @click="handleTreeReload" style="width: 18%;margin-left: 8px"></a-button>-->
           <!--          </a-tooltip>-->
@@ -31,16 +31,16 @@
                   @select="handleTreeSelect" @expand="handleTreeExpand" @rightClick="handleTreeRightClick">
             <template slot="title" slot-scope="{ label, parentId, key:treeKey,type}">
               <ProductStructureTreeContextMenu ref="contextMenuRef"
-                                               :treeParams="{label,treeKey,searchValue,type}" />
+                                               :treeParams="{label,treeKey,searchValue,type}"/>
             </template>
 
-            <a-icon slot="switcherIcon" type="down" />
-            <a-icon slot="product" type="shopping" />
-            <a-icon slot="component" type="camera" />
-            <a-icon slot="part" type="hdd" />
-            <a-icon slot="processSpecVersion" type="tag" />
-            <a-icon slot="process" type="apartment" />
-            <a-icon slot="processStep" type="tool" />
+            <a-icon slot="switcherIcon" type="down"/>
+            <a-icon slot="product" type="shopping"/>
+            <a-icon slot="component" type="camera"/>
+            <a-icon slot="part" type="hdd"/>
+            <a-icon slot="processSpecVersion" type="tag"/>
+            <a-icon slot="process" type="apartment"/>
+            <a-icon slot="processStep" type="tool"/>
           </a-tree>
         </div>
       </div>
@@ -48,421 +48,481 @@
 
     <!--浜у搧寮圭獥-->
     <ProductModal ref="productModalFormRef" :currentTreeNodeInfo="rightClickSelected"
-                  @submitSuccess="getTreeDataByApi" />
+                  @submitSuccess="getTreeDataByApi"/>
     <!--閮ㄤ欢寮圭獥-->
-    <ComponentModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <ComponentModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--闆朵欢寮圭獥-->
-    <PartModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <PartModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--宸ヨ壓瑙勭▼鐗堟湰寮圭獥-->
-    <ProcessSpecVersionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <ProcessSpecVersionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--宸ュ簭寮圭獥-->
-    <ProcessModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <ProcessModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--宸ユ寮圭獥-->
-    <ProcessStepModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <ProcessStepModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--鏉冮檺閰嶇疆寮圭獥-->
-    <AssignPermissionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <AssignPermissionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--妫�绱㈢數瀛愭ā鏉垮脊绐�-->
-    <NcDocumentSearchModal :currentDocumentInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <NcDocumentSearchModal :currentDocumentInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--妫�绱C鏂囦欢寮圭獥-->
-    <NcDocumentSearchNcModal :currentDocumentInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <NcDocumentSearchNcModal :currentDocumentInfo="rightClickSelected" @searchTreeNode="searchTreeNode"
+                             @submitSuccess="modalFormSubmitSuccess"/>
     <!--寮曠敤閮ㄤ欢-->
-    <NcComponentBorrowModal :currentBorrowInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <NcComponentBorrowModal :currentBorrowInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/>
     <!--浜у搧缁撴瀯鏍戝熀鏈彸閿彍鍗�(绌虹櫧澶勮Е鍙�)-->
-    <ProductStructureBaseContextMenu ref="baseContextmenuRef" />
+    <ProductStructureBaseContextMenu ref="baseContextmenuRef"/>
+
+    <div class="full-screen-container" v-if="fullScreenSpinning">
+      <a-spin :spinning="fullScreenSpinning" size="large" tip="NC鏂囦欢妫�绱腑..."/>
+    </div>
   </a-card>
 </template>
 
 <script>
-import dncApi from '@/api/dnc'
-import { deleteAction } from '@/api/manage'
-import ProductStructureTreeContextMenu from './ProductStructureTreeContextMenu'
-import ProductModal from './Product/ProductModal'
-import ComponentModal from './Component/ComponentModal'
-import PartModal from './Part/PartModal'
-import ProcessSpecVersionModal from './ProcessSpecVersion/ProcessSpecVersionModal'
-import ProcessModal from './Process/ProcessModal'
-import ProcessStepModal from './ProcessStep/ProcessStepModal'
-import AssignPermissionModal from './Permission/AssignPermissionModal'
-import DeviceCustomTypeModal from '@views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModal.vue'
-import ProductStructureBaseContextMenu
-  from '@views/dnc/base/modules/ProductStructure/ProductStructureBaseContextMenu.vue'
-import NcDocumentSearchModal from '@views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchModal.vue'
-import NcDocumentSearchNcModal from '@views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue'
-import NcComponentBorrowModal from '@views/dnc/base/modules/ProductStructure/Document/NcComponentBorrowModal.vue'
+  import dncApi from '@/api/dnc'
+  import { deleteAction } from '@/api/manage'
+  import ProductStructureTreeContextMenu from './ProductStructureTreeContextMenu'
+  import ProductModal from './Product/ProductModal'
+  import ComponentModal from './Component/ComponentModal'
+  import PartModal from './Part/PartModal'
+  import ProcessSpecVersionModal from './ProcessSpecVersion/ProcessSpecVersionModal'
+  import ProcessModal from './Process/ProcessModal'
+  import ProcessStepModal from './ProcessStep/ProcessStepModal'
+  import AssignPermissionModal from './Permission/AssignPermissionModal'
+  import DeviceCustomTypeModal
+    from '@views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModal.vue'
+  import ProductStructureBaseContextMenu
+    from '@views/dnc/base/modules/ProductStructure/ProductStructureBaseContextMenu.vue'
+  import NcDocumentSearchModal from '@views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchModal.vue'
+  import NcDocumentSearchNcModal from '@views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue'
+  import NcComponentBorrowModal from '@views/dnc/base/modules/ProductStructure/Document/NcComponentBorrowModal.vue'
 
-export default {
-  name: 'ProductStructureTree',
-  components: {
-    ProductStructureBaseContextMenu,
-    DeviceCustomTypeModal,
-    AssignPermissionModal,
-    ProcessStepModal,
-    ProcessModal,
-    ProcessSpecVersionModal,
-    PartModal,
-    ComponentModal,
-    ProductModal,
-    ProductStructureTreeContextMenu,
-    NcDocumentSearchModal,
-    NcDocumentSearchNcModal,
-    NcComponentBorrowModal
-  },
-  data() {
-    return {
-      searchInput: '',
-      cardLoading: false,
-      loading: false,
-      treeDataSource: [],
-      selectedKeys: [],
-      expandedKeys: [],
-      beforeSearchExpandedKeys: [],
-      searchValue: '',
-      dataList: [],
-      autoExpandParent: true,
-      checkStrictly: true,
-      allTreeKeys: [],
-      rightClickSelected: {},
-      url: {
-        delete: '/nc/product/delete'
-      }
-    }
-  },
-  created() {
-    this.getTreeDataByApi()
-    this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
-  },
-  beforeDestroy() {
-    this.$bus.$off('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
-  },
-  methods: {
-    // 璋冪敤鎺ュ彛鑾峰彇鏍戠殑鏁版嵁
-    getTreeDataByApi() {
-      this.loading = true
-      this.cardLoading = true
-      this.treeDataSource = []
-      dncApi.getProductStructureTreeApi()
-        .then(res => {
-          if (res.success) {
-            this.dataList = []
-            this.allTreeKeys = []
-            this.treeDataSource = res.result
-            this.generateList(this.treeDataSource)
-            // this.expandedKeys = this.allTreeKeys
-            if (this.expandedKeys.length === 0) this.expandedKeys = this.beforeSearchExpandedKeys = [this.treeDataSource[0].id]
-          } else {
-            this.$message.warn(res.message)
-          }
-        }).finally(() => {
-        this.loading = false
-        this.cardLoading = false
-      })
+  export default {
+    name: 'ProductStructureTree',
+    components: {
+      ProductStructureBaseContextMenu,
+      DeviceCustomTypeModal,
+      AssignPermissionModal,
+      ProcessStepModal,
+      ProcessModal,
+      ProcessSpecVersionModal,
+      PartModal,
+      ComponentModal,
+      ProductModal,
+      ProductStructureTreeContextMenu,
+      NcDocumentSearchModal,
+      NcDocumentSearchNcModal,
+      NcComponentBorrowModal
     },
-
-    /**
-     * 鏍戣妭鐐归�変腑鏃惰Е鍙�
-     * @param selectedKeys 閫変腑鑺傜偣key
-     * @param {node} node 鑺傜偣瀵硅薄
-     */
-    handleTreeSelect(selectedKeys, { node }) {
-      const that = this
-      let record = node.dataRef
-      const { id, type } = record
-      dncApi.getProductStructureTreeNodeEntityApi({ id, type })
-        .then(res => {
-          if (res.success) {
-            let currentSelectedNodeInfo
-            if (res.result.length > 0) {
-              currentSelectedNodeInfo = Object.assign({}, record, { entity: res.result[0] })
-            } else {
-              currentSelectedNodeInfo = {}
-              that.$notification.warning({
-                message: '娑堟伅',
-                description: '鏆傛棤璇ヨ妭鐐硅缁嗕俊鎭�'
-              })
-            }
-            // 鍚戝彸渚х埗绾х粍浠跺彂閫佸綋鍓嶉�変腑鏍戣妭鐐逛俊鎭�
-            this.$bus.$emit('sendCurrentTreeNodeInfo', currentSelectedNodeInfo)
-          } else {
-            that.$notification.error({
-              message: '娑堟伅',
-              description: res.message
-            })
-          }
-        })
-      if (selectedKeys.length === 0) return
-      this.selectedKeys = selectedKeys
-    },
-
-    /**
-     * 鏍戣妭鐐瑰彸閿崟鍑昏妭鐐规椂瑙﹀彂
-     * @param node 鑺傜偣瀵硅薄
-     */
-    handleTreeRightClick({ node }) {
-      if (this.$refs.baseContextmenuRef) this.$refs.baseContextmenuRef.menuVisible = false
-      const that = this
-      const record = node.dataRef
-      const { id, type } = record
-      dncApi.getProductStructureTreeNodeEntityApi({ id, type })
-        .then(res => {
-          if (res.success) {
-            if (res.result.length > 0) {
-              that.rightClickSelected = Object.assign({}, record, { entity: res.result[0] })
-            } else {
-              that.rightClickSelected = {}
-              that.$notification.warning({
-                message: '娑堟伅',
-                description: '鏆傛棤璇ヨ妭鐐硅缁嗕俊鎭�'
-              })
-            }
-          } else {
-            that.$notification.error({
-              message: '娑堟伅',
-              description: res.message
-            })
-          }
-        })
-    },
-
-    // 鏍戣妭鐐瑰彸閿崟鍑昏彍鍗曚腑鍒犻櫎鎸夐挳鏃惰Е鍙�
-    handleDelete() {
-      const that = this
-      const { rightClickSelected: { id, type }, $confirm, url, $notification } = that
-      $confirm({
-        title: '鎻愮ず',
-        content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
-        okText: '纭',
-        okType: 'danger',
-        cancelText: '鍙栨秷',
-        onOk: () => {
-          if (!url.delete) {
-            this.$message.error('璇疯缃畊rl.delete灞炴��!')
-            return
-          }
-          deleteAction(url.delete + `/${id}/${type}`)
-            .then((res) => {
-              if (res.success) {
-                that.getTreeDataByApi()
-                $notification.success({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              } else {
-                $notification.warning({
-                  message: '娑堟伅',
-                  description: res.message
-                })
-              }
-            })
-            .finally(() => {
-              that.$destroyAll()
-            })
-        },
-        onCancel: () => {
-          that.$destroyAll()
+    data() {
+      return {
+        searchInput: '',
+        cardLoading: false,
+        loading: false,
+        treeDataSource: [],
+        selectedKeys: [],
+        expandedKeys: [],
+        beforeSearchExpandedKeys: [],
+        searchValue: '',
+        dataList: [],
+        autoExpandParent: true,
+        checkStrictly: true,
+        allTreeKeys: [],
+        rightClickSelected: {},
+        fullScreenSpinning: false,
+        url: {
+          delete: '/nc/product/delete'
         }
-      })
+      }
     },
-
-    /**
-     * 鑷姩灞曞紑娣诲姞涓嬬骇鑺傜偣鐨勭埗鑺傜偣
-     * @param isAddNextLevel 鏄惁闇�瑕佸睍寮�涓嬬骇
-     */
-    modalFormSubmitSuccess(isAddNextLevel) {
-      // 鍒ゆ柇鏄惁涓烘坊鍔犱笅绾у苟涓斿垽鏂埗鑺傜偣鏄惁灞曞紑
-      if (isAddNextLevel && !this.expandedKeys.includes(this.rightClickSelected.id)) this.expandedKeys.push(this.rightClickSelected.id)
+    created() {
       this.getTreeDataByApi()
+      this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
+      this.$bus.$on('searchNcFinished', () => this.fullScreenSpinning = false)
     },
-
-    /**
-     * 鏍戣妭鐐瑰睍寮�鍚堝苟鏃惰Е鍙�
-     * @param expandedKeys 灞曞紑椤筴ey
-     */
-    handleTreeExpand(expandedKeys) {
-      this.expandedKeys = this.beforeSearchExpandedKeys = expandedKeys
-      this.autoExpandParent = false
+    beforeDestroy() {
+      this.$bus.$off('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod)
     },
+    methods: {
+      // 璋冪敤鎺ュ彛鑾峰彇鏍戠殑鏁版嵁
+      getTreeDataByApi() {
+        this.loading = true
+        this.cardLoading = true
+        this.treeDataSource = []
+        dncApi.getProductStructureTreeApi()
+          .then(res => {
+            if (res.success) {
+              this.dataList = []
+              this.allTreeKeys = []
+              this.treeDataSource = res.result
+              this.generateList(this.treeDataSource)
+              // this.expandedKeys = this.allTreeKeys
+              if (this.expandedKeys.length === 0) this.expandedKeys = this.beforeSearchExpandedKeys = [this.treeDataSource[0].id]
+            } else {
+              this.$message.warn(res.message)
+            }
+          }).finally(() => {
+          this.loading = false
+          this.cardLoading = false
+        })
+      },
 
-    // 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙戯紙澧炲姞闃叉姈鏈哄埗锛�
-    handleSearchInputChange() {
-      const that = this
-      let timer
-      if (timer) clearTimeout(timer)
-      timer = setTimeout(function() {
-        that.searchAndExpandTreeNode() // 鍔犲皬鎷彿璋冪敤鍑芥暟
-      }, 1000)
-    },
-
-    // 闃叉姈鍑芥暟涓Е鍙戞悳绱㈠苟灞曞紑鏍戣妭鐐�
-    searchAndExpandTreeNode() {
-      let search = this.searchInput
-      let expandedKeys
-      let autoExpandParent
-      if (search !== '') {
-        expandedKeys = this.dataList
-          .map(item => {
-            if (item.title != null) {
-              if (item.title.indexOf(search) > -1) {
-                return this.getParentKey(item.key, this.treeDataSource)
+      /**
+       * 鏍戣妭鐐归�変腑鏃惰Е鍙�
+       * @param selectedKeys 閫変腑鑺傜偣key
+       * @param eventOrRecord  鑺傜偣瀵硅薄鎴栬�呮墜鍔ㄤ紶鍏ecord
+       */
+      handleTreeSelect(selectedKeys, eventOrRecord) {
+        const that = this
+        let record = eventOrRecord.node ? eventOrRecord.node.dataRef : eventOrRecord
+        const { id, type } = record
+        dncApi.getProductStructureTreeNodeEntityApi({ id, type })
+          .then(res => {
+            if (res.success) {
+              let currentSelectedNodeInfo
+              if (res.result.length > 0) {
+                currentSelectedNodeInfo = Object.assign({}, record, { entity: res.result[0] })
+              } else {
+                currentSelectedNodeInfo = {}
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: '鏆傛棤璇ヨ妭鐐硅缁嗕俊鎭�'
+                })
               }
-              return null
+              // 鍚戝彸渚х埗绾х粍浠跺彂閫佸綋鍓嶉�変腑鏍戣妭鐐逛俊鎭�
+              this.$bus.$emit('sendCurrentTreeNodeInfo', currentSelectedNodeInfo)
+            } else {
+              that.$notification.error({
+                message: '娑堟伅',
+                description: res.message
+              })
             }
           })
-          .filter((item, i, self) => item && self.indexOf(item) === i)
-        autoExpandParent = true
-      } else {
-        expandedKeys = this.beforeSearchExpandedKeys
-        autoExpandParent = false
-      }
-      Object.assign(this, {
-        expandedKeys,
-        searchValue: search,
-        autoExpandParent
-      })
-    },
+        if (selectedKeys.length === 0) return
+        this.selectedKeys = selectedKeys
+      },
 
-    /**
-     * 閫掑綊鑾峰緱杈撳叆椤圭殑鐖剁骇key
-     * @param key 瀛愰」key
-     * @param tree 瀛愰」
-     */
-    getParentKey(key, tree) {
-      let parentKey
-      for (let i = 0; i < tree.length; i++) {
-        const node = tree[i]
-        if (node.children) {
-          if (node.children.some(item => item.key === key)) {
-            parentKey = node.key
-          } else if (
-            this.getParentKey(key, node.children)) {
-            parentKey = this.getParentKey(key, node.children)
+      /**
+       * 鏍戣妭鐐瑰彸閿崟鍑昏妭鐐规椂瑙﹀彂
+       * @param node 鑺傜偣瀵硅薄
+       */
+      handleTreeRightClick({ node }) {
+        if (this.$refs.baseContextmenuRef) this.$refs.baseContextmenuRef.menuVisible = false
+        const that = this
+        const record = node.dataRef
+        const { id, type } = record
+        dncApi.getProductStructureTreeNodeEntityApi({ id, type })
+          .then(res => {
+            if (res.success) {
+              if (res.result.length > 0) {
+                that.rightClickSelected = Object.assign({}, record, { entity: res.result[0] })
+              } else {
+                that.rightClickSelected = {}
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: '鏆傛棤璇ヨ妭鐐硅缁嗕俊鎭�'
+                })
+              }
+            } else {
+              that.$notification.error({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+      },
+
+      // 鏍戣妭鐐瑰彸閿崟鍑昏彍鍗曚腑鍒犻櫎鎸夐挳鏃惰Е鍙�
+      handleDelete() {
+        const that = this
+        const { rightClickSelected: { id, type }, $confirm, url, $notification } = that
+        $confirm({
+          title: '鎻愮ず',
+          content: '纭鍒犻櫎姝ゆ潯璁板綍鍚楋紵',
+          okText: '纭',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            if (!url.delete) {
+              this.$message.error('璇疯缃畊rl.delete灞炴��!')
+              return
+            }
+            deleteAction(url.delete + `/${id}/${type}`)
+              .then((res) => {
+                if (res.success) {
+                  that.getTreeDataByApi()
+                  $notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                } else {
+                  $notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.$destroyAll()
+              })
+          },
+          onCancel: () => {
+            that.$destroyAll()
+          }
+        })
+      },
+
+      /**
+       * 鑷姩灞曞紑娣诲姞涓嬬骇鑺傜偣鐨勭埗鑺傜偣
+       * @param isAddNextLevel 鏄惁闇�瑕佸睍寮�涓嬬骇
+       */
+      modalFormSubmitSuccess(isAddNextLevel) {
+        // 鍒ゆ柇鏄惁涓烘坊鍔犱笅绾у苟涓斿垽鏂埗鑺傜偣鏄惁灞曞紑
+        if (isAddNextLevel && !this.expandedKeys.includes(this.rightClickSelected.id)) this.expandedKeys.push(this.rightClickSelected.id)
+        this.getTreeDataByApi()
+      },
+
+      /**
+       * 鏍戣妭鐐瑰睍寮�鍚堝苟鏃惰Е鍙�
+       * @param expandedKeys 灞曞紑椤筴ey
+       */
+      handleTreeExpand(expandedKeys) {
+        this.expandedKeys = this.beforeSearchExpandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+
+      /**
+       * 妫�绱C鏂囦欢寮圭獥涓弻鍑昏璁板綍鍚庤Е鍙戞悳绱C鏂囦欢瀵瑰簲鏍戣妭鐐瑰苟妯℃嫙閫変腑鏍戣妭鐐规煡璇㈠搴旇澶囩被鎴朜C鏂囦欢
+       * @param searchNcRecord 妫�绱C鏂囦欢寮圭獥涓弻鍑昏幏寰楃殑NC鏂囦欢鍒楄〃琛岃褰�
+       */
+      searchTreeNode(searchNcRecord) {
+        this.fullScreenSpinning = true
+        const { attributionId, nodeCode, nodeName, nodeId, docId } = searchNcRecord
+        this.searchInput = `[${nodeCode}]${nodeName}`
+        this.searchAndExpandTreeNode()
+        const treeNodeRecord = Object.assign({
+          autoClickedLevelInfo: {
+            attributionId,
+            docId
+          }
+        }, this.getTreeNodeRecord(nodeId, this.treeDataSource))
+        this.handleTreeSelect([treeNodeRecord.id], treeNodeRecord)
+      },
+
+      // 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙戯紙澧炲姞闃叉姈鏈哄埗锛�
+      handleSearchInputChange() {
+        const that = this
+        let timer
+        if (timer) clearTimeout(timer)
+        timer = setTimeout(function() {
+          that.searchAndExpandTreeNode() // 鍔犲皬鎷彿璋冪敤鍑芥暟
+        }, 1000)
+      },
+
+      // 闃叉姈鍑芥暟涓Е鍙戞悳绱㈠苟灞曞紑鏍戣妭鐐�
+      searchAndExpandTreeNode() {
+        let search = this.searchInput
+        let expandedKeys
+        let autoExpandParent
+        if (search !== '') {
+          expandedKeys = this.dataList
+            .map(item => {
+              if (item.title != null) {
+                if (item.title.indexOf(search) > -1) {
+                  return this.getParentKey(item.key, this.treeDataSource)
+                }
+                return null
+              }
+            })
+            .filter((item, i, self) => item && self.indexOf(item) === i)
+          autoExpandParent = true
+        } else {
+          expandedKeys = this.beforeSearchExpandedKeys
+          autoExpandParent = false
+        }
+        Object.assign(this, {
+          expandedKeys,
+          searchValue: search,
+          autoExpandParent
+        })
+      },
+
+      /**
+       * 閫掑綊鑾峰緱杈撳叆椤圭殑鐖剁骇key
+       * @param key 瀛愰」key
+       * @param tree 瀛愰」
+       */
+      getParentKey(key, tree) {
+        let parentKey
+        for (let i = 0; i < tree.length; i++) {
+          const node = tree[i]
+          if (node.children) {
+            if (node.children.some(item => item.key === key)) {
+              parentKey = node.key
+            } else if (
+              this.getParentKey(key, node.children)) {
+              parentKey = this.getParentKey(key, node.children)
+            }
           }
         }
+        return parentKey
+      },
+
+      /**
+       * 閫掑綊鑾峰緱杈撳叆椤圭殑record瀵硅薄
+       * @param key record瀵硅薄key鍊�
+       * @param tree 鏍戣妭鐐�
+       */
+      getTreeNodeRecord(key, tree) {
+        let treeNodeRecord
+        for (let i = 0; i < tree.length; i++) {
+          const node = tree[i]
+          if (node.children) {
+            if (node.children.findIndex(item => item.key === key) > -1) {
+              treeNodeRecord = node.children.find(item => item.key === key)
+            } else if (this.getTreeNodeRecord(key, node.children)) {
+              treeNodeRecord = this.getTreeNodeRecord(key, node.children)
+            }
+          }
+        }
+        return treeNodeRecord
+      },
+
+      /**
+       * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key
+       * @param data
+       */
+      generateList(data) {
+        for (let i = 0; i < data.length; i++) {
+          data[i].key = data[i].id
+          const node = data[i]
+          const key = node.id
+          const title = node.label
+          this.dataList.push({ key, title })
+          this.allTreeKeys.push(key)
+          this.setTreeNodeIcon(node)
+          if (node.children) this.generateList(node.children)
+        }
+      },
+
+      /**
+       * 鏍戞墍鍦ㄧ埗鍏冪礌鐨勫彸閿簨浠�
+       * @param event 浜嬩欢瀵硅薄
+       */
+      openBaseContextMenu(event) {
+        event.preventDefault()
+        if (event.target.id !== 'tree-container') return
+        this.$refs.baseContextmenuRef.menuStyle.top = event.clientY + 'px'
+        this.$refs.baseContextmenuRef.menuStyle.left = event.clientX + 'px'
+        this.$refs.baseContextmenuRef.menuVisible = true
+        document.body.addEventListener('click', this.handleBaseContextMenuClose)
+      },
+
+      /**
+       * 璁剧疆鏍戣妭鐐瑰浘鏍�
+       * @param treeNode
+       */
+      setTreeNodeIcon(treeNode) {
+        switch (+treeNode.type) {
+          case 1:
+            treeNode.slots = { icon: 'product' }
+            break
+          case 2:
+            treeNode.slots = { icon: 'component' }
+            break
+          case 3:
+            treeNode.slots = { icon: 'part' }
+            break
+          case 4:
+            treeNode.slots = { icon: 'processSpecVersion' }
+            break
+          case 5:
+            treeNode.slots = { icon: 'process' }
+            break
+          case 6:
+            treeNode.slots = { icon: 'processStep' }
+            break
+          default:
+        }
+      },
+
+      // 鎺у埗鍩虹鍙抽敭鑿滃崟鍏抽棴
+      handleBaseContextMenuClose() {
+        if (this.$refs.baseContextmenuRef) this.$refs.baseContextmenuRef.menuVisible = false
+        document.body.removeEventListener('click', this.handleBaseContextMenuClose)
+      },
+
+      // 鍒锋柊閲嶆柊鑾峰彇鏍戠殑鏁版嵁
+      handleTreeReload() {
+        this.getTreeDataByApi()
+      },
+
+      triggerCorrespondingMethod({ methodName }) {
+        if (this[methodName]) this[methodName]()
       }
-      return parentKey
-    },
 
-    /**
-     * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣key
-     * @param data
-     */
-    generateList(data) {
-      for (let i = 0; i < data.length; i++) {
-        data[i].key = data[i].id
-        const node = data[i]
-        const key = node.id
-        const title = node.label
-        this.dataList.push({ key, title })
-        this.allTreeKeys.push(key)
-        this.setTreeNodeIcon(node)
-        if (node.children) this.generateList(node.children)
-      }
-    },
-
-    /**
-     * 鏍戞墍鍦ㄧ埗鍏冪礌鐨勫彸閿簨浠�
-     * @param event 浜嬩欢瀵硅薄
-     */
-    openBaseContextMenu(event) {
-      event.preventDefault()
-      if (event.target.id !== 'tree-container') return
-      this.$refs.baseContextmenuRef.menuStyle.top = event.clientY + 'px'
-      this.$refs.baseContextmenuRef.menuStyle.left = event.clientX + 'px'
-      this.$refs.baseContextmenuRef.menuVisible = true
-      document.body.addEventListener('click', this.handleBaseContextMenuClose)
-    },
-
-    /**
-     * 璁剧疆鏍戣妭鐐瑰浘鏍�
-     * @param treeNode
-     */
-    setTreeNodeIcon(treeNode) {
-      switch (+treeNode.type) {
-        case 1:
-          treeNode.slots = { icon: 'product' }
-          break
-        case 2:
-          treeNode.slots = { icon: 'component' }
-          break
-        case 3:
-          treeNode.slots = { icon: 'part' }
-          break
-        case 4:
-          treeNode.slots = { icon: 'processSpecVersion' }
-          break
-        case 5:
-          treeNode.slots = { icon: 'process' }
-          break
-        case 6:
-          treeNode.slots = { icon: 'processStep' }
-          break
-        default:
-      }
-    },
-
-    // 鎺у埗鍩虹鍙抽敭鑿滃崟鍏抽棴
-    handleBaseContextMenuClose() {
-      if(this.$refs.baseContextmenuRef)this.$refs.baseContextmenuRef.menuVisible = false
-      document.body.removeEventListener('click', this.handleBaseContextMenuClose)
-    },
-
-    // 鍒锋柊閲嶆柊鑾峰彇鏍戠殑鏁版嵁
-    handleTreeReload() {
-      this.getTreeDataByApi()
-    },
-
-    triggerCorrespondingMethod({ methodName }) {
-      if (this[methodName]) this[methodName]()
     }
-
   }
-}
 </script>
 
 <style lang="less" scoped>
-/deep/ .ant-card-body {
-  padding: 0 12px 0 0;
-}
-
-/deep/ .ant-card-body, /deep/ .ant-spin-nested-loading, /deep/ .ant-spin-container {
-  height: 100%;
-}
-
-/deep/ .ant-tree-title, .ant-tree-title .ant-dropdown-trigger {
-  display: inline-block;
-  width: calc(100% - 24px) !important;
-}
-
-::-webkit-scrollbar {
-  width: 8px;
-}
-
-@media screen and (min-width: 1920px) {
-  .tree_con {
-    height: 748px !important;
+  /deep/ .ant-card-body {
+    padding: 0 12px 0 0;
   }
-}
 
-@media screen and (min-width: 1680px) and (max-width: 1920px) {
-  .tree_con {
-    height: 748px !important;
+  /deep/ .ant-card-body, /deep/ .ant-spin-nested-loading, /deep/ .ant-spin-container {
+    height: 100%;
   }
-}
 
-@media screen and (min-width: 1400px) and (max-width: 1680px) {
-  .tree_con {
-    height: 600px !important;
+  /deep/ .ant-tree-title, .ant-tree-title .ant-dropdown-trigger {
+    display: inline-block;
+    width: calc(100% - 24px) !important;
   }
-}
 
-@media screen and (min-width: 1280px) and (max-width: 1400px) {
-  .tree_con {
-    height: 501px !important;
+  ::-webkit-scrollbar {
+    width: 8px;
   }
-}
 
-@media screen and (max-width: 1280px) {
-  .tree_con {
-    height: 501px !important;
+  .full-screen-container {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, .8);
+    z-index: 9999;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
   }
-}
+
+  @media screen and (min-width: 1920px) {
+    .tree_con {
+      height: 748px !important;
+    }
+  }
+
+  @media screen and (min-width: 1680px) and (max-width: 1920px) {
+    .tree_con {
+      height: 748px !important;
+    }
+  }
+
+  @media screen and (min-width: 1400px) and (max-width: 1680px) {
+    .tree_con {
+      height: 600px !important;
+    }
+  }
+
+  @media screen and (min-width: 1280px) and (max-width: 1400px) {
+    .tree_con {
+      height: 501px !important;
+    }
+  }
+
+  @media screen and (max-width: 1280px) {
+    .tree_con {
+      height: 501px !important;
+    }
+  }
 </style>
diff --git a/src/views/dnc/common/TableContextMenu.vue b/src/views/dnc/common/TableContextMenu.vue
index 28f045f..544e46d 100644
--- a/src/views/dnc/common/TableContextMenu.vue
+++ b/src/views/dnc/common/TableContextMenu.vue
@@ -96,6 +96,7 @@
             { 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: true },
+            { label: '瀹氬瀷', code: 'document_appoint', subMenu: [], icon: 'swap-right', isCommonMethod: true },
             {
               label: '鐢熷懡鍛ㄦ湡',
               subMenu: [
diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue
index dede3fd..e40a1fd 100644
--- a/src/views/flowable/workflow/FlowTodo.vue
+++ b/src/views/flowable/workflow/FlowTodo.vue
@@ -183,6 +183,11 @@
       :selectShenpiData='selectDispatchFileXqData'
       @searchReset='searchReset'
     ></DispatchFileHandle>
+    <StandardizedProcessHandle
+      ref='StandardizedProcessHandle'
+      :selectShenpiData='selectDispatchFileXqData'
+      @searchReset='searchReset'
+    ></StandardizedProcessHandle>
     <DispatchFileBachHandleStyle
       ref='modalFormDispatchFileBatch'
       @ok='modalFormOk'
@@ -301,6 +306,7 @@
 import lossBoundHandle from '@views/flowable/workflow/lossBound/lossBoundHandle.vue'
 import InboundOrderHandle from '@views/flowable/workflow/inboundOrder/InboundOrderHandle.vue'
 import SparePartApplyHandle from '@views/flowable/workflow/sparePartApply/SparePartApplyHandle.vue'
+import StandardizedProcessHandle from '@views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue'
 
 export default {
   name: 'NcDeviceCharactersList',
@@ -325,7 +331,8 @@
     InboundOrderHandle,
     EquipmentTransferApprovalModal,
     EquipmentScrapApprovalModal,
-    SparePartApplyHandle
+    SparePartApplyHandle,
+    StandardizedProcessHandle
   },
   data() {
     return {
@@ -475,6 +482,9 @@
         case 'ggApproval':
           this.handDispatchFileDetial(item)
           break
+        case 'standardized_approval':
+          this.handStandardizedDetial(item)
+          break
         case 'sbdjApproval':
           this.handInspectionOrder(item)
           break
@@ -570,6 +580,12 @@
       this.$refs.modalFormDispatchFileXq.clearTableSource()
       this.$refs.modalFormDispatchFileXq.getAllApproveData(item)
     },
+    //瀹氬瀷瀹℃壒椤甸潰
+    handStandardizedDetial(item){
+      this.selectDispatchFileXqData = item
+      this.$refs.StandardizedProcessHandle.clearTableSource()
+      this.$refs.StandardizedProcessHandle.getAllApproveData(item)
+    },
 
     handInspectionOrder(record) {
       console.log('record----->', record)
diff --git a/src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue b/src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue
new file mode 100644
index 0000000..a5bd125
--- /dev/null
+++ b/src/views/flowable/workflow/standardizedProcess/StandardizedProcessHandle.vue
@@ -0,0 +1,413 @@
+<!--
+ Description: 宸ヤ綔娴�-NC瀹$澶勭悊椤甸潰 List
+ Author: 浣滆�� liuyh
+ Date:   2025-02-27
+-->
+<template>
+  <a-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    :footer="null"
+    @cancel="handCancel"
+  >
+    <a-card :bordered="false">
+      <div>
+        <b>{{ selectShenpiData.description }}</b>
+        <br>
+        <br>
+        <a-tag color="blue">
+          褰撳墠澶勭悊浜� {{ selectShenpiData.assignee_dictText }}
+        </a-tag>
+        <a-tag color="blue">
+          浠诲姟鍒涘缓鏃堕棿 {{ selectShenpiData.createTime }}
+        </a-tag>
+        <br>
+        <br>
+        <button @click="fetchAndShowBmp" class="btn-custom">鎵撳紑娴佺▼鍥�</button>
+        <div v-if="imageSrc">
+          <img :src="imageSrc" alt="Fetched Image" />
+        </div>
+        <hr class="shallow-hr">
+      </div>
+      <div>
+        <b>瀹$璇︽儏</b>
+        <br>
+        <a-form :form='form'>
+          <a-spin :spinning="spinning">
+            <a-tabs default-active-key='1' @change='callback'>
+              <a-tab-pane key='1' tab='鍩烘湰淇℃伅'>
+                <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'>
+                  <a-row>
+                    <a-col :span='span'>
+                      <a-form-model-item label='鏂囨。鍚嶇О' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='docName'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.docName'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                    <a-col :span='span'>
+                      <a-form-model-item label='鏂囨。鐗堟湰' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='publishVersion'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.publishVersion'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                  </a-row>
+                  <a-row>
+                    <a-col :span='span'>
+                      <a-form-model-item label='鏂囨。鍚庣紑' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='docSuffix'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.docSuffix'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                    <a-col :span='span'>
+                      <a-form-model-item label='绯荤粺鎸囧畾鐗堟湰' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='componentId'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.componentName'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                  </a-row>
+                  <a-row>
+                    <a-col :span='span'>
+                      <a-form-model-item label='鍑哄簱鐘舵��' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='pullStatus_dictText'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.pullStatus_dictText'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                    <a-col :span='span'>
+                      <a-form-model-item label='鍑哄簱浜�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='pullUser_dictText'>
+                        <a-input :disabled='coldisabled' v-model='tableRowRecord.pullUser_dictText'></a-input>
+                      </a-form-model-item>
+                    </a-col>
+                  </a-row>
+                </a-form-model>
+              </a-tab-pane>
+              <a-tab-pane key='2' tab='娴佺▼鑺傜偣'>
+                <a-card>
+                  <a-timeline style="padding:0 1% 0 12%" >
+                    <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1">
+                      <div class="bottom">
+                        <p>澶勭悊浜猴細{{item.assignee_dictText}}</p>
+                        <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p>
+                        <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p>
+                        <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p>
+                        <div class="left_qiu"><span>{{item.taskName}}</span></div>
+                      </div>
+                    </a-timeline-item>
+                  </a-timeline>
+                </a-card>
+              </a-tab-pane>
+            </a-tabs>
+          </a-spin>
+        </a-form>
+      </div>
+      <div>
+        <hr class="shallow-hr">
+        <br>
+        <b>瀹℃壒璇︽儏</b>
+        <br>
+        <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail">
+          <a-row>
+            <a-col ::span='span' v-if="selectShenpiData.taskDefKey ==='task_proofread'" class="btxx">
+              <a-form-model-item  label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'>
+                <j-dict-select-tag  type='list' v-model='assignFileStream.status' dictCode='nc_sq_handle_type_jd' placeholder="璇烽�夋嫨澶勭悊绫诲瀷"  />
+              </a-form-model-item >
+            </a-col>
+            <a-col ::span='span' v-if="selectShenpiData.taskDefKey ==='task_approve' || selectShenpiData.taskDefKey ==='Activity_0ocot6b'|| selectShenpiData.taskDefKey ==='task_cut' || selectShenpiData.taskDefKey ==='task_finalize'" class="btxx">
+              <a-form-model-item  label="澶勭悊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'>
+                <j-dict-select-tag  type='list' v-model='assignFileStream.status' dictCode='nc_sq_handle_type' placeholder="璇烽�夋嫨澶勭悊绫诲瀷"  />
+              </a-form-model-item >
+            </a-col>
+            <a-col :span="24" class="btxx">
+              <a-form-model-item  label="澶勭悊鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                <a-textarea v-model="assignFileStream.approveContent" rows="4" placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"/>
+              </a-form-model-item >
+            </a-col>
+          </a-row>
+          <div class="table-operator" style="text-align: right;">
+            <a-button  @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button>
+            <a-button @click="submitForm">鎻� 浜�</a-button>
+          </div>
+        </a-form-model>
+      </div>
+    </a-card>
+
+
+  </a-modal>
+</template>
+
+<script>
+
+import '@assets/less/TableExpand.less'
+import { mixinDevice } from '@/utils/mixin'
+import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage'
+export default {
+  name: 'FlowShenPi',
+  mixins: [mixinDevice],
+  props: {
+    selectShenpiData: {
+      type: Object,
+      required: true
+    }
+  },
+
+  data() {
+    return {
+      form: this.$form.createForm(this),
+      span: 12,
+      span1: 8,
+      coldisabled: true,
+      spinning: false,
+      tableRowRecord: {},
+      assignFileStream:{},
+      tableDataSource: [],
+      usageDataSource: [],
+      hitaskDataSource:[],
+      bomForm: {},
+      approveContent:"",
+      imageSrc: null,
+      drawerVisible: true,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 30 },
+        sm: { span: 16 }
+      },
+      validatorRules: {
+        status: {
+          rules: [
+            { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'},
+          ]
+        },
+      },
+      approveData: {},
+      flowData: {},
+      title: '璇︽儏椤甸潰',
+      width: 1000,
+      visible: false,
+      // 琛ㄥご
+      url: {
+        diagramView: '/assign/flow/diagramView',
+        queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList',
+        approve:"/dncFlow/dispatchFile/approval",
+        saveDispatchFile:"/dncFlow/dispatchFile/saveDispatchFile",
+        queryDocInfoByFlowDataId:'/dncFlow/dispatchFile/queryDocInfoByFlowDataId'
+      },
+      dictOptions: {},
+      superFieldList: [],
+      workflowSource: []
+    }
+  },
+  created() {
+  },
+  computed: {},
+  methods: {
+    callback() {
+    },
+    handCancel() {
+      this.visible = false
+    },
+    clearTableSource() {
+      this.tableDataSource = []
+      this.usageDataSource = []
+    },
+    fetchAndShowBmp() {
+      console.log('flowData----->', this.flowData)
+      try {
+        let parm = {
+          processDefinitionId: this.flowData.processDefinitionId,
+          processInstanceId:this.flowData.processInstanceId,
+          TaskDefinitionKey:this.flowData.processDefinitionKey
+        }
+        downFile(this.url.diagramView,parm,'get').then((res=>{
+          console.log('Pica------>',res)
+          const urlObject = window.URL.createObjectURL(new Blob([res]))
+          this.imageSrc = urlObject
+        }))
+      } catch (error) {
+        console.error('Error fetching image blob:', error)
+        alert('鏃犳硶鍔犺浇鍥剧墖锛岃绋嶅悗鍐嶈瘯銆�')
+      }
+    },
+    handleQueXiaoTask(){
+      this.visible = false
+      this.routeReload()
+    },
+    submitForm () {
+      const that = this;
+      console.log('selectShenpiData---->',that.selectShenpiData)
+      if (that.selectShenpiData.taskDefKey ==='task_prepare'){
+        // 瑙﹀彂琛ㄥ崟楠岃瘉-閲嶆柊鍚姩
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let url=this.url.saveDispatchFile;
+            let method = 'post';
+            let flowTaskVo = {}
+            flowTaskVo.comment =that.assignFileStream.approveContent;
+            flowTaskVo.dataId = this.selectShenpiData.dataId
+            flowTaskVo.instanceId = this.selectShenpiData.procInstId
+            flowTaskVo.taskId = this.selectShenpiData.id
+            console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo)
+            httpAction(url,flowTaskVo,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.visible = false
+                //鍒锋柊琛ㄦ牸
+                that.$emit('searchReset')
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+        })
+        //璺冲嚭鏂规硶
+        return false;
+      }else {
+        if (!that.assignFileStream.status==null || that.assignFileStream.status===undefined){
+          this.$message.warning('璇烽�夋嫨澶勭悊绫诲瀷锛�')
+          return false;
+        }
+      }
+      if (!that.assignFileStream.approveContent==null || that.assignFileStream.approveContent===undefined) {
+        this.$message.warning('璇疯緭鍏ュ鐞嗘剰瑙侊紒')
+        return false;
+      }
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true;
+          let url=this.url.approve
+          let method = 'post';
+          let handle =that.assignFileStream.status === '1';
+          let flowTaskVo = {}
+          switch (that.selectShenpiData.taskDefKey){
+            case "task_approve":
+              flowTaskVo.ratify=handle;
+              break;
+            case "task_cut":
+              flowTaskVo.cut=handle;
+              break;
+            case "task_finalize":
+              flowTaskVo.stereotype=handle;
+              break;
+          }
+          if (that.selectShenpiData.taskDefKey ==='task_proofread'){
+            flowTaskVo.proofreadStatus =that.assignFileStream.status;
+          }
+          flowTaskVo.comment =that.assignFileStream.approveContent;
+          flowTaskVo.dataId = this.selectShenpiData.dataId
+          flowTaskVo.taskId = this.selectShenpiData.id
+          flowTaskVo.userId = this.selectShenpiData.assignee
+          flowTaskVo.instanceId = this.selectShenpiData.procInstId
+          flowTaskVo.values = this.selectShenpiData.variables
+          console.log("琛ㄥ崟鎻愪氦鏁版嵁",flowTaskVo)
+          httpAction(url,flowTaskVo,method).then((res)=>{
+            if(res.success){
+              that.$message.success(res.message);
+              that.visible = false
+              //鍒锋柊琛ㄦ牸
+              that.$emit('searchReset')
+            }else{
+              that.$message.warning(res.message);
+            }
+          }).finally(() => {
+            that.confirmLoading = false;
+          })
+        }
+      })
+    },
+    async getAllApproveData(item) {
+      console.log('selectShenpiData----->', this.selectShenpiData)
+      this.flowData = item
+      let param = {
+        'dataId': item.dataId
+      }
+      let parmhis={
+        'procInstId': item.procInstId
+      }
+      const hitaskDataList = await getAction(this.url.queryHisTaskList,parmhis)
+      if(hitaskDataList.success){
+        this.hitaskDataSource=hitaskDataList.result
+      }
+      const docInforResult = await getAction(this.url.queryDocInfoByFlowDataId,param)
+      if(docInforResult.success){
+        this.tableRowRecord = docInforResult.result
+        this.visible=true
+      }
+    }
+  }
+}
+</script>
+<style scoped>
+.shallow-hr {
+  border: 0;
+  height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */
+  background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */
+  margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */
+}
+.btn-custom {
+  background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */
+  color: white; /* 鐧借壊鏂囧瓧 */
+  border: none; /* 鏃犺竟妗� */
+  padding: 5px 15px; /* 鍐呰竟璺� */
+  text-align: center; /* 鏂囧瓧灞呬腑 */
+  text-decoration: none; /* 鏃犱笅鍒掔嚎 */
+  display: inline-block; /* 琛屽唴鍧楀厓绱� */
+  font-size: 12px; /* 瀛椾綋澶у皬 */
+  margin: 4px 2px; /* 澶栬竟璺� */
+  cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */
+  border-radius: 4px; /* 鍦嗚杈规 */
+}
+
+.bold-large-label {
+  font-weight: bold;
+  font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */
+}
+.left_qiu{
+  position: absolute;
+  left: -74px;
+  top: 0;
+  width:54px;
+  border-radius: 50%;
+  height:54px;
+  font-size: 13px;
+  margin: auto;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: center;
+  background: #0099ff;
+  transform: translate(0, 0);
+}
+/deep/ .ant-timeline-item-tail{
+  left: -29px !important;
+}
+.left_qiu span{
+  width: 3em;
+  display: block;
+  color: #fff;
+  text-align: center;
+}
+.img{
+  width: 75%;
+}
+
+.wrap{
+  clear: both;
+  width: 100%;
+  display: flex;
+  height: 50px;
+  border: 1px solid #ccc;
+  /* background-color: aqua; */
+}
+.box{
+  width:21%;
+  height:50px;
+  border-right: 1px solid #ccc;
+  line-height: 50px;
+  /* background: red; */
+  text-align:center;
+  margin: auto;
+}
+
+@import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git a/src/views/tms/modules/baseTools/BaseToolsListRight.vue b/src/views/tms/modules/baseTools/BaseToolsListRight.vue
index 61d747a..70774c8 100644
--- a/src/views/tms/modules/baseTools/BaseToolsListRight.vue
+++ b/src/views/tms/modules/baseTools/BaseToolsListRight.vue
@@ -482,50 +482,32 @@
               this.$refs.paraCommonToolModal.edit(record);
               this.$refs.paraCommonToolModal.title="璇︽儏";
               this.$refs.paraCommonToolModal.disableSubmit = true;
-              this.$refs.paraCommonToolModal.disSeach = true;
-              if(this.$refs.paraCommonToolModal.removeValidate) {
-                this.$refs.paraCommonToolModal.removeValidate()
-              }
+             
             }else if(record.paramaTableName === "2"){
               this.$refs.paraHoleToolsModal.edit(record);
               this.$refs.paraHoleToolsModal.title="璇︽儏";
               this.$refs.paraHoleToolsModal.disableSubmit = true;
-              this.$refs.paraHoleToolsModal.disSeach = true;
-              if(this.$refs.paraHoleToolsModal.removeValidate) {
-                this.$refs.paraHoleToolsModal.removeValidate()
-              }
+              
             }else if(record.paramaTableName === "3"){
                this.$refs.paraThreadingToolModal.edit(record);
               this.$refs.paraThreadingToolModal.title="璇︽儏";
               this.$refs.paraThreadingToolModal.disableSubmit = true;
-              this.$refs.paraThreadingToolModal.disSeach = true;
-              if(this.$refs.paraThreadingToolModal.removeValidate) {
-                this.$refs.paraThreadingToolModal.removeValidate()
-              }
+              
             }else if(record.paramaTableName === "4"){
                this.$refs.paraMillToolModal.edit(record);
               this.$refs.paraMillToolModal.title="璇︽儏";
               this.$refs.paraMillToolModal.disableSubmit = true;
-              this.$refs.paraMillToolModal.disSeach = true;
-              if(this.$refs.paraMillToolModal.removeValidate) {
-                this.$refs.paraMillToolModal.removeValidate()
-              }
+             
             }else if(record.paramaTableName === "5"){
                this.$refs.paraTurningToolsModal.edit(record);
               this.$refs.paraTurningToolsModal.title="璇︽儏";
               this.$refs.paraTurningToolsModal.disableSubmit = true;
-              this.$refs.paraTurningToolsModal.disSeach = true;
-              if(this.$refs.paraTurningToolsModal.removeValidate) {
-                this.$refs.paraTurningToolsModal.removeValidate()
-              }
+             
             }else if(record.paramaTableName === "6"){
                this.$refs.paraBladeModal.edit(record);
               this.$refs.paraBladeModal.title="璇︽儏";
               this.$refs.paraBladeModal.disableSubmit = true;
-              this.$refs.paraBladeModal.disSeach = true;
-              if(this.$refs.paraBladeModal.removeValidate) {
-                this.$refs.paraBladeModal.removeValidate()
-              }
+              
             }
     },
       //绂佺敤鐘舵�佹牱寮�
diff --git a/src/views/tms/modules/outBound/OutboundDetailSelectList.vue b/src/views/tms/modules/outBound/OutboundDetailSelectList.vue
index 2d7a3d3..6953efe 100644
--- a/src/views/tms/modules/outBound/OutboundDetailSelectList.vue
+++ b/src/views/tms/modules/outBound/OutboundDetailSelectList.vue
@@ -14,6 +14,26 @@
         :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'checkbox'}"
         @change="handleTableChange">
 
+        <template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record, index">
+        <div :key="col.dataIndex">
+      
+          <a-input-number
+            v-if="col.dataIndex === 'ratedLife'"
+            :disabled="record.accuracyClass != '1'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+          <a-input-number
+            v-if="col.dataIndex === 'useLife'"
+            :disabled="record.accuracyClass != '1'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+        </div>
+      </template>
+
         <span slot="action" slot-scope="text, record">
           <a @click="handleOutbound(record)">鍑哄簱</a>
         </span>
@@ -101,6 +121,18 @@
             align:"left",
             dataIndex: 'outboundQuantity'
           },
+          {
+          title:'棰濆畾瀵垮懡',
+          align:"center",
+          dataIndex: 'ratedLife',
+          scopedSlots: { customRender: 'ratedLife' },
+        },
+        {
+          title:'浣跨敤瀵垮懡',
+          align:"center",
+          dataIndex: 'useLife',
+          scopedSlots: { customRender: 'useLife' },
+        },
           // {
           //   title:'宸插嚭搴撴暟閲�',
           //   align:"left",
@@ -193,7 +225,9 @@
           {
             outBoundOrderId: this.mainId,
             outboundDetailId: record.id,
-            outboundQuantity: record.outboundQuantity
+            outboundQuantity: record.outboundQuantity,
+            ratedLife:record.ratedLife,
+            useLife:record.useLife
           }
         ]
         postAction(this.url.outbound, params).then(res=>{
@@ -205,7 +239,17 @@
             this.$message
           }
         })
-      }
+      },
+      handleChange(value, key, column, index) {
+        console.log(value, key, column, index)
+        const temp = [...this.dataSource]
+        const target = temp.filter(item => key === item.key)[index];
+        if (target) {
+          target[column.dataIndex] = value
+          this.dataSource = temp
+        }
+      },
+
 
     }
   }
diff --git a/src/views/tms/modules/outBound/OutboundModal.vue b/src/views/tms/modules/outBound/OutboundModal.vue
index a0e748a..8312da4 100644
--- a/src/views/tms/modules/outBound/OutboundModal.vue
+++ b/src/views/tms/modules/outBound/OutboundModal.vue
@@ -51,7 +51,21 @@
         <div :key="col.dataIndex">
           <a-input-number
             v-if="col.dataIndex === 'outboundQuantity'"
-            :disabled="record.quantity <= 1"
+            :disabled="record.accuracyClass === '1'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+          <a-input-number
+            v-if="col.dataIndex === 'ratedLife'"
+            :disabled="record.accuracyClass != '1'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+          <a-input-number
+            v-if="col.dataIndex === 'useLife'"
+            :disabled="record.accuracyClass != '1'"
             :value="text"
             @change="(e) => handleChange(e, record.key, col, index)"
             :min="1"
@@ -162,6 +176,18 @@
           align:"center",
           dataIndex: 'outboundLocation'
         },
+        {
+          title:'棰濆畾瀵垮懡',
+          align:"center",
+          dataIndex: 'ratedLife',
+          scopedSlots: { customRender: 'ratedLife' },
+        },
+        {
+          title:'浣跨敤瀵垮懡',
+          align:"center",
+          dataIndex: 'useLife',
+          scopedSlots: { customRender: 'useLife' },
+        },
         // {
         //   title:'鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚',
         //   align:"center",
@@ -208,7 +234,8 @@
           outboundQuantity: data[i].quantity,
           storageLocation: data[i].warehouseId,
           warehouseName: data[i].warehouseName,
-          outboundLocation: data[i].positionCode
+          outboundLocation: data[i].positionCode,
+          accuracyClass:data[i].accuracyClass
         })
       }
       this.ipagination.total = this.dataSource.length
@@ -302,7 +329,9 @@
               toolId: item.toolId,
               outboundQuantity: item.outboundQuantity,
               outStorehouseType: this.model.outStorehouseType,
-              storageLocation: item.storageLocation
+              storageLocation: item.storageLocation,
+              ratedLife:item.ratedLife,
+              useLife:item.useLife
             }
           })
           this.confirmLoading = true;
diff --git a/src/views/tms/modules/outBound/OutboundOrderModal.vue b/src/views/tms/modules/outBound/OutboundOrderModal.vue
index 0562028..8171597 100644
--- a/src/views/tms/modules/outBound/OutboundOrderModal.vue
+++ b/src/views/tms/modules/outBound/OutboundOrderModal.vue
@@ -142,7 +142,22 @@
         <div :key="col.dataIndex">
           <a-input-number
             v-if="col.dataIndex === 'outboundQuantity'"
-            :disabled="record.quantity <= 1"
+            :disabled="record.accuracyClass === '1'"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+
+          <a-input-number
+            v-if="col.dataIndex === 'ratedLife'"
+            :disabled="record.quantity > 1"
+            :value="text"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            :min="1"
+          />
+          <a-input-number
+            v-if="col.dataIndex === 'useLife'"
+            :disabled="record.quantity > 1"
             :value="text"
             @change="(e) => handleChange(e, record.key, col, index)"
             :min="1"
@@ -254,6 +269,18 @@
             align:"center",
             dataIndex: 'outboundLocation'
           },
+        //    {
+        //   title:'棰濆畾瀵垮懡',
+        //   align:"center",
+        //   dataIndex: 'ratedLife',
+        //   scopedSlots: { customRender: 'ratedLife' },
+        // },
+        // {
+        //   title:'浣跨敤瀵垮懡',
+        //   align:"center",
+        //   dataIndex: 'useLife',
+        //   scopedSlots: { customRender: 'useLife' },
+        // },
           // {
           //   title:'鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚',
           //   align:"center",
@@ -307,7 +334,8 @@
             outboundQuantity: data[i].quantity,
             storageLocation: data[i].warehouseId,
             warehouseName: data[i].warehouseName,
-            outboundLocation: data[i].positionCode
+            outboundLocation: data[i].positionCode,
+            accuracyClass:data[i].accuracyClass
           })
         }
         this.ipagination.total = this.dataSource.length
diff --git a/src/views/tms/modules/outBound/OutboundOrderSelectList.vue b/src/views/tms/modules/outBound/OutboundOrderSelectList.vue
index 7d53488..000dd79 100644
--- a/src/views/tms/modules/outBound/OutboundOrderSelectList.vue
+++ b/src/views/tms/modules/outBound/OutboundOrderSelectList.vue
@@ -256,7 +256,9 @@
           return {
             outBoundOrderId: this.selectedMainId,
             outboundDetailId: item.id,
-            outboundQuantity: item.outboundQuantity
+            outboundQuantity: item.outboundQuantity,
+            ratedLife:item.ratedLife,
+            useLife:item.useLife
           }
         })
         postAction(this.url.outbound, params).then(res=>{
diff --git a/src/views/tms/requirement/ToolSharpeningList .vue b/src/views/tms/requirement/ToolSharpeningList .vue
index abaa2ab..ef06cd2 100644
--- a/src/views/tms/requirement/ToolSharpeningList .vue
+++ b/src/views/tms/requirement/ToolSharpeningList .vue
@@ -131,12 +131,11 @@
           align:"center",
           dataIndex: 'toolId'
         },
-        {
-          title:'鍒�鍏峰悕绉�',
-          align:"center",
-          dataIndex: 'typeName'
-        },
-
+        // {
+        //   title:'鍒�鍏峰悕绉�',
+        //   align:"center",
+        //   dataIndex: 'typeName'
+        // },
         {
           title:'鍘傚',
           align:"center",
diff --git a/src/views/tms/requirement/modules/ToolsSharpeningModal.vue b/src/views/tms/requirement/modules/ToolsSharpeningModal.vue
index d49bc28..2ed8659 100644
--- a/src/views/tms/requirement/modules/ToolsSharpeningModal.vue
+++ b/src/views/tms/requirement/modules/ToolsSharpeningModal.vue
@@ -122,12 +122,11 @@
 </template>
 
 <script>
-import { getAction, postAction, requestPut } from '@/api/manage'
+
 import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
 import ToolsModal from '@views/tms/requirement/modules/ToolsModal.vue'
-import pick from 'lodash.pick'
 import DeviceListModel from '@views/mdc/base/modules/EquipmentList/DeviceListModal.vue'
-
+import { requestPut, postAction, httpAction } from '@/api/manage'
 export default {
   name: 'ToolsSharpeningModal',
   mixins: [JVxeTableModelMixin],
@@ -167,8 +166,7 @@
       lastSelectionData: null,
       url: {
         add: '/tms/toolSharpening/add',
-        edit: '/tms/toolSharpening/edit',
-        // queryDetailList: '/tms/toolSharpening/listToolSharpening'
+        edit: '/tms/toolSharpening/edit'
       }
     }
   },
@@ -205,61 +203,78 @@
       let that = this
       that.visible = true
       that.model = Object.assign({}, record)
-      // this.$nextTick(() => {
-      //   this.form.setFieldsValue(pick(that.model, 'selectedDeparts', 'selectedProduction', 'equipmentId', 'equipmentName', 'equipmentModel', 'equipmentType', 'equipmentIp', 'dataPort',
-      //     'driveType', 'sortNo', 'remark', 'systemVersion', 'devicePower', 'controlSystem', 'saveTableName', 'systemValue'))
-      // })
     },
-    // edit(record) {
-    //   let that = this
-    //   that.visible = true
-    //   that.model = Object.assign({}, record)
-    //
-    //   // 濡傛灉鏈� selectionRows 鏁版嵁锛屽垯閲嶆柊璧嬪��
-    //   if (this.lastSelectionData && this.lastSelectionData.length > 0) {
-    //     this.assignModelFromSelection(this.lastSelectionData[0])
-    //     console.log('this.model',this.assignModelFromSelection(this.lastSelectionData[0]))
-    //   }
-    // },
+
     close() {
       this.$emit('close')
       this.visible = false
-
     },
     handleOk() {
       const that = this
-      that.confirmLoading = true
-
-      // 鉁� 瑙﹀彂琛ㄥ崟楠岃瘉
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
       this.$refs.form.validate(valid => {
         if (valid) {
           let formData = Object.assign(this.model)
-
-          let obj
+          that.confirmLoading = true
+          let httpurl = ''
+          let method = ''
           if (!this.model.id) {
-            obj = postAction(this.url.add, formData)
+            httpurl += this.url.add
+            method = 'post'
           } else {
-            obj = requestPut(this.url.edit, formData, { id: this.model.id })
+            httpurl += this.url.edit
+            method = 'put'
           }
-
-          obj.then((res) => {
+          httpAction(httpurl, this.model, method,formData).then((res) => {
             if (res.success) {
               that.$message.success(res.message)
               that.$emit('ok')
-              that.close()
             } else {
               that.$message.warning(res.message)
             }
           }).finally(() => {
             that.confirmLoading = false
+            that.close()
           })
         } else {
-          that.$message.warning('璇峰~鍐欏繀濉瓧娈�')
-          that.confirmLoading = false
           return false
         }
       })
     },
+    // handleOk() {
+    //   const that = this
+    //   that.confirmLoading = true
+    //
+    //   // 鉁� 瑙﹀彂琛ㄥ崟楠岃瘉
+    //   this.$refs.form.validate(valid => {
+    //     if (valid) {
+    //       let formData = Object.assign(this.model)
+    //
+    //       let obj
+    //       if (!this.model.id) {
+    //         obj = postAction(this.url.add, formData)
+    //       } else {
+    //         obj = requestPut(this.url.edit, formData, { id: this.model.id })
+    //       }
+    //
+    //       obj.then((res) => {
+    //         if (res.success) {
+    //           that.$message.success(res.message)
+    //           that.$emit('ok')
+    //           that.close()
+    //         } else {
+    //           that.$message.warning(res.message)
+    //         }
+    //       }).finally(() => {
+    //         that.confirmLoading = false
+    //       })
+    //     } else {
+    //       that.$message.warning('璇峰~鍐欏繀濉瓧娈�')
+    //       that.confirmLoading = false
+    //       return false
+    //     }
+    //   })
+    // },
 
     handleCancel() {
       this.close()
diff --git a/src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue b/src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue
index b6acfa5..18bca10 100644
--- a/src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue
+++ b/src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue
@@ -61,8 +61,8 @@
 
 
         {
-          title: '鍒�鍏风紪鍙�',
-          dataIndex: 'toolCode',
+          title: '鍒�鍏风紪鐮�',
+          dataIndex: 'toolId',
           align: 'center'
         },
         {
diff --git a/src/views/tms/stocktakingBound/modules/ToolSelectorModal.vue b/src/views/tms/stocktakingBound/modules/ToolSelectorModal.vue
index eed4078..81227ee 100644
--- a/src/views/tms/stocktakingBound/modules/ToolSelectorModal.vue
+++ b/src/views/tms/stocktakingBound/modules/ToolSelectorModal.vue
@@ -54,17 +54,20 @@
         {
           title: '宸ュ叿缂栫爜',
           align: 'center',
-          dataIndex: 'toolCode'
+          dataIndex: 'toolId',
+          width: 200
         },
         {
           title: '涓枃鍚嶇О',
           align: 'center',
-          dataIndex: 'chineseName'
+          dataIndex: 'chineseName',
+          width: 150
         },
         {
           title: '鍨嬪彿/鍥惧彿',
           align: 'center',
-          dataIndex: 'toolModel'
+          dataIndex: 'toolModel',
+          width: 150
         }
       ],
       selectedRowKeys: [],
diff --git a/src/views/tms/stocktakingBound/modules/ToolsStocktakingBoundModal.vue b/src/views/tms/stocktakingBound/modules/ToolsStocktakingBoundModal.vue
index d0d4230..c07bfe8 100644
--- a/src/views/tms/stocktakingBound/modules/ToolsStocktakingBoundModal.vue
+++ b/src/views/tms/stocktakingBound/modules/ToolsStocktakingBoundModal.vue
@@ -169,14 +169,14 @@
         },
         {
           title: '鍒�鍏风紪鍙�',
-          dataIndex: 'toolCode',
+          dataIndex: 'toolId',
           align: 'center',
-          width: 150
+          width: 180
         },
 
         {
           title: '宸ュ叿绫诲瀷',
-          dataIndex: 'applicationType',
+          dataIndex: 'applicationType_dictText',
           align: 'center',
           width: 150
         },
@@ -327,11 +327,12 @@
     this.$bus.$on('selectionRows', (data) => {
       for (let i = 0; i < data.length; i++) {
         this.dataSource.push({
-          toolId: data[i].id,
+          toolId: data[i].toolId,
           toolCode: data[i].toolCode,
           classifyId: data[i].classifyId,
-          applicationType: data[i].applicationType_dictText,
+          applicationType_dictText: data[i].applicationType_dictText,
           chineseName: data[i].chineseName,
+          availableQuantity:data[i].availableCount,
           toolModel: data[i].toolModel,
           material: data[i].material,
           toolMaterial: data[i].toolMaterial,

--
Gitblit v1.9.3