From f294efb8c01ad8b0704a92d51c14dbd55d898874 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 23 十月 2025 16:49:46 +0800
Subject: [PATCH] 拆分原材料和外购成品的业务流程(报检、下单、检验)

---
 src/views/business/outsourcingFinishProduct/index.vue                | 1270 +++++++++++++++++++++++++++++++++++++++
 src/views/standard/standardLibrary/index.vue                         |   86 +
 src/workers/DataWorker.worker.js                                     |    1 
 src/views/business/rawMaterialInspection/index.vue                   |  108 ++
 src/views/business/inspectionTask/inspection.vue                     |  143 ++++
 src/router/index.js                                                  |   49 +
 src/api/business/ifsOrderInspection.js                               |   19 
 src/views/business/inspectionTask/index.vue                          |   14 
 src/views/business/materialOrder/customsInspectionOrder.vue          |  133 +++
 src/views/business/materialOrder/index.vue                           |    4 
 src/api/business/ifsPartProps.js                                     |   18 
 src/api/business/outsourcingFinishProductInspection.js               |   36 +
 src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue |   27 
 13 files changed, 1,814 insertions(+), 94 deletions(-)

diff --git a/src/api/business/ifsOrderInspection.js b/src/api/business/ifsOrderInspection.js
new file mode 100644
index 0000000..ac66d28
--- /dev/null
+++ b/src/api/business/ifsOrderInspection.js
@@ -0,0 +1,19 @@
+//閿�鍞鍗曟姤妫�鏌ヨ鎺ュ彛
+import request from '@/utils/request'
+
+// 閿�鍞鍗曟姤妫�鏌ヨ鍏ㄩ儴
+export function getIfsByAll(query) {
+  return request({
+    url: '/ifsOrderInspection/getIfsByAll',
+    method: 'get',
+    params: query
+  })
+}
+// 閿�鍞鍗曟姤妫�鏌ョ湅宸插畬鎴愪俊鎭�
+export function getIfsByFinish(query) {
+  return request({
+    url: '/ifsOrderInspection/getIfsByFinish',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/api/business/ifsPartProps.js b/src/api/business/ifsPartProps.js
new file mode 100644
index 0000000..44d8915
--- /dev/null
+++ b/src/api/business/ifsPartProps.js
@@ -0,0 +1,18 @@
+//ifs闆朵欢灞炴�ф帴鍙�
+import request from '@/utils/request'
+
+// 鏂板鎴栦繚瀛橀浂浠跺睘鎬�
+export function saveOrUpdateProps(data) {
+  return request({
+    url: '/ifsPartProps/saveOrUpdateProps',
+    method: 'post',
+    data: data
+  })
+}
+// 鏌ヨifs璁㈠崟鐨勯浂浠跺睘鎬ц褰�
+export function getOneByIfsId(ifsId) {
+  return request({
+    url: '/ifsPartProps/getOneByIfsId/' + ifsId,
+    method: 'get'
+  })
+}
diff --git a/src/api/business/outsourcingFinishProductInspection.js b/src/api/business/outsourcingFinishProductInspection.js
new file mode 100644
index 0000000..cf81f6b
--- /dev/null
+++ b/src/api/business/outsourcingFinishProductInspection.js
@@ -0,0 +1,36 @@
+// 澶栬喘涓嬪崟椤甸潰鐩稿叧鎺ュ彛
+import request from '@/utils/request'
+
+// 鏌ヨIFS璁㈠崟-寰呮姤妫�
+export function getWarehouseSubmit(query) {
+  return request({
+    url: '/outsourcingFinishProduct/getWarehouseSubmit',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨIFS璁㈠崟-寰呮楠�
+export function getIfsByStateOne(query) {
+  return request({
+    url: '/outsourcingFinishProduct/getIfsByStateOne',
+    method: 'get',
+    params: query
+  })
+}
+// 鏌ヨ鍘熸潗鏂欎笅鍗�-宸叉楠�
+export function getIfsByOver(query) {
+  return request({
+    url: '/outsourcingFinishProduct/getIfsByOver',
+    method: 'get',
+    params: query
+  })
+}
+// 鏌ヨ鍘熸潗鏂欎笅鍗�-鍏ㄩ儴
+export function getIfsByAll(query) {
+  return request({
+    url: '/outsourcingFinishProduct/getIfsByAll',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/router/index.js b/src/router/index.js
index 682a3e4..28b3e63 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -174,6 +174,55 @@
         name: "AddOrder",
         meta: { title: "杩涜鎴愬搧涓嬪崟", activeMenu: "/business/productOrder",keepAlive: true },
       },
+      {
+        // 澶栬喘涓嬪崟-杩涜澶栬喘涓嬪崟
+        path: "customsInspectionOrder",
+        component: () =>
+          import("@/views/business/productOrder/components/addOrder.vue"),
+        name: "CustomsInspectionOrder",
+        meta: {
+          title: "杩涜澶栬喘鎴愬搧涓嬪崟",
+          activeMenu: "/business/outsourcingFinishProduct",
+          keepAlive: true
+        },
+      },
+    ],
+  },
+  {
+    // 澶栬喘鎴愬搧涓嬪崟
+    path: "/outsourcingFinishProduct",
+    component: Layout,
+    hidden: true,
+    permissions: ["business:outsourcingFinishProduct"],
+    children: [
+      {
+        // 鏌ョ湅鎴愬搧涓嬪崟璇︽儏
+        path: "addView",
+        component: () =>
+          import("@/views/business/productOrder/components/addView.vue"),
+        name: "AddView",
+        meta: { title: "鏌ョ湅鎴愬搧涓嬪崟璇︽儏", activeMenu: "/business/outsourcingFinishProduct",keepAlive: true },
+      },
+      {
+        // 杩涜涓嬪崟-鎴愬搧涓嬪崟
+        path: "addOrder",
+        component: () =>
+          import("@/views/business/productOrder/components/addOrder.vue"),
+        name: "AddOrder",
+        meta: { title: "杩涜鎴愬搧涓嬪崟", activeMenu: "/business/outsourcingFinishProduct",keepAlive: true },
+      },
+      {
+        // 澶栬喘涓嬪崟-杩涜澶栬喘涓嬪崟
+        path: "customsInspectionOrder",
+        component: () =>
+          import("@/views/business/materialOrder/customsInspectionOrder"),
+        name: "CustomsInspectionOrder",
+        meta: {
+          title: "杩涜澶栬喘鎴愬搧涓嬪崟",
+          activeMenu: "/business/outsourcingFinishProduct",
+          keepAlive: true
+        },
+      },
     ],
   },
   {
diff --git a/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue b/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
index 7be6506..012b6d4 100644
--- a/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
+++ b/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
@@ -17,19 +17,19 @@
                 :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
                 tooltip-effect="dark" height="100%">
         <el-table-column type="index" label="搴忓彿" align="center" width="65"></el-table-column>
-        <el-table-column prop="deviceName" align="center" min-width="100" label="璁惧鍚嶇О"></el-table-column>
+        <el-table-column prop="deviceName" align="center" min-width="100" label="璁惧鍚嶇О" show-overflow-tooltip></el-table-column>
         <el-table-column prop="sample" align="center" label="妫�楠屽璞�" show-overflow-tooltip
           min-width="150"></el-table-column>
-        <el-table-column prop="inspectionItemClass" align="center" label="妫�楠岄」鍒嗙被" min-width="120"></el-table-column>
-        <el-table-column prop="inspectionItem" align="center" label="妫�楠岄」" min-width="100"></el-table-column>
-        <el-table-column prop="inspectionItemSubclass" align="center" label="妫�楠屽瓙椤�" min-width="100"></el-table-column>
-        <el-table-column prop="referx" align="center" label="鍙傜収X" min-width="100"></el-table-column>
-        <el-table-column prop="x" align="center" label="X"></el-table-column>
-        <el-table-column prop="refery" align="center" label="鍙傜収Y" min-width="100"></el-table-column>
-        <el-table-column prop="y" align="center" label="Y"></el-table-column>
-        <el-table-column prop="anotherName" align="center" label="鍒悕" min-width="100"></el-table-column>
-        <el-table-column prop="matchingName" align="center" label="鍖归厤鍚嶇О" min-width="100"></el-table-column>
-        <el-table-column prop="formula" align="center" label="鍏紡"></el-table-column>
+        <el-table-column prop="inspectionItemClass" align="center" label="妫�楠岄」鍒嗙被" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="inspectionItem" align="center" label="妫�楠岄」" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="inspectionItemSubclass" align="center" label="妫�楠屽瓙椤�" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="referx" align="center" label="鍙傜収X" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="x" align="center" label="X" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="refery" align="center" label="鍙傜収Y" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="y" align="center" label="Y" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="anotherName" align="center" label="鍒悕" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="matchingName" align="center" label="鍖归厤鍚嶇О" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="formula" align="center" label="鍏紡" show-overflow-tooltip></el-table-column>
         <el-table-column fixed="right" label="鎿嶄綔" width="120" align="center">
           <template slot-scope="scope">
             <el-button type="text" @click="dataConfig(scope.row)">鏁伴噰閰嶇疆</el-button>
@@ -98,7 +98,7 @@
                 :content="formula.content" :key="key" placement="top">
                 <label>{{ formula.label }}()</label>
               </el-tooltip>
-              <el-input type="textarea" autosi:autosize="{ minRows: 2, maxRows: 4}" ze placeholder="璇疯緭鍏ュ唴瀹�"
+              <el-input type="textarea" autosize:autosize="{ minRows: 2, maxRows: 4}"  placeholder="璇疯緭鍏ュ唴瀹�"
                 v-model="configForm.formula" @change="evalResult">
               </el-input>
             </template>
@@ -476,6 +476,7 @@
         structureItemParameterId: row.structureItemParameterId
       }).then(res => {
         const data = res.data;
+        console.log("鏁伴噰閰嶇疆--",data)
         if (data[0]) {
           this.domains.splice(0, 1);
           let formula = data[0].formula
@@ -527,7 +528,7 @@
                 }
               }
             }
-            if (isIncludes === false && this.configForm.formula !== "" && this.configForm.formula !== undefined) {
+            if (isIncludes === false && this.configForm.formula !== "" && this.configForm.formula !== null && this.configForm.formula !== undefined) {
               i.formula = "(" + this.configForm.formula + ")";
             } else {
               i.formula = this.configForm.formula;
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index 75825d7..39e56b8 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -285,6 +285,7 @@
       tabList: [
         { label: "濮旀墭", value: 0 },
         { label: "鍘熸潗鏂�", value: 1 },
+        { label: "澶栬喘", value: 2 },
       ],
       active: 1,
       tabIndex: 0,
@@ -550,7 +551,8 @@
       lookTableLoading: false,
       // 鏁版嵁鏌ョ湅鐩稿叧瀛楁---缁撴潫
       retestVisible: false,
-      upIndex: 0
+      upIndex: 0,
+      tabLabel: ''
     };
   },
   mounted() {
@@ -646,7 +648,14 @@
     },
     refreshTable(e) {
       this.page.current = 1;
-      this.queryParams.typeSource = this.tabIndex;
+      let typeSource = null;
+      if(this.tabIndex===1){
+          typeSource=1
+      }else if(this.tabIndex===2){
+        typeSource = 0
+      }
+      this.queryParams.tabLabel = this.tabLabel;
+      this.queryParams.typeSource = typeSource;
       this.getList();
     },
     // 涓嬭浇鎶ュ憡
@@ -733,6 +742,7 @@
     },
     handleTab(m, i) {
       this.tabIndex = i;
+      this.tabLabel = m.label;
       this.queryParams.sonLaboratory = "";
       this.refreshTable();
     },
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
index 40ff3d9..40e6f22 100644
--- a/src/views/business/inspectionTask/inspection.vue
+++ b/src/views/business/inspectionTask/inspection.vue
@@ -1,7 +1,7 @@
 <template>
   <div v-loading="loading" class="inspection" style="background-color: rgb(245, 247, 251);">
     <el-row class="title">
-      <el-col :span="8" style="text-align: left">
+      <el-col v-if="insOrder.ifsOrderType!=='02wg'" :span="8" style="text-align: left;">
         <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px"
           style="text-align: right; padding-top: 0; display: inline">
           <el-form-item label="娓╁害:" style="margin-bottom: 0">
@@ -16,7 +16,8 @@
           </el-form-item>
         </el-form>
       </el-col>
-      <el-col :span="16" style="text-align: right">
+      <el-col :span="insOrder.ifsOrderType!=='02wg'?16:24" style="text-align: right">
+        <el-button v-if="insOrder.ifsOrderType" size="small" type="primary" @click="showMaterialPropsDialog">IFS鐗╂枡灞炴�ф洿鏂�</el-button>
         <el-button size="small" type="primary" @click="refreshView">鍒锋柊</el-button>
         <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">杩涜揣楠岃瘉</el-button>
         <el-button v-if="state == 1 && typeSource == 1" size="small" type="primary"
@@ -74,6 +75,17 @@
             @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>
           <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> -->
         </el-form-item>
+        <template v-if="insOrder.isSplitOrder && insOrder.isSplitOrder===1">
+          <el-form-item label="澶栨姢棰滆壊:">
+            <el-input v-model="insOrder.outerColor" clearable disabled placeholder="" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="缁濈紭棰滆壊:">
+            <el-input v-model="insOrder.insulationColor" clearable disabled placeholder="" size="small"></el-input>
+          </el-form-item>
+          <el-form-item label="鐩樺彿:">
+            <el-input v-model="insOrder.drumNo" clearable disabled placeholder="" size="small"></el-input>
+          </el-form-item>
+        </template>
       </el-form>
     </div>
     <div class="center">
@@ -526,6 +538,41 @@
       :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification>
     <!--鏌ョ湅宸ユ椂寮规-->
     <viewManHourDia ref="viewManHourDia" @submit="openAddVerifyDia"></viewManHourDia>
+<!--    IFS鐗╂枡灞炴�х紪杈戝脊妗�-->
+    <el-dialog
+      title="鏇存柊IFS搴撳瓨鐗╂枡鎵规灞炴��"
+      :visible.sync="ifsMaterialPropsVisible"
+      width="20%">
+      <el-form style="width:100%" :model="ifsMaterialPropsForm">
+        <el-form-item label="杞藉叿缂栧彿(Attr1):">
+          <el-input size="small" v-model="ifsMaterialPropsForm.drumNo"></el-input>
+        </el-form-item>
+        <el-form-item label="璧峰绫虫爣(Attr2):">
+          <el-input size="small" v-model="ifsMaterialPropsForm.startMeterMark"></el-input>
+        </el-form-item>
+        <el-form-item label="鎴绫虫爣(Attr3):">
+          <el-input size="small" v-model="ifsMaterialPropsForm.endMeterMark"></el-input>
+        </el-form-item>
+<!--        <el-form-item label="鍏ュ簱闀垮害">-->
+<!--          <el-input v-model="ifsMaterialPropsForm.inboundLength"></el-input>-->
+<!--        </el-form-item>-->
+        <el-form-item label="缁濈紭棰滆壊(Attr4):">
+          <el-input size="small" v-model="ifsMaterialPropsForm.insulationColor"></el-input>
+        </el-form-item>
+        <el-form-item label="澶栨姢棰滆壊(Attr5):">
+          <el-input size="small" v-model="ifsMaterialPropsForm.outerColor"></el-input>
+        </el-form-item>
+        <el-form-item label="鍗板瓧淇℃伅(Attr8):">
+          <el-select size="small" v-model="ifsMaterialPropsForm.letteringInfo" placeholder="璇烽�夋嫨">
+            <el-option v-for="(item,index) in letteringInfoList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="closePartPropDialog()">鍙� 娑�</el-button>
+    <el-button type="primary" @click="saveOrUpdatePartProp()">纭� 瀹�</el-button>
+  </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -561,8 +608,9 @@
 import DataWorker from '@/workers/DataWorker.worker.js';
 import html2canvas from "html2canvas";
 import { mapGetters } from "vuex";
-import { connect,disconnect,weightList } from "@/utils/connect.js";
 import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue";
+import {connect,disconnect,weightList} from "@/utils/connect";
+import {getOneByIfsId,saveOrUpdateProps} from "@/api/business/ifsPartProps.js";
 export default {
   name: 'Inspection',
   components: {
@@ -575,6 +623,19 @@
   },
   data() {
     return {
+      letteringInfoList: [],
+      ifsMaterialPropsForm:{
+        id:null,
+        ifsOrderId: null,
+        drumNo: '', // 杞藉叿缂栧彿
+        startMeterMark: '', // 璧峰绫虫爣
+        endMeterMark: '', // 鎴绫虫爣
+        insulationColor: '', // 缁濈紭棰滆壊
+        outerColor: '', // 澶栨姢棰滆壊
+        inboundLength: '', // 鍏ュ簱闀垮害
+        letteringInfo: '', // 鍗板瓧淇℃伅
+      },
+      ifsMaterialPropsVisible:false,
       sonLaboratory: null,
       orderId: null,
       state: null,
@@ -881,6 +942,7 @@
           }
         });
       }
+      console.log("澶勭悊鍚庣殑妯℃澘-",this.tableList)
     },
     // 鐗规畩妫�楠岄」--鐩戝惉璁惧淇℃伅鏀瑰彉
     equipForm: {
@@ -898,6 +960,49 @@
     }
   },
   methods: {
+    closePartPropDialog(){
+      this.ifsMaterialPropsForm = {
+        id:null,
+        ifsOrderId: null,
+        drumNo: '', // 杞藉叿缂栧彿
+        startMeterMark: '', // 璧峰绫虫爣
+        endMeterMark: '', // 鎴绫虫爣
+        insulationColor: '', // 缁濈紭棰滆壊
+        outerColor: '', // 澶栨姢棰滆壊
+        inboundLength: '', // 鍏ュ簱闀垮害
+        letteringInfo: '', // 鍗板瓧淇℃伅
+      }
+      this.ifsMaterialPropsVisible = false;
+    },
+    getPartProps(ifsId){
+      getOneByIfsId(ifsId).then((res)=>{
+        if(res.code==200 && res.data){
+          this.ifsMaterialPropsForm = res.data;
+        }
+      })
+    },
+    saveOrUpdatePartProp(){
+      saveOrUpdateProps({
+        ...this.ifsMaterialPropsForm,
+        partNo: this.insOrder.partNo,
+        lotBatchNo: this.insOrder.lotBatchNo,
+      }).then((res)=>{
+        if(res.code==200){
+          this.$message.success("淇濆瓨鎴愬姛");
+          this.ifsMaterialPropsVisible = false;
+        }
+      })
+    },
+    //鎵撳紑IFS鐗╂枡灞炴�у脊妗�
+    showMaterialPropsDialog(){
+      this.getPartProps(this.insOrder.ifsInventoryId)
+      this.$nextTick(()=>{
+        this.ifsMaterialPropsVisible = true;
+      })
+    },
+    disconnect() {
+      return disconnect
+    },
     sss() {
       console.log(this.$store.state.weightList) //
     },
@@ -983,6 +1088,8 @@
         laboratory: this.sonLaboratory,
       }).then(async (res) => {
         this.insOrder = res.data.insOrder;
+        //鏌ヨ闆朵欢灞炴��
+        this.getPartProps(res.data.insOrder.ifsInventoryId)
         this.supplierDensity = res.data.supplierDensity;
         this.getList()
         this.urgentList.forEach((m) => {
@@ -1197,6 +1304,7 @@
       return newObj;
     },
     handleDataAcquisition(data, noDialog) {
+      console.log("dadad--",data)
       // 鏄惁鍙互缂栬緫鏁伴噰鏁版嵁
       if (this.dataAcquisitionEidtAble) {
         this.getDataType = 1;
@@ -1220,7 +1328,9 @@
           };
         }
         // 寰幆鏁伴噰鏁版嵁
+        console.log(data[i],i)
         for (let j in data[i]) {
+          console.log("jjjjj--",j)
           // 鎷兼帴瀛楃涓�  妫�楠岄」鍒嗙被+妫�楠岄」+妫�楠屽瓙椤�
           let str0 = "";
           if (i.includes("@")) {
@@ -1424,6 +1534,7 @@
           this.getDataIndexLoading = false;
           this.dataGetDia = false;
           this.getDataTypeId = "";
+          console.log("dadada---",this.dataAcquisitionInfo)
           this.worker0.postMessage(
             JSON.stringify({
               dataAcquisitionInfo: this.dataAcquisitionInfo,
@@ -1437,6 +1548,7 @@
       // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋�
       this.worker0.onmessage = (event) => {
         let result = JSON.parse(event.data);
+        console.log("Worker 杩斿洖鐨勭粨鏋�:", result);
         if (result.method == "changeInput") {
           // 閲囬泦鍚庣殑鏁版嵁锛岄渶瑕佽繘琛岃绠楃殑绾跨▼杩涜璁$畻
           let { list, n } = result.value;
@@ -1848,7 +1960,7 @@
                   if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」") {
                     if (count4 === 0) {
                       if (c.v.v) {
-                        c.v.v = c.v.v.replace(/\s*/g, "");
+                        c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                       }
                       str += c.v.v;
                       count4 += 1;
@@ -1859,7 +1971,7 @@
                   ) {
                     if (count4 === 1) {
                       if (c.v.v) {
-                        c.v.v = c.v.v.replace(/\s*/g, "");
+                        c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                       }
                       str += c.v.v;
                       count4 += 1;
@@ -1869,7 +1981,7 @@
                   if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」鍒嗙被") {
                     if (count4 === 0) {
                       if (c.v.v) {
-                        c.v.v = c.v.v.replace(/\s*/g, "");
+                        c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                       }
                       str += c.v.v;
                       count4 += 1;
@@ -1877,7 +1989,8 @@
                   } else if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」") {
                     if (count4 === 1) {
                       if (c.v.v) {
-                        c.v.v = c.v.v.replace(/\s*/g, "");
+                        console.log("杩涘叆1111111")
+                        c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                       }
                       str += c.v.v;
                       count4 += 1;
@@ -1888,7 +2001,7 @@
                   ) {
                     if (count4 === 2) {
                       if (c.v.v) {
-                        c.v.v = c.v.v.replace(/\s*/g, "");
+                        c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                       }
                       str += c.v.v;
                       count4 += 1;
@@ -1898,7 +2011,7 @@
                 if (str === "鏈烘鎬ц兘骞叉�佹媺浼稿己搴�(绾靛悜)") {
                   if (c.v.ps != undefined && c.v.ps.value === "鍗曚綅") {
                     if (c.v.v) {
-                      c.v.v = c.v.v.replace(/\s*/g, "");
+                      c.v.v = c.v.v.replace(/[\n\r\s]*/g, "");
                     }
                     str2 = str + c.v.v;
                     unit2 = c.v.v;
@@ -1916,13 +2029,13 @@
                     undefined
                     ? ""
                     : this.currentSample.insProduct[i].inspectionItemClass;
-                inspectionItemClass = inspectionItemClass.replace(/\s*/g, "");
+                inspectionItemClass = inspectionItemClass.replace(/[\n\r\s]*/g, "");
                 let inspectionItem =
                   this.currentSample.insProduct[i].inspectionItem == null ||
                     this.currentSample.insProduct[i].inspectionItem == undefined
                     ? ""
                     : this.currentSample.insProduct[i].inspectionItem;
-                inspectionItem = inspectionItem.replace(/\s*/g, "");
+                inspectionItem = inspectionItem.replace(/[\n\r\s]*/g, "");
                 let inspectionItemSubclass =
                   this.currentSample.insProduct[i].inspectionItemSubclass ==
                     null ||
@@ -1931,7 +2044,7 @@
                     ? ""
                     : this.currentSample.insProduct[i].inspectionItemSubclass;
                 inspectionItemSubclass = inspectionItemSubclass.replace(
-                  /\s*/g,
+                  /[\n\r\s]*/g,
                   ""
                 );
                 if (inspectionItemSubclass === "骞叉�佹媺浼稿己搴�(绾靛悜)") {
@@ -2646,11 +2759,11 @@
         this.$message.error("璇锋寚瀹氬鏍镐汉鍛�");
         return;
       }
-      if (!this.otherForm.humidity) {
+      if (!this.otherForm.humidity && this.insOrder.ifsOrderType!=='02wg') {
         this.$message.error("璇疯緭鍏ユ箍搴�");
         return;
       }
-      if (!this.otherForm.temperature) {
+      if (!this.otherForm.temperature && this.insOrder.ifsOrderType!=='02wg') {
         this.$message.error("璇疯緭鍏ユ俯搴�");
         return;
       }
@@ -2677,7 +2790,7 @@
                 this.confirmSubmit(false)
               });
             }else{
-              this.confirmSubmit(false)
+              this.confirmSubmit(true)
             }
           } else {
             let newData = [];
diff --git a/src/views/business/materialOrder/customsInspectionOrder.vue b/src/views/business/materialOrder/customsInspectionOrder.vue
index 19f35a8..dfc8f5f 100644
--- a/src/views/business/materialOrder/customsInspectionOrder.vue
+++ b/src/views/business/materialOrder/customsInspectionOrder.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div>
+    <div v-show="!cableConfigShow&&!auxiliaryShow">
       <div class="header">
         <div>
           <span>閲囪喘璁㈠崟淇℃伅</span>
@@ -24,6 +24,8 @@
           <el-button v-show="active==1" size="small" @click="templateDia=true">
             <span style="color: #3A7BFA;">淇濆瓨妯℃澘</span>
           </el-button>
+          <el-button v-if="active==1&&addObj.sample!=undefined&&(addObj.sample.indexOf('鐢电紗')>-1 ||addObj.sample.indexOf('缁煎悎')>-1)" size="small" type="primary" @click="openCableConfig">鐢电紗閰嶇疆</el-button>
+          <el-button v-if="active==1&&addObj.sample!=undefined&&addObj.sample.indexOf('鐢电紗')>-1" size="small" type="primary" @click="openAuxiliaryCore">杈呭姪绾胯姱閰嶇疆</el-button>
           <el-button v-show="active==1 && addObj.orderType === '杩涘巶妫�楠�'" :loading="noNeedCheckLoad" size="small" type="primary" @click="noNeedCheck">鍏嶆</el-button>
           <el-button v-show="active==1" :loading="saveLoad" size="small" type="primary" @click="save">鎻愪氦</el-button>
           <el-button size="small" @click="goBack">
@@ -32,7 +34,7 @@
         </div>
       </div>
     </div>
-    <div class="search">
+    <div class="search"  v-show="!cableConfigShow&&!auxiliaryShow">
       <el-form ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="90px">
         <el-row>
           <el-col :span="6">
@@ -145,7 +147,7 @@
         </el-row>
       </el-form>
     </div>
-    <div>
+    <div  v-show="!cableConfigShow&&!auxiliaryShow">
       <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px">
         <div v-if="active==1">
           <el-form :inline="true" :model="addObj1" label-width="90px">
@@ -325,7 +327,7 @@
         <el-table-column :filter-method="filterHandler" :filters="filters" label="瀛愬疄楠屽" min-width="130" prop="sonLaboratory"
                          show-overflow-tooltip></el-table-column>
       </el-table>
-    </div>
+    </div >
     <!--鐗规畩鍊煎鐞嗘-->
     <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
                :visible.sync="bsm1DiaAll"
@@ -433,6 +435,10 @@
         <el-button :loading="noNeedCheckLoad" type="primary" @click="handleNoNeedCheck">纭� 瀹�</el-button>
       </span>
     </el-dialog>
+    <!--鐢电紗閰嶇疆-->
+    <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/>
+    <!--杈呭姪绾胯姱閰嶇疆-->
+    <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core>
   </div>
 </template>
 
@@ -444,22 +450,30 @@
   delRawMaterOrderTemplate,
   getInsOrder,
   getUserNow,
-  notificationRawOrder, selectRawMaterOrderTemplate,
+  notificationRawOrder,
+  selectRawMaterOrderTemplate,
   selectRawMaterOrderTemplateById,
   selectsStandardMethodByFLSSM,
   selectStandardMethodEnum,
   selectStandardProductList,
   selectStandardTreeListByPartNo
 } from "@/api/business/rawMaterialOrder";
-
+import {dateFormat} from "@/utils/date";
+import AuxiliaryWireCore from "../productOrder/components/auxiliaryWireCore.vue";
+import cableConfig from "../productOrder/components/cable-config.vue";
 export default {
   name: "CustomsInspectionOrder",
   dicts: ['check_type', 'urgency_level'],
-  components: {},
+  components: {cableConfig, AuxiliaryWireCore},
   props: {
   },
   data() {
     return {
+      cableConfigShow: false,
+      auxiliaryShow: false,
+      isSpecial: false,
+      sampleSelectionList: [],//鏍峰搧琛ㄦ牸閫変腑鏁版嵁
+      isOutsourcing: 'f',//鏄惁澶栬喘鎴愬搧
       customsInspection: {},
       orderType: '',
       active: 0,
@@ -614,6 +628,17 @@
     //   this.addObj.method = null
     //   this.productList = []
     // },
+    isOutsourcing:{
+      deep:  true,
+      handler(newVal){
+        if(newVal && newVal==='t'){
+          this.addObj.appointed = dateFormat(new Date(),'yyyy-MM-dd')
+          this.addObj.testQuantity = this.customsInspection.qtyArrived
+          this.addObj.orderType = '杩涘巶妫�楠�'
+          this.addObj.typeSource = 0
+        }
+      }
+    },
     productList: {
       deep: true,
       handler(val) {
@@ -643,6 +668,7 @@
   created() {
     this.active = this.$route.query.active
     this.orderType = this.$route.query.orderType
+    this.isOutsourcing = this.$route.query.isOutsourcing
     this.currentId = this.$route.query.currentId
     this.isReport = this.$route.query.isReport
     this.customsInspection = this.$route.query.customsInspection
@@ -651,6 +677,7 @@
   activated() {
     this.active = this.$route.query.active
     this.orderType = this.$route.query.orderType
+    this.isOutsourcing = this.$route.query.isOutsourcing
     this.currentId = this.$route.query.currentId
     this.isReport = this.$route.query.isReport
     this.customsInspection = this.$route.query.customsInspection
@@ -660,6 +687,82 @@
   //   this.getInfo() // 鑾峰彇鏁版嵁
   // },
   methods: {
+    goBackAdd () {
+      this.cableConfigShow = false
+    },
+    goBackAdd2 () {
+      this.auxiliaryShow = false
+    },
+    // 缂栬緫瑕佹眰鍊艰〃鏍�
+    editSpecial () {
+      this.isSpecial = true
+      this.$nextTick(() => {
+        this.$refs.productTable.doLayout();
+      });
+    },
+    areObjectsValuesEqual (objects, property) {
+      if (!objects || objects.length === 0) return false;
+      const firstValue = objects[0][property];
+      return objects.every(obj => obj[property] === firstValue);
+    },
+    // 杈呭姪绾胯姱閰嶇疆
+    openAuxiliaryCore () {
+      if (this.active == 1) {
+        if (this.sampleIds.length === 0) {
+          this.$message.error("鏈�夋嫨鏍峰搧")
+        } else if (this.sampleIds.length === 1) {
+          if (!this.sampleSelectionList[0].standardMethodListId) {
+            this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�")
+            return
+          }
+          this.auxiliaryShow = true
+        } else {
+          // 鍚屾椂閰嶇疆澶氫釜鏍峰搧鐨勭數缂嗛厤缃椂蹇呴』閫夋嫨鐩稿悓鐨勬楠屾爣鍑�
+          if (!this.sampleSelectionList.every(value => value.standardMethodListId)) {
+            this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�")
+          } else {
+            if (!this.areObjectsValuesEqual(this.sampleSelectionList, 'standardMethodListId')) {
+              this.$message.error("璇烽�夋嫨鐩稿悓鐨勬楠屾爣鍑�")
+              return
+            }
+            this.auxiliaryShow = true
+          }
+        }
+      } else {
+        if (this.sampleId === null) {
+          this.$message.error('鏈�変腑鏍峰搧')
+        }
+      }
+    },
+    //鎵撳紑鐢电紗閰嶇疆寮规
+    openCableConfig() {
+      if (this.active == 1) {
+        if (this.sampleIds.length === 0) {
+          this.$message.error("鏈�夋嫨鏍峰搧")
+        } else if (this.sampleIds.length === 1) {
+          if (!this.sampleSelectionList[0].standardMethodListId) {
+            this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�")
+            return
+          }
+          this.cableConfigShow = true
+        } else {
+          // 鍚屾椂閰嶇疆澶氫釜鏍峰搧鐨勭數缂嗛厤缃椂蹇呴』閫夋嫨鐩稿悓鐨勬楠屾爣鍑�
+          if (!this.sampleSelectionList.every(value => value.standardMethodListId)) {
+            this.$message.error("鏍峰搧鏈�夋嫨妫�楠屾爣鍑�")
+          } else {
+            if (!this.areObjectsValuesEqual(this.sampleSelectionList, 'standardMethodListId')) {
+              this.$message.error("璇烽�夋嫨鐩稿悓鐨勬楠屾爣鍑�")
+              return
+            }
+            this.cableConfigShow = true
+          }
+        }
+      } else {
+        if (this.sampleId === null) {
+          this.$message.error('鏈�変腑鏍峰搧')
+        }
+      }
+    },
     save1 () {
       if (this.bsm1DiaList.length > 0) {
         this.bsm1DiaList.forEach(item => {
@@ -747,7 +850,7 @@
             })
           }
         })
-      } else {
+      } else{
         notificationRawOrder({ifsInventoryId:this.customsInspection.id}).then(res => {
           if (res.code === 200) {
             if (res.data === 1) {
@@ -771,7 +874,9 @@
             this.$set(this.addObj, 'receiverDate', this.customsInspection.receiverDate)
             this.$set(this.addObj, 'orderNo', this.customsInspection.orderNo)
             this.$set(this.addObj, 'declareUser', this.customsInspection.declareUser)
-            this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity)
+            if(this.isOutsourcing==='f'){
+              this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity)
+            }
             this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas)
             this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo)
             this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc)
@@ -1442,6 +1547,9 @@
       })
     },
     getProNum() {
+      this.sampleSelectionList.forEach((m, i) => {
+        this.$set(this.sampleSelectionList[i], 'proNum', m.insProduct.filter(a => a.state == 1).length)
+      })
       this.$refs.sampleTable.doLayout()
     },
     methodFocus() {
@@ -1511,6 +1619,7 @@
       val.forEach(a => {
         this.sampleIds.push(a.id)
       })
+      this.sampleSelectionList = val
     },
     // 閫変腑琛ㄦ牸琛岀殑鍥炶皟
     rowClick(row, column, event) {
@@ -1524,7 +1633,11 @@
       this.sampleId = row.id
       if (this.active !== 1) {
         this.sampleIds = []
-        this.sampleIds.push(row.id)
+        this.sampleSelectionList.forEach(ele=>{
+          if(ele.id == row.id){
+            this.sampleIds.push(row.id)
+          }
+        })
       }
       // this.productList = row.insProduct
       if (this.productList !== null) {
diff --git a/src/views/business/materialOrder/index.vue b/src/views/business/materialOrder/index.vue
index 98a7af4..52c433f 100644
--- a/src/views/business/materialOrder/index.vue
+++ b/src/views/business/materialOrder/index.vue
@@ -1190,11 +1190,11 @@
     },
     // 涓嬪崟
     playOrder(row) {
-      this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: { orderType: 0, customsInspection: row, active: 1 } });
+      this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: {isOutsourcing:'f', orderType: 0, customsInspection: row, active: 1 } });
     },
     // 瀛e害妫�楠屼笅鍗�
     playOrderSec(row) {
-      this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: { orderType: 1, customsInspection: row, active: 1 } });
+      this.$router.push({ path: "/materialOrder/customsInspectionOrder", query: {isOutsourcing:'f', orderType: 1, customsInspection: row, active: 1 } });
     },
     // 鐐瑰嚮鏍峰搧鍚嶇О鏌ョ湅璇︽儏
     selectAllByOne(row) {
diff --git a/src/views/business/outsourcingFinishProduct/index.vue b/src/views/business/outsourcingFinishProduct/index.vue
new file mode 100644
index 0000000..399a386
--- /dev/null
+++ b/src/views/business/outsourcingFinishProduct/index.vue
@@ -0,0 +1,1270 @@
+<template>
+  <div class="app-container">
+    <div>
+      <div class="search">
+        <el-form :model="entity" ref="entity" size="small" :inline="true">
+          <el-form-item label="鎵瑰彿" prop="updateBatchNo">
+            <el-input v-model="entity.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item label="濮旀墭缂栧彿" prop="entrustCode" v-if="tabIndex !== 0">
+            <el-input v-model="entity.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item label="闆朵欢鍙�" prop="partNo">
+            <el-input v-model="entity.partNo" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item label="闆朵欢鎻忚堪" prop="partDesc">
+            <el-input v-model="entity.partDesc" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4"
+                       :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text"
+                       @click="more = !more">{{ !more ? '鏇村' : '鏀惰捣' }}</el-button>
+            <el-button size="mini" type="primary" @click="goSearch">鏌ヨ</el-button>
+            <el-button size="mini" @click="refresh()">閲嶇疆</el-button>
+          </el-form-item>
+          <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName"
+                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+            <el-input v-model="entity.supplierName" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item label="鏍峰搧鍨嬪彿" prop="sampleModel"
+                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+            <el-input v-model="entity.sampleModel" clearable placeholder="璇疯緭鍏�" size="small"
+                      @keyup.enter.native="goSearch">
+            </el-input>
+          </el-form-item>
+          <el-form-item label="妫�楠岀姸鎬�" prop="inspectStatus"
+                        v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+            <el-select v-model="entity.inspectStatus" clearable size="small" @change="goSearch">
+              <el-option v-for="(a, i) in inspectStatusList" :key="i" :label="a.label" :value="a.value"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="涓嬪彂鏃堕棿" prop="date" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more">
+            <el-date-picker v-model="entity.date" end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" @change="goSearch"
+                            range-separator="鑷�" size="small" start-placeholder="寮�濮嬫棩鏈�" type="daterange" value-format="yyyy-MM-dd">
+            </el-date-picker>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="table">
+        <div class="table-tab">
+          <div>
+            <ul class="tab">
+              <li :class="{ active: tabIndex === 0 }" v-if="checkPermi(['get:raw:await'])" @click="handleTab(0)">寰呬笅鍗�</li>
+              <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:raw:testing'])" @click="handleTab(1)">妫�楠屼腑</li>
+              <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:raw:check'])" @click="handleTab(2)">宸叉楠�</li>
+              <li :class="{ active: tabIndex === 3 }" v-if="checkPermi(['get:Ifs:ByAll'])" @click="handleTab(3)">鍏ㄩ儴</li>
+            </ul>
+          </div>
+          <div>
+            <el-button v-show="tabIndex === 3" :loading="outLoading" size="small" type="primary"
+                       @click="handleOut">瀵煎嚭</el-button>
+            <el-button v-if="tabIndex !== 0" size="small" type="primary" @click="openPrint">鏍囩鎵撳嵃</el-button>
+          </div>
+        </div>
+        <!--寰呬笅鍗�-->
+        <div class="table">
+          <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination"
+                      ref="tableData" :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'"
+                      key="tableData" :page="page" :tableLoading="tableLoading"></lims-table>
+        </div>
+        <!--妫�楠屼腑-->
+        <div class="table">
+          <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" :isSelection="true"
+                      :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination1"
+                      :height="'calc(100vh - 290px)'" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table>
+        </div>
+        <!--宸叉楠�-->
+        <div class="table">
+          <lims-table :tableData="tableData2" :column="column2" v-if="tabIndex === 2" :isSelection="true"
+                      :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination2"
+                      :height="'calc(100vh - 290px)'" key="tableData2" :page="page2" :tableLoading="tableLoading2"></lims-table>
+        </div>
+        <!--鍏ㄩ儴-->
+        <div class="table">
+          <lims-table :tableData="tableData3" :column="column3" v-if="tabIndex === 3" :isSelection="true"
+                      :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination3"
+                      :height="'calc(100vh - 290px)'" key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table>
+        </div>
+      </div>
+    </div>
+    <!-- 纭鍏嶆寮规 -->
+    <el-dialog :visible.sync="exemptionVisible" title="纭鍏嶆" width="42%">
+      <div style="display: flex">
+        <span style="width: 90px; line-height: 32px">瑙勬牸鍨嬪彿锛�</span>
+        <el-input v-model="exemptionInfo.partDetail" clearable placeholder="璇疯緭鍏�" size="small"></el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="exemptionVisible = false">鍙� 娑�</el-button>
+          <el-button :loading="exemptionLoading" type="primary" @click="submitExemption">纭� 瀹�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <!-- 鎾ら攢鎶ユ -->
+    <el-dialog :visible.sync="declareDialogVisible" title="鎶ユ鎾ら攢" width="30%">
+      <p style="font-size:16px;color:#333333">鎵瑰彿<span style="color:#34BD66">{{ this.insOrderRow.updateBatchNo
+        }}</span>鐨勪俊鎭槸鍚�<span style="color: #FF4902">鎾ら攢鎶ユ</span>
+      </p>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="declareDialogVisible = false">鍙� 娑�</el-button>
+          <el-button :loading="upLoad" type="primary" @click="submitDeclare">纭� 瀹�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <!-- 鎾ら攢涓嬪崟 -->
+    <el-dialog :visible.sync="quashDialogVisible" title="涓嬪崟鎾ら攢" width="30%">
+      <el-button size="small" type="primary" @click="cancelQuashOrder('enterOrderId')">鎾ら攢杩涘巶妫�楠屼笅鍗�</el-button>
+      <el-button size="small" type="primary" @click="cancelQuashOrder('quarterOrderId')">鎾ら攢瀛e害妫�楠屼笅鍗�</el-button>
+      <span slot="footer" class="dialog-footer">
+        <el-row>
+          <el-button @click="quashDialogVisible = false">鍙� 娑�</el-button>
+        </el-row>
+      </span>
+    </el-dialog>
+    <!-- 淇敼濮旀墭缂栧彿寮规 -->
+    <el-dialog :visible.sync="entrustCodeVisible" title="鎻愮ず" width="30%">
+      <el-input v-model="entrustCodeInfo.entrustCode"></el-input>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="entrustCodeVisible = false">鍙� 娑�</el-button>
+        <el-button :loading="submitCodeLoading" type="primary" @click="submitCode">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <!--鏍囩鎵撳嵃寮规-->
+    <print-dialog v-if="printDialog" ref="printDialog" :printDialog="printDialog"
+                  @closePrintDialog="closePrintDialog"></print-dialog>
+    <!--鏁版嵁鏌ョ湅寮规-->
+    <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" :dataDialogVisible="dataDialogVisible"
+                       :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible>
+    <!--闄勪欢鏌ョ湅寮规-->
+    <files-look-visible v-if="filesDialogVisible" ref="filesDialogVisible" :filesDialogVisible="filesDialogVisible"
+                        :filesLookInfo="filesLookInfo" @closeFilesLook="closeFilesLook"></files-look-visible>
+    <!--鎶ュ憡涓嬭浇寮规-->
+    <down-file-dialog v-if="downFileDialogVisible" ref="downFileDialogVisible"
+                      :downFileDialogVisible="downFileDialogVisible" :downLoadInfo="downLoadInfo"
+                      @closeDownFileDialog="closeDownFileDialog"></down-file-dialog>
+    <!--浜т笟閾句俊鎭煡鐪�-->
+    <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>
+    <!--妫�楠屼换鍔′俊鎭煡鐪�-->
+    <el-dialog :visible.sync="InspectInfoDialog" title="鏁版嵁鏌ョ湅" width="400px" @closed="closeInsInfoDialog">
+      <div style="margin-bottom: 8px">
+        <span style="font-size: 16px;">杩涘巶妫�楠屽師濮嬫暟鎹�</span>
+        <el-link :disabled="!insInfo.enterOrderId" :underline="false" style="vertical-align: bottom;margin-left: 6px"
+                 type="primary" @click="viewInsInfo0">鏌ョ湅</el-link>
+      </div>
+      <div>
+        <span style="font-size: 16px;">瀛e害妫�楠屽師濮嬫暟鎹�</span>
+        <el-link :disabled="!insInfo.quarterOrderId" :underline="false" style="vertical-align: bottom;margin-left: 6px"
+                 type="primary" @click="viewInsInfo1">鏌ョ湅</el-link>
+      </div>
+    </el-dialog>
+    <!--    <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"-->
+    <!--                :sonLaboratory="'鍘熸潗鏂�'" :state="state"-->
+    <!--                :typeSource="typeSource"-->
+    <!--                @goback="goback" @refreshView="refreshView"/>-->
+  </div>
+</template>
+
+<script>
+import PrintDialog from "@/views/business/materialOrderComponents/materialOrder/printDialog.vue";
+import ShowInfo from "@/views/business/materialOrderComponents/materialOrder/showInfo.vue";
+import DataLookVisible from "@/views/business/materialOrderComponents/materialOrder/dataLookVisible.vue";
+import FilesLookVisible from "@/views/business/materialOrderComponents/materialOrder/filesLookVisible.vue";
+import DownFileDialog from "@/views/business/materialOrderComponents/materialOrder/downFileDialog.vue";
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  getWarehouseSubmit,
+  concessionRelease,
+  getIfsByAll,
+  getIfsByOver,
+  getIfsByQuarter,
+  getIfsByStateOne,
+  rawAllExport,
+  rawOrderRelease,
+  repealEnterRawOrder,
+  repealQuarterRawOrder,
+  revokeInspectionReport,
+  updateEntrustCode
+} from "@/api/business/outsourcingFinishProductInspection";
+import {mapGetters} from "vuex";
+
+export default {
+  name: "MaterialOrder",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      tableData: [],
+      tableLoading: false,
+      column: [
+        { label: '鎵瑰彿', prop: 'updateBatchNo' },
+        { label: '闆朵欢鍙�', prop: 'partNo' },
+        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+        {
+          dataType: 'tag',
+          label: '鐗╂枡绫诲瀷',
+          prop: 'isExpire',
+          formatData: (params) => {
+            if (params == 1) {
+              return '杩囨湡鐗╂枡'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'info'
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width: '130px' },
+        { label: '鍗曚綅', prop: 'buyUnitMeas' },
+        { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+        { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+        {
+          dataType: 'action',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '涓嬪崟',
+              type: 'text',
+              clickFun: (row) => {
+                this.playOrder(row);
+              }
+            },
+            {
+              name: '鍏嶆',
+              type: 'text',
+              clickFun: (row) => {
+                this.exemption(row);
+              },
+            },
+            {
+              name: '鎾ら攢鎶ユ',
+              type: 'text',
+              clickFun: (row) => {
+                this.cancelDeclare(row);
+              },
+            },
+          ]
+        }
+      ],
+      page: {
+        total: 0,
+        size: 20,
+        current: 1
+      },
+      tableData1: [],
+      tableLoading1: false,
+      column1: [
+        { label: '鎵瑰彿', prop: 'updateBatchNo' },
+        {
+          label: '濮旀墭缂栧彿',
+          prop: 'entrustCode',
+          width: "160px",
+          dataType: "link",
+          linkMethod: "changeEntrustCode",
+        },
+        { label: '闆朵欢鍙�', prop: 'partNo' },
+        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+        {
+          label: '鏍峰搧鍚嶇О',
+          prop: 'sampleName',
+          width: "160px",
+          dataType: "link",
+          linkMethod: "selectAllByOne",
+        },
+        { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
+        { label: '妫�楠屼汉', prop: 'userName' },
+        { label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
+        {
+          dataType: 'tag',
+          label: '鐗╂枡绫诲瀷',
+          prop: 'isExpire',
+          formatData: (params) => {
+            if (params == 1) {
+              return '杩囨湡鐗╂枡'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'info'
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width: '130px' },
+        { label: '鍗曚綅', prop: 'buyUnitMeas' },
+        { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+        { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '鏁版嵁鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleDataLook(row);
+              },
+            },
+            {
+              name: '闄勪欢鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleFileLook(row);
+              },
+            },
+            {
+              name: '鎾ら攢涓嬪崟',
+              type: 'text',
+              clickFun: (row) => {
+                this.cancelOrder(row);
+              },
+            },
+          ]
+        }
+      ],
+      page1: {
+        total: 0,
+        size: 20,
+        current: 1
+      },
+      tableData2: [],
+      tableLoading2: false,
+      column2: [
+        {
+          label: '濮旀墭缂栧彿',
+          prop: 'entrustCode',
+          width: "160px",
+          dataType: "link",
+          linkMethod: "changeEntrustCode",
+        },
+        {
+          dataType: 'tag',
+          label: '妫�楠岀姸鎬�',
+          prop: 'inspectStatus',
+          formatData: (params) => {
+            if (params == 0) {
+              return '妫�楠屼腑'
+            } else if (params == 1) {
+              return '鍚堟牸'
+            } else if (params == 2) {
+              return '涓嶅悎鏍�'
+            } else if (params == 3) {
+              return '鏈笅鍗�'
+            } else if (params == 4) {
+              return '璁╂鏀捐'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'warning'
+            } else if (params == 1) {
+              return 'success'
+            } else if (params == 2) {
+              return 'danger'
+            } else if (params == 3) {
+              return 'info'
+            } else if (params == 4) {
+              return ''
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width: '130px' },
+        { label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
+        { label: '鎵瑰彿', prop: 'updateBatchNo' },
+        { label: '闆朵欢鍙�', prop: 'partNo' },
+        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+        { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
+        { label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
+        {
+          dataType: 'tag',
+          label: '鍏嶆',
+          prop: 'isExemption',
+          formatData: (params) => {
+            if (params == 1) {
+              return '鍏嶆'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'success'
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鏍峰搧鍚嶇О',
+          prop: 'sampleName',
+          width: "160px",
+          dataType: "link",
+          linkMethod: "selectAllByOne",
+        },
+        { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
+        { label: '妫�楠屼汉', prop: 'userName' },
+        {
+          dataType: 'tag',
+          label: '鐗╂枡绫诲瀷',
+          prop: 'isExpire',
+          formatData: (params) => {
+            if (params == 1) {
+              return '杩囨湡鐗╂枡'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'info'
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '鍗曚綅', prop: 'buyUnitMeas' },
+        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+        { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '鏁版嵁鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleDataLook(row);
+              }
+            },
+            {
+              name: '闄勪欢鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleFileLook(row);
+              }
+            },
+            {
+              name: '鎶ュ憡涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.download(row);
+              }
+            },
+            {
+              name: '鍘熷璁板綍',
+              type: 'text',
+              clickFun: (row) => {
+                this.viewInspectInfo(row);
+              },
+              disabled: (row) => {
+                return row.sampleName === null
+              },
+            },
+            {
+              name: '鏀捐',
+              type: 'text',
+              clickFun: (row) => {
+                this.goPass(row);
+              },
+              disabled: (row) => {
+                return row.inspectStatus != 2
+              },
+              showHide: (row) => {
+                return this.checkPermi([
+                  "get:raw:check:operation",
+                ]);
+              },
+            },
+            {
+              name: '瀛e害鎾ら攢',
+              type: 'text',
+              clickFun: (row) => {
+                this.repealQuarter(row);
+              },
+              disabled: (row) => {
+                return row.quarterOrderId == null || row.quarterReportId != null
+              },
+              showHide: (row) => {
+                return this.checkPermi([
+                  "get:raw:check:operation",
+                ]);
+              },
+            },
+          ]
+        }
+      ],
+      page2: {
+        total: 0,
+        size: 20,
+        current: 1
+      },
+      tableData3: [],
+      tableLoading3: false,
+      column3: [
+        { label: '濮旀墭缂栧彿', prop: 'entrustCode',width: "160px", },
+        {
+          dataType: 'tag',
+          label: '妫�楠岀姸鎬�',
+          prop: 'inspectStatus',
+          formatData: (params) => {
+            if (params == 0) {
+              return '妫�楠屼腑'
+            } else if (params == 1) {
+              return '鍚堟牸'
+            } else if (params == 2) {
+              return '涓嶅悎鏍�'
+            } else if (params == 3) {
+              return '鏈笅鍗�'
+            } else if (params == 4) {
+              return '璁╂鏀捐'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'warning'
+            } else if (params == 1) {
+              return 'success'
+            } else if (params == 2) {
+              return 'danger'
+            } else if (params == 3) {
+              return 'info'
+            } else if (params == 4) {
+              return ''
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width: '130px' },
+        { label: '涓嬪彂鏃堕棿', prop: 'sendTime' },
+        { label: '鎵瑰彿', prop: 'updateBatchNo' },
+        { label: '闆朵欢鍙�', prop: 'partNo' },
+        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
+        { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
+        { label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc' },
+        {
+          dataType: 'tag',
+          label: '鍏嶆',
+          prop: 'isExemption',
+          formatData: (params) => {
+            if (params == 1) {
+              return '鍏嶆'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'success'
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鏍峰搧鍚嶇О',
+          prop: 'sampleName',
+          width: "160px",
+          dataType: "link",
+          linkMethod: "selectAllByOne",
+        },
+        { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
+        { label: '妫�楠屼汉', prop: 'userName' },
+        {
+          dataType: 'tag',
+          label: '鐗╂枡绫诲瀷',
+          prop: 'isExpire',
+          formatData: (params) => {
+            if (params == 1) {
+              return '杩囨湡鐗╂枡'
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return 'info'
+            } else {
+              return null
+            }
+          }
+        },
+        { label: '鍗曚綅', prop: 'buyUnitMeas' },
+        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
+        { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+        {
+          dataType: 'action',
+          fixed: 'right',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '鏁版嵁鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleDataLook(row);
+              }
+            },
+            {
+              name: '闄勪欢鏌ョ湅',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleFileLook(row);
+              },
+            }
+          ]
+        }
+      ],
+      page3: {
+        total: 0,
+        size: 20,
+        current: 1
+      },
+      entity: {
+        updateBatchNo: null,
+        entrustCode: null,
+        partDesc: null,
+        supplierName: null,
+        sampleModel: null,
+        partNo: null,
+        inspectStatus: null,
+        date: null,
+        beginDeclareDate: null,
+        endDeclareDate: null,
+      },
+      tabList: [
+        {
+          label: '寰呬笅鍗�',
+          value: 0
+        },
+        {
+          label: '妫�楠屼腑',
+          value: 1
+        },
+        {
+          label: '宸叉楠�',
+          value: 2
+        },
+        {
+          label: '瀛e害妫�楠�',
+          value: 4
+        },
+        {
+          label: '鍏ㄩ儴',
+          value: 3
+        }
+      ],
+      more: false,
+      tabIndex: '',
+      multipleSelection: [],
+      active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪�
+      orderType: 0, //0锛氬師鏉愭枡涓嬪崟锛�1锛氬搴︽楠屼笅鍗�
+      currentId: null,
+      btnLoading: false,
+      quashDialogVisible: false, // 鎾ら攢涓嬪崟鎻愰啋寮规
+      declareDialogVisible: false, // 鎾ら攢鎶ユ鎻愰啋寮规
+      insOrderRow: {},
+      upLoad: false,
+      filesDialogVisible: false, // 闄勪欢鏌ョ湅寮规
+      printDialog: false, // 鏍囩鎵撳嵃寮规
+      showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
+      dataDialogVisible: false, // 鏁版嵁鏌ョ湅寮规
+      dataLookInfo: {}, // 鏁版嵁鏌ョ湅寮规鏁版嵁
+      filesLookInfo: {}, // 闄勪欢鏌ョ湅寮规鏁版嵁
+      downFileDialogVisible: false, // 鎶ュ憡涓嬭浇寮规
+      downLoadInfo: {}, // 鎶ュ憡涓嬭浇寮规
+      entrustCodeVisible: false, // 淇敼濮旀墭缂栧彿寮规
+      entrustCodeInfo: {},
+      submitCodeLoading: false,
+      exemptionVisible: false, // 鍏嶆纭寮规
+      exemptionLoading: false,
+      exemptionInfo: {},
+      inspectStatusList: [
+        { label: '妫�楠屼腑', value: 0 },
+        { label: '鍚堟牸', value: 1 },
+        { label: '涓嶅悎鏍�', value: 2 },
+        { label: '鏈笅鍗�', value: 3 },
+        { label: '璁╂鏀捐', value: 4 },
+      ],
+      state: 0,
+      orderId: 0,
+      inspectorList: [],//妫�楠屼汉鍛樺垪琛�
+      InspectionKey: 1,
+      typeSource: null,// 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟, 2: 閾滃崟涓濅笅鍗�
+      InspectInfoDialog: false, // 鏁版嵁鏌ョ湅寮规
+      insInfo: {},
+      outLoading: false
+    }
+  },
+  computed: {
+    ...mapGetters(['nickName'])
+  },
+  mounted() {
+    if (this.checkPermi(['get:raw:await'])) {
+      this.tabIndex = 0
+    } else {
+      this.tabIndex = 2
+    }
+    this.refreshTable()
+  },
+  activated () {
+    this.refreshTable()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鐐瑰嚮鏌ヨ鍥炶皟
+    goSearch() {
+      this.page.current = 1
+      this.page1.current = 1
+      this.page2.current = 1
+      this.page3.current = 1
+      this.refreshTable()
+    },
+    // 鏌ヨ鍥炶皟
+    refreshTable() {
+      if (this.tabIndex === 0) {
+        // 寰呬笅鍗曟煡璇�
+        this.getPurchaseOrderList()
+      } else if (this.tabIndex === 1) {
+        // 妫�楠屼腑鏌ヨ
+        this.getIfsByStateOneList()
+      } else if (this.tabIndex === 2) {
+        // 宸叉楠屾煡璇�
+        this.getIfsByOverList()
+      } else if (this.tabIndex === 4) {
+        // 鏌ヨ瀛e害妫�楠�
+        this.getIfsByQuarterList()
+      } else {
+        // 鍏ㄩ儴鏌ヨ
+        this.getIfsByAllList()
+      }
+    },
+    // 寰呬笅鍗曟煡璇�
+    getPurchaseOrderList() {
+      this.tableLoading = true
+      const params = { ...this.entity, isInspect: 1, state: 0, ...this.page }
+      getWarehouseSubmit(params).then(res => {
+        this.tableLoading = false
+        if (res.code === 200) {
+          this.tableData = res.data.records
+          this.page.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoading = false
+      })
+    },
+    // 妫�楠屼腑鏌ヨ
+    getIfsByStateOneList() {
+      this.tableLoading1 = true
+      const params = { ...this.entity, orderState: 1, state: 1, ...this.page1 }
+      getIfsByStateOne(params).then(res => {
+        this.tableLoading1 = false
+        if (res.code === 200) {
+          this.tableData1 = res.data.records
+          this.page1.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoading1 = false
+      })
+    },
+    // 宸叉楠屾煡璇�
+    getIfsByOverList() {
+      this.tableLoading2 = true
+      if(null != this.entity.date){
+        this.entity.beginDeclareDate = this.entity.date[0]
+        this.entity.endDeclareDate = this.entity.date[1]
+      } else {
+        this.entity.beginDeclareDate = ''
+        this.entity.endDeclareDate = ''
+      }
+      const params = { ...this.entity, orderState: 4, state: 2, ...this.page2 }
+      getIfsByOver(params).then(res => {
+        this.tableLoading2 = false
+        if (res.code === 200) {
+          this.tableData2 = res.data.records
+          this.page2.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoading2 = false
+      })
+    },
+    // 鏌ヨ瀛e害妫�楠�
+    getIfsByQuarterList() {
+      this.tableLoading4 = true
+      if(null != this.entity.date){
+        this.entity.beginDeclareDate = this.entity.date[0]
+        this.entity.endDeclareDate = this.entity.date[1]
+      } else {
+        this.entity.beginDeclareDate = ''
+        this.entity.endDeclareDate = ''
+      }
+      const params = { ...this.entity, ...this.page4 }
+      getIfsByQuarter(params).then(res => {
+        this.tableLoading4 = false
+        if (res.code === 200) {
+          this.tableData4 = res.data.records
+          this.page4.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoading4 = false
+      })
+    },
+    // 鍏ㄩ儴
+    getIfsByAllList() {
+      this.tableLoading3 = true
+      if(null != this.entity.date){
+        this.entity.beginDeclareDate = this.entity.date[0]
+        this.entity.endDeclareDate = this.entity.date[1]
+      } else {
+        this.entity.beginDeclareDate = ''
+        this.entity.endDeclareDate = ''
+      }
+      const params = { ...this.entity, isInspect: 1, ...this.page3 }
+      getIfsByAll(params).then(res => {
+        this.tableLoading3 = false
+        if (res.code === 200) {
+          this.tableData3 = res.data.records
+          this.page3.total = res.data.total
+        }
+      }).catch(err => {
+        this.tableLoading3 = false
+      })
+    },
+    // 閲� 缃�
+    refresh() {
+      this.resetForm('entity')
+      this.refreshTable()
+    },
+    pagination(page) {
+      this.page.size = page.limit
+      this.refreshTable()
+    },
+    pagination1(page) {
+      this.page1.size = page.limit
+      this.refreshTable()
+    },
+    pagination2(page) {
+      this.page2.size = page.limit
+      this.refreshTable()
+    },
+    pagination3(page) {
+      this.page3.size = page.limit
+      this.refreshTable()
+    },
+    pagination4(page) {
+      this.page4.size = page.limit
+      this.refreshTable()
+    },
+    // 鏌ョ湅妫�楠屾暟鎹�
+    viewInspectInfo(row) {
+      //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
+      let inspectorList = []
+      if (row.userName) {
+        inspectorList = row.userName.split(',')
+      }
+      inspectorList.push(this.nickName)
+      this.inspectorList = inspectorList
+      this.insInfo = row
+      this.InspectInfoDialog = true
+    },
+    closeInsInfoDialog() {
+      this.InspectInfoDialog = false
+    },
+    // 鐩存帴鏀捐
+    goPass(row) {
+      this.$confirm('鏄惁鏀捐褰撳墠鏁版嵁?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        concessionRelease({ ifsInventoryId: row.id }).then(res => {
+          if (res.code === 200) {
+            this.$message({
+              type: 'success',
+              message: '鏀捐鎴愬姛!'
+            });
+            this.refresh()
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'error',
+          message: '鏀捐澶辫触'
+        });
+      });
+    },
+    // 瀛e害鎾ら攢
+    repealQuarter(row) {
+      this.$confirm('鏄惁鎾ら攢瀛e害涓嬪崟?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        repealQuarterRawOrder({ quarterOrderId: row.quarterOrderId }).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鎾ら攢鎴愬姛')
+            this.refreshTable('page')
+          }
+        })
+      }).catch(() => { })
+    },
+    viewInsInfo0() {
+      let inspectorList = []
+      inspectorList.push(this.nickName)
+      this.InspectInfoDialog = false
+      if (this.checkPermi(['business:inspectionView'])) {
+        this.$router.push({
+          name: "InspectionView",
+          query: {
+            sonLaboratory: '鍘熸潗鏂�',
+            state: 3,
+            typeSource: this.insInfo.typeSource,
+            orderId: this.insInfo.enterOrderId,
+            inspectorList: inspectorList,
+          },
+        })
+      } else {
+        this.$router.push({
+          path: "/inspectionTask/inspection",
+          query: {
+            sonLaboratory: '鍘熸潗鏂�',
+            state: 3,
+            typeSource: this.insInfo.typeSource,
+            orderId: this.insInfo.enterOrderId,
+            inspectorList: inspectorList,
+          },
+        })
+      }
+    },
+    viewInsInfo1() {
+      let inspectorList = []
+      inspectorList.push(this.nickName)
+      this.InspectInfoDialog = false
+      if (this.checkPermi(['business:inspectionView'])) {
+        this.$router.push({
+          name: "InspectionView",
+          query: {
+            sonLaboratory: '鍘熸潗鏂�',
+            state: 3,
+            typeSource: this.insInfo.typeSource,
+            orderId: this.insInfo.quarterOrderId,
+            inspectorList: inspectorList,
+          },
+        })
+      } else {
+        this.$router.push({
+          path: "/inspectionTask/inspection",
+          query: {
+            sonLaboratory: '鍘熸潗鏂�',
+            state: 3,
+            typeSource: this.insInfo.typeSource,
+            orderId: this.insInfo.quarterOrderId,
+            inspectorList: inspectorList,
+          },
+        })
+      }
+    },
+    goback() {
+      this.state = 0
+      this.refreshTable('page')
+    },
+    // 鍒锋柊椤甸潰
+    refreshView() {
+      this.InspectionKey++
+    },
+    // 閾滄潗鏂欎笅鍗�
+    copper() {
+      this.$router.push({ path: "/materialOrder/copperOrder", query: { active: 1 } });
+    },
+    // 鎵撳紑鏍囩鎵撳嵃寮规
+    openPrint() {
+      if (this.multipleSelection.length > 0) {
+        this.printDialog = true
+        this.$nextTick(() => {
+          let selection = this.multipleSelection
+          this.$refs.printDialog.getLabelPrinting(selection)
+        })
+      } else {
+        this.$message.error('璇烽�夋嫨闇�瑕佹墦鍗扮殑鏁版嵁')
+      }
+    },
+    // 鍏抽棴鏍囩鎵撳嵃寮规
+    closePrintDialog() {
+      this.printDialog = false
+    },
+    // 涓嬪崟
+    playOrder(row) {
+      this.$router.push({ path: "/outsourcingFinishProduct/customsInspectionOrder", query: {isOutsourcing:'t', orderType: 0, customsInspection: row, active: 1 } });
+    },
+    // 鐐瑰嚮鏍峰搧鍚嶇О鏌ョ湅璇︽儏
+    selectAllByOne(row) {
+      if (row.isCopper == 1) {
+        this.currentId = row.enterOrderId
+        this.$router.push({ path: "/materialOrder/CopperView", query: { customsInspection: row, active: 2, currentId: this.currentId } });
+      } else {
+        this.currentId = row.insOrderId
+        this.$router.push({ path: "/materialOrder/customsInspectionView", query: { customsInspection: row, active: 2, currentId: this.currentId } });
+      }
+    },
+    // 鎵撳紑鍏嶆寮规
+    exemption(row) {
+      this.exemptionVisible = true
+      this.exemptionInfo = row
+      this.$set(this.exemptionInfo, 'partDetail', row.partDesc)
+    },
+    // 鎻愪氦鍏嶆淇℃伅
+    submitExemption() {
+      this.exemptionLoading = true
+      rawOrderRelease({
+        ifsInventoryId: this.exemptionInfo.id,
+        partDetail: this.exemptionInfo.partDetail
+      }).then(res => {
+        if (res.code === 200) {
+          this.exemptionVisible = false
+          this.$message.success('鎿嶄綔鎴愬姛')
+          this.refresh()
+        }
+        this.exemptionLoading = false
+      }).catch(err => {
+        console.log(err)
+        this.exemptionLoading = false
+      })
+    },
+    // 鎵撳紑鎾ら攢鎶ユ寮规
+    cancelDeclare(row) {
+      this.declareDialogVisible = true
+      this.insOrderRow = row
+    },
+    // 鎻愪氦鎾ら攢鎶ユ鐢宠
+    submitDeclare() {
+      revokeInspectionReport({ id: this.insOrderRow.id }).then(res => {
+        if (res.code === 200) {
+          this.declareDialogVisible = false
+          this.refreshTable()
+          this.$message.success("鎾ら攢鎶ユ鎴愬姛")
+        }
+      }).catch(err => {
+        console.log(err)
+      })
+    },
+    // 鎵撳紑鎾ら攢涓嬪崟鐨勫脊妗�
+    cancelOrder(row) {
+      if (row.enterOrderId && row.quarterOrderId) {
+        this.quashDialogVisible = true
+      } else if (row.enterOrderId && !row.quarterOrderId) {
+        this.$confirm('鏄惁鎾ら攢杩涘巶涓嬪崟?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          repealEnterRawOrder({ enterOrderId: row.enterOrderId }).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable('page')
+            }
+          })
+        }).catch(() => { })
+      } else if (!row.enterOrderId && row.quarterOrderId) {
+        this.$confirm('鏄惁鎾ら攢瀛e害涓嬪崟?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          repealQuarterRawOrder({ quarterOrderId: row.quarterOrderId }).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable('page')
+            }
+          })
+        }).catch(() => { })
+      }
+      this.insOrderRow = row
+    },
+    cancelQuashOrder(type) {
+      if (type === 'enterOrderId') {
+        this.$confirm('鏄惁鎾ら攢褰撳墠鏁版嵁?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          repealEnterRawOrder({ enterOrderId: this.insOrderRow.enterOrderId }).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable('page')
+            }
+          })
+        }).catch(() => { })
+      } else {
+        this.$confirm('鏄惁鎾ら攢褰撳墠鏁版嵁?', "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning"
+        }).then(() => {
+          repealQuarterRawOrder({ quarterOrderId: this.insOrderRow.quarterOrderId }).then(res => {
+            if (res.code === 200) {
+              this.$message.success('鎾ら攢鎴愬姛')
+              this.refreshTable()
+            }
+          })
+        }).catch(() => { })
+      }
+    },
+    // 鏁版嵁鏌ョ湅
+    handleDataLook(row) {
+      this.dataLookInfo = row
+      this.dataDialogVisible = true;
+    },
+    // 鍏抽棴鏁版嵁鏌ョ湅寮规
+    closeDataLook() {
+      this.dataDialogVisible = false
+    },
+    // 闄勪欢鏌ョ湅
+    handleFileLook(row) {
+      this.filesDialogVisible = true
+      this.filesLookInfo = row
+    },
+    // 鍏抽棴闄勪欢鏌ョ湅寮规
+    closeFilesLook() {
+      this.filesDialogVisible = false
+    },
+    // 鎶ュ憡涓嬭浇
+    download(row) {
+      this.downFileDialogVisible = true
+      this.downLoadInfo = row
+    },
+    // 鍏抽棴鎶ュ憡涓嬭浇寮规
+    closeDownFileDialog() {
+      this.downFileDialogVisible = false
+    },
+    // 鏌ョ湅浜т笟閾句俊鎭�
+    openInfoDialog(row) {
+      this.showInfoDialog = true
+      this.$nextTick(() => {
+        this.$refs.showInfoDialog.getInfo(row.id)
+      })
+    },
+    // 淇敼濮旀墭缂栧彿
+    changeEntrustCode(row) {
+      this.entrustCodeVisible = true
+      this.entrustCodeInfo = { ...row }
+    },
+    // 瀵煎嚭
+    handleOut() {
+      this.outLoading = true
+      let params = {}
+      if (this.multipleSelection.length > 0) {
+        params.ids = this.multipleSelection.map(item => item.id).join(',');
+      } else {
+        params = {...this.entity}
+      }
+      rawAllExport(params).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '鍘熸潗鏂欐娴嬩俊鎭鍑�.xlsx');
+      })
+    },
+    // 鎻愪氦淇敼濮旀墭缂栧彿淇℃伅
+    submitCode() {
+      this.submitCodeLoading = true
+      try {
+        updateEntrustCode({
+          id: this.entrustCodeInfo.id,
+          entrustCode: this.entrustCodeInfo.entrustCode,
+        }).then(res => {
+          if (res.code === 200) {
+            this.entrustCodeVisible = false
+            this.$message.success('淇敼鎴愬姛')
+          }
+          this.refreshTable()
+          this.submitCodeLoading = false
+        })
+      } catch (e) {
+        this.submitCodeLoading = false
+      }
+    },
+    // 鍒囨崲涓嬪崟tab琛ㄦ牸
+    handleTab(m) {
+      this.tabIndex = m;
+      this.multipleSelection = []
+      this.refreshTable()
+    },
+    // 琛ㄦ牸閫夋嫨鏂规硶
+    selectMethod(val) {
+      this.multipleSelection = val
+    },
+    changeRowClass({ row, rowIndex }) {
+      if (row.isFirst == 1) {
+        return 'highlight-danger-row-border'
+      }
+      return ''
+    },
+  },
+}
+</script>
+
+<style scoped>
+.table-tab {
+  display: flex;
+  justify-content: space-between;
+}
+
+.tab {
+  list-style-type: none;
+  display: flex;
+  margin-bottom: 12px;
+  margin-top: 0;
+  padding-left: 0;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #EEEEEE;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-child(4) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3A7BFA;
+  color: #3A7BFA;
+}
+</style>
diff --git a/src/views/business/rawMaterialInspection/index.vue b/src/views/business/rawMaterialInspection/index.vue
index 1fa1140..33984bf 100644
--- a/src/views/business/rawMaterialInspection/index.vue
+++ b/src/views/business/rawMaterialInspection/index.vue
@@ -47,6 +47,12 @@
               @keyup.enter.native="refreshTable">
             </el-input>
           </el-form-item>
+          <el-form-item label="閿�鍞鍗曞垎绫�" prop="orderType" v-if="(tabIndex === 3 || tabIndex === 4) && more">
+            <el-select v-model="componentData.orderType" clearable size="small"
+              @keyup.enter.native="refreshTable">
+              <el-option v-for="(item,index) in orderTypeList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
+            </el-select>
+          </el-form-item>
         </el-row>
       </el-form>
     </div>
@@ -65,7 +71,7 @@
             @click="handleDown">瀵煎嚭</el-button>
           <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary"
             @click="openIFS">鑾峰彇IFS璁㈠崟</el-button>
-          <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">鎶ユ</el-button>
+          <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">鎵归噺鎶ユ</el-button>
           <el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">鏂板鎶ユ淇℃伅</el-button>
         </div>
       </div>
@@ -83,17 +89,24 @@
       </div>
     </div>
     <!-- 鎵归噺鎶ユ -->
-    <el-dialog :visible.sync="declareDialogSVisible" title="纭鎶ユ" width="30%">
-      <p style="font-size:16px;color:#333333">鏄惁纭鎶ユ閫夋嫨鐨勬暟鎹紵</p>
+    <el-dialog :visible.sync="declareDialogSVisible" title="鎵归噺鎶ユ" width="30%" :before-close="resetBatchFormData">
+      <el-form ref="declareBatchObj" :inline="true" :model="declareBatchObj" :rules="declareObjBatchRules" label-width="130px"
+               label-position="right">
+        <el-form-item class="declareObj-form-item" label="閿�鍞鍗曞垎绫伙細" prop="orderType">
+          <el-select v-model="declareBatchObj.orderType" prop="orderType" clearable size="small">
+            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
       <span slot="footer" class="dialog-footer">
         <el-row>
-          <el-button @click="declareDialogSVisible = false">鍙� 娑�</el-button>
+          <el-button @click="resetBatchFormData()">鍙� 娑�</el-button>
           <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">纭� 瀹�</el-button>
         </el-row>
       </span>
     </el-dialog>
     <!-- 纭鎶ユ -->
-    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '鏂板鎶ユ淇℃伅' : '鍘熸潗鏂欐姤妫�'"
+    <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '鏂板鎶ユ淇℃伅' : '閿�鍞鍗曟姤妫�'"
       :visible.sync="declareDialogVisible" width="800px" @close="resetFormData">
       <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px"
         label-position="right">
@@ -139,6 +152,11 @@
           <el-select v-model="declareObj.isExpire" prop="isExpire" :disabled="declareType !== 'add'" clearable
             size="small">
             <el-option :value="1" label="杩囨湡鐗╂枡"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item class="declareObj-form-item" label="閿�鍞鍗曞垎绫伙細" prop="orderType">
+          <el-select v-model="declareObj.orderType" clearable size="small">
+            <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
@@ -259,12 +277,15 @@
   addIfsInventoryQuantity,
   advancedGodown,
   concessionRelease, delIfsInventory,
-  getIfsByAll,
-  getIfsByFinish,
   getIfsOrder,
   getWarehouseSubmit, inspectionReport, inspectionReportOne, rawAllExport,
   revokeInspectionReport,downloadTemplate,confirmSplitOrder
 } from '@/api/business/materialInspection'
+import {
+  getIfsByAll,
+  getIfsByFinish,
+} from '@/api/business/ifsOrderInspection'
+import { getDicts } from "@/api/system/dict/data";
 import limsTable from "@/components/Table/lims-table.vue";
 import {transformExcel} from '@/utils/file'
 
@@ -280,6 +301,14 @@
   data() {
     // 杩欓噷瀛樻斁鏁版嵁
     return {
+      declareBatchObj:{
+        orderType:''
+      },
+      declareObjBatchRules:{
+        orderType: [
+          { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+        ],
+      },
       confirmSplitOrderLoading: false,
       detailDataLoading: false,
       pushToMes:false,//鏄惁鍚屾鍒癿es
@@ -434,6 +463,7 @@
           }
         },
         { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: '璁㈠崟鍒嗙被', prop: 'orderTypeName' },
         { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore',width:'160px' },
         { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
         { label: '鎵瑰彿', prop: 'updateBatchNo' },
@@ -549,6 +579,7 @@
         receiverDate: '', // 鎺ユ敹鏃堕棿
         buyUnitMeas: '', // 鍗曚綅
         isExpire: '', // 鍗曚綅
+        orderType: null, // 閿�鍞鍗曞垎绫�
       },
       componentData: { // 琛ㄦ牸鏁版嵁
         updateBatchNo: null,
@@ -558,6 +589,7 @@
         date: null,
         entrustCode: '',
         inspectStatus: '',
+        orderType: null,
       },
       declareDialogVisible1: false,
       upLoad: false,
@@ -594,6 +626,9 @@
         buyUnitMeas: [
           { required: false, message: '璇峰~鍐欏崟浣�', trigger: 'blur' }
         ],
+        orderType: [
+          { required: true, message: '璇烽�夋嫨閿�鍞鍗曞垎绫�', trigger: 'change' }
+        ],
       },
       tabList: [
         {
@@ -628,13 +663,24 @@
       ],
       outLoading: false,
       upLoading: false,
+      orderTypeList: [],
     }
   },
   mounted() {
     this.refreshTable()
+    this.getOrderTypeList()
   },
   // 鏂规硶闆嗗悎
   methods: {
+    getOrderTypeList(){
+      getDicts('inspection_type').then(res=>{
+        if(res.code === 200){
+          this.orderTypeList = res.data
+        }
+      }).catch(error=>{
+        console.error(error)
+      })
+    },
     resetOrderSplitData(){
       this.orderSplitBasicData = []
       this.orderSplitDetailData = []
@@ -713,6 +759,9 @@
     // 鍒囨崲tab琛ㄦ牸
     handleTab(m) {
       this.tabIndex = m;
+      if([0,1].includes(this.tabIndex)){
+        this.componentData.orderType = null
+      }
       this.refreshTable()
     },
     // 鏌ヨ鍥炶皟
@@ -883,21 +932,28 @@
     },
     // 鎻愪氦鎵归噺鎶ユ
     submitDeclareS() {
-      let ids = []
-      this.multipleSelection.forEach(item => {
-        ids.push(item.id)
-      })
-      this.declareDialogSVisible = true
-      inspectionReport({ ids: ids }).then(res => {
-        if (res.code === 200) {
-          this.declareDialogSVisible = false
-          this.$message.success('鎶ユ鎴愬姛')
-          this.refreshTable()
+      this.$refs.declareBatchObj.validate(valid=>{
+        if(valid){
+          let ids = []
+          this.multipleSelection.forEach(item => {
+            ids.push(item.id)
+          })
+          this.declareDialogSVisible = true
+          inspectionReport({
+            ids: ids,
+            orderType: this.declareBatchObj.orderType
+          }).then(res => {
+            if (res.code === 200) {
+              this.declareDialogSVisible = false
+              this.$message.success('鎶ユ鎴愬姛')
+              this.refreshTable()
+            }
+            this.submitDeclareLoading = false
+          }).catch(err => {
+            this.submitDeclareLoading = false
+            console.log(err)
+          })
         }
-        this.submitDeclareLoading = false
-      }).catch(err => {
-        this.submitDeclareLoading = false
-        console.log(err)
       })
     },
     // 鎵撳紑鎶ユ纭寮规
@@ -943,7 +999,8 @@
           if (valid) {
             inspectionReportOne({
               id: this.declareObj.id,
-              updateBatchNo: this.declareObj.updateBatchNo
+              updateBatchNo: this.declareObj.updateBatchNo,
+              orderType: this.declareObj.orderType
             }).then(res => {
               if (res.code === 200) {
                 this.declareDialogVisible = false
@@ -961,8 +1018,12 @@
       }
     },
     resetFormData() {
-      this.$refs['declareObj'].resetFields();
+      this.$refs.declareObj.resetFields();
       this.declareDialogVisible = false
+    },
+    resetBatchFormData() {
+      this.$refs.declareBatchObj.resetFields();
+      this.declareDialogSVisible = false
     },
     // 鎵撳紑鍒犻櫎寮规
     deleteMaterial(row) {
@@ -1023,6 +1084,7 @@
         receiverDate: '', // 鎺ユ敹鏃堕棿
         buyUnitMeas: '', // 鍗曚綅
         isExpire: '', // 鍗曚綅
+        orderType: null, // 閿�鍞鍗曞垎绫�
       }
     }
   },
diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
index d9855a5..37c25a7 100644
--- a/src/views/standard/standardLibrary/index.vue
+++ b/src/views/standard/standardLibrary/index.vue
@@ -19,38 +19,68 @@
           scrollbar-width: none;
         " @node-click="handleNodeClick"
                @node-drop="handleDrop">
-        <div slot-scope="{ node, data }" class="custom-tree-node">
-          <el-row style="width: 100%">
-            <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
-              <span>
-                <i :class="`node_i ${data.children != undefined
-                  ? data.code === '[1]'
-                    ? 'el-icon-folder-opened'
-                    : 'el-icon-folder'
-                  : 'el-icon-tickets'
-                  }`"></i>
-                {{ data.label }}
-              </span>
-            </el-col>
-            <el-col v-if="
-              checkPermi(['standard:standardLibrary:delStandardTree']) &&
-              (node.data.children === null ||
-                node.data.children === undefined)
-            " :span="2" style="text-align: right">
-              <el-button size="mini" type="text" @click.stop="editTreeName(node.data)">
+        <div slot-scope="{ node, data }" class="custom-tree-node" style="width: calc(100% - 15px)">
+          <div style="display: flex;align-items: center;flex-wrap: nowrap;flex-direction: row;justify-content: space-between;">
+            <div style="width: calc(100% - 50px);text-overflow: ellipsis;white-space: nowrap;"
+                 :style="`overflow:${(node.data.children === null || node.data.children === undefined)?'clip':'visible'}`"
+            >
+              <i :class="`node_i ${data.children != undefined
+                ? data.code === '[1]'
+                  ? 'el-icon-folder-opened'
+                  : 'el-icon-folder'
+                : 'el-icon-tickets'
+                }`"></i>
+              {{data.label}}
+            </div>
+            <div v-if="(node.data.children === null || node.data.children === undefined)" style="width:50px">
+              <el-button v-if="checkPermi(['standard:standardLibrary:delStandardTree'])" size="mini" type="text" @click.stop="editTreeName(node.data)">
                 <i class="el-icon-edit"></i>
               </el-button>
-            </el-col>
-            <el-col v-if="
-              checkPermi(['standard:standardLibrary:delStandardTree']) &&
-              (node.data.children === null ||
-                node.data.children === undefined)
-            " :span="2" style="text-align: right">
-              <el-button size="mini" type="text" @click.stop="remove(node, data)">
+              <el-button style="margin-left: 0" size="mini" v-if="checkPermi(['standard:standardLibrary:delStandardTree'])" type="text" @click.stop="remove(node, data)">
                 <i class="el-icon-delete"></i>
               </el-button>
-            </el-col>
-          </el-row>
+            </div>
+          </div>
+
+
+
+
+<!--          <div style="display: inline-block;width: calc(100% - 60px);text-overflow: ellipsis;white-space: nowrap;" :style="`overflow:${(node.data.children === null || node.data.children === undefined)?'clip':'visible'}`">-->
+<!--              <i :class="`node_i ${data.children != undefined-->
+<!--                ? data.code === '[1]'-->
+<!--                  ? 'el-icon-folder-opened'-->
+<!--                  : 'el-icon-folder'-->
+<!--                : 'el-icon-tickets'-->
+<!--                }`"></i>-->
+<!--              {{ data.label }}-->
+<!--          </div>-->
+<!--          <span v-if="(node.data.children === null || node.data.children === undefined)" style="text-align: right">-->
+<!--              <el-button style="width:20px" v-if="checkPermi(['standard:standardLibrary:delStandardTree'])" size="mini" type="text" @click.stop="editTreeName(node.data)">-->
+<!--                <i class="el-icon-edit"></i>-->
+<!--              </el-button>-->
+<!--              <el-button style="width:20px;margin-left: 0" size="mini" v-if="checkPermi(['standard:standardLibrary:delStandardTree'])" type="text" @click.stop="remove(node, data)">-->
+<!--                <i class="el-icon-delete"></i>-->
+<!--              </el-button>-->
+<!--          </span>-->
+<!--          <el-row style="width: 100%">-->
+<!--            <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">-->
+
+<!--            </el-col>-->
+<!--            <el-col v-if="-->
+<!--              checkPermi(['standard:standardLibrary:delStandardTree']) &&-->
+<!--              (node.data.children === null ||-->
+<!--                node.data.children === undefined)-->
+<!--            " :span="2" style="text-align: right">-->
+
+<!--            </el-col>-->
+<!--            <el-col v-if="-->
+<!--              checkPermi(['standard:standardLibrary:delStandardTree']) &&-->
+<!--              (node.data.children === null ||-->
+<!--                node.data.children === undefined)-->
+<!--            " :span="2" style="text-align: right">-->
+
+<!--            </el-col>-->
+<!--          </el-row>-->
         </div>
       </el-tree>
     </div>
diff --git a/src/workers/DataWorker.worker.js b/src/workers/DataWorker.worker.js
index 218ed78..03f583c 100644
--- a/src/workers/DataWorker.worker.js
+++ b/src/workers/DataWorker.worker.js
@@ -17,7 +17,6 @@
   const data = JSON.parse(event.data);
   dataAcquisitionInfo = data.dataAcquisitionInfo;
   list = data.list;
-  // console.log(111,dataAcquisitionInfo)
   arrSpecial = []
   // 澶勭悊鏁版嵁
   handleData()

--
Gitblit v1.9.3