From 61a19a514eed8796ee2c6e7ab1111addf053cf67 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期三, 28 五月 2025 15:46:18 +0800
Subject: [PATCH] 1.新增NC文件批次页签 2.批次页签新增 数控加工确认表按钮,点击按钮出现对应批次确认表 3.处理修改查询电子样板与NC文件查询页面处理文件名折叠问题

---
 src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.vue              |   60 ++
 src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue                         |    4 
 src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue      |    4 
 src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue            |    1 
 src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.Style#Drawer.vue |   84 ++
 src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchForm.vue               |  213 +++++++
 src/views/dnc/base/modules/DeviceCustomTypeManagement/DeviceCustomTypeManagementModal.vue       |   12 
 src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue               |  250 ++++++++
 src/views/flowable/workflow/FlowLedger.vue                                                      |   11 
 src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue                             |    4 
 src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue                      |   32 
 src/views/dnc/common/DocumentInfoFlow.vue                                                       |  205 +++++++
 src/views/dnc/base/DeviceCustomTypeManagement.vue                                               |    8 
 src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue      |    4 
 src/views/dnc/common/DocumentInfo.vue                                                           |    1 
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue                |  543 ++++++++++++++++++
 src/views/dnc/common/TableContextMenu.vue                                                       |    1 
 src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue                            |    4 
 src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue                 |    8 
 src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue                    |   58 +
 src/views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue                              |    7 
 src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue                |    1 
 src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue                          |   50 +
 src/views/dnc/common/DocumentVersionTableList.vue                                               |    6 
 src/api/dnc.js                                                                                  |    2 
 src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchEditForm.vue           |  121 ++++
 src/views/dnc/common/DocumentModalForm.vue                                                      |    8 
 src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue                                     |    2 
 src/views/dnc/base/modules/ProductStructure/Cutter/CutterModalForm.vue                          |   16 
 29 files changed, 1,647 insertions(+), 73 deletions(-)

diff --git a/src/api/dnc.js b/src/api/dnc.js
index a140a97..4fa01c3 100644
--- a/src/api/dnc.js
+++ b/src/api/dnc.js
@@ -27,6 +27,8 @@
   getDocumentAssignDeviceTreeApi: ({ attributionType, attributionId }) => getAction(`/nc/device/load/depart/tree/${attributionType}/${attributionId}`),
   // 鎸囨淳鏂囨。鍒拌澶�
   assignDocumentToDeviceApi: params => postAction('/nc/activit/assign/file/apply', params),
+  // 鎻愬彇鍒�鍏�
+  extractToolsApi: ({ docId,attributionType, attributionId}) => getAction(`/nc/cutter/extractCutterInfo/${docId}/${attributionType}/${attributionId}`),
   // 涓嬭浇鏂囨。
   downloadDocumentApi: ({ docId, docName }) => requestGetDownLoad(`/nc/doc/download/${docId}`, docName),
   // 鍒犻櫎鏂囨。
diff --git a/src/views/dnc/base/DeviceCustomTypeManagement.vue b/src/views/dnc/base/DeviceCustomTypeManagement.vue
index 10187b2..a7f8603 100644
--- a/src/views/dnc/base/DeviceCustomTypeManagement.vue
+++ b/src/views/dnc/base/DeviceCustomTypeManagement.vue
@@ -16,8 +16,8 @@
           </a-col>
 
           <a-col :md="4" :sm="4">
-            <a-form-item label="璁惧绫诲悕绉�">
-              <a-input placeholder="璇疯緭鍏ヨ澶囩被鍚嶇О" v-model="queryParam.deviceManagementName"></a-input>
+            <a-form-item label="鏁版帶绯荤粺绫诲埆">
+              <a-input placeholder="璇疯緭鍏ユ暟鎺х郴缁熺被鍒�" v-model="queryParam.deviceManagementName"></a-input>
             </a-form-item>
           </a-col>
 
@@ -119,13 +119,13 @@
           dataIndex: 'productionId_dictText'
         },
         {
-          title: '璁惧绫�',
+          title: '杞存暟',
           align: 'center',
           width: 200,
           dataIndex: 'deviceManagementCode'
         },
         {
-          title: '璁惧绫诲悕绉�',
+          title: '鏁版帶绯荤粺绫诲埆',
           align: 'center',
           width: 200,
           dataIndex: 'deviceManagementName'
diff --git a/src/views/dnc/base/modules/DeviceCustomTypeManagement/DeviceCustomTypeManagementModal.vue b/src/views/dnc/base/modules/DeviceCustomTypeManagement/DeviceCustomTypeManagementModal.vue
index 04289e6..02fe64d 100644
--- a/src/views/dnc/base/modules/DeviceCustomTypeManagement/DeviceCustomTypeManagementModal.vue
+++ b/src/views/dnc/base/modules/DeviceCustomTypeManagement/DeviceCustomTypeManagementModal.vue
@@ -23,8 +23,8 @@
           </a-col>
 
           <a-col :span="12">
-            <a-form-model-item label="璁惧绫�" prop="deviceManagementCode">
-              <a-input allow-clear placeholder="璇疯緭鍏ヨ澶囩被" :readOnly="disabledEdit"
+            <a-form-model-item label="杞存暟" prop="deviceManagementCode">
+              <a-input allow-clear placeholder="璇疯緭鍏ヨ酱鏁�" :readOnly="disabledEdit"
                        v-model="model.deviceManagementCode"/>
             </a-form-model-item>
           </a-col>
@@ -32,8 +32,8 @@
 
         <a-row :gutter="24">
           <a-col :span="12">
-            <a-form-model-item label="璁惧绫诲悕绉�" prop="deviceManagementName">
-              <a-input allow-clear placeholder="璇疯緭鍏ヨ澶囩被鍚嶇О" :readOnly="disabledEdit"
+            <a-form-model-item label="鏁版帶绯荤粺绫诲埆" prop="deviceManagementName">
+              <a-input allow-clear placeholder="璇疯緭鍏ユ暟鎺х郴缁熺被鍒�" :readOnly="disabledEdit"
                        v-model="model.deviceManagementName"/>
             </a-form-model-item>
           </a-col>
@@ -88,12 +88,12 @@
         ],
         deviceManagementCode: [
           {
-            required: true, message: '璇疯緭鍏ヨ澶囩被!'
+            required: true, message: '璇疯緭鍏ヨ酱鏁�!'
           }
         ],
         deviceManagementName: [
           {
-            required: true, message: '璇疯緭鍏ヨ澶囩被鍚嶇О!'
+            required: true, message: '璇疯緭鍏ユ暟鎺х郴缁熺被鍒�!'
           }
         ],
         equipmentIds: [
diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue
index 0594357..c56927b 100644
--- a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue
+++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue
@@ -51,7 +51,6 @@
             width: 300,
             sorter: true
           },
-          { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' },
           {
             title: '鍑哄簱鐘舵��',
             dataIndex: 'pullStatus_dictText',
diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue
index 6740776..e9a470b 100644
--- a/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue
+++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue
@@ -51,7 +51,6 @@
             width: 300,
             sorter: true
           },
-          { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' },
           {
             title: '鍑哄簱鐘舵��',
             dataIndex: 'pullStatus_dictText',
diff --git a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue
index 2503b1c..14533d6 100644
--- a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModal.vue
@@ -37,13 +37,14 @@
   methods: {
     // 娣诲姞鎵�鐢ㄥ垁鍏�
     handleCutterAdd() {
-      const { id, type } = this.currentTreeNodeInfo
+      const { attributionId, attributionType, docId } = this.currentTreeNodeInfo
       this.visible = true
       this.$nextTick(() => {
         if (this.$refs.realForm) {
           this.$refs.realForm.add({
-            attributionId: id,
-            attributionType: type
+            attributionId: attributionId,
+            attributionType: attributionType,
+            docId: docId
           })
         }
       })
diff --git a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModalForm.vue b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModalForm.vue
index 3c5c2c9..11718fe 100644
--- a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModalForm.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterModalForm.vue
@@ -3,7 +3,7 @@
     <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
       <a-row>
         <a-col :span="12">
-          <a-form-model-item label="鍒�鍏风紪鍙�" prop="cutterCode">
+          <a-form-model-item label="鍒�鍏风紪鍙�">
             <a-input v-model="model.cutterCode" placeholder="璇疯緭鍏ュ垁鍏风紪鍙�" :readOnly="disableSubmit"/>
           </a-form-model-item>
         </a-col>
@@ -16,9 +16,8 @@
 
       <a-row>
         <a-col :span="12">
-          <a-form-model-item label="鍒�鍏风被鍨�">
-            <j-dict-select-tag v-model="model.cutterType" placeholder="璇烽�夋嫨鍒�鍏风被鍨�" dictCode="cutter_type"
-                               :disabled="disableSubmit"/>
+          <a-form-model-item label="鍒�鍏风畝绉�" prop="cutterType">
+            <a-input v-model="model.cutterType" placeholder="璇疯緭鍏ュ垁鍏风畝绉�" :readOnly="disableSubmit"/>
           </a-form-model-item>
         </a-col>
         <a-col :span="12">
@@ -31,7 +30,7 @@
 
       <a-row>
         <a-col :span="12">
-          <a-form-model-item label="鍒�浣�">
+          <a-form-model-item label="鍒�浣�" prop="cutterSpacing">
             <a-input v-model="model.cutterSpacing" placeholder="璇疯緭鍏ュ垁浣�" :readOnly="disableSubmit"/>
           </a-form-model-item>
         </a-col>
@@ -88,11 +87,14 @@
       },
       confirmLoading: false,
       validatorRules: {
-        cutterCode: [
-          { required: true, message: '璇疯緭鍏ュ垁鍏风紪鍙�!' }
+        cutterType: [
+          { required: true, message: '璇疯緭鍏ュ垁鍏风畝绉�!' }
         ],
         cutterName: [
           { required: true, message: '璇疯緭鍏ュ垁鍏峰悕绉�!' }
+        ],
+        cutterSpacing: [
+          { required: true, message: '璇疯緭鍏ュ垁浣�!' }
         ]
       },
       url: {
diff --git a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue
index 09270d2..451c5bb 100644
--- a/src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Cutter/CutterTableList.vue
@@ -20,11 +20,7 @@
             <a-space>
               <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
               <a-button type="primary" @click="handleAdd" icon="plus" v-has="'cutter_add'">鏂板</a-button>
-              <a-button type="primary" @click="handleExportXls('鍒�鍏峰垪琛�')" icon="export">瀵煎嚭</a-button>
-              <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
-                        :action="importExcelUrl" @change="handleImportExcel">
-                <a-button type="primary" icon="import">瀵煎叆</a-button>
-              </a-upload>
+              <a-button type="primary" @click="handleAdd()" icon="export">鍙戦�佸垁鍏风郴缁�</a-button>
             </a-space>
           </a-col>
         </a-row>
@@ -34,7 +30,8 @@
     <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" :size="size" rowKey="id"
              @change="handleTableChange" :scroll="{y:189}">
       <template slot="action" slot-scope="text, record">
-        <a @click="handleEdit(record)">缂栬緫</a>
+
+        <a @click="handleEdit(record)">閫夋嫨鍒�鍏�</a>
 
         <a-divider type="vertical"/>
 
@@ -92,12 +89,14 @@
             return parseInt(index) + 1
           }
         },
-        { title: '鍒�鍏风紪鍙�', dataIndex: 'cutterCode', align: 'center' },
-        { title: '鍒�鍏峰悕绉�', dataIndex: 'cutterName', align: 'center' },
-        { title: '鍒�鍏风被鍨�', dataIndex: 'cutterType_dictText', align: 'center' },
+        { title: '鍒�鍏风紪鍙�', dataIndex: 'cutterCode', width: 100, align: 'center' },
+        { title: '鍒�鍏峰悕绉�', dataIndex: 'cutterName', width: 100, align: 'center' },
+        { title: '鍒�鍏风畝绉�', dataIndex: 'cutterType', width: 80, align: 'center' },
+        { title: '鍒�鍏疯鏍�', dataIndex: 'cutterSpec', align: 'center' },
         { title: '棰濆畾瀵垮懡', dataIndex: 'lifetime', width: 150, align: 'center' },
-        { title: '鍒�浣�', dataIndex: 'cutterSpacing', width: 150, align: 'center' },
-        { title: '鍒�鍏锋暟閲�', dataIndex: 'quantity', width: 150, align: 'center' },
+        { title: '鍒�浣�', dataIndex: 'cutterSpacing', width: 50, align: 'center' },
+        { title: '鍒�鍏锋暟閲�', dataIndex: 'quantity', width: 80, align: 'center' },
+        { title: '鎻忚堪', dataIndex: 'description', width: 200, align: 'center' },
         { title: '鎿嶄綔', dataIndex: 'action', scopedSlots: { customRender: 'action' }, align: 'center', width: 150 }
       ],
       url: {
@@ -115,8 +114,33 @@
   },
   methods: {
     setQueryParamAndLoadData(pageNo = 1) {
-      const { id, type } = this.currentLevelInfo
-      this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
+      if (this.currentLevelInfo.classificationId_dictText==='nc'){
+        const {docId,attributionType,attributionId} = this.currentLevelInfo
+        this.queryParam = Object.assign({}, { docId:docId,attributionType:attributionType,attributionId:attributionId })
+      }
+      if (this.currentLevelInfo.deviceManagementId !== null && this.currentLevelInfo.deviceManagementId !== undefined){
+        const {attributionType,id} = this.currentLevelInfo
+        this.queryParam = Object.assign({}, {attributionType:attributionType,attributionId:id })
+      }
+      if (this.currentLevelInfo.id !== null && this.currentLevelInfo.type !== null && this.currentLevelInfo.type !== undefined && this.currentLevelInfo.id !== undefined){
+        const { id, type } = this.currentLevelInfo
+        this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
+      }
+      this.loadData(pageNo)
+    },
+    searchQuery(pageNo = 1) {
+      if (this.currentLevelInfo.classificationId_dictText==='nc'){
+        const {docId,attributionType,attributionId} = this.currentLevelInfo
+        this.queryParam = Object.assign({}, { docId:docId,attributionType:attributionType,attributionId:attributionId })
+      }
+      if (this.currentLevelInfo.deviceManagementId !== null && this.currentLevelInfo.deviceManagementId !== undefined){
+        const {attributionType,id} = this.currentLevelInfo
+        this.queryParam = Object.assign({}, {attributionType:attributionType,attributionId:id })
+      }
+      if (this.currentLevelInfo.id !== null && this.currentLevelInfo.type !== null && this.currentLevelInfo.type !== undefined && this.currentLevelInfo.id !== undefined){
+        const { id, type } = this.currentLevelInfo
+        this.queryParam = Object.assign({}, { attributionId: id, attributionType: type })
+      }
       this.loadData(pageNo)
     },
 
diff --git a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
index dbeef07..cc8b2e5 100644
--- a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
+++ b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeModalForm.vue
@@ -26,7 +26,7 @@
 
       <a-row>
         <a-col :span="12">
-          <a-form-model-item label="璁惧绫诲悕绉�">
+          <a-form-model-item label="鏁版帶绯荤粺绫诲埆">
             <a-input v-model="model.deviceManagementId_dictText" placeholder="璇烽�夋嫨璁惧绫�" readOnly/>
           </a-form-model-item>
         </a-col>
@@ -94,7 +94,7 @@
     },
 
     /**
-     * 璁惧绫婚�夋嫨鏀瑰彉鍚庤Е鍙戝~鍏呰澶囩被瀵瑰簲璁惧绫诲悕绉�
+     * 璁惧绫婚�夋嫨鏀瑰彉鍚庤Е鍙戝~鍏呰澶囩被瀵瑰簲鏁版帶绯荤粺绫诲埆
      * @param value
      */
     handleCodeSelectChange(value) {
diff --git a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
index b17e2f7..0389769 100644
--- a/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
+++ b/src/views/dnc/base/modules/ProductStructure/DeviceCustomType/DeviceCustomTypeTableList.vue
@@ -34,12 +34,12 @@
         //   align: 'center'
         // },
         {
-          title: '璁惧绫�',
+          title: '杞存暟',
           dataIndex: 'deviceManagementCode_dictText',
           align: 'center'
         },
         {
-          title: '璁惧绫诲悕绉�',
+          title: '鏁版帶绯荤粺绫诲埆',
           dataIndex: 'deviceManagementId_dictText',
           align: 'center'
         }
diff --git a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue
new file mode 100644
index 0000000..2d92113
--- /dev/null
+++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentSearchNcModal.vue
@@ -0,0 +1,543 @@
+<!--
+ Description: 妫�绱㈢數瀛愭牱鏉縇ist
+ Author: 浣滆�� liuyh
+ Date:   2025-02-27
+-->
+<template>
+  <a-modal width="95%" :title="title" :visible="visible" @cancel="visible=false" :maskClosable="false" centered
+           @ok="handleAssignDocumentToDevice">
+    <div class="tabs-container">
+      <div style="width: 72%">
+        <a-tabs>
+          <a-tab-pane tab="鏂囨。鍒楄〃">
+            <div class="table-page-search-wrapper">
+              <a-form layout="inline" @keyup.enter.native="searchQuery">
+                <a-row :gutter="24">
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="鏂囦欢鍚嶇О">
+                      <a-input placeholder="璇疯緭鍏ユ枃浠跺悕绉�" v-model="queryParam.docName" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="鏁版帶绯荤粺绫诲埆">
+                      <a-input placeholder="璇疯緭鍏ユ暟鎺х郴缁熺被鍒�" v-model="queryParam.deviceManagementName" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="杞存暟">
+                      <a-input placeholder="璇疯緭鍏ヨ酱鏁�" v-model="queryParam.deviceManagementCode" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="鑺傜偣鍚嶇О">
+                      <a-input placeholder="璇疯緭鍏ヨ妭鐐瑰悕绉�" v-model="queryParam.treeName" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="鑺傜偣浠e彿">
+                      <a-input placeholder="璇疯緭鍏ヨ妭鐐逛唬鍙�" v-model="queryParam.treeCode" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="7" :sm="7">
+                    <a-form-item label="鏉愯川">
+                      <a-input placeholder="璇疯緭鍏ユ潗璐�" v-model="queryParam.structureType" allow-clear></a-input>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="11" :sm="11">
+                    <a-form-item label="涓婁紶鏃堕棿">
+                      <a-range-picker v-model="date" value-format="YYYY-MM-DD"
+                                      @change="handleDateChange" allow-clear></a-range-picker>
+                    </a-form-item>
+                  </a-col>
+
+                  <a-col :md="4" :sm="4">
+                    <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+                  </a-col>
+                </a-row>
+              </a-form>
+            </div>
+
+
+            <a-table :columns="columns" :data-source="dataSource" bordered :pagination="false" :loading="loading"
+                     :rowSelection="{selectedRowKeys: selectedRowKeys,selectedRows:selectionRows, onChange: onSelectChange}"
+                     @change="handleTableChange"
+                     :scroll="{y:456}" :size="size" rowKey="docId">
+
+            </a-table>
+          </a-tab-pane>
+        </a-tabs>
+      </div>
+
+      <div style="width: 25%">
+        <a-tabs>
+          <a-tab-pane tab="璁惧鍒楄〃">
+            <a-spin :spinning="spinning">
+              <div style="display: flex;flex-direction: column;">
+                <div style="display: flex">
+                  <a-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" allowClear v-model="searchInput"
+                           @change="handleSearchInputChange"/>
+                  <a-button type="primary" @click="isExpandAllTreeNode=!isExpandAllTreeNode" style="margin: 0 8px">
+                    灞曞紑/鎶樺彔
+                  </a-button>
+                </div>
+
+                <!--浜у搧缁撴瀯鏍�-->
+                <div style="overflow:auto;margin-top: 10px;height: 400px">
+                  <a-tree blockNode checkable :checkedKeys="checkedKeys" :expandedKeys.sync="expandedKeys"
+                          :autoExpandParent="autoExpandParent" @select="handleTreeNodeSelect"
+                          :treeData="treeDataSource" @check="handleTreeNodeCheck" @expand="handleTreeNodeExpand">
+                    <template slot="title" slot-scope="{ title, parentId, entity, key:treeKey,type}">
+                     <span v-if="title.indexOf(searchValue) > -1">{{ title.substr(0, title.indexOf(searchValue)) }}<span
+                       class="replaceSearch">{{
+                         searchValue
+                       }}</span>{{ title.substr(title.indexOf(searchValue) + searchValue.length) }}</span>
+                      <span v-else>{{ title }}</span>
+                    </template>
+                  </a-tree>
+                </div>
+
+                <div>
+                  <a-form>
+                    <a-form-item label="鎸囨淳鍘熷洜">
+                      <a-textarea v-model="queryParam.applyReason" rows="3" style="resize: none"></a-textarea>
+                    </a-form-item>
+                  </a-form>
+                </div>
+              </div>
+            </a-spin>
+          </a-tab-pane>
+        </a-tabs>
+      </div>
+    </div>
+  </a-modal>
+</template>
+
+<script>
+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: 80,
+          sorter: false
+        },
+        {
+          title: '鏂囦欢鍚嶇О',
+          dataIndex: 'docName',
+          key: 'docName',
+          align: 'center',
+          width: 200,
+          sorter: true
+        },
+        {
+          title: '鍑哄簱鐘舵��',
+          dataIndex: 'pullStatus_dictText',
+          key: 'pullStatus',
+          align: 'center',
+          width: 100,
+          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'
+      }
+    }
+  },
+  watch: {
+    visible: {
+      handler(value) {
+        if (value) {
+          this.resetData()
+          this.loadData()
+          this.getDocumentAssignDeviceTreeByApi()
+        }
+      }
+    },
+    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)
+          }
+        })
+        .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'
+      }
+      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
+              })
+            })
+          })
+
+          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()
+        }
+      })
+    },
+
+    /* 杈撳叆鏌ヨ鍐呭鍙樺寲鏃惰Е鍙� */
+    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 expandedKeys 灞曞紑椤筴ey
+     */
+    handleTreeNodeExpand(expandedKeys) {
+      this.expandedKeys = expandedKeys
+      this.autoExpandParent = false
+    },
+
+    /**
+     * 鏍戣妭鐐瑰閫夋閫変腑鏃惰Е鍙�
+     * @param selectedKeys 閫変腑鑺傜偣key
+     * @param {node} node 鑺傜偣瀵硅薄
+     */
+    handleTreeNodeCheck(checkedKeys, { node }) {
+      let record = node.dataRef
+      this.checkedKeys = checkedKeys
+    },
+
+    /**
+     * 鏍戣妭鐐归�変腑鏃惰Е鍙戯紙妯℃嫙鏍戣妭鐐瑰閫夋閫変腑鏃剁殑鏁堟灉锛�
+     * @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
+    },
+
+    /**
+     * 閫掑綊鑾峰緱鎵�鏈夋爲鑺傜偣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)
+    },
+
+    handleDelete() {
+      // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
+    },
+
+    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;
+
+    .replaceSearch {
+      color: #40a9ff;
+      font-weight: bold;
+      background-color: rgb(204, 204, 204);
+    }
+  }
+
+}
+
+::-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 d79b070..a05c9d4 100644
--- a/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue
+++ b/src/views/dnc/base/modules/ProductStructure/Document/NcDocumentTableList.vue
@@ -17,6 +17,7 @@
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import DocumentModal from '../../../../common/DocumentModal'
 import NcDocumentAssignModal from './NcDocumentAssignModal'
+import dncApi from '@api/dnc'
 
 export default {
   name: 'NcDocumentTableList',
@@ -38,7 +39,7 @@
           title: '搴忓彿',
           dataIndex: 'rowIndex',
           key: 'rowIndex',
-          width: 65,
+          width: 50,
           align: 'center',
           customRender: function(t, r, index) {
             return parseInt(index) + 1
@@ -49,10 +50,10 @@
           dataIndex: 'docName',
           key: 'docName',
           align: 'center',
-          width: 300,
+          scopedSlots: {customRender: 'docName'},
+          width: 500,
           sorter: true
         },
-        { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' },
         {
           title: '鍑哄簱鐘舵��',
           dataIndex: 'pullStatus_dictText',
@@ -61,10 +62,11 @@
           filters: [
             { text: '鏈嚭搴�', value: 1 },
             { text: '宸插嚭搴�', value: 2 }
-          ]
+          ],
+          width: 100
         },
         {
-          title: '鐘�  鎬�',
+          title: '鐘舵��',
           dataIndex: 'docDispatchStatus_dictText',
           key: 'docDispatchStatus',
           align: 'center',
@@ -74,14 +76,15 @@
             { text: '鎵瑰噯', value: 3 },
             { text: '璇曞垏', value: 4 },
             { text: '瀹氬瀷', value: 5 }
-          ]
+          ],
+          width: 70
         },
-        { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 200 },
+        { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 120 },
         {
           title: '鍒涘缓鏃堕棿',
           dataIndex: 'createTime',
           align: 'center',
-          width: 200,
+          width: 150,
           sorter: true
         }
       ],
@@ -190,6 +193,45 @@
       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: err.message
+              })
+            })
+            .finally(() => {
+              that.$destroyAll()
+            })
+        },
+        onCancel: () => {
+          that.$destroyAll()
+        }
+      })
+    },
+
     handleDelete() {
       // 姝ゅ鍑芥暟涓哄睆钄絤ixins涓殑鍚屽悕鍑芥暟锛岄�氱敤鍑芥暟鍐欏湪鐖剁骇涓�
     },
diff --git a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchEditForm.vue b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchEditForm.vue
new file mode 100644
index 0000000..5004198
--- /dev/null
+++ b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchEditForm.vue
@@ -0,0 +1,121 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="澶瑰叿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fixtureInformation">
+              <a-input v-model="model.fixtureInformation" placeholder="璇疯緭鍏ュす鍏�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍥剧墖" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="picture">
+              <j-image-upload isMultiple :number="1" v-model="model.picture" ></j-image-upload>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="璇存槑淇℃伅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remake">
+              <a-textarea v-model="model.remake" rows="4" placeholder="璇疯緭鍏ヨ鏄庝俊鎭�" />
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'GuideCardBatchForm',
+    components: {
+    },
+    props: {
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+           fixtureInformation: [
+              { required: true, message: '璇疯緭鍏ュす鍏�!'},
+           ],
+           picture: [
+              { required: true, message: '璇疯緭鍏ュ浘鐗�!'},
+           ],
+           remake: [
+              { required: true, message: '璇疯緭鍏ヨ鏄庝俊鎭�!'},
+           ],
+        },
+        url: {
+          edit: "/dnc/guideCardBatch/edit",
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //澶囦唤model鍘熷鍊�
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchForm.vue b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchForm.vue
new file mode 100644
index 0000000..b859014
--- /dev/null
+++ b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchForm.vue
@@ -0,0 +1,213 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item label="娴佹按鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="serialNumber">
+              <a-input v-model="model.serialNumber" placeholder="璇疯緭鍏ユ祦姘村彿"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍗曚綅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="unit">
+              <a-input v-model="model.unit" placeholder="璇疯緭鍏ュ崟浣�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="绋嬪簭鏂囦欢鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="docName">
+              <a-input v-model="model.docName" placeholder="璇疯緭鍏ョ▼搴忔枃浠跺悕"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="闆朵欢鍥惧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partsCode">
+              <a-input v-model="model.partsCode" placeholder="璇疯緭鍏ラ浂浠跺浘鍙�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="闆朵欢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partsName">
+              <a-input v-model="model.partsName" placeholder="璇疯緭鍏ラ浂浠跺悕绉�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="闆朵欢鏉愭枡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materielDesp">
+              <a-input v-model="model.materielDesp" placeholder="璇疯緭鍏ラ浂浠舵潗鏂�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="澶瑰叿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fixtureInformation">
+              <a-input v-model="model.fixtureInformation" placeholder="璇疯緭鍏ュす鍏�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="宸ュ簭锛堝伐姝ュ彿锛�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processWorkCode">
+              <a-input v-model="model.processWorkCode" placeholder="璇疯緭鍏ュ伐搴忥紙宸ユ鍙凤級"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍔犲伐鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processingBatch">
+              <a-input v-model="model.processingBatch" placeholder="璇疯緭鍏ュ姞宸ユ壒娆�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍔犲伐鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processingQuantity">
+              <a-input v-model="model.processingQuantity" placeholder="璇疯緭鍏ュ姞宸ユ暟閲�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍔犲伐璁惧" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processingEquipment">
+              <a-input v-model="model.processingEquipment" placeholder="璇疯緭鍏ュ姞宸ヨ澶�"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍥剧墖" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="picture">
+              <j-image-upload isMultiple  v-model="model.picture" ></j-image-upload>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="璇存槑淇℃伅" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remake">
+              <a-textarea v-model="model.remake" rows="4" placeholder="璇疯緭鍏ヨ鏄庝俊鎭�" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="缂栧啓浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="compiler">
+              <a-input v-model="model.compiler" placeholder="璇疯緭鍏ョ紪鍐欎汉"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="缂栧啓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="compilerTime">
+              <j-date placeholder="璇烽�夋嫨缂栧啓鏃ユ湡" v-model="model.compilerTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鏍″浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="proofreader">
+              <a-input v-model="model.proofreader" placeholder="璇疯緭鍏ユ牎瀵逛汉"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鏍″鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="proofreaderTime">
+              <j-date placeholder="璇烽�夋嫨鏍″鏃ユ湡" v-model="model.proofreaderTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鎿嶄綔鑰�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator">
+              <a-input v-model="model.operator" placeholder="璇疯緭鍏ユ搷浣滆��"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="棣栨鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionTime">
+              <j-date placeholder="璇烽�夋嫨棣栨鏃ユ湡" v-model="model.inspectionTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="瀹℃壒浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approver">
+              <a-input v-model="model.approver" placeholder="璇疯緭鍏ュ鎵逛汉"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="瀹℃壒鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approverTime">
+              <j-date placeholder="璇烽�夋嫨瀹℃壒鏃ユ湡" v-model="model.approverTime"  style="width: 100%" />
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+
+  import { httpAction, getAction } from '@api/manage'
+  import { validateDuplicateValue } from '@/utils/util'
+
+  export default {
+    name: 'GuideCardBatchForm',
+    components: {
+    },
+    props: {
+      //琛ㄥ崟绂佺敤
+      disabled: {
+        type: Boolean,
+        default: false,
+        required: false
+      }
+    },
+    data () {
+      return {
+        model:{
+         },
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+           fixtureInformation: [
+              { required: true, message: '璇疯緭鍏ュす鍏�!'},
+           ],
+           picture: [
+              { required: true, message: '璇疯緭鍏ュ浘鐗�!'},
+           ],
+           remake: [
+              { required: true, message: '璇疯緭鍏ヨ鏄庝俊鎭�!'},
+           ],
+        },
+        url: {
+          add: "/dnc/guideCardBatch/add",
+          edit: "/dnc/guideCardBatch/edit",
+          queryById: "/dnc/guideCardBatch/queryById"
+        }
+      }
+    },
+    computed: {
+      formDisabled(){
+        return this.disabled
+      },
+    },
+    created () {
+       //澶囦唤model鍘熷鍊�
+      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    },
+    methods: {
+      add () {
+        this.edit(this.modelDefault);
+      },
+      edit (record) {
+        this.model = Object.assign({}, record);
+        this.visible = true;
+      },
+      submitForm () {
+        const that = this;
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            httpAction(httpurl,this.model,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+            })
+          }
+
+        })
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue
new file mode 100644
index 0000000..1057724
--- /dev/null
+++ b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue
@@ -0,0 +1,250 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="娴佹按鍙�">
+              <a-input placeholder="璇疯緭鍏ユ祦姘村彿" v-model="queryParam.serialNumber"></a-input>
+            </a-form-item>
+          </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="澶瑰叿">
+                <a-input placeholder="璇疯緭鍏ュす鍏�" v-model="queryParam.fixtureInformation"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="鍔犲伐鎵规">
+                <a-input placeholder="璇疯緭鍏ュ姞宸ユ壒娆�" v-model="queryParam.processingBatch"></a-input>
+              </a-form-item>
+            </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 鏌ヨ鍖哄煙-END -->
+
+    <!-- table鍖哄煙-begin -->
+    <div>
+      <a-table
+        ref="table"
+        size="middle"
+        :scroll="{x:true}"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        class="j-table-force-nowrap"
+        @change="handleTableChange">
+
+        <template slot="htmlSlot" slot-scope="text">
+          <div v-html="text"></div>
+        </template>
+        <template slot="imgSlot" slot-scope="text,record">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span>
+          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
+        </template>
+        <template slot="fileSlot" slot-scope="text">
+          <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span>
+          <a-button
+            v-else
+            :ghost="true"
+            type="primary"
+            icon="download"
+            size="small"
+            @click="downloadFile(text)">
+            涓嬭浇
+          </a-button>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+
+          <a @click="handleEdit(record)">涓婁紶/淇敼淇℃伅</a>
+
+          <a-divider type="vertical" />
+
+          <a @click="handleDetail(record)">鐢熸垚鏁版帶鍔犲伐绋嬪簭纭琛�</a>
+
+          <a-divider type="vertical" />
+
+          <a @click="handleDetail(record)">鍙戣捣娴佺▼</a>
+
+          <a-divider type="vertical" />
+
+          <a @click="handleDetail(record)">璇︽儏</a>
+
+        </span>
+
+      </a-table>
+    </div>
+
+    <guide-card-batch-modal ref="modalForm" @ok="modalFormOk"></guide-card-batch-modal>
+
+    <GuideCardBatchModalDrawer  ref="modalEditForm" @ok="modalFormOk"></GuideCardBatchModalDrawer>
+  </a-card>
+</template>
+
+<script>
+
+  import '@assets/less/TableExpand.less'
+  import { mixinDevice } from '@/utils/mixin'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import GuideCardBatchModal from './GuideCardBatchModal'
+  import GuideCardBatchModalDrawer from './GuideCardBatchModal.Style#Drawer.vue'
+  import { getAction } from '@api/manage'
+
+  export default {
+    name: 'GuideCardBatchList',
+    mixins:[JeecgListMixin, mixinDevice],
+    props: {
+      guideCardBatchInfo: {
+        type: Object
+      },
+      size: {
+        type: String
+      }
+    },
+    components: {
+      GuideCardBatchModal,
+      GuideCardBatchModalDrawer
+    },
+    data () {
+      return {
+        description: 'nc鏂囦欢瀵瑰簲鏁版帶绋嬪簭鍔犲伐纭琛ㄧ鐞嗛〉闈�',
+        // 琛ㄥご
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title:'娴佹按鍙�',
+            align:"center",
+            dataIndex: 'serialNumber'
+          },
+          {
+            title:'澶瑰叿',
+            align:"center",
+            dataIndex: 'fixtureInformation'
+          },
+          {
+            title:'鍔犲伐鎵规',
+            align:"center",
+            dataIndex: 'processingBatch'
+          },
+          {
+            title:'鍔犲伐鏁伴噺',
+            align:"center",
+            dataIndex: 'processingQuantity'
+          },
+          {
+            title:'鍔犲伐璁惧',
+            align:"center",
+            dataIndex: 'processingEquipment'
+          },
+          {
+            title: '鎿嶄綔',
+            dataIndex: 'action',
+            align:"center",
+            fixed:"right",
+            width:147,
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        url: {
+          list: "/dnc/guideCardBatch/list",
+          delete: "/dnc/guideCardBatch/delete",
+          deleteBatch: "/dnc/guideCardBatch/deleteBatch",
+          exportXlsUrl: "/dnc/guideCardBatch/exportXls",
+          importExcelUrl: "dnc/guideCardBatch/importExcel",
+
+        },
+        dictOptions:{},
+        superFieldList:[],
+      }
+    },
+    created() {
+    this.getSuperFieldList();
+    },
+    computed: {
+      importExcelUrl: function(){
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      },
+    },
+    methods: {
+      initDictConfig(){
+      },
+      getGuideCardBatchList(){
+        console.log('currentDocumentInfo', this.guideCardBatchInfo)
+        let params
+        params.docId=this.guideCardBatchInfo.docId;
+        params.serialNumber=this.queryParam.serialNumber;
+        params.fixtureInformation=this.guideCardBatchInfo.fixtureInformation;
+        params.processingBatch=this.guideCardBatchInfo.processingBatch;
+        this.loading = true
+        getAction(this.url.list,params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records||res.result;
+            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
+        })
+      },
+      getSuperFieldList(){
+        let fieldList=[];
+        fieldList.push({type:'string',value:'serialNumber',text:'娴佹按鍙�',dictCode:''})
+        fieldList.push({type:'string',value:'unit',text:'鍗曚綅',dictCode:''})
+        fieldList.push({type:'string',value:'docName',text:'绋嬪簭鏂囦欢鍚�',dictCode:''})
+        fieldList.push({type:'string',value:'partsCode',text:'闆朵欢鍥惧彿',dictCode:''})
+        fieldList.push({type:'string',value:'partsName',text:'闆朵欢鍚嶇О',dictCode:''})
+        fieldList.push({type:'string',value:'materielDesp',text:'闆朵欢鏉愭枡',dictCode:''})
+        fieldList.push({type:'string',value:'fixtureInformation',text:'澶瑰叿',dictCode:''})
+        fieldList.push({type:'string',value:'processWorkCode',text:'宸ュ簭锛堝伐姝ュ彿锛�',dictCode:''})
+        fieldList.push({type:'string',value:'processingBatch',text:'鍔犲伐鎵规',dictCode:''})
+        fieldList.push({type:'string',value:'processingQuantity',text:'鍔犲伐鏁伴噺',dictCode:''})
+        fieldList.push({type:'string',value:'processingEquipment',text:'鍔犲伐璁惧',dictCode:''})
+        fieldList.push({type:'Text',value:'picture',text:'鍥剧墖',dictCode:''})
+        fieldList.push({type:'string',value:'remake',text:'璇存槑淇℃伅',dictCode:''})
+        fieldList.push({type:'string',value:'compiler',text:'缂栧啓浜�',dictCode:''})
+        fieldList.push({type:'date',value:'compilerTime',text:'缂栧啓鏃ユ湡'})
+        fieldList.push({type:'string',value:'proofreader',text:'鏍″浜�',dictCode:''})
+        fieldList.push({type:'date',value:'proofreaderTime',text:'鏍″鏃ユ湡'})
+        fieldList.push({type:'string',value:'operator',text:'鎿嶄綔鑰�',dictCode:''})
+        fieldList.push({type:'date',value:'inspectionTime',text:'棣栨鏃ユ湡'})
+        fieldList.push({type:'string',value:'approver',text:'瀹℃壒浜�',dictCode:''})
+        fieldList.push({type:'date',value:'approverTime',text:'瀹℃壒鏃ユ湡'})
+        this.superFieldList = fieldList
+      },
+      handleEdit(record) {
+        this.$refs.modalEditForm.edit(record);
+        this.$refs.modalEditForm.title = "涓婁紶/淇敼淇℃伅";
+        this.$refs.modalEditForm.disableSubmit = false;
+      },
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>
\ No newline at end of file
diff --git "a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.Style\043Drawer.vue" "b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.Style\043Drawer.vue"
new file mode 100644
index 0000000..da04747
--- /dev/null
+++ "b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.Style\043Drawer.vue"
@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <GuideCardBatchEditForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></GuideCardBatchEditForm>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">鍏抽棴</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">鎻愪氦</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import GuideCardBatchEditForm from './GuideCardBatchEditForm.vue'
+
+  export default {
+    name: 'GuideCardBatchModal',
+    components: {
+      GuideCardBatchEditForm
+    },
+    data () {
+      return {
+        title:"鎿嶄綔",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button鎸夐挳闂磋窛 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.vue b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.vue
new file mode 100644
index 0000000..d4f6ea1
--- /dev/null
+++ b/src/views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchModal.vue
@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="鍏抽棴">
+    <guide-card-batch-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></guide-card-batch-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import GuideCardBatchForm from './GuideCardBatchForm'
+  export default {
+    name: 'GuideCardBatchModal',
+    components: {
+      GuideCardBatchForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
index 1c1145a..ac589c8 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainBottom.vue
@@ -31,12 +31,6 @@
                                                :currentLevelDetails="currentLevelInfo" :size="containerSize"/>
       </a-tab-pane>
 
-      <!--绯荤粺鍙傛暟閰嶇疆涓嫢鍙傛暟涓�1鏃舵墠灞曠ず瀵瑰簲灞傜骇鐨勫垁鍏峰垪琛�-->
-      <a-tab-pane :key="2" tab="鍒�鍏峰垪琛�"
-                  v-if="+currentLevelInfo.type===5&&isProcessHasCutterList||+currentLevelInfo.type===6&&isProcessStepHasCutterList">
-        <CutterTableList ref="cutterTableListRef" :currentLevelInfo="currentLevelInfo" :size="containerSize"/>
-      </a-tab-pane>
-
       <template v-if="currentLevelInfo.hasOwnProperty('docId')">
         <a-tab-pane :key="1" tab="鏂囨。灞炴��">
           <DocumentInfo :currentLevelDetails="currentLevelInfo" :size="containerSize"/>
@@ -57,6 +51,20 @@
           <UseDocumentEquipmentTableList ref="useDocumentEquipmentTableRef" :currentDocumentInfo="currentLevelInfo"
                                          :size="containerSize"/>
         </a-tab-pane>
+
+        <a-tab-pane :key="5" tab="鍒�鍏峰垪琛�">
+          <CutterTableList ref="cutterTableListRef" :currentLevelInfo="currentLevelInfo" :size="containerSize"/>
+        </a-tab-pane>
+
+        <a-tab-pane :key="6" tab="瀹$璇︽儏">
+          <DocumentInfoFlow ref="flowTableListRef" :currentLevelDetails="currentLevelInfo" :size="containerSize"/>
+        </a-tab-pane>
+
+        <a-tab-pane :key="7" tab="鎵规鍒楄〃">
+          <GuideCardBatchList ref="guideCardBatchInfoRef" :guideCardBatchInfo="currentLevelInfo" :size="containerSize"/>
+        </a-tab-pane>
+
+
       </template>
     </a-tabs>
 
@@ -72,6 +80,7 @@
 import ProcessStepInfo from './ProcessStep/ProcessStepInfo'
 import CutterTableList from './Cutter/CutterTableList'
 import DocumentInfo from '../../../common/DocumentInfo'
+import DocumentInfoFlow from '../../../common/DocumentInfoFlow.vue'
 import DocumentVersionTableList from '../../../common/DocumentVersionTableList'
 import UseDocumentEquipmentTableList from './Document/UseNcDocumentEquipmentTableList'
 import FilePreview from '../../../common/FilePreview'
@@ -81,10 +90,12 @@
 import ProcessSpecVersionInfo
   from '@views/dnc/base/modules/ProductStructure/ProcessSpecVersion/ProcessSpecVersionInfo.vue'
 import { getAction } from '@/api/manage'
+import GuideCardBatchList from '@views/dnc/base/modules/ProductStructure/GuideCardBatch/GuideCardBatchList.vue'
 
 export default {
   name: 'ProductStructureMainBottom',
   components: {
+    GuideCardBatchList,
     ProcessSpecVersionInfo,
     UseDeviceCustomTypeEquipmentTableList,
     CutterTableList,
@@ -94,6 +105,7 @@
     UseDocumentEquipmentTableList,
     DocumentVersionTableList,
     DocumentInfo,
+    DocumentInfoFlow,
     ProcessInfo,
     PartInfo,
     ProductInfo,
@@ -170,6 +182,14 @@
           case 4:
             this.$nextTick(() => this.$refs.useDocumentEquipmentTableRef.loadData())
             break
+          case 5:
+            this.$nextTick(() => this.$refs.cutterTableListRef.setQueryParamAndLoadData(1))
+            break
+          case 6:
+            this.$nextTick(() => this.$refs.flowTableListRef.getAllApproveData())
+            break
+          case 7:
+            this.$nextTick(() => this.$refs.guideCardBatchInfoRef.getGuideCardBatchList())
           default:
         }
         // 闃绘鎺ュ彛鍦ㄥ悓涓�鏂囨。涓�娆$偣鍑诲唴澶氭瑙﹀彂
diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
index 514efc1..9d8320b 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTree.vue
@@ -63,6 +63,8 @@
     <AssignPermissionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
     <!--妫�绱㈢數瀛愭ā鏉垮脊绐�-->
     <NcDocumentSearchModal :currentDocumentInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
+    <!--妫�绱C鏂囦欢寮圭獥-->
+    <NcDocumentSearchNcModal :currentDocumentInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
     <!--寮曠敤閮ㄤ欢-->
     <NcComponentBorrowModal :currentBorrowInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess" />
     <!--浜у搧缁撴瀯鏍戝熀鏈彸閿彍鍗�(绌虹櫧澶勮Е鍙�)-->
@@ -85,6 +87,7 @@
 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 {
@@ -101,6 +104,7 @@
     ProductModal,
     ProductStructureTreeContextMenu,
     NcDocumentSearchModal,
+    NcDocumentSearchNcModal,
     NcComponentBorrowModal
   },
   data() {
diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
index a6f2026..a57934e 100644
--- a/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
+++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureTreeContextMenu.vue
@@ -41,6 +41,7 @@
           // {  label: '瀵煎嚭鏂囨。', code: 'product_export', icon: 'export', isCommonMethod: true },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'product_other_import', icon: 'import', isCommonMethod: true },
           { label: '妫�绱㈢數瀛愭牱鏉�', code: 'product_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'product_search_nc', icon: 'search', isCommonMethod: true },
           { label: '鍒犻櫎', code: 'product_delete', icon: 'delete', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
         ],
@@ -53,6 +54,7 @@
           // {  label: '瀵煎嚭鏂囨。', code: 'component_export', icon: 'export', isCommonMethod: true },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'component_other_import', icon: 'import', isCommonMethod: true },
           { label: '妫�绱㈢數瀛愭牱鏉�', code: 'component_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'component_search_nc', icon: 'search', isCommonMethod: true },
           { label: '寮曠敤閮ㄤ欢',code: 'component_borrow',icon: 'plus',isCommonMethod: false},
           { label: '鍒犻櫎', code: 'component_delete', icon: 'delete', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
@@ -66,6 +68,7 @@
           // {  label: '瀵煎嚭鏂囨。', code: 'parts_export', icon: 'export', isCommonMethod: true },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'parts_other_import', icon: 'import', isCommonMethod: true },
           { label: '妫�绱㈢數瀛愭牱鏉�', code: 'parts_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'parts_search_nc', icon: 'search', isCommonMethod: true },
           { label: '鍒犻櫎', code: 'parts_delete', icon: 'delete', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
         ],
@@ -76,6 +79,7 @@
           { label: '缂栬緫宸ヨ壓瑙勭▼鐗堟湰淇℃伅', code: 'version_edit', icon: 'edit', isCommonMethod: false },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'version_other_import', icon: 'import', isCommonMethod: true },
           { label: '妫�绱㈢數瀛愭牱鏉�', code: 'version_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'version_search_nc', icon: 'search', isCommonMethod: true },
           { label: '鍒犻櫎', code: 'version_delete', icon: 'delete', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
         ],
@@ -89,6 +93,8 @@
           // {  label: '瀵煎嚭NC绋嬪簭', code: 'process_export', icon: 'export', isCommonMethod: true },
           { label: '瀵煎叆NC绋嬪簭', code: 'process_nc_import', icon: 'import', isCommonMethod: true },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'process_other_import', icon: 'import', isCommonMethod: true },
+          { label: '妫�绱㈢數瀛愭牱鏉�', code: 'process_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'process_search_nc', icon: 'search', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
         ],
         //宸ユ
@@ -100,6 +106,8 @@
           // {  label: '瀵煎嚭NC绋嬪簭', code: 'processStep_export', icon: 'import', isCommonMethod: true },
           { label: '瀵煎叆NC绋嬪簭', code: 'processStep_nc_import', icon: 'import', isCommonMethod: true },
           { label: '瀵煎叆鍏朵粬鏂囨。', code: 'processStep_other_import', icon: 'import', isCommonMethod: true },
+          { label: '妫�绱㈢數瀛愭牱鏉�', code: 'processStep_search', icon: 'search', isCommonMethod: true },
+          { label: '妫�绱C鏂囦欢', code: 'processStep_search_nc', icon: 'search', isCommonMethod: true },
           { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
         ]
       }
diff --git a/src/views/dnc/common/DocumentInfo.vue b/src/views/dnc/common/DocumentInfo.vue
index a33165c..32a5336 100644
--- a/src/views/dnc/common/DocumentInfo.vue
+++ b/src/views/dnc/common/DocumentInfo.vue
@@ -1,7 +1,6 @@
 <template>
   <a-descriptions bordered :size="size" :column="4">
     <a-descriptions-item label="鏂囨。鍚嶇О">{{currentLevelDetails.docName}}</a-descriptions-item>
-    <a-descriptions-item label="浠g爜鐗堟湰">{{currentLevelDetails.docAlias}}</a-descriptions-item>
     <a-descriptions-item label="璁惧缂栧彿">{{currentLevelDetails.docCode}}</a-descriptions-item>
     <a-descriptions-item label="鏂囨。鍚庣紑">{{currentLevelDetails.docSuffix}}</a-descriptions-item>
     <a-descriptions-item label="鏂囨。鐘舵��">{{currentLevelDetails.docDispatchStatus_dictText}}</a-descriptions-item>
diff --git a/src/views/dnc/common/DocumentInfoFlow.vue b/src/views/dnc/common/DocumentInfoFlow.vue
new file mode 100644
index 0000000..8b03581
--- /dev/null
+++ b/src/views/dnc/common/DocumentInfoFlow.vue
@@ -0,0 +1,205 @@
+<!--
+ Description: 宸ヤ綔娴�-鎸囨淳璁惧璇︽儏椤甸潰 List
+ Author: 浣滆�� liuyh
+ Date:   2025-02-27
+-->
+<template>
+    <a-card :bordered="false">
+      <div>
+        <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>
+      </div>
+    </a-card>
+</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: {
+    currentLevelDetails: {
+      type: Object
+    },
+    size: {
+      type: String
+    }
+  },
+
+  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: {
+        version: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ユ枃妗g増鏈�!'},
+          ]
+        },
+        applyUser: {
+          rules: [
+            { required: true, message: '璇烽�夋嫨鐢宠浜�!'},
+          ]
+        },
+        approveContent: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ュ鎵规剰瑙�!'},
+          ]
+        },
+        docName: {
+          rules: [
+            { required: true, message: '璇疯緭鍏ユ枃妗e悕绉�!'},
+          ]
+        },
+        status: {
+          rules: [
+            { required: true, message: '璇烽�夋嫨瀹℃壒鐘舵��!'},
+          ]
+        },
+      },
+      approveData: {},
+      flowData: {},
+      title: '璇︽儏椤甸潰',
+      width: 1000,
+      visible: false,
+      // 琛ㄥご
+      url: {
+        queryHisTaskList:'/dncFlow/dispatchFile/queryDispatchDocFile',
+      },
+      dictOptions: {},
+      superFieldList: [],
+      workflowSource: []
+    }
+  },
+  created() {
+  },
+  computed: {},
+  methods: {
+    callback() {
+    },
+    handCancel() {
+      this.visible = false
+    },
+    getAllApproveData() {
+      console.log('currentLevelDetails----->', this.currentLevelDetails)
+      let parmhis={
+        'attributionId': this.currentLevelDetails.attributionId,
+        'attributionType': this.currentLevelDetails.attributionType,
+        'docId': this.currentLevelDetails.docId
+      }
+      getAction(this.url.queryHisTaskList,parmhis).then(res=>{
+        this.hitaskDataSource=res.result
+      }).finally(
+        this.visible = true,
+        console.log('this.approveData---->', this.approveData)
+      )
+    }
+  }
+}
+</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/dnc/common/DocumentModalForm.vue b/src/views/dnc/common/DocumentModalForm.vue
index d6e34da..405af63 100644
--- a/src/views/dnc/common/DocumentModalForm.vue
+++ b/src/views/dnc/common/DocumentModalForm.vue
@@ -20,14 +20,6 @@
 
       <a-row>
         <a-col :span="24">
-          <a-form-model-item label="浠g爜鐗堟湰">
-            <a-input v-model="model.docAlias" placeholder="璇疯緭鍏ヤ唬鐮佺増鏈�"></a-input>
-          </a-form-model-item>
-        </a-col>
-      </a-row>
-
-      <a-row>
-        <a-col :span="24">
           <a-form-model-item label="鎻忚堪">
             <a-textarea v-model="model.description" placeholder="璇疯緭鍏ユ枃妗f弿杩�"></a-textarea>
           </a-form-model-item>
diff --git a/src/views/dnc/common/DocumentVersionTableList.vue b/src/views/dnc/common/DocumentVersionTableList.vue
index ac703ba..3242bff 100644
--- a/src/views/dnc/common/DocumentVersionTableList.vue
+++ b/src/views/dnc/common/DocumentVersionTableList.vue
@@ -47,9 +47,9 @@
             return parseInt(index) + 1
           }
         },
-        { title: '鏂囦欢鍚嶇О', dataIndex: 'fileName', align: 'center', scopedSlots: { customRender: 'fileName' } },
-        { title: '鐗堟湰鍙�', dataIndex: 'docVersion', align: 'center' },
-        { title: '鏂囦欢澶у皬', dataIndex: 'fileSize', align: 'center' }
+        { title: '鏂囦欢鍚嶇О', dataIndex: 'fileName', align: 'center', scopedSlots: { customRender: 'fileName' },width: 500},
+        { title: '鐗堟湰鍙�', dataIndex: 'docVersion', align: 'center' ,width: 200},
+        { title: '鏂囦欢澶у皬', dataIndex: 'fileSize', align: 'center' ,width: 150}
       ],
       url: {
         list: '/nc/file/find/list'
diff --git a/src/views/dnc/common/TableContextMenu.vue b/src/views/dnc/common/TableContextMenu.vue
index ba41200..28f045f 100644
--- a/src/views/dnc/common/TableContextMenu.vue
+++ b/src/views/dnc/common/TableContextMenu.vue
@@ -51,6 +51,7 @@
           NC: [
             { label: '缂栬緫鏂囨。淇℃伅', code: 'document_edit', subMenu: [], icon: 'edit', isCommonMethod: false },
             { label: '鎸囨淳鍒拌澶�', code: 'document_assign', subMenu: [], icon: 'cluster', isCommonMethod: false },
+            { label: '鎻愬彇鍒�鍏�', code: 'document_extract', subMenu: [], icon: 'tool', isCommonMethod: false },
             { label: '瀵煎叆NC绋嬪簭', code: 'document_nc_import', subMenu: [], icon: 'import', isCommonMethod: true },
             { label: '涓嬭浇', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true },
             { label: '鍒犻櫎', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true },
diff --git a/src/views/flowable/workflow/FlowLedger.vue b/src/views/flowable/workflow/FlowLedger.vue
index 8d683d4..fe4a2f9 100644
--- a/src/views/flowable/workflow/FlowLedger.vue
+++ b/src/views/flowable/workflow/FlowLedger.vue
@@ -200,15 +200,15 @@
         console.log('approcesstype--->', approcesstype)
         switch (approcesstype) {
           case 'drApproval':
-            item.description=item.title
+            item.description=item.description
             this.handDrDetial(item)
             break
           case 'ggApproval':
-            item.description=item.title
+            item.description=item.description
             this.handDispatchFileDetial(item)
             break
           case 'sbdjApproval':
-            item.description = item.title
+            item.description = item.description
             this.handInspectionOrderDetail(item)
             break
           default:
@@ -230,6 +230,11 @@
       },
       handDispatchFileDetial(item){
         this.selectDispatchFileXqData = item
+
+
+
+
+
         this.selectDispatchFileXqData.assignee_dictText=item.todoUsers_dictText
         this.selectDispatchFileXqData.createTime=item.startTime
         this.selectDispatchFileXqData.procInstId=item.processInstanceId
diff --git a/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue b/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue
index cd6c700..745176b 100644
--- a/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue
+++ b/src/views/flowable/workflow/assignFileStream/AssignFileStreamHandle.vue
@@ -76,12 +76,12 @@
                   </a-row>
                   <a-row>
                     <a-col :span='span'>
-                      <a-form-model-item label='璁惧绫诲悕绉�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementCode'>
+                      <a-form-model-item label='鏁版帶绯荤粺绫诲埆' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementCode'>
                         <a-input :disabled='coldisabled' v-model='tableRowRecord.deviceManagementCode'></a-input>
                       </a-form-model-item>
                     </a-col>
                     <a-col :span='span'>
-                      <a-form-model-item label='璁惧绫诲悕绉�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementName'>
+                      <a-form-model-item label='鏁版帶绯荤粺绫诲埆' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementName'>
                         <a-input :disabled='coldisabled' v-model='tableRowRecord.deviceManagementName'></a-input>
                       </a-form-model-item>
                     </a-col>
diff --git a/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue b/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue
index 004cdbd..e74754c 100644
--- a/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue
+++ b/src/views/flowable/workflow/assignFileStream/AssignFileStreamXq.vue
@@ -76,12 +76,12 @@
                   </a-row>
                   <a-row>
                     <a-col :span='span'>
-                      <a-form-model-item label='璁惧绫诲悕绉�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementCode'>
+                      <a-form-model-item label='鏁版帶绯荤粺绫诲埆' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementCode'>
                         <a-input :disabled='coldisabled' v-model='tableRowRecord.deviceManagementCode'></a-input>
                       </a-form-model-item>
                     </a-col>
                     <a-col :span='span'>
-                      <a-form-model-item label='璁惧绫诲悕绉�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementName'>
+                      <a-form-model-item label='鏁版帶绯荤粺绫诲埆' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='deviceManagementName'>
                         <a-input :disabled='coldisabled' v-model='tableRowRecord.deviceManagementName'></a-input>
                       </a-form-model-item>
                     </a-col>
diff --git a/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue b/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue
index 3e0c806..f0f148b 100644
--- a/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue
+++ b/src/views/flowable/workflow/dispatchFile/DispatchFileXq.vue
@@ -13,7 +13,7 @@
   >
     <a-card :bordered="false">
       <div>
-        <b>{{ selectShenpiData.title }}</b>
+        <b>{{ selectShenpiData.description }}</b>
         <br>
         <br>
         <a-tag color="blue">

--
Gitblit v1.9.3