From fb941952ff7d5c03bc2251ec7e5ba0b498987894 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 14 三月 2025 19:31:31 +0800
Subject: [PATCH] 检验任务搬迁

---
 src/components/Table/lims-table.vue              |   11 
 src/api/business/inspectionTask.js               |  256 +
 src/utils/excelFountion.js                       |  376 ++
 src/views/business/inspectionTask/Inspection.vue | 8086 ++++++++++++++++++++++++++++++++++++++++++++
 src/views/business/inspectionOrder/add.vue       |   17 
 src/views/business/inspectionOrder/index.vue     |   30 
 src/api/business/inspectionOrder.js              |    4 
 src/utils/file.js                                |   25 
 src/views/business/inspectionTask/index.vue      | 2065 +++++++++++
 9 files changed, 10,837 insertions(+), 33 deletions(-)

diff --git a/src/api/business/inspectionOrder.js b/src/api/business/inspectionOrder.js
index d6fc987..3665efe 100644
--- a/src/api/business/inspectionOrder.js
+++ b/src/api/business/inspectionOrder.js
@@ -111,8 +111,8 @@
 export function viewDetails(query) {
   return request({
     url: '/insOrder/viewDetails',
-    method: 'get',
-    params: query
+    method: 'post',
+    data: query
   })
 }
 
diff --git a/src/api/business/inspectionTask.js b/src/api/business/inspectionTask.js
new file mode 100644
index 0000000..8b3ad4d
--- /dev/null
+++ b/src/api/business/inspectionTask.js
@@ -0,0 +1,256 @@
+import request from '@/utils/request'
+
+// 鍔ㄦ�佽幏鍙杢ab琛ㄥご
+export function getTabHeader(query) {
+  return request({
+    url: '/insOrderPlan/getTabHeader',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ョ湅缁撴灉鎸夐挳
+export function getInsOrderPlanList(query) {
+  return request({
+    url: '/insOrderPlan/getInsOrderPlanList',
+    method: 'post',
+    data: query
+  })
+}
+
+// 瀵煎嚭濮旀墭璐圭敤
+export function exportCommissionFees(query) {
+  return request({
+    url: '/insOrderPlan/exportCommissionFees',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}
+
+// 瀵煎嚭寰呮浠诲姟
+export function exportUnInsProducts(query) {
+  return request({
+    url: '/insOrderPlan/exportUnInsProducts',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}
+
+// 瀵煎嚭鏌ョ湅妫�楠岀粨鏋淓xcel
+export function exportInsOrderPlanResult(query) {
+  return request({
+    url: '/insOrderPlan/exportInsOrderPlanResult',
+    method: 'post',
+    data: query,
+    responseType: 'blob'
+  })
+}
+
+// 鏌ョ湅妫�楠屼换鍔″垪琛�
+export function selectInsOrderPlanList(query) {
+  return request({
+    url: '/insOrderPlan/selectInsOrderPlanList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 妫�楠屽崟璇︽儏-浠诲姟鍒囨崲
+export function inspectionOrderDetailsTaskSwitching(query) {
+  return request({
+    url: '/insOrderPlan/inspectionOrderDetailsTaskSwitching',
+    method: 'get',
+    params: query
+  })
+}
+
+// 璁ら鎸夐挳
+export function claimInsOrderPlan(query) {
+  return request({
+    url: '/insOrderPlan/claimInsOrderPlan',
+    method: 'post',
+    data: query
+  })
+}
+
+// 妫�楠屾寜閽�
+export function doInsOrder(query) {
+  return request({
+    url: '/insOrderPlan/doInsOrder',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鍒囨崲濂楃/鍏夌氦/鍏夌氦甯﹁褰曟ā鐗堟煡璇㈡楠屽唴瀹�
+export function getReportModel(query) {
+  return request({
+    url: '/insOrderPlan/getReportModel',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鑾峰彇妫�楠岄」鐩拰妯℃澘鍐呭
+export function getInsProduct(query) {
+  return request({
+    url: '/insOrderPlan/getInsProduct',
+    method: 'get',
+    params: query
+  })
+}
+
+// 浜ゆ帴鎸夐挳
+export function upPlanUser(query) {
+  return request({
+    url: '/insOrderPlan/upPlanUser',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鍒ゆ柇浜ゆ帴鐨勮瘯楠屽
+export function upPlanUser2(query) {
+  return request({
+    url: '/insOrderPlan/upPlanUser2',
+    method: 'get',
+    params: query
+  })
+}
+
+// 澶嶆牳鎸夐挳
+export function verifyPlan(query) {
+  return request({
+    url: '/insOrderPlan/verifyPlan',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鏍¢獙妫�楠屼换鍔℃彁浜�
+export function checkSubmitPlan(query) {
+  return request({
+    url: '/insOrderPlan/checkSubmitPlan',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鎻愪氦妫�楠屼换鍔�
+export function submitPlan(query) {
+  return request({
+    url: '/insOrderPlan/submitPlan',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鑾峰彇璁惧鍚嶇О
+export function getEquipName(query) {
+  return request({
+    url: '/insOrderPlan/getEquipName',
+    method: 'get',
+    params: query
+  })
+}
+
+// 淇濆瓨妫�楠屽唴瀹�
+export function saveInsContext(query) {
+  return request({
+    url: '/insOrderPlan/saveInsContext',
+    method: 'post',
+    data: query
+  })
+}
+
+// 涓婁紶闄勪欢鎸夐挳
+export function uploadFile(query) {
+  return request({
+    url: '/insOrderPlan/uploadFile',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鍒犻櫎闄勪欢鎸夐挳
+export function delfile(query) {
+  return request({
+    url: '/insOrderPlan/delfile',
+    method: 'post',
+    data: query
+  })
+}
+
+// 涓嬭浇闄勪欢
+export function downFile(query) {
+  return request({
+    url: '/insOrderPlan/downFile',
+    method: 'get',
+    params: query
+  })
+}
+
+// 濉啓娓╁害涓庢箍搴�
+export function write(query) {
+  return request({
+    url: '/insOrderPlan/write',
+    method: 'post',
+    data: query
+  })
+}
+
+// 娓╁害寰幆鏌ョ湅鍒楄〃鏁版嵁(鍖呮嫭閫氳繃鏍峰搧id,寰幆娆℃暟,娓╁害,寰幆娆℃暟杩涜绛涢��)
+export function temCycle(query) {
+  return request({
+    url: '/insOrderPlan/temCycle',
+    method: 'get',
+    params: query
+  })
+}
+
+// 寮у瀭鐗规畩椤规煡鐪嬪垪琛ㄦ暟鎹�
+export function getSagTemperatureProducts(query) {
+  return request({
+    url: '/insOrderPlan/getSagTemperatureProducts',
+    method: 'get',
+    params: query
+  })
+}
+
+// (鐢靛姏鐨勫簲鍔涘簲鍙�)淇濆瓨妫�楠屽唴瀹�
+export function saveInsContext2(query) {
+  return request({
+    url: '/insOrderPlan/saveInsContext2',
+    method: 'post',
+    data: query
+  })
+}
+
+// 鏍规嵁璁㈠崟id鏌ヨ鏍峰搧淇℃伅
+export function getSampleInfoByOrderId(query) {
+  return request({
+    url: '/insOrderPlan/getSampleInfoByOrderId',
+    method: 'get',
+    params: query
+  })
+}
+
+// 浠诲姟灞曠ず
+export function tasksShow(query) {
+  return request({
+    url: '/insOrderPlan/tasksShow',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鑾峰彇瀛愯瘯楠屽褰撴湀鐨勬�绘楠屼换鍔℃暟閲�
+export function getCurrentMonthPlanTotal(query) {
+  return request({
+    url: '/insOrderPlan/getCurrentMonthPlanTotalBySonLaboratory',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index 09ed0e9..bba1d5b 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -414,10 +414,20 @@
       this.doLayout();
     },
   },
+  updated() {
+    this.$nextTick(() => {
+      this.$refs.multipleTable.doLayout();
+    });
+  },
   mounted() {
     this.calculateSpanInfo();
   },
   methods: {
+    doLayout() {
+      this.$nextTick(() => {
+        this.$refs.multipleTable && this.$refs.multipleTable.doLayout();
+      });
+    },
     getWidth(row, row0) {
       let count = 0;
       row.forEach((a) => {
@@ -489,6 +499,7 @@
       if (!linkEvent) {
         return this.$message.warning("璇烽厤缃甽ingk浜嬩欢");
       }
+      console.log(linkEvent);
       linkEvent.vueComponent[linkEvent.method](row);
     },
     // 鍚堝苟鍗曞厓鏍�
diff --git a/src/utils/excelFountion.js b/src/utils/excelFountion.js
new file mode 100644
index 0000000..693c16e
--- /dev/null
+++ b/src/utils/excelFountion.js
@@ -0,0 +1,376 @@
+
+/**
+ * 璁$畻澶氫釜鏁板�肩殑鍜�
+ *
+ * @param val 鏁板�煎瀷鍙傛暟锛屽彲鍙橀暱鍙傛暟鍒楄〃
+ * @returns 杩斿洖鎵�鏈夊弬鏁扮殑鍜岋紝濡傛灉鍙傛暟鍒楄〃涓虹┖鎴栧弬鏁扮被鍨嬮潪鏁板�煎瀷锛屽垯杩斿洖null
+ */
+function SUM(...val){
+  try {
+    let num = null;
+    if(val&&val.length>0){
+      val.forEach(item=>{
+        num+=item;
+      })
+    }
+    return num;
+  } catch (error) {
+
+  }
+}
+/**
+ * 璁$畻浼犲叆鍙傛暟涓殑鏈�澶у��
+ *
+ * @param ...val 鍙彉鍙傛暟鍒楄〃锛岀敤浜庤绠楁渶澶у�肩殑鏁板�兼垨鍙浆鎹负鏁板�肩殑绫诲瀷
+ * @returns 杩斿洖鏈�澶у�硷紝濡傛灉鍙傛暟鍒楄〃涓虹┖鎴栦负null/undefined/''锛屽垯杩斿洖null
+ */
+function MAX(...val){
+  try {
+    let max = null;
+    if(val&&val.length>0){
+      val = val.filter(item=>item!=null&&item!=='')
+      if(val.length>0){
+        max = Math.max(...val)
+      }else{
+        max = null;
+      }
+    }
+    return max;
+  } catch (error) {
+
+  }
+}
+/**
+ * 璁$畻浼犲叆鍙傛暟涓殑鏈�灏忓��
+ *
+ * @param val 鍙彉鍙傛暟锛岀敤浜庤绠楁渶灏忓�肩殑鏁板�兼暟缁�
+ * @returns 杩斿洖浼犲叆鍙傛暟涓殑鏈�灏忓�硷紝濡傛灉浼犲叆鍙傛暟涓虹┖鎴栨墍鏈夊�煎潎涓簄ull鎴栫┖瀛楃涓诧紝鍒欒繑鍥瀗ull
+ */
+function MIN(...val){
+  try {
+    let min = null;
+    if(val&&val.length>0){
+      val = val.filter(item=>item!=null&&item!=='')
+      // console.log(val)
+      if(val.length>0){
+        min = Math.min(...val)
+      }
+    }
+    return min;
+  } catch (error) {
+
+  }
+}
+/**
+ * 璁$畻缁欏畾鏁板�肩殑骞冲潎鍊�
+ *
+ * @param val 鏁板�煎垪琛紝鍙寘鍚换鎰忎釜鍙傛暟
+ * @returns 杩斿洖骞冲潎鍊硷紝濡傛灉鏁板�煎垪琛ㄤ负绌烘垨鍖呭惈闈炴暟鍊奸」锛屽垯杩斿洖null
+ */
+function AVERAGE(...val){
+  try {
+    let num = 0;
+    let arr = [];
+    if(val&&val.length>0){
+      arr = val.filter(item=>item!=null&&item!=='')
+      arr.forEach(item=>{
+        num+=item;
+      })
+      if(arr.length>0){
+        return num/arr.length;
+      }else{
+        return null;
+      }
+    }else{
+      return null;
+    }
+  } catch (error) {
+
+  }
+}
+/**
+ * 璁$畻涓�涓暟鐨勭粷瀵瑰��
+ *
+ * @param val 浠绘剰鏁板��
+ * @returns 杩斿洖璇ユ暟鍊肩殑缁濆鍊�
+ */
+function ABS(val){
+  try {
+    return Math.abs(val);
+  } catch (error) {
+
+  }
+}
+/**
+ * 璁$畻涓�缁勬暟瀛楃殑涓綅鏁�
+ *
+ * @param val 浠绘剰涓弬鏁帮紝闇�瑕佽绠椾腑浣嶆暟鐨勬暟瀛�
+ * @returns 濡傛灉鍙傛暟涓湁鏈夋晥鐨勬暟瀛楋紝鍒欒繑鍥炶绠楀嚭鐨勪腑浣嶆暟锛涘惁鍒欒繑鍥瀗ull
+ */
+function MEDIAN(...val){
+  try {
+    let arr = [];
+    if(val&&val.length>0){
+      arr = val.filter(item=>item!=null&&item!=='')
+      const sortedArr = arr.sort((a, b) => a - b);
+      // 璁$畻涓綅鏁�
+      const half = Math.floor(sortedArr.length / 2);
+      if(arr.length>0){
+        // 濡傛灉鏁扮粍闀垮害鏄鏁帮紝鐩存帴鍙栦腑闂寸殑鍏冪礌
+        if (sortedArr.length % 2 === 1) {
+          return sortedArr[half];
+        } else { // 濡傛灉鏁扮粍闀垮害鏄伓鏁帮紝鍙栦腑闂翠袱涓厓绱犵殑骞冲潎鍊�
+          return (sortedArr[half - 1] + sortedArr[half]) / 2;
+        }
+      }else{
+        return null;
+      }
+    }else{
+      return null;
+    }
+  } catch (error) {
+
+  }
+}
+
+/**
+ * 璁$畻骞�
+ *
+ * @param str 瀛楃涓插舰寮忕殑骞傝〃杈惧紡锛屼緥濡�"2^3"
+ * @returns 杩斿洖璁$畻鍚庣殑骞傚�硷紝濡傛灉琛ㄨ揪寮忔棤鏁堝垯杩斿洖null
+ */
+function CalculatePower(str){
+  try {
+    if(str&&str.includes('^')){
+      let arr = str.split('^');
+      if(arr&&arr.length>1){
+        return Math.pow(arr[0],arr[1]);
+      }else{
+        return null;
+      }
+    }
+  } catch (error) {
+
+  }
+}
+
+
+
+/**
+ * 鏍规嵁鍧愭爣鑾峰彇鍒楀悕
+ * @param {Object} cellId
+ */
+function getColumnNameFromId(cellId){
+  try{
+    if (! Array.isArray(cellId)) {
+      cellId = cellId.split('-');
+    }
+    var i = cellId[0];
+    var letter = '';
+    if (i > 701) {
+      letter += String.fromCharCode(64 + parseInt(i / 676));
+      letter += String.fromCharCode(64 + parseInt((i % 676) / 26));
+    } else if (i > 25) {
+      letter += String.fromCharCode(64 + parseInt(i / 26));
+    }
+    letter += String.fromCharCode(65 + (i % 26));
+    return letter + (parseInt(cellId[1]) + 1);
+  }catch(e){
+    console.log('error',cellId)
+  }
+}
+/**
+ * 鏍规嵁鍒楀悕鑾峰彇鍧愭爣
+ * @param {Object} id
+ * @param {Object} arr
+ */
+function getIdFromColumnName(id, arr) {
+  try{
+    // Get the letters
+    var t = /^[a-zA-Z]+/.exec(id);
+    if (t) {
+      // Base 26 calculation
+      var code = 0;
+      for (var i = 0; i < t[0].length; i++) {
+        code += parseInt(t[0].charCodeAt(i) - 64) * Math.pow(26, (t[0].length - 1 - i));
+      }
+      code--;
+      // Make sure jexcel starts on zero
+      if (code < 0) {
+        code = 0;
+      }
+
+      // Number
+      var number = parseInt(/[0-9]+$/.exec(id));
+      if (number > 0) {
+        number--;
+      }
+
+      if (arr == true) {
+        id = [ code, number ];
+      } else {
+        // id = code + '-' + number;
+        id = {
+          c:code,
+          r:number
+        }
+      }
+    }
+    return id;
+  }catch(e){
+    console.log('error',id)
+  }
+}
+
+/**
+ * 鏇存敼鍙傛暟
+ *
+ * @param f 鍙傛暟鍒楄〃
+ * @returns 杩斿洖涓�涓寘鍚潗鏍囦俊鎭殑鏁扮粍
+ */
+function changeParameter(f){
+  try {
+    let arr = getABCList(f)
+    let arr2 = []
+    arr.forEach(item=>{
+      if(item.includes(':')){
+        let r0 = getIdFromColumnName(item.split(':')[0]).r;
+        let c0 = getIdFromColumnName(item.split(':')[0]).c;
+        let r1 = getIdFromColumnName(item.split(':')[1]).r;
+        let c1 = getIdFromColumnName(item.split(':')[1]).c;
+        for (let i = Number(r0); i <= Number(r1); i++) {
+          for (let u = Number(c0); u <= Number(c1); u++) {
+            arr2.push({
+              r: i,
+              c: u
+            })
+          }
+        }
+      }else{
+        arr2.push(getIdFromColumnName(item))
+      }
+    })
+    return arr2;
+  } catch (error) {
+
+  }
+}
+/**
+ * 鑾峰彇鍖呭惈 ABC 瀛楃鐨勫垪琛�
+ *
+ * @param f 瀛楃涓诧紝鍖呭惈闇�瑕佽В鏋愮殑鍏紡鎴栬〃杈惧紡
+ * @returns 鍖呭惈 ABC 瀛楃鐨勬暟缁勫垪琛�
+ */
+function getABCList(f){
+  try {
+    let regex = /[=\+\-\*\%\(\)\/\^\s]/g;
+    let fouList = [
+      "SUM",
+      'MAX',
+      'MIN',
+      'AVERAGE',
+      'ABS',
+    ]
+    f = f.replace(regex, ',').replace(new RegExp('"&', 'g'),'').replace(new RegExp('&"', 'g'),'')
+    fouList.forEach(item=>{
+      f = f.replace(new RegExp(item, 'g'),'')
+    })
+    // console.log('f',f)
+    let arr = f.split(',').filter(item=>{
+      return item&& /[a-zA-Z]/.test(item)&&item!='undefined'&&item!='null'
+    });
+    return arr;
+  } catch (error) {
+
+  }
+}
+/**
+ * 鑾峰彇鎵�鏈夊崟鍏冩牸
+ *
+ * @param f 琛ㄦ牸鏁版嵁鎴栫浉鍏冲弬鏁�
+ * @returns 杩斿洖涓�涓璞★紝鍏堕敭涓哄崟鍏冩牸鐨勫敮涓�鏍囪瘑绗︼紙鐢卞垪鍜岃ID鎷兼帴鑰屾垚锛夛紝鍊间负null
+ */
+function getAllCell(f){
+  try {
+    let arr = changeParameter(f)
+    let arr0 = {}
+    arr.forEach(item=>{
+      arr0[getColumnNameFromId(`${item.c}`+'-'+`${item.r}`)] = null
+    })
+    return arr0;
+  } catch (error) {
+
+  }
+}
+
+/**
+ * 璁$畻鍑芥暟
+ *
+ * @param f 瀛楃涓茬被鍨嬶紝琛ㄧず寰呰绠楃殑鍏紡
+ * @param comValue 瀵硅薄绫诲瀷锛岃〃绀鸿鏇挎崲鐨勫崟鍏冩牸鍊硷紝閿负鍗曞厓鏍煎悕绉帮紝鍊间负鏇挎崲鍚庣殑鍊�
+ * @returns 杩斿洖璁$畻鍚庣殑缁撴灉锛屽鏋滆绠楀け璐ュ垯杩斿洖0
+ */
+function compute(f,comValue){
+  try {
+    let str = f
+    // 鑾峰彇鍗曞厓鏍煎搴斿��
+    let arr = getAllCell(f)
+    for (var a in comValue) {
+      if(comValue[a]!=='undefined'&&comValue[a]!=='null'&&comValue[a]!==undefined){
+        if(typeof(comValue[a])=='string'&&comValue[a].includes('^')){
+          // 璁$畻骞傛
+          arr[a] = CalculatePower(comValue[a])
+        } else if (typeof(comValue[a])=='string'&&comValue[a].includes('/')) {
+          arr[a] = comValue[a]
+        } else{
+          arr[a] = comValue[a]
+        }
+      }
+    }
+    // 瑙f瀽鍏紡鍙傛暟锛岀壒鍒槸甯︼細鐨�
+    let arr0 = getABCList(f)
+    let obj = {}
+    arr0.forEach(item=>{
+      if(item.includes(':')){
+        let arr1 = []
+        let r0 = getIdFromColumnName(item.split(':')[0]).r;
+        let c0 = getIdFromColumnName(item.split(':')[0]).c;
+        let r1 = getIdFromColumnName(item.split(':')[1]).r;
+        let c1 = getIdFromColumnName(item.split(':')[1]).c;
+        for (let i = Number(r0); i <= Number(r1); i++) {
+          for (let u = Number(c0); u <= Number(c1); u++) {
+            arr1.push({
+              r: i,
+              c: u
+            })
+          }
+        }
+        let arr2 = []
+        arr1.forEach(m=>{
+          arr2.push(getColumnNameFromId(`${m.c}`+'-'+`${m.r}`))
+        })
+        obj[item.split(':').join('-')] = arr2.join(',')
+      }else{
+        obj[item] = item
+      }
+    })
+    str = str.replace(new RegExp(':', 'g'),'')
+    // 鏇挎崲鍙傛暟
+    for (var a in obj) {
+      str = str.replace(new RegExp(a, 'g'),obj[a])
+    }
+    // 璁$畻
+    for (var a in arr) {
+      str = str.replace(new RegExp(a, 'g'),arr[a])
+    }
+    return eval(str)
+  } catch (error) {
+
+  }
+}
+
+export default {
+  compute,
+  changeParameter,
+  AVERAGE
+}
diff --git a/src/utils/file.js b/src/utils/file.js
index c3a3e7b..d8ff0fd 100644
--- a/src/utils/file.js
+++ b/src/utils/file.js
@@ -59,3 +59,28 @@
     image.src = imgsrc;
   }
 };
+
+
+export function transformExcel(response,tempName){
+  const relType = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel;charset=UTF-8']
+  let type = response.type
+  if (relType.includes(type)) {
+    const blob = new Blob([response], {type: 'application/vnd.ms-excel'})
+    let temp = tempName
+    if(response.headers){
+      const disposition = response.headers["content-disposition"]
+      temp = disposition.substring(disposition.lastIndexOf('=') + 1)
+    }
+    let filename = decodeURI(temp)
+    // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
+    const elink = document.createElement('a')
+    elink.download = filename
+    elink.style.display = 'none'
+    elink.href = URL.createObjectURL(blob)
+    document.body.appendChild(elink)
+    elink.click()
+    URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+    document.body.removeChild(elink)
+  }
+}
+
diff --git a/src/views/business/inspectionOrder/add.vue b/src/views/business/inspectionOrder/add.vue
index 27f393d..c46e5fa 100644
--- a/src/views/business/inspectionOrder/add.vue
+++ b/src/views/business/inspectionOrder/add.vue
@@ -77,10 +77,7 @@
             v-show="active == 3 && addObj.companyId"
             >閫氳繃</el-button
           >
-          <el-button
-            size="medium"
-            @click="$router.push('/business/inspectionOrder')"
-          >
+          <el-button size="medium" @click="goBack">
             <span style="color: #3a7bfa">杩斿洖</span>
           </el-button>
         </el-col>
@@ -1916,6 +1913,12 @@
     }
   },
   methods: {
+    goBack() {
+      let path = this.$route.query.isPlan
+        ? "/business/inspectionTask"
+        : "/business/inspectionOrder";
+      this.$router.push(path);
+    },
     //涓嬫鏍告煡鏃ユ湡:绂佺敤鍦ㄦ牳鏌ユ棩鏈熷墠鐨勬棩鏈�
     disabledDate(time) {
       if (time) {
@@ -3363,7 +3366,7 @@
           if (res.code === 200) {
             this.$message.success("宸叉彁浜�");
             this.bsm3Dia = false;
-            this.$router.push("/business/inspectionOrder");
+            this.goBack();
           }
           this.saveLoad = false;
         })
@@ -3533,7 +3536,7 @@
                 this.$message.success("鎻愪氦鎴愬姛");
                 this.issuedDialogVisible = false;
                 this.upLoad = false;
-                this.$router.replace("/business/inspectionOrder");
+                this.goBack();
                 //瀹℃牳閫氳繃鍚庯紝鑷姩鎵撳嵃浜岀淮鐮�
                 //TODO: 鐢靛姏璇曢獙瀹ゆ殏鏃朵笉鐢ㄦ爣绛炬墦鍗�
                 if (
@@ -4624,7 +4627,7 @@
             this.tell = "";
             this.$message.success("鎻愪氦鎴愬姛");
             this.issuedDialogVisible = false;
-            this.$router.push("/business/inspectionOrder");
+            this.goBack();
           }
         })
         .catch((error) => {
diff --git a/src/views/business/inspectionOrder/index.vue b/src/views/business/inspectionOrder/index.vue
index 529e504..f7f149c 100644
--- a/src/views/business/inspectionOrder/index.vue
+++ b/src/views/business/inspectionOrder/index.vue
@@ -822,12 +822,12 @@
   revokeReviewConsistentByProductId,
   revokeReviewProduct,
   revokeReviewSample,
-  upPlanUser2,
   updateStatus,
   updateInspected,
   revocationPassed,
   revocationCancel,
 } from "@/api/business/inspectionOrder";
+import { upPlanUser2 } from "@/api/business/inspectionTask";
 import { getDicts } from "@/api/system/dict/data";
 import vueQr from "vue-qr";
 import getLodop from "@/utils/lodop";
@@ -1013,7 +1013,9 @@
             {
               name: "鎶ュ憡涓嬭浇",
               type: "text",
-              clickFun: (row) => {},
+              clickFun: (row) => {
+                this.download(row);
+              },
               disabled: (row, index) => {
                 return row.state != 4 || row.isRatify != 1;
               },
@@ -1194,7 +1196,9 @@
             {
               name: "鏌ョ湅",
               type: "text",
-              clickFun: (row) => {},
+              clickFun: (row) => {
+                this.viewDetails(row);
+              },
               showHide: (row) => {
                 return (
                   row.inspectionItem == "鍗曟牴鍨傜洿鐕冪儳" ||
@@ -1628,7 +1632,7 @@
           active: 2,
           currentId: row.id,
           examine: 1,
-          isReview: true,
+          isPlan: false,
         },
       });
     },
@@ -1647,23 +1651,6 @@
     },
     // 涓嬭浇鎶ュ憡
     download(row) {
-      // let url = row.urlS ? row.urlS : row.url;
-      // if (url) {
-      //   url = url.split(".")[0] + ".pdf";
-      //   const link = document.createElement("a");
-      //   link.href = this.javaApi + url;
-      //   link.target = "_blank";
-      //   document.body.appendChild(link);
-      //   link.click();
-      // }
-
-      // if(row.tempUrlPdf) {
-      //   const link = document.createElement('a');
-      //   link.href = this.javaApi + row.tempUrlPdf;
-      //   link.target = '_blank';
-      //   document.body.appendChild(link);
-      //   link.click();
-      // }
       downReport({ id: row.reportId })
         .then((res) => {
           let fileName = row.tempUrlPdf;
@@ -2283,6 +2270,7 @@
         query: {
           active: num,
           examine: 0,
+          isPlan: false,
         },
       });
     },
diff --git a/src/views/business/inspectionTask/Inspection.vue b/src/views/business/inspectionTask/Inspection.vue
new file mode 100644
index 0000000..18c7feb
--- /dev/null
+++ b/src/views/business/inspectionTask/Inspection.vue
@@ -0,0 +1,8086 @@
+<style scoped>
+.custom-table .el-table__header-wrapper th {
+  background-color: #87ceeb; /* 鍙甯︽湁my-custom-table绫荤殑琛ㄦ牸鐢熸晥 */
+  color: #fff;
+}
+.container {
+  overflow: auto; /* 纭繚瀹瑰櫒鑳藉寘瑁规诞鍔ㄥ厓绱� */
+  margin-bottom: 10px;
+}
+
+.right-button {
+  float: right;
+}
+.inspection {
+  height: 100%;
+  overflow-y: auto;
+}
+
+.inspection::-webkit-scrollbar {
+  width: 0;
+}
+
+.title {
+  height: 60px;
+  line-height: 60px;
+}
+
+.search {
+  width: 100%;
+  margin-bottom: 10px;
+  background-color: #fff;
+  border-radius: 3px;
+}
+
+.search .form-inline {
+  padding-top: 20px;
+  padding-left: 0px;
+  text-align: left;
+}
+
+.center {
+  width: calc(100% - 40px);
+  /* max-height: 580px; */
+  background-color: #fff;
+  border-radius: 3px;
+  padding: 20px;
+  overflow: auto;
+}
+
+.center-box {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  flex-wrap: wrap;
+  width: 100%;
+  overflow-x: hidden;
+  /* overflow-x: scroll; */
+  cursor: grab;
+}
+
+.center-box:active {
+  cursor: grabbing;
+}
+
+.tables {
+  table-layout: fixed;
+  margin: 5px 5px 16px;
+}
+
+.tables td {
+  height: 40px;
+  width: 100px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+}
+.thermal-table {
+  min-width: calc(100% - 10px);
+  margin: 5px 5px 0;
+  table-layout: fixed;
+}
+.thermal-table td {
+  min-width: 70px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 5px;
+}
+.table-container {
+  overflow-x: auto; /* 浣垮鍣ㄦ敮鎸佹í鍚戞粴鍔� */
+  max-width: 100%; /* 闄愬埗瀹瑰櫒鐨勬渶澶у搴� */
+  margin-bottom: 16px;
+}
+
+.content {
+  display: flex;
+  height: 100%;
+  align-items: center;
+  justify-content: left;
+  padding: 5px;
+  box-sizing: border-box;
+  overflow: hidden;
+  user-select: none;
+}
+
+.content * {
+  user-select: none;
+}
+
+.content-h-0 {
+  justify-content: center;
+}
+
+.content-h-1 {
+  justify-content: start;
+}
+
+.content-h-2 {
+  justify-content: end;
+}
+
+.content-v-0 {
+  align-items: center;
+}
+
+.content-v-1 {
+  align-items: start;
+}
+
+.content-v-2 {
+  align-items: end;
+}
+
+.table_input {
+  width: 100%;
+  height: 100%;
+}
+.table_input >>> .el-input__inner {
+  border-color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.collection {
+  width: 50px;
+  height: 100%;
+  margin-left: 5px;
+  border-color: transparent;
+  background-color: #409eff;
+  color: #fff;
+  border-radius: 4px;
+  font-size: 12px;
+}
+
+.collection:active {
+  opacity: 0.7;
+}
+.table_caret {
+  font-size: 16px;
+  margin: 0 5px;
+  color: rgba(0, 0, 0, 0.5);
+}
+.table_caret:hover {
+  color: #409eff;
+  cursor: pointer;
+}
+
+.table_caret:active {
+  opacity: 0.8;
+}
+>>> input::-webkit-inner-spin-button {
+  -webkit-appearance: none !important; /* 闅愯棌寰皟鎸夐挳 */
+  margin: 0 !important; /* 绉婚櫎寰皟鎸夐挳鐨勮竟璺� */
+}
+
+>>> input[type="number"] {
+  -moz-appearance: textfield !important; /* 閽堝 Firefox */
+}
+>>> .el-form-item__content {
+  display: inline-flex;
+  align-items: center;
+}
+#lineTd {
+  background: #fff
+    url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjEwMCUiIHkyPSIxMDAlIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEiLz48L3N2Zz4=)
+    no-repeat 100% center;
+}
+.background-grey {
+  background-color: #f0f1f5;
+}
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 50px;
+}
+
+.search_label {
+  width: 120px;
+  font-size: 14px;
+  text-align: right;
+}
+.search_input {
+  width: calc(100% - 120px);
+}
+</style>
+<style>
+.inspection .el-form-item__label {
+  color: #000;
+}
+
+.inspection .el-drawer__header::before {
+  content: "";
+  display: inline-block;
+  width: 4px;
+  height: 30.24px;
+  background: #3a7bfa;
+  border-radius: 10px;
+  margin-left: 32px;
+  margin-right: 8.5px;
+}
+
+.inspection .el-drawer__header {
+  color: #303133;
+  text-align: left;
+}
+
+.inspection .el-input-group__append {
+  padding: 0 14px;
+  color: #3a7bfa;
+  background-color: #fff;
+  height: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.inspection .center-box .el-input__inner {
+  font-size: 12px;
+  padding: 0 6px;
+  text-align: center;
+}
+
+.inspection .el-textarea__inner {
+  padding: 2px;
+}
+
+.inspection .el-textarea__inner::-webkit-scrollbar {
+  width: 0;
+}
+
+.inspection .el-select {
+  display: flex;
+  align-items: center;
+}
+
+.inspection .el-textarea__inner {
+  min-height: 100% !important;
+}
+
+.inspection .tables .el-input {
+  display: flex;
+  align-items: center;
+}
+.thermal-table .el-input {
+  display: flex;
+  align-items: center;
+}
+.custom-dialog .el-dialog__body {
+  max-width: 1000px; /* 璁剧疆鏈�澶у搴� */
+}
+</style>
+<template>
+  <div v-loading="loading" class="inspection">
+    <el-row class="title">
+      <el-col :span="12" style="padding-left: 20px; text-align: left"
+        >妫�楠屽崟璇︽儏
+      </el-col>
+      <el-col :span="12" style="text-align: right">
+        <el-button
+          size="small"
+          type="primary"
+          @click="connectVisible = true"
+          v-show="insOrderState != 2 && state == 1"
+          >浜ゆ帴</el-button
+        >
+        <!-- <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button>
+        <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">鍏夌氦甯﹀垏鎹�</el-button>
+        <el-button size="small" type="primary" @click="bushingVisible=true" v-if="bushing.length>0">濂楃鍒囨崲</el-button> -->
+        <el-button
+          size="small"
+          type="primary"
+          @click="
+            sampleVisible = true;
+            uploadSample();
+          "
+          >鏍峰搧鍒囨崲</el-button
+        >
+        <el-button size="small" type="primary" @click="taskVisible = true"
+          >浠诲姟鍒囨崲</el-button
+        >
+        <el-button
+          size="small"
+          type="primary"
+          @click="addVerifyDia = true"
+          v-if="state == 1"
+          :loading="submitLoading"
+          >鎻愪氦</el-button
+        >
+        <!-- 澶嶆牳 -->
+        <el-button
+          size="medium"
+          type="primary"
+          @click="upInsReview(1)"
+          :loading="reviewLoading"
+          v-if="state > 1"
+          >閫氳繃</el-button
+        >
+        <el-button size="medium" @click="upInsReview(0)" v-if="state > 1"
+          >涓嶉�氳繃</el-button
+        >
+        <el-button size="small" @click="$emit('goback')">杩斿洖</el-button>
+      </el-col>
+    </el-row>
+    <div class="search">
+      <el-form
+        :inline="true"
+        :model="searchForm"
+        class="form-inline"
+        label-width="100px"
+        label-position="right"
+      >
+        <el-form-item label="濮旀墭缂栧彿:">
+          <el-input
+            clearable
+            v-model="insOrder.entrustCode"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鏍峰搧缂栧彿:">
+          <el-tooltip
+            :disabled="!currentSample.sampleCode"
+            :content="currentSample.sampleCode"
+          >
+            <el-input
+              clearable
+              v-model="currentSample.sampleCode"
+              disabled
+              size="small"
+              placeholder="璇疯緭鍏�"
+            ></el-input>
+          </el-tooltip>
+        </el-form-item>
+        <el-form-item label="鏍峰搧鍚嶇О:">
+          <el-input
+            clearable
+            v-model="currentSample.sample"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鏍峰搧鏁伴噺:">
+          <el-input
+            clearable
+            v-model="fileterSampleProducts.length"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="涓嬪彂鏃堕棿:">
+          <el-input
+            clearable
+            v-model="insOrder.sendTime"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绱ф�ョ▼搴�:">
+          <el-input
+            clearable
+            v-model="insOrder.typeName"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绾﹀畾鏃堕棿:">
+          <el-input
+            clearable
+            v-model="insOrder.appointed"
+            disabled
+            size="small"
+            placeholder="璇疯緭鍏�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="褰撳墠鏍峰搧浣嶆暟:">
+          <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>
+        </el-form-item>
+        <el-form-item label="澶囨敞:">
+          <span style="color: red">{{
+            insOrder.remark ? insOrder.remark : "-"
+          }}</span>
+          <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> -->
+        </el-form-item>
+      </el-form>
+    </div>
+    <div class="center">
+      <div
+        class="search"
+        style="
+          text-align: left;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+        "
+      >
+        <div style="display: flex; align-items: center">
+          <span v-if="tableList.length > 0">妫�楠屾ā鏉匡細</span>
+          <el-radio-group v-model="currentTable" size="small">
+            <el-radio-button
+              :label="item.templateId"
+              v-for="(item, index) in tableLists"
+              :key="index"
+              size="small"
+              >{{ item.templateName }}</el-radio-button
+            >
+          </el-radio-group>
+        </div>
+        <div style="display: flex; align-items: center">
+          <span
+            v-if="
+              casing.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              (tableLists.find((m) => m.templateId == currentTable)
+                .templateName == '鎴愬搧缂嗘楠屽師濮嬭褰�' ||
+                tableLists.find((m) => m.templateId == currentTable)
+                  .templateName == '浜屾琚鏉愭枡妫�楠屽師濮嬭褰�')
+            "
+            >&nbsp;&nbsp;濂楃锛�</span
+          >
+          <el-select
+            v-model="currentTab"
+            placeholder="璇烽�夋嫨"
+            clearable
+            @clear="handleChangeSample({ id: currentSample.id })"
+            @change="(m) => handleChange(m, 3)"
+            v-if="
+              casing.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              (tableLists.find((m) => m.templateId == currentTable)
+                .templateName == '鎴愬搧缂嗘楠屽師濮嬭褰�' ||
+                tableLists.find((m) => m.templateId == currentTable)
+                  .templateName == '浜屾琚鏉愭枡妫�楠屽師濮嬭褰�')
+            "
+            size="small"
+            :loading="getReportModelLoading"
+            @focus="getReportModel(currentSample.id)"
+          >
+            <el-option
+              v-for="item in casing"
+              :key="item.id"
+              :label="item.color"
+              :value="item.id"
+            >
+              <span style="float: left">{{ item.color }}</span>
+              <el-tag
+                :type="
+                  item.state == 1
+                    ? 'success'
+                    : item.state == 2
+                    ? 'warning'
+                    : 'danger'
+                "
+                style="float: right; margin-top: 5px"
+                size="small"
+              >
+                {{
+                  item.state == 1 ? "宸叉" : item.state == 2 ? "鍦ㄦ" : "鏈"
+                }}
+              </el-tag>
+            </el-option>
+          </el-select>
+
+          <!-- 璇ュ厜绾ゅ甫鐢ㄤ簬鍏夌氦甯︿笅鏈夐」鐩厤缃殑鎯呭喌 -->
+          <span
+            v-if="
+              fibers.filter((f) => f.isExistProduct).length > 0 &&
+              fibers.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            >&nbsp;&nbsp;鍏夌氦甯︼細</span
+          >
+          <el-select
+            v-model="currentTab"
+            placeholder="璇烽�夋嫨"
+            clearable
+            @clear="handleChangeSample({ id: currentSample.id })"
+            @change="(m) => handleChange(m, 1)"
+            v-if="
+              fibers.filter((f) => f.isExistProduct).length > 0 &&
+              fibers.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            size="small"
+            :loading="getReportModelLoading"
+            @focus="getReportModel(currentSample.id)"
+          >
+            <el-option
+              v-for="item in fibers"
+              :key="item.value"
+              :label="item.bushingColor + '-' + item.code"
+              :value="item.id"
+            >
+              <span style="float: left">{{
+                item.bushingColor + "-" + item.code
+              }}</span>
+              <el-tag
+                :type="
+                  item.state == 1
+                    ? 'success'
+                    : item.state == 2
+                    ? 'warning'
+                    : 'danger'
+                "
+                style="float: right; margin-top: 5px"
+                size="small"
+              >
+                {{
+                  item.state == 1 ? "宸叉" : item.state == 2 ? "鍦ㄦ" : "鏈"
+                }}
+              </el-tag>
+            </el-option>
+          </el-select>
+
+          <!-- 璇ュ厜绾ゅ甫鐢ㄤ簬鍏夌氦甯︽棤椤圭洰锛屼笅闈㈡湁鍏夌氦閰嶇疆鐨勬儏鍐� -->
+          <span
+            v-if="
+              fibers.filter((f) => f.isExistProduct).length === 0 &&
+              fibers.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            >&nbsp;&nbsp;鍏夌氦甯︼細</span
+          >
+          <el-select
+            v-model="insFibersId"
+            placeholder="璇烽�夋嫨"
+            disabled
+            v-if="
+              fibers.filter((f) => f.isExistProduct).length === 0 &&
+              fibers.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            size="small"
+          >
+            <el-option
+              v-for="item in fibers"
+              :key="item.value"
+              :label="item.bushingColor + '-' + item.code"
+              :value="item.id"
+            >
+              <span style="float: left">{{
+                item.bushingColor + "-" + item.code
+              }}</span>
+              <el-tag
+                :type="
+                  item.state == 1
+                    ? 'success'
+                    : item.state == 2
+                    ? 'warning'
+                    : 'danger'
+                "
+                style="float: right; margin-top: 5px"
+                size="small"
+              >
+                {{
+                  item.state == 1 ? "宸叉" : item.state == 2 ? "鍦ㄦ" : "鏈"
+                }}
+              </el-tag>
+            </el-option>
+          </el-select>
+          <span
+            v-if="
+              fiber.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            >&nbsp;&nbsp;鍏夌氦锛�</span
+          >
+          <el-select
+            v-model="currentTab"
+            placeholder="璇烽�夋嫨"
+            clearable
+            @clear="handleChangeSample({ id: currentSample.id })"
+            @change="(m) => handleChange(m, 2)"
+            v-if="
+              fiber.length > 0 &&
+              tableLists.find((m) => m.templateId == currentTable) &&
+              tableLists.find((m) => m.templateId == currentTable)
+                .templateName != '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+              tableLists
+                .find((m) => m.templateId == currentTable)
+                .templateName.includes('鍏夌氦')
+            "
+            size="small"
+            :loading="getReportModelLoading"
+            @focus="getReportModel(currentSample.id)"
+          >
+            <el-option
+              v-for="item in fiber"
+              :label="item.bushColor + '-' + item.color"
+              :key="item.id"
+              :value="item.id"
+            >
+              <span style="float: left">{{
+                item.bushColor + "-" + item.color
+              }}</span>
+              <el-tag
+                :type="
+                  item.state == 1
+                    ? 'success'
+                    : item.state == 2
+                    ? 'warning'
+                    : 'danger'
+                "
+                style="float: right; margin-top: 5px"
+                size="small"
+              >
+                {{
+                  item.state == 1 ? "宸叉" : item.state == 2 ? "鍦ㄦ" : "鏈"
+                }}
+              </el-tag>
+            </el-option>
+          </el-select>
+          <el-form
+            :inline="true"
+            :model="otherForm"
+            class="form-inline"
+            label-width="50px"
+            style="padding-top: 0; padding-left: 10px"
+            v-if="PROJECT == '妫�娴嬩腑蹇�'"
+          >
+            <el-form-item label="娓╁害:" style="margin-bottom: 0">
+              <el-input
+                v-model="otherForm.temperature"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="width: 90px"
+                @change="(m) => subOtherForm(m, 'temperature')"
+              ></el-input>
+              <span style="margin-left: 4px">鈩�</span>
+            </el-form-item>
+            <el-form-item label="婀垮害:" style="margin-bottom: 0">
+              <el-input
+                v-model="otherForm.humidity"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="width: 90px"
+                @change="(m) => subOtherForm(m, 'humidity')"
+              ></el-input>
+              <span style="margin-left: 4px">%</span>
+            </el-form-item>
+          </el-form>
+          <el-button
+            type="primary"
+            size="small"
+            v-if="
+              (isGet ||
+                (tableLists.find((m) => m.templateId == currentTable) &&
+                  tableLists.find((m) => m.templateId == currentTable)
+                    .templateName == '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+                  temDataAcquisition)) &&
+              PROJECT == '妫�娴嬩腑蹇�' &&
+              state == 1
+            "
+            @click="getDataAcquisitionDevice"
+            :loading="dataAcquisitionLoading"
+            >鏁版嵁閲囬泦</el-button
+          >
+          <el-button
+            :type="dataAcquisitionEidtAble ? '' : 'primary'"
+            size="small"
+            v-if="
+              isGet ||
+              isEdit ||
+              (tableLists.find((m) => m.templateId == currentTable) &&
+                tableLists.find((m) => m.templateId == currentTable)
+                  .templateName == '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+                PROJECT == '妫�娴嬩腑蹇�' &&
+                collected &&
+                state == 1)
+            "
+            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble"
+            >{{ dataAcquisitionEidtAble ? "鍏抽棴缂栬緫" : "缂栬緫鏁伴噰" }}</el-button
+          >
+        </div>
+      </div>
+      <!-- 甯歌妫�楠屽師濮嬭褰� -->
+      <div
+        class="center-box"
+        id="nav"
+        v-loading="tableLoading"
+        v-if="
+          !tableLists.find((m) => m.templateId == currentTable) ||
+          (tableLists.find((m) => m.templateId == currentTable).templateName !=
+            '娓╁害寰幆妫�楠屽師濮嬭褰�' &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('鐑惊鐜�') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('娓╁崌璇曢獙') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('寮у瀭鐗规�ф楠屽師濮嬭褰�') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('鍗曟牴鍨傜洿鐕冪儳') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('鏋剁┖鍦扮嚎搴斿姏搴斿彉') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('闃叉尟閿ゅ姛鐜囩壒鎬�') &&
+            !tableLists
+              .find((m) => m.templateId == currentTable)
+              .templateName.includes('鐤插姵璇曢獙妫�楠屽師濮嬭褰�'))
+        "
+      >
+        <table
+          border="1"
+          class="tables"
+          cellpadding="10"
+          v-for="(item, index) in tableList"
+          :key="index + currentTable + currentSample.id"
+        >
+          <tbody>
+            <tr v-for="(m, i) in item.arr" :key="i">
+              <td
+                :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c"
+                v-for="(n, j) in m"
+                :key="j"
+                v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4"
+                :colspan="n.v.mc && n.v.mc.cs ? n.v.mc.cs : 1"
+                :rowspan="n.v.mc && n.v.mc.rs ? n.v.mc.rs : 1"
+                :style="`background:${n.v.bg ? n.v.bg : ''};color:${
+                  n.v.fc
+                };font-size:${n.v.fs}px;width:${handleWidth(
+                  n
+                )}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${
+                  n.v.bl ? 'bold' : ''
+                };`"
+              >
+                <div
+                  class="content"
+                  :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"
+                  :style="`width:${handleWidth(n)}px !important;min-height:${
+                    item.style.rowlen[n.r]
+                  }px;`"
+                >
+                  <template
+                    v-if="
+                      n.v.ps != undefined &&
+                      typeof n.v.ps.value === 'string' &&
+                      n.v.ps.value.includes('妫�楠屽��') &&
+                      state == 1
+                    "
+                  >
+                    <el-input
+                      v-if="getInspectionValueType(n.i) == 1"
+                      class="table_input"
+                      v-model="n.v.v"
+                      :disabled="
+                        (getInspectionItemType(n.i) == 1 &&
+                          !dataAcquisitionEidtAble) ||
+                        (n.u != userId && n.u != undefined && n.u != '')
+                      "
+                      @input="handleInput(n)"
+                      @change="
+                        (m) =>
+                          changeInput(
+                            m,
+                            `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                            n,
+                            'getDataType'
+                          )
+                      "
+                      @mousewheel.native.prevent
+                      :key="'abc-' + '000' + index + '000' + i + '000' + j"
+                      @keydown.enter="
+                        changeInput(
+                          '',
+                          `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                          n,
+                          'getDataType'
+                        )
+                      "
+                    >
+                      <!-- <el-button slot="append" type="primary" icon="el-icon-edit" size="mini"
+                        v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> -->
+                    </el-input>
+                    <el-input
+                      v-else-if="getInspectionValueType(n.i) == 2"
+                      class="table_input"
+                      type="textarea"
+                      v-model="n.v.v"
+                      :disabled="
+                        getInspectionItemType(n.i) == 1 ||
+                        (n.u != userId && n.u != undefined && n.u != '')
+                      "
+                      @change="
+                        (m) =>
+                          changeInput(
+                            m,
+                            `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                            n,
+                            'getDataType'
+                          )
+                      "
+                    />
+                    <el-select
+                      v-else-if="getInspectionValueType(n.i) == 5"
+                      class="table_input"
+                      v-model="n.v.v"
+                      :disabled="
+                        state > 1 ||
+                        getInspectionItemType(n.i) == 1 ||
+                        (n.u != userId && n.u != undefined && n.u != '')
+                      "
+                      @visible-change="(e) => getDic(e, n.i)"
+                      @change="
+                        (m) =>
+                          changeInput(
+                            m,
+                            `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                            n,
+                            'getDataType'
+                          )
+                      "
+                    >
+                      <el-option
+                        v-for="(e, i) in enumList"
+                        :key="i"
+                        :label="e.label"
+                        :value="e.value"
+                      ></el-option>
+                    </el-select>
+                    <span
+                      :style="`font-family:${n.v.ff} !important;`"
+                      v-else-if="getInspectionValueType(n.i) == 4"
+                      >/</span
+                    >
+                  </template>
+                  <template
+                    v-else-if="n.v.ps != undefined && n.v.ps.value === '缁撹'"
+                  >
+                    <el-select
+                      v-if="
+                        (getInspectionValueType(n.i) == 2 ||
+                          getInspectionValueType(n.i) == 5) &&
+                        state == 1 &&
+                        PROJECT == '瑁呭鐢电紗'
+                      "
+                      class="table_input"
+                      v-model="n.v.v"
+                      @change="saveInsContext(n.i)"
+                    >
+                      <el-option label="鍚堟牸" :value="1"></el-option>
+                      <el-option label="涓嶅悎鏍�" :value="0"></el-option>
+                    </el-select>
+                    <template
+                      v-if="
+                        PROJECT == '妫�娴嬩腑蹇�' ||
+                        (PROJECT == '瑁呭鐢电紗' &&
+                          getInspectionValueType(n.i) != 2)
+                      "
+                    >
+                      <span
+                        v-if="n.v.v === 1"
+                        :style="`font-family:${n.v.ff} !important;color: green;`"
+                        >鍚堟牸</span
+                      >
+                      <span
+                        v-else-if="n.v.v === 0"
+                        :style="`font-family:${n.v.ff} !important;color: red;`"
+                        >涓嶅悎鏍�</span
+                      >
+                      <span
+                        v-else-if="n.v.v === 3"
+                        :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`"
+                        >涓嶅垽瀹�</span
+                      >
+                      <span v-else :style="`font-family:${n.v.ff} !important;`"
+                        >寰呭畾</span
+                      >
+                    </template>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined &&
+                      n.v.ps.value === '璁惧缂栫爜' &&
+                      state == 1
+                    "
+                  >
+                    <el-select
+                      v-model="n.v.v"
+                      placeholder="璁惧"
+                      :disabled="n.u != userId && n.u != undefined && n.u != ''"
+                      class="table_input"
+                      @visible-change="(e) => getEquipOptions(e, n.i)"
+                      remote
+                      @change="(val) => changeEquip(val, n)"
+                    >
+                      <el-option
+                        v-for="item in equipOptions"
+                        :key="item.value"
+                        :label="item.value"
+                        :value="item.value"
+                      >
+                      </el-option>
+                    </el-select>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined &&
+                      n.v.ps.value === '璁惧鍚嶇О' &&
+                      state == 1
+                    "
+                  >
+                    <span>{{ n.v.v }}</span>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined &&
+                      n.v.ps.value === '瑕佹眰鍊�' &&
+                      state == 1
+                    "
+                  >
+                    <span :style="`font-family:${n.v.ff} !important;`">{{
+                      getTell(n.i)
+                    }}</span>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined &&
+                      n.v.ps.value === '璁$畻鍊�' &&
+                      state == 1
+                    "
+                    ><span :style="`font-family:${n.v.ff} !important;`">{{
+                      toFixed(n.v.v, n.v.ct)
+                    }}</span></template
+                  >
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined &&
+                      n.v.ps.value === '鏈�缁堝��' &&
+                      state == 1
+                    "
+                  >
+                    <!-- <el-input class="table_input" type="textarea"
+                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
+                      v-model="n.v.v" @change="saveInsContext()" v-if="getInspectionValueType(n.i) == 2"></el-input>
+                    <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v"
+                      :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()">
+                      <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>
+                    </el-select> -->
+                    <span :style="`font-family:${n.v.ff} !important;`">{{
+                      toFixed(n.v.v, n.v.ct)
+                    }}</span>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined && n.v.ps.value === '鏍峰搧缂栧彿'
+                    "
+                  >
+                    <div
+                      style="
+                        display: flex;
+                        flex-wrap: nowrap;
+                        align-items: center;
+                        width: 100%;
+                      "
+                      :title="currentSample.sampleCode"
+                    >
+                      <i
+                        class="el-icon-caret-left table_caret"
+                        style="width: 16px"
+                        @click="caretSample(-1)"
+                        v-if="!currentFiberOpticTape && !currentFiberOptic"
+                      ></i>
+                      <div
+                        :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`"
+                      >
+                        {{ currentSample.sampleCode }}
+                      </div>
+                      <i
+                        class="el-icon-caret-right table_caret"
+                        style="width: 16px"
+                        v-if="!currentFiberOpticTape && !currentFiberOptic"
+                        @click="caretSample(1)"
+                      ></i>
+                    </div>
+                  </template>
+                  <template
+                    v-else-if="
+                      n.v.ps != undefined && n.v.ps.value === '鏍峰搧鍨嬪彿'
+                    "
+                  >
+                    <div
+                      :style="`font-family:${n.v.ff} !important;`"
+                      v-if="
+                        currentSample.model !== undefined &&
+                        currentSample.model !== null
+                      "
+                    >
+                      {{ currentSample.model }}
+                    </div>
+                  </template>
+                  <template
+                    v-else-if="n.v.ps != undefined && n.v.ps.value === '濂楃'"
+                  >
+                    <div
+                      style="
+                        display: flex;
+                        flex-wrap: nowrap;
+                        align-items: center;
+                      "
+                    >
+                      <!-- <i class="el-icon-caret-left table_caret" @click="caretBushing(-1)"></i> -->
+                      <div :style="`font-family:${n.v.ff} !important;`">
+                        {{ currentBushing ? currentBushing.color : "" }}
+                      </div>
+                      <!-- <i class="el-icon-caret-right table_caret" @click="caretBushing(1)"></i> -->
+                    </div>
+                  </template>
+                  <template
+                    v-else-if="n.v.ps != undefined && n.v.ps.value === '鍏夌氦甯�'"
+                  >
+                    <div
+                      style="
+                        display: flex;
+                        flex-wrap: nowrap;
+                        align-items: center;
+                      "
+                    >
+                      <i
+                        class="el-icon-caret-left table_caret"
+                        @click="caretTape(-1)"
+                        v-if="currentFiberOpticTape"
+                      ></i>
+                      <div :style="`font-family:${n.v.ff} !important;`">
+                        {{
+                          currentFiberOpticTape
+                            ? currentFiberOpticTape.code
+                            : ""
+                        }}
+                      </div>
+                      <i
+                        class="el-icon-caret-right table_caret"
+                        v-if="currentFiberOpticTape"
+                        @click="caretTape(1)"
+                      ></i>
+                    </div>
+                  </template>
+                  <template
+                    v-else-if="n.v.ps != undefined && n.v.ps.value === '鍏夌氦'"
+                  >
+                    <div
+                      style="
+                        display: flex;
+                        flex-wrap: nowrap;
+                        align-items: center;
+                      "
+                    >
+                      <i
+                        class="el-icon-caret-left table_caret"
+                        @click="caretOptic(-1)"
+                        v-if="currentFiberOptic"
+                      ></i>
+                      <div :style="`font-family:${n.v.ff} !important;`">
+                        {{ currentFiberOptic ? currentFiberOptic.color : "" }}
+                      </div>
+                      <i
+                        v-if="currentFiberOptic"
+                        class="el-icon-caret-right table_caret"
+                        @click="caretOptic(1)"
+                      ></i>
+                    </div>
+                  </template>
+                  <span
+                    v-else
+                    :style="`font-family:${n.v.ff} !important;`"
+                    v-html="getValue(n.v)"
+                  ></span>
+                </div>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+      <!-- 寮у瀭鐗规�ф楠屽師濮嬭褰� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists.find((m) => m.templateId == currentTable).templateName ==
+          '寮у瀭鐗规�ф楠屽師濮嬭褰�'
+        "
+      >
+        <el-divider></el-divider>
+        <h4
+          style="
+            margin-bottom: 20px;
+            font-size: 24px;
+            font-weight: 400;
+            text-align: center;
+          "
+        >
+          寮у瀭鐗规�ф楠屽師濮嬭褰�
+        </h4>
+        <el-form
+          :inline="true"
+          :model="sagForm"
+          class="form-inline"
+          label-width="120px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-form-item label="鏍峰搧鍨嬪彿" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="sagForm.model"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="妫�楠屼緷鎹�" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="sagForm.methodName"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <!-- <el-form-item label="璁惧鍚嶇О" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="equipForm.value0"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item> -->
+          <el-form-item label="璁惧鍚嶇О" style="margin-bottom: 0">
+            <el-select
+              ref="sag"
+              multiple
+              collapse-tags
+              style="margin-left: 20px; width: 280px"
+              v-model="equipForm.value0"
+              size="small"
+              @change="blockModifications('sag')"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="璁惧缂栧彿" style="margin-bottom: 0">
+            <el-select
+              multiple
+              collapse-tags
+              style="margin-left: 20px; width: 280px"
+              v-model="equipForm.code0"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="棰濆畾鎷夋柇鍔�/kN" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="sagForm.tensileForce"
+              size="small"
+              placeholder="璇疯緭鍏�"
+              :disabled="state > 1"
+              @change="(m) => saveSageInfo('棰濆畾鎷夋柇鍔�', m)"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="璺ㄨ窛闀垮害/m" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="sagForm.spanLength"
+              size="small"
+              placeholder="璇疯緭鍏�"
+              @change="(m) => saveSageInfo('璺ㄨ窛闀垮害', m)"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="杞借嵎/kN" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="sagForm.load"
+              size="small"
+              placeholder="璇疯緭鍏�"
+              :disabled="state > 1"
+              @change="(m) => saveSageInfo('杞借嵎', m)"
+            ></el-input>
+            <!--            <el-select-->
+            <!--              v-model="sagForm.load"-->
+            <!--              :disabled="state > 1"-->
+            <!--              placeholder="璇烽�夋嫨"-->
+            <!--              size="small"-->
+            <!--              @change="(m) => saveSageInfo('杞借嵎', m)"-->
+            <!--            >-->
+            <!--              <el-option-->
+            <!--                v-for="item in loadList"-->
+            <!--                :key="item.label"-->
+            <!--                :label="item.value"-->
+            <!--                :value="item.label"-->
+            <!--              >-->
+            <!--              </el-option>-->
+            <!--            </el-select>-->
+          </el-form-item>
+        </el-form>
+        <el-divider></el-divider>
+        <div class="container">
+          <el-button
+            class="right-button"
+            type="primary"
+            size="small"
+            @click="addSag"
+            >娣� 鍔�</el-button
+          >
+        </div>
+        <el-table
+          :data="sagData"
+          class="custom-table"
+          border
+          style="margin-bottom: 20px"
+        >
+          <!-- <el-table-column label="楂樺害 h mm" prop="height" align="center">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.height"  style="width: 100%;" size="small" @change="m=>saveSageInfo('楂樺害','height')"></el-input>
+            </template>
+          </el-table-column> -->
+          <el-table-column label="寮у瀭  mm" prop="sag" align="center">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.sag"
+                size="small"
+                style="width: 100%"
+                :disabled="state > 1"
+                @change="(m) => saveSageInfo('寮у瀭', 'sag')"
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="瀵肩嚎娓╁害鈩�" align="center">
+            <el-table-column label="1" prop="value0" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value0"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="2" prop="value1" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value1"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="3" prop="value2" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value2"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="4" prop="value3" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value3"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="5" prop="value4" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value4"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column label="6" prop="value5" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.value5"
+                  style="width: 100%"
+                  size="small"
+                  :disabled="state > 1"
+                  @change="(m) => saveSageInfo('瀵肩嚎娓╁害', scope.row)"
+                ></el-input>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column label="骞冲潎娓╁害鈩�" prop="average" align="center">
+          </el-table-column>
+          <el-table-column label="瀹ゆ俯鈩�" prop="temperature" align="center">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.temperature"
+                style="width: 100%"
+                size="small"
+                :disabled="state > 1"
+                @change="(m) => saveSageInfo('瀹ゆ俯', 'temperature')"
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="寮犲姏kN" prop="remark" align="center">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.remark"
+                style="width: 100%"
+                size="small"
+                :disabled="state > 1"
+                @change="(m) => saveSageInfo('寮犲姏', 'remark')"
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="鎿嶄綔" align="center">
+            <template slot-scope="scope">
+              <el-button
+                type="text"
+                size="small"
+                @click="deleteSag(scope.$index)"
+                ><span style="color: red">鍒犻櫎</span></el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <!-- 娓╁害寰幆妫�楠屽師濮嬭褰� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists.find((m) => m.templateId == currentTable).templateName ==
+          '娓╁害寰幆妫�楠屽師濮嬭褰�'
+        "
+      >
+        <el-divider></el-divider>
+        <h4
+          style="
+            margin-bottom: 20px;
+            font-size: 24px;
+            font-weight: 400;
+            text-align: center;
+          "
+        >
+          娓╁害寰幆妫�楠屽師濮嬭褰�
+        </h4>
+        <el-form
+          :inline="true"
+          :model="wareForm"
+          class="form-inline"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="wareForm0.model"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="wareForm0.methodName"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <!-- <el-form-item label="妫�娴嬩緷鎹�:" style="margin-bottom: 0;">
+          <el-input clearable v-model="wareForm0.sample" disabled size="small" placeholder=""></el-input>
+        </el-form-item> -->
+          <el-form-item label="寰幆娆℃暟:" style="margin-bottom: 0">
+            <el-select
+              v-model="wareForm.inspectionItem"
+              placeholder="璇烽�夋嫨"
+              size="small"
+              @change="(m) => wareFormChange(m, 'inspectionItem')"
+            >
+              <el-option
+                v-for="item in numOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="娓╁害:" style="margin-bottom: 0">
+            <el-select
+              v-model="wareForm.inspectionItemSubclass"
+              placeholder="璇烽�夋嫨"
+              size="small"
+              @change="(m) => wareFormChange(m, 'inspectionItemSubclass')"
+            >
+              <el-option
+                v-for="item in temperatureOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+            <span style="margin-left: 4px">鈩�</span>
+          </el-form-item>
+        </el-form>
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="equipForm"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-form-item label="浠櫒鍚嶇О:">
+            <el-input
+              clearable
+              v-model="equipForm.value0"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              v-model="equipForm.code0"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="浠櫒鍚嶇О:">
+            <el-input
+              clearable
+              v-model="equipForm.value1"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              v-model="equipForm.code1"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+        <el-table
+          :data="wareTableData"
+          ref="wareTableData"
+          border
+          v-loading="wareTableDataLoading"
+          style="width: 100%; margin-bottom: 30px"
+          align="center"
+          v-if="
+            (wareForm.inspectionItemSubclass != '20(甯告俯)' &&
+              wareForm.inspectionItemSubclass != '20') ||
+            (wareForm.inspectionItemSubclass == '20(甯告俯)' &&
+              wareForm.inspectionItem == 1) ||
+            (wareForm.inspectionItemSubclass == '20' &&
+              wareForm.inspectionItem == numOptions.length)
+          "
+        >
+          <el-table-column label="搴忓彿" type="index" width="59" align="center">
+          </el-table-column>
+          <el-table-column
+            prop="bushColor"
+            label="绠¤壊鏍�"
+            width="75"
+            align="center"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="code"
+            label="鍏夌氦甯︾紪鍙�"
+            width="105"
+            align="center"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="color"
+            label="鍏夌氦鑹叉爣"
+            align="center"
+            width="90"
+          >
+          </el-table-column>
+          <template v-for="(item, index) in wareLength">
+            <el-table-column
+              prop="value0"
+              label="澶栫"
+              align="center"
+              width="100"
+              :key="new Date().getTime() + '1234567'"
+            >
+              <template slot="header">
+                {{ "澶栫" + (index + 1) }}
+              </template>
+              <template slot-scope="scope">
+                <el-input
+                  size="small"
+                  v-model="scope.row.arr[index].value0"
+                  placeholder=""
+                  :disabled="state > 1 || !dataAcquisitionEidtAble"
+                  @change="(m) => changeItem(scope.row.arr[index])"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="value1"
+              label="鍐呯"
+              align="center"
+              width="100"
+              :key="new Date().getTime() + '23333333'"
+            >
+              <template slot="header">
+                {{ "鍐呯" + (index + 1) }}
+              </template>
+              <template slot-scope="scope">
+                <el-input
+                  size="small"
+                  :disabled="state > 1 || !dataAcquisitionEidtAble"
+                  v-model="scope.row.arr[index].value1"
+                  placeholder=""
+                  @change="(m) => changeItem(scope.row.arr[index])"
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="comValue"
+              align="center"
+              min-width="150"
+              :key="new Date().getTime() + '364654654'"
+            >
+              <template slot="header">
+                {{ "琛板噺绯绘暟" + item }}
+              </template>
+              <template slot-scope="scope">
+                <span>{{ scope.row.arr[index].comValue }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="resValue"
+              label="琛板噺宸�"
+              align="center"
+              v-if="wareForm.inspectionItemSubclass != '20(甯告俯)'"
+              min-width="90"
+              :key="new Date().getTime() + '434634634634'"
+            >
+              <template slot="header">
+                {{ "琛板噺宸�" + (index + 1) }}
+              </template>
+              <template slot-scope="scope">
+                <span>{{ scope.row.arr[index].resValue }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="insResult"
+              label="缁撹"
+              align="center"
+              min-width="70"
+              v-if="wareForm.inspectionItemSubclass != '20(甯告俯)'"
+              :key="new Date().getTime() + '53457689809808-'"
+            >
+              <template slot="header">
+                {{ "缁撹" + (index + 1) }}
+              </template>
+              <template slot-scope="scope">
+                <span
+                  v-if="scope.row.arr[index].insResult === 1"
+                  style="color: green"
+                  >鍚堟牸</span
+                >
+                <span
+                  v-else-if="scope.row.arr[index].insResult === 0"
+                  style="color: red"
+                  >涓嶅悎鏍�</span
+                >
+                <span
+                  v-else-if="scope.row.arr[index].insResult === 3"
+                  style="color: #3a7bfa"
+                  >涓嶅垽瀹�</span
+                >
+                <span v-else>寰呭畾</span>
+              </template>
+            </el-table-column>
+          </template>
+        </el-table>
+      </div>
+      <!-- 鐑惊鐜�/娓╁崌璇曢獙妫�楠屽師濮嬭褰� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists
+            .find((m) => m.templateId == currentTable)
+            .templateName.includes('鐑惊鐜�') ||
+          tableLists
+            .find((m) => m.templateId == currentTable)
+            .templateName.includes('娓╁崌璇曢獙')
+        "
+      >
+        <el-divider></el-divider>
+        <h4
+          style="
+            margin-bottom: 20px;
+            font-size: 24px;
+            font-weight: 400;
+            text-align: center;
+          "
+        >
+          {{
+            tableLists.find((m) => m.templateId == currentTable).templateName
+          }}
+        </h4>
+        <el-form
+          :inline="true"
+          :model="wareForm"
+          class="form-inline"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <!-- <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="equipForm.value0"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item> -->
+          <el-form-item label="浠櫒鍚嶇О" style="margin-bottom: 0">
+            <el-select
+              ref="thermalCycle"
+              multiple
+              collapse-tags
+              style="margin-left: 20px; width: 280px"
+              v-model="equipForm.value0"
+              size="small"
+              @change="blockModifications('thermalCycle')"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <!-- <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="equipForm.value1"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item> -->
+          <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="thermalCyclingInfo.model"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+            <el-input
+              clearable
+              v-model="thermalCyclingInfo.methodName"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="equipForm"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              multiple
+              collapse-tags
+              style="margin-left: 20px; width: 280px"
+              v-model="equipForm.code0"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              multiple
+              v-model="equipForm.code1"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item> -->
+          <!--          <el-form-item-->
+          <!--            label="寰幆娆℃暟:"-->
+          <!--            v-if="thermalCyclingInfo.inspectionItemClass == '鐩存祦鐢甸樆'"-->
+          <!--          >-->
+          <!--            <el-input-number-->
+          <!--              v-model="thermalCyclingInfo.inspectionItem"-->
+          <!--              :min="1"-->
+          <!--              :max="thermalCyclingInfo.max"-->
+          <!--              label=""-->
+          <!--              style="margin-top: 4px; width: 190px"-->
+          <!--              size="small"-->
+          <!--              @change="thermalCyclingChange"-->
+          <!--            ></el-input-number>-->
+          <!--          </el-form-item>-->
+          <el-button
+            type="primary"
+            size="small"
+            style="margin-bottom: 22px; margin-left: 30px"
+            @click="handleAddThermal"
+            v-if="state == 1"
+            >鏂板</el-button
+          >
+          <el-button
+            size="small"
+            style="margin-bottom: 22px"
+            @click="handleDeleteThermal"
+            v-if="state == 1"
+            >鍒犻櫎</el-button
+          >
+        </el-form>
+        <div class="table-container" v-loading="thermalCyclingLoading">
+          <table border="1" cellpadding="10" class="thermal-table">
+            <tr>
+              <td>妫�楠岄」鐩�</td>
+              <td :colspan="thermalCyclingInfo.length">妫�楠岃繃绋嬪��</td>
+              <td style="width: 100px">缁撹</td>
+            </tr>
+            <tr>
+              <td>搴忓彿</td>
+              <td
+                v-for="(m, i) in thermalCyclingInfo.length"
+                :key="i"
+                style="min-width: 150px"
+              >
+                {{ i + 1 }}
+              </td>
+            </tr>
+            <tr v-for="(item, index) in thermalCyclingInfo.arr" :key="index">
+              <td style="width: 100px; text-align: center">{{ item.name }}</td>
+              <td
+                v-for="(m, i) in thermalCyclingInfo.length"
+                :key="i"
+                style="min-width: 150px"
+              >
+                <div
+                  style="display: flex; align-items: center; margin-bottom: 5px"
+                >
+                  <label
+                    style="width: 100px; white-space: nowrap; font-size: 12px"
+                    >娓╁害:</label
+                  >
+                  <el-input
+                    clearable
+                    size="small"
+                    placeholder=""
+                    v-model="item.arr[i].value0"
+                    :disabled="state > 1"
+                    @change="(m) => saveThermalCycling(m, item, 'value0')"
+                  ></el-input>
+                  <span
+                    style="
+                      font-size: 12px;
+                      margin-left: 13px;
+                      margin-right: 13px;
+                    "
+                  >
+                    鈩�</span
+                  >
+                </div>
+                <div
+                  style="display: flex; align-items: center"
+                  v-if="
+                    item.name != '鐜娓╁害' &&
+                    thermalCyclingInfo.inspectionItemClass == '鐩存祦鐢甸樆'
+                  "
+                >
+                  <label
+                    style="width: 100px; white-space: nowrap; font-size: 12px"
+                    >鐩存祦鐢甸樆:</label
+                  >
+                  <el-input
+                    clearable
+                    size="small"
+                    :disabled="state > 1"
+                    placeholder=""
+                    v-model="item.arr[i].value1"
+                    @change="saveThermalCycling(null, item, null)"
+                  ></el-input>
+                  <span style="margin-left: 5px; font-size: 12px"> 惟/km</span>
+                </div>
+              </td>
+              <td>
+                <template
+                  v-if="item.name == '鐜娓╁害' || item.name == '瀵肩嚎娓╁害'"
+                >
+                  <span>/</span>
+                </template>
+                <template v-else>
+                  <span v-if="item.insResult === 1" style="color: green"
+                    >鍚堟牸</span
+                  >
+                  <span v-else-if="item.insResult === 0" style="color: red"
+                    >涓嶅悎鏍�</span
+                  >
+                  <span v-else-if="item.insResult === 3" style="color: #3a7bfa"
+                    >涓嶅垽瀹�</span
+                  >
+                  <span v-else>寰呭畾</span>
+                </template>
+              </td>
+            </tr>
+          </table>
+        </div>
+      </div>
+      <!-- 鍗曟牴鍨傜洿鐕冪儳妫�楠屽師濮嬭褰� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists
+            .find((m) => m.templateId == currentTable)
+            .templateName.includes('鍗曟牴鍨傜洿鐕冪儳')
+        "
+      >
+        <el-divider></el-divider>
+        <h4
+          style="
+            margin-bottom: 20px;
+            font-size: 24px;
+            font-weight: 400;
+            text-align: center;
+          "
+        >
+          {{
+            tableLists.find((m) => m.templateId == currentTable).templateName
+          }}
+        </h4>
+        <el-form
+          :inline="true"
+          :model="wareForm"
+          class="form-inline"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+            <el-input
+              v-model="equipForm.value0"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <!-- <el-form-item label="浠櫒鍚嶇О" style="margin-bottom: 0">
+            <el-select
+              ref="combustion"
+              multiple
+              collapse-tags
+              style="margin-left: 20px;width: 280px"
+              v-model="equipForm.value0"
+              size="small"
+              @change="blockModifications('combustion')"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.label"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item> -->
+          <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+            <el-input
+              v-model="equipForm.value1"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+            <el-input
+              v-model="singleRootVerticalInfo.model"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+            <el-input
+              v-model="singleRootVerticalInfo.methodName"
+              disabled
+              size="small"
+              placeholder=""
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="equipForm"
+          label-width="100px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <!-- <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              multiple
+              collapse-tags
+              style="margin-left: 20px;width: 280px"
+              v-model="equipForm.code0"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item> -->
+          <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              v-model="equipForm.code0"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="浠櫒缂栧彿:">
+            <el-select
+              v-model="equipForm.code1"
+              :disabled="state > 1"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option
+                v-for="item in equipOptions"
+                :key="item.value"
+                :label="item.value"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+        <table
+          border="1"
+          cellpadding="10"
+          class="thermal-table"
+          style="margin-bottom: 16px"
+        >
+          <tr>
+            <td>妫�楠岄」鐩�</td>
+            <td>鍗曚綅</td>
+            <td>鏍囧噯瑕佹眰</td>
+            <td :colspan="singleRootVerticalInfo.num">妫�楠岃繃绋嬪��</td>
+            <td>妫�楠岀粨鏋�</td>
+            <td>缁撹</td>
+          </tr>
+          <tr v-for="(item, index) in singleRootVerticalInfo.arr" :key="index">
+            <td>{{ item.inspectionItemSubclass }}</td>
+            <td>{{ item.unit }}</td>
+            <td>{{ item.ask }}</td>
+            <td v-for="(m, i) in singleRootVerticalInfo.num">
+              <el-input
+                clearable
+                size="small"
+                placeholder=""
+                v-model="item.value[i]"
+                :disabled="state > 1"
+                @change="(value) => changeSingleRootVertical(value, item)"
+              ></el-input>
+            </td>
+            <td>{{ item.resValue }}</td>
+            <td>
+              <template>
+                <span v-if="item.insResult === 1" style="color: green"
+                  >鍚堟牸</span
+                >
+                <span v-else-if="item.insResult === 0" style="color: red"
+                  >涓嶅悎鏍�</span
+                >
+                <span v-else-if="item.insResult === 3" style="color: #3a7bfa"
+                  >涓嶅垽瀹�</span
+                >
+                <span v-else>寰呭畾</span>
+              </template>
+            </td>
+          </tr>
+        </table>
+      </div>
+      <!-- 鏋剁┖鍦扮嚎搴斿姏搴斿彉 -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists
+            .find((m) => m.templateId == currentTable)
+            .templateName.includes('鏋剁┖鍦扮嚎搴斿姏搴斿彉')
+        "
+      >
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="stressStrainInfo"
+          class="form-inline"
+          label-width="80px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-row style="width: 100%">
+            <el-col :span="5">
+              <el-form-item label="浠櫒缂栧彿:" style="margin-bottom: 0">
+                <el-select
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 200px"
+                  v-model="equipForm.code0"
+                  :disabled="state > 1"
+                  placeholder="璇烽�夋嫨"
+                  size="small"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <!-- <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+                <el-input
+                  v-model="equipForm.value0"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item> -->
+              <el-form-item label="浠櫒鍚嶇О" style="margin-bottom: 0">
+                <el-select
+                  ref="stressStrain"
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 200px"
+                  v-model="equipForm.value0"
+                  size="small"
+                  @change="blockModifications('stressStrain')"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.label"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+                <el-input
+                  v-model="stressStrainInfo.model"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+                <el-input
+                  v-model="stressStrainInfo.methodS"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="" style="margin-bottom: 0"
+                ><el-button
+                  size="small"
+                  type="primary"
+                  style="margin-left: 40px"
+                  @click="addStressStrain"
+                  :disabled="state > 1"
+                  >娣� 鍔�</el-button
+                ><el-button
+                  size="small"
+                  type="primary"
+                  style="margin-left: 10px"
+                  @click="saveStressStrain"
+                  :disabled="state > 1"
+                  >淇� 瀛�</el-button
+                ></el-form-item
+              >
+            </el-col>
+          </el-row>
+        </el-form>
+        <table
+          style="border-collapse: collapse"
+          border="1"
+          cellpadding="10"
+          class="thermal-table"
+        >
+          <tbody>
+            <tr style="background-color: #f0f1f5">
+              <td id="lineTd" style="background-color: #f0f1f5">
+                <span
+                  style="
+                    float: left;
+                    margin-top: 20px;
+                    background-color: #f0f1f5;
+                  "
+                  >鍔涘��</span
+                >
+                <span
+                  style="
+                    float: right;
+                    margin-top: 0px;
+                    background-color: #f0f1f5;
+                  "
+                  >浣嶇Щ(mm)</span
+                >
+              </td>
+              <td v-for="(m, i) in timeList" :key="i">{{ m }}min</td>
+              <td>鎿嶄綔</td>
+            </tr>
+            <tr v-for="(item, index) in powerList" :key="index">
+              <td>
+                <el-input
+                  v-model="item.value"
+                  :disabled="state > 1"
+                  size="small"
+                  placeholder=""
+                ></el-input>
+              </td>
+              <td v-for="(m, i) in timeList" :key="i">
+                <el-input
+                  v-model="item.arr[i]"
+                  :disabled="state > 1"
+                  size="small"
+                  placeholder=""
+                ></el-input>
+              </td>
+              <td>
+                <el-button
+                  size="small"
+                  type="text"
+                  @click="delStressStrain(index)"
+                  style="color: red"
+                  >鍒犻櫎</el-button
+                >
+              </td>
+            </tr>
+          </tbody>
+        </table>
+        <div
+          style="
+            display: flex;
+            align-items: center;
+            margin-top: 16px;
+            margin-bottom: 20px;
+          "
+        >
+          <span>寮规�фā閲忥細</span>
+          <el-input
+            size="small"
+            style="width: 100px"
+            @change="changeElasticity"
+            v-model="stressStrainInfo.elasticity"
+            :disabled="state > 1"
+          ></el-input>
+          <span style="color: red; font-size: 12px; margin-left: 16px"
+            >鏍囧噯閲忎负锛歿{
+              stressStrainInfo.ask ? stressStrainInfo.ask : "-"
+            }}
+            锛屼笉鑳借秴杩囨爣鍑嗛噺鐨劼�2</span
+          >
+        </div>
+      </div>
+      <!-- 闃叉尟閿ゅ姛鐜囩壒鎬� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists
+            .find((m) => m.templateId == currentTable)
+            .templateName.includes('闃叉尟閿ゅ姛鐜囩壒鎬�')
+        "
+      >
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="powerCharacteristicsInfo"
+          class="form-inline"
+          label-width="80px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-row style="width: 100%">
+            <el-col :span="5">
+              <el-form-item label="浠櫒缂栧彿:" style="margin-bottom: 0">
+                <el-select
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 280px"
+                  v-model="equipForm.code0"
+                  :disabled="state > 1"
+                  placeholder="璇烽�夋嫨"
+                  size="small"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <!-- <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+                <el-input
+                  v-model="equipForm.value0"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item> -->
+              <el-form-item label="浠櫒鍚嶇О" style="margin-bottom: 0">
+                <el-select
+                  ref="shockproofHammer"
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 280px"
+                  v-model="equipForm.value0"
+                  size="small"
+                  @change="blockModifications('shockproofHammer')"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.label"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+                <el-input
+                  v-model="powerCharacteristicsInfo.model"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+                <el-input
+                  v-model="powerCharacteristicsInfo.methodS"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="" style="margin-top: 4px"
+                ><el-button
+                  size="small"
+                  type="primary"
+                  style="margin-left: 10px"
+                  @click="savePowerCharacteristics"
+                  :disabled="state > 1"
+                  >淇� 瀛�</el-button
+                ></el-form-item
+              >
+            </el-col>
+          </el-row>
+        </el-form>
+        <table
+          style="border-collapse: collapse; margin-bottom: 20px"
+          border="1"
+          cellpadding="10"
+          class="thermal-table"
+        >
+          <tr
+            style="background-color: #f0f1f5; font-size: 18px; font-weight: 700"
+          >
+            <td colspan="8">(鐤插姵鍓�)鍔熺巼鐗规��</td>
+          </tr>
+          <tr style="background-color: #f0f1f5">
+            <td colspan="4">璋愭尟棰戠巼(Hz)</td>
+            <td colspan="4">鑰楄兘(W)</td>
+          </tr>
+          <tr>
+            <td>1</td>
+            <td>2</td>
+            <td>3</td>
+            <td>4</td>
+            <td>1</td>
+            <td>2</td>
+            <td>3</td>
+            <td>4</td>
+          </tr>
+          <tr>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr0" :key="i">
+              <el-input
+                v-model="powerCharacteristicsInfo.arr0[i].value"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+              ></el-input>
+            </td>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr1" :key="i + 9">
+              <el-input
+                v-model="powerCharacteristicsInfo.arr1[i].value"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+              ></el-input>
+            </td>
+          </tr>
+        </table>
+
+        <table
+          style="border-collapse: collapse; margin-bottom: 20px"
+          border="1"
+          cellpadding="10"
+          class="thermal-table"
+        >
+          <tr
+            style="background-color: #f0f1f5; font-size: 18px; font-weight: 700"
+          >
+            <td colspan="8">(鐤插姵鍚�)鍔熺巼鐗规��</td>
+          </tr>
+          <tr style="background-color: #f0f1f5">
+            <td colspan="4">璋愭尟棰戠巼(Hz)</td>
+            <td colspan="4">鑰楄兘(W)</td>
+          </tr>
+          <tr>
+            <td>1</td>
+            <td>2</td>
+            <td>3</td>
+            <td>4</td>
+            <td>1</td>
+            <td>2</td>
+            <td>3</td>
+            <td>4</td>
+          </tr>
+          <tr>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr2" :key="i + 19">
+              <el-input
+                v-model="powerCharacteristicsInfo.arr2[i].value"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                @change="(m) => changeArr2(m, i)"
+              ></el-input>
+            </td>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr3" :key="i + 29">
+              <el-input
+                v-model="powerCharacteristicsInfo.arr3[i].value"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                @change="(m) => changeArr3(m, i)"
+              ></el-input>
+            </td>
+          </tr>
+          <tr>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr2" :key="i + 39">
+              <span v-if="!m.state">寰呭畾</span>
+              <span v-if="m.state == 1" style="color: green">鍚堟牸</span>
+              <span v-if="m.state == 2" style="color: red">涓嶅悎鏍�</span>
+            </td>
+            <td v-for="(m, i) in powerCharacteristicsInfo.arr3" :key="i + 49">
+              <span v-if="!m.state">寰呭畾</span>
+              <span v-if="m.state == 1" style="color: green">鍚堟牸</span>
+              <span v-if="m.state == 2" style="color: red">涓嶅悎鏍�</span>
+            </td>
+          </tr>
+        </table>
+
+        <div style="margin-bottom: 20px; font-size: 12px; color: red">
+          鎻愮ず锛�(鐤插姵鍓�)鍔熺巼鐗规�у瓨鍦ㄧ殑鎯呭喌涓嬶紝(鐤插姵鍚�)鍔熺巼鐗规�т笅闈㈢殑鍊奸渶瑕佸湪鐤插姵鍓嶅��*0.8鍜岀柌鍔冲墠鍊�*1.2涔嬮棿銆�
+        </div>
+      </div>
+      <!-- 鐤插姵璇曢獙妫�楠屽師濮嬭褰� -->
+      <div
+        v-loading="tableLoading"
+        v-else-if="
+          tableLists.find((m) => m.templateId == currentTable).templateName ==
+          '鐤插姵璇曢獙妫�楠屽師濮嬭褰�'
+        "
+      >
+        <el-divider></el-divider>
+        <el-form
+          :inline="true"
+          :model="fatigueTestInfo"
+          class="form-inline"
+          label-width="80px"
+          style="
+            justify-content: flex-start;
+            display: flex;
+            align-items: center;
+            width: 100%;
+          "
+        >
+          <el-row style="width: 100%">
+            <el-col :span="5">
+              <el-form-item label="浠櫒缂栧彿:" style="margin-bottom: 0">
+                <el-select
+                  multiple
+                  collapse-tags
+                  v-model="equipForm.code0"
+                  :disabled="state > 1"
+                  placeholder="璇烽�夋嫨"
+                  size="small"
+                  style="margin-left: 20px; width: 200px"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <!-- <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0">
+                <el-input
+                  v-model="equipForm.value0"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item> -->
+              <el-form-item label="浠櫒鍚嶇О" style="margin-bottom: 0">
+                <el-select
+                  ref="fatigueTest"
+                  multiple
+                  collapse-tags
+                  style="margin-left: 20px; width: 200px"
+                  v-model="equipForm.value0"
+                  size="small"
+                  @change="blockModifications('fatigueTest')"
+                >
+                  <el-option
+                    v-for="item in equipOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.label"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="鍨嬪彿:" style="margin-bottom: 0">
+                <el-input
+                  v-model="fatigueTestInfo.model"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="5">
+              <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0">
+                <el-input
+                  v-model="fatigueTestInfo.methodS"
+                  disabled
+                  size="small"
+                  placeholder=""
+                  style="width: 170px"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="" style="margin-top: 4px"
+                ><el-button
+                  size="small"
+                  type="primary"
+                  style="margin-left: 10px"
+                  @click="saveFatigueTest"
+                  :disabled="state > 1"
+                  >淇� 瀛�</el-button
+                ></el-form-item
+              >
+            </el-col>
+          </el-row>
+        </el-form>
+        <table
+          style="border-collapse: collapse; margin-bottom: 20px"
+          border="1"
+          cellpadding="10"
+          class="thermal-table"
+        >
+          <tr>
+            <td class="background-grey">寮�濮嬫椂闂�</td>
+            <td>
+              <el-date-picker
+                v-model="fatigueTestInfo.startTime"
+                type="datetime"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                format="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </td>
+            <td class="background-grey">缁撴潫鏃堕棿</td>
+            <td>
+              <el-date-picker
+                v-model="fatigueTestInfo.endTime"
+                type="datetime"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                format="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </td>
+            <td class="background-grey">鏂藉姞寮犲姏</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.tension"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>kN</span>
+            </td>
+          </tr>
+          <tr>
+            <td class="background-grey">婵�鎸櫒鍒板浐瀹氱璺濈</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.distance0"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>m</span>
+            </td>
+            <td class="background-grey">婵�鎸櫒鍒版偓鍨傜嚎澶硅窛绂�</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.distance1"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>m</span>
+            </td>
+            <td class="background-grey">棰戠巼</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.frequency"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>Hz</span>
+            </td>
+          </tr>
+          <tr>
+            <td class="background-grey">娉㈣吂鎸箙</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.amplitude0"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>mm</span>
+            </td>
+            <td class="background-grey">鍗婃尝闀�</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.wavelength"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>m</span>
+            </td>
+            <td class="background-grey">寮洸鎸箙</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.amplitude1"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>mm</span>
+            </td>
+          </tr>
+          <tr>
+            <td class="background-grey">寮洸搴斿彉</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.strain"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>渭 t</span>
+            </td>
+            <td class="background-grey">妗h窛</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.pitch"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>m</span>
+            </td>
+            <td class="background-grey">鎸姩娆℃暟</td>
+            <td>
+              <el-input
+                v-model="fatigueTestInfo.num"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>娆�</span>
+            </td>
+          </tr>
+          <tr>
+            <td class="background-grey">鐩鍙鎹熶激</td>
+            <td>
+              <el-select
+                v-model="fatigueTestInfo.damage"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              >
+                <el-option label="绗﹀悎" value="绗﹀悎" />
+                <el-option label="涓嶇鍚�" value="涓嶇鍚�" />
+              </el-select>
+            </td>
+            <td
+              class="background-grey"
+              v-if="
+                fatigueTestInfo.sampleType &&
+                fatigueTestInfo.sampleType.includes('棰勭粸寮忛噾鍏�')
+              "
+            >
+              鍏夌氦闄勫姞琛板噺
+            </td>
+            <td
+              v-if="
+                fatigueTestInfo.sampleType &&
+                fatigueTestInfo.sampleType.includes('棰勭粸寮忛噾鍏�')
+              "
+            >
+              <el-input
+                v-model="fatigueTestInfo.attenuation"
+                :disabled="state > 1"
+                size="small"
+                placeholder=""
+                style="display: inline-block; width: 80%"
+              ></el-input>
+              <span>dB</span>
+            </td>
+          </tr>
+        </table>
+      </div>
+      <el-upload
+        :action="action"
+        :data="{
+          orderId: id,
+        }"
+        v-if="state == 1 && fileAdd"
+        :on-success="handleSuccessUp"
+        :show-file-list="false"
+        accept=".jpg,.jpeg,.png,.bmp,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"
+        :headers="headers"
+        :on-change="beforeUpload"
+        style="width: 80px !important"
+        :on-error="onError"
+        ref="upload"
+      >
+        <el-button size="small" type="primary" v-if="state == 1"
+          >闄勪欢涓婁紶</el-button
+        >
+      </el-upload>
+      <ValueTable
+        class="value-table"
+        ref="fileList"
+        :url="$api.insOrderPlan.getFileList"
+        :componentData="componentData0"
+        :delUrl="$api.insOrderPlan.delfile"
+        :key="upIndex"
+        style="height: 100%; margin-top: 16px"
+      />
+    </div>
+    <el-drawer title="鍏夌氦鍒囨崲" :visible.sync="fiberOpticVisible" :size="500">
+      <el-table
+        class="el-table"
+        ref="fiberOpticTable"
+        :data="fiberOptic"
+        height="100%"
+        tooltip-effect="dark"
+        border
+        highlight-current-row
+        @row-click="handleChangeOptic"
+        :row-class-name="tableRowClassName"
+        :current-row-key="currentKey2"
+        :row-key="(record) => record.index"
+        v-if="fiberOpticVisible"
+      >
+        <el-table-column
+          type="index"
+          align="center"
+          label="搴忓彿"
+          width="70px"
+          :key="Math.random()"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="bushColor"
+          label="绠″鑹叉爣"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="color"
+          label="鍏夌氦鑹叉爣"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="model"
+          label="鍏夌氦瑙勬牸"
+          min-width="130px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="standard"
+          label="鍙傝�冩爣鍑�"
+          width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+      </el-table>
+    </el-drawer>
+    <el-drawer
+      title="鍏夌氦甯﹀垏鎹�"
+      :visible.sync="fiberOpticTapeVisible"
+      :size="500"
+    >
+      <el-table
+        class="el-table"
+        ref="fiberOpticTapeTable"
+        :data="fiberOpticTape"
+        height="100%"
+        tooltip-effect="dark"
+        border
+        highlight-current-row
+        @row-click="handleChangeTape"
+        :row-class-name="tableRowClassName"
+        :current-row-key="currentKey1"
+        :row-key="(record) => record.index"
+        v-if="fiberOpticTapeVisible"
+      >
+        <el-table-column
+          type="index"
+          align="center"
+          label="搴忓彿"
+          width="70px"
+          :key="Math.random()"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="code"
+          label="鍏夌氦甯︾紪鍙�"
+          min-width="110px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="model"
+          label="鍏夌氦甯﹁鏍�"
+          min-width="110px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="standard"
+          label="鍙傝�冩爣鍑�"
+          width="90px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="num"
+          label="鍏夌氦妫�娴嬮噺"
+          min-width="110px"
+          show-overflow-tooltip
+        ></el-table-column>
+      </el-table>
+    </el-drawer>
+    <el-drawer title="濂楃鍒囨崲" :visible.sync="bushingVisible" :size="500">
+      <el-table
+        class="el-table"
+        ref="bushingTable"
+        :data="bushing"
+        height="100%"
+        tooltip-effect="dark"
+        border
+        highlight-current-row
+        @row-click="handleChangeBushing"
+        :row-class-name="tableRowClassName"
+        :current-row-key="currentKey0"
+        :row-key="(record) => record.index"
+        v-if="bushingVisible"
+      >
+        <el-table-column
+          type="index"
+          align="center"
+          label="搴忓彿"
+          width="70px"
+          :key="Math.random()"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="color"
+          label="绠¤壊鏍�"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="standNum"
+          label="鏍囬噺"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="testNum"
+          label="娴嬭瘯閲�"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+      </el-table>
+    </el-drawer>
+    <el-drawer title="鏍峰搧鍒囨崲" :visible.sync="sampleVisible" :size="500">
+      <div style="margin-bottom: 20px; margin-left: 20px">
+        <span>鏍峰搧缂栧彿:</span>
+        <el-input
+          v-model="filterSampleCode"
+          size="small"
+          style="width: 40%; margin-right: 20px"
+          clearable
+          @change="filterSampleProduct"
+          placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�"
+          @clear="filterSampleProduct"
+          @keyup.enter="filterSampleProduct"
+        >
+        </el-input>
+        <el-button
+          type="primary"
+          size="small"
+          @click="filterSampleProduct"
+          icon="el-icon-search"
+          >鏌ヨ</el-button
+        >
+      </div>
+      <el-table
+        class="el-table"
+        ref="productTable"
+        :data="sampleProduct"
+        height="100%"
+        tooltip-effect="dark"
+        border
+        highlight-current-row
+        @row-click="handleChangeSample"
+        :row-class-name="tableRowClassName"
+        :current-row-key="currentKey"
+        :row-key="(record) => record.index"
+        v-if="sampleVisible"
+      >
+        <el-table-column
+          type="index"
+          align="center"
+          label="搴忓彿"
+          width="70px"
+          :key="Math.random()"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="sampleCode"
+          label="鏍峰搧缂栧彿"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="model"
+          label="鏍峰搧鍨嬪彿"
+          min-width="100px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="insState"
+          label="妫�娴嬬姸鎬�"
+          width="100px"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            <el-tag
+              v-for="(item, i) in typeList"
+              :key="i"
+              v-if="item.value == scope.row.insState"
+              :type="item.type"
+              size="medium"
+              style="margin-right: 5px"
+              >{{ item.label }}</el-tag
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="checkName"
+          label="妫�楠屼汉"
+          min-width="80px"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="isLeave"
+          label="鏄惁鐣欐牱"
+          width="95px"
+          show-overflow-tooltip
+          align="center"
+        >
+          <template slot-scope="scope">
+            <span>{{ scope.row.isLeave == 0 ? "鍚�" : "鏄�" }}</span>
+          </template>
+        </el-table-column>
+        <!-- 妫�楠屽崟浼氭湁涓�涓槸鍚︽湁閰嶅鏍峰搧瀛楁鎺у埗鏄剧ず -->
+        <el-table-column
+          prop="joinModel"
+          label="閰嶅鏍峰搧鍨嬪彿"
+          min-width="130px"
+          show-overflow-tooltip
+          v-if="insOrder.mating > 0"
+        ></el-table-column>
+        <el-table-column
+          prop="joinName"
+          label="閰嶅鏍峰搧鍚嶇О"
+          min-width="130px"
+          show-overflow-tooltip
+          v-if="insOrder.mating > 0"
+        ></el-table-column>
+        <el-table-column
+          prop="joinNum"
+          label="閰嶅鏍峰搧鏁伴噺"
+          min-width="130px"
+          show-overflow-tooltip
+          v-if="insOrder.mating > 0"
+        ></el-table-column>
+      </el-table>
+    </el-drawer>
+    <el-drawer title="浠诲姟鍒囨崲" :visible.sync="taskVisible" :size="500">
+      <ValueTable
+        class="value-table"
+        ref="insOrderPlan"
+        :url="$api.insOrderPlan.inspectionOrderDetailsTaskSwitching"
+        :componentData="componentData"
+        :key="upIndex"
+        style="height: 100%"
+      />
+    </el-drawer>
+    <el-dialog title="妫�楠屽鏍�" :visible.sync="reviewDia" width="500px">
+      <div class="body" style="display: flex; padding: 10px" v-if="reviewDia">
+        <div class="search_label" style="width: 150px">
+          <span class="required-span">* </span>涓嶉�氳繃鐨勭悊鐢憋細
+        </div>
+        <div class="search_input" style="width: 100%">
+          <el-input
+            size="small"
+            clearable
+            v-model="noReason"
+            type="textarea"
+            :autosize="{ minRows: 4 }"
+          ></el-input>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="reviewDia = false">鍙� 娑�</el-button>
+        <el-button
+          type="primary"
+          @click="handleReviewDia"
+          :loading="reviewLoading"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <el-dialog title="鎸囧畾澶嶆牳浜哄憳" :visible.sync="addVerifyDia" width="400px">
+      <div
+        class="body"
+        style="display: flex; padding: 10px; align-items: center"
+      >
+        <div class="search_label" style="width: 150px">
+          <span class="required-span">*</span>澶嶆牳浜�
+        </div>
+        <div class="search_input" style="width: 100%">
+          <el-select
+            v-model="verifyUser"
+            placeholder="璇烽�夋嫨"
+            size="small"
+            style="width: 100%"
+            clearable
+            filterable
+          >
+            <!-- <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value">
+            </el-option> -->
+            <el-option-group
+              v-for="(item, index) in Object.keys(personList)"
+              :key="index"
+              :label="item"
+            >
+              <el-option
+                :disabled="
+                  inspectorList.filter((name) => name == op.name).length > 0
+                "
+                v-for="op in personList[item]"
+                :key="op.id"
+                :label="op.name"
+                :value="op.id"
+              >
+              </el-option>
+            </el-option-group>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="addVerifyDia = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submit()">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      title="鏁版嵁閲囬泦"
+      :visible.sync="dataGetDia"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+      custom-class="custom-dialog"
+    >
+      <div>
+        <table border="1" cellpadding="10" class="thermal-table">
+          <tr>
+            <td style="width: 120px">妫�楠岄」</td>
+            <td style="width: 120px">妫�楠屽瓙椤�</td>
+            <td>鏁伴噰鏁版嵁</td>
+          </tr>
+          <template v-for="(item, index) in getData">
+            <tr>
+              <td :rowspan="item.child.length">{{ item.faName }}</td>
+              <td>{{ item.child[0].name }}</td>
+              <td style="text-align: left">
+                <el-checkbox-group
+                  v-model="getDataIndex"
+                  :max="item.child[0].maxNum"
+                >
+                  <el-checkbox
+                    v-for="(n, j) in item.child[0].arr"
+                    :label="j"
+                    :key="j"
+                    >{{ n }}</el-checkbox
+                  >
+                </el-checkbox-group>
+              </td>
+            </tr>
+            <tr
+              v-for="(m, i) in item.child"
+              :key="i + 'bbbbbbbbbbbbbb'"
+              v-show="i > 0"
+            >
+              <td>{{ m.name }}</td>
+              <td style="text-align: left">
+                <el-checkbox-group v-model="getDataIndex" :max="m.maxNum">
+                  <el-checkbox v-for="(n, j) in m.arr" :label="j" :key="j">{{
+                    n
+                  }}</el-checkbox>
+                </el-checkbox-group>
+              </td>
+            </tr>
+          </template>
+        </table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button
+          type="primary"
+          @click="submitDataGet()"
+          :loading="getDataIndexLoading"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- 浜ゆ帴寮规 -->
+    <el-dialog title="妫�楠屼氦鎺�" :visible.sync="connectVisible" width="400px">
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>浜ゆ帴浜哄憳锛�
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.connectPerson"
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+            filterable
+          >
+            <!-- <el-option
+              v-for="item in personList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option> -->
+            <el-option-group
+              v-for="(item, index) in Object.keys(handover)"
+              :key="index"
+              :label="item"
+            >
+              <el-option
+                :disabled="
+                  inspectorList.filter((name) => name == op.name).length > 0
+                "
+                v-for="op in personList[item]"
+                :key="op.id"
+                :label="op.name"
+                :value="op.id"
+              >
+              </el-option>
+            </el-option-group>
+          </el-select>
+        </div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>璇曢獙瀹わ細
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.sonLaboratory"
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+            filterable
+          >
+            <el-option
+              v-for="item in sonLaboratoryList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="connectVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmConnect" :loading="loading"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import file from "@/utils/file";
+import excelFunction from "@/utils/excelFountion";
+export default {
+  props: ["sonLaboratory", "orderId", "state", "inspectorList", "handover"],
+  components: {
+    limsTable,
+  },
+  data() {
+    return {
+      equipName: [],
+      insFibersId: null, //鍏夌氦甯d
+      insOrderState: null,
+      sonLaboratoryList: [],
+      connect: {
+        connectPerson: "",
+        sonLaboratory: "",
+      },
+      connectVisible: false,
+      filterSampleCode: null,
+      fileterSampleProducts: [],
+      isEdit: false,
+      sagData: [],
+      sagForm: {},
+      dataGetDia: false,
+      wareTableDataLoading: false,
+      fileAdd: false,
+      sampleVisible: false,
+      taskVisible: false,
+      submitLoading: false,
+      searchForm: {
+        sampleName: null,
+        state: null,
+      },
+      id: 0,
+      componentData: {
+        entity: {
+          sonLaboratory: null,
+          userId: 0,
+        },
+        isIndex: false,
+        showSelect: false,
+        select: false,
+        selectMethod: "handleChangeTask",
+        sort: false,
+        do: [],
+        isPage: false,
+        linkEvent: {},
+        tagField: {
+          type: {
+            select: [],
+          },
+          insState: {
+            select: [],
+          },
+        },
+        currentId: "",
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: [],
+      },
+      componentData0: {
+        entity: {
+          insOrderId: "",
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        sort: false,
+        init: false,
+        do: [
+          {
+            id: "handleDown",
+            font: "涓嬭浇",
+            type: "text",
+            method: "handleDown",
+          },
+          {
+            id: "delete",
+            font: "鍒犻櫎",
+            type: "text",
+            method: "doDiy",
+            disabFun: (row, index) => {
+              return this.state != 1;
+            },
+          },
+        ],
+        isPage: false,
+        linkEvent: {},
+        tagField: {
+          type: {
+            select: [
+              {
+                value: 1,
+                label: "鍥剧墖",
+              },
+              {
+                value: 2,
+                label: "鏂囦欢",
+              },
+            ],
+          },
+        },
+        currentId: "",
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: [],
+      },
+      upIndex: 0,
+      getReportModelLoading: false,
+      insOrder: {},
+      sampleProduct: [],
+      typeList: [],
+      urgentList: [],
+      currentSample: {}, //褰撳墠鏍峰搧淇℃伅
+      tableList: [],
+      loading: false,
+      ps: {},
+      param: {},
+      currentKey: 1,
+      currentKey0: 1,
+      currentKey1: 1,
+      currentKey2: 1,
+      comparisonList: [],
+      excelMethodList: [],
+      equipOptions: [],
+      userId: 0,
+      reviewLoading: false,
+      reviewDia: false,
+      noReason: "",
+      tableWidth: 1000,
+      currentTable: null,
+      tableLists: [],
+      widthList: [],
+      addVerifyDia: false,
+      verifyUser: null,
+      personList: [],
+      enumList: [],
+      fiberOpticVisible: false,
+      fiberOpticTapeVisible: false,
+      bushingVisible: false,
+      fiberOpticTape: [], //鍏夌氦甯﹀垪琛�
+      fiberOptic: [], //鍏夌氦鍒楄〃
+      bushing: [], //濂楃鍒楄〃
+      currentFiberOpticTape: null, //褰撳墠鍏夌氦甯�
+      currentFiberOptic: null, //褰撳墠鍏夌氦
+      currentBushing: null, //褰撳墠濂楃
+      tableLoading: false,
+      upLoading: false,
+      temptList: null,
+      fiber: [],
+      fibers: [],
+      casing: [],
+      currentTab: null,
+      wareForm: {
+        inspectionItem: 1,
+        inspectionItemSubclass: "20(甯告俯)",
+      },
+      wareForm0: {},
+      numOptions: [],
+      temperatureOptions: [],
+      wareTableData: [],
+      otherForm: {
+        humidity: null,
+        temperature: null,
+      },
+      equipForm: {
+        value0: null,
+        code0: null,
+        value1: null,
+        code1: null,
+      },
+      result: null,
+      worker: null,
+      worker0: null,
+      wareLength: [],
+      dataAcquisitionInfo: {},
+      dataAcquisitionInfoNew: {},
+      dataAcquisitionEidtAble: false,
+      isGet: false,
+      dataAcquisitionLoading: false,
+      collected: false,
+      // 鐑惊鐜�---寮�濮�
+      thermalCyclingInfo: {
+        max: 0,
+        inspectionItem: 1,
+        arr: [],
+        length: 1,
+        inspectionItemClass: null,
+      },
+      thermalCyclingLoading: false,
+      temDataAcquisition: false,
+      // 鐑惊鐜�---缁撴潫
+      getData: [
+        {
+          faName: "娉㈤暱闄勫姞琛板噺",
+          child: [
+            {
+              name: "1285nm~1330nm",
+              arr: [12, 13, 14, 15],
+            },
+            {
+              name: "1525nm~1575nm",
+              arr: [12, 13, 14, 15],
+            },
+          ],
+        },
+        {
+          faName: "鎴嚦娉㈤暱",
+          child: [
+            {
+              name: "鎴嚦娉㈤暱",
+              arr: [12, 13, 14, 15],
+            },
+          ],
+        },
+      ],
+      getDataIndex: [],
+      getDataIndexLoading: false,
+      changeType: null,
+      getDataTypeId: "",
+      getDataType: null,
+      singleRootVerticalInfo: {
+        model: "",
+        methodName: "",
+        num: 0,
+        arr: [],
+        ask: "",
+        elasticity: null, //寮规�фā閲�
+      },
+      loadList: [],
+      // 鏋剁┖瀵煎湴绾�-搴斿姏搴斿彉--寮�濮�
+      stressStrainInfo: {
+        elasticity: null,
+      },
+      timeList: [5, 10, 15, 30, 45, 60],
+      powerList0: [
+        {
+          value: "30%RTS",
+          arr: ["", "", "", "", "", ""],
+        },
+        {
+          value: "50%RTS",
+          arr: ["", "", "", "", "", ""],
+        },
+        {
+          value: "70%RTS",
+          arr: ["", "", "", "", "", ""],
+        },
+        {
+          value: "85%RTS",
+          arr: ["", "", "", "", "", ""],
+        },
+      ],
+      powerList: [],
+      // 鏋剁┖瀵煎湴绾�-搴斿姏搴斿彉--缁撴潫
+      // 闃叉尟閿ゅ姛鐜囩壒鎬�---寮�濮�
+      powerCharacteristicsInfo: {
+        model: null,
+        methodS: null,
+        arr0: [
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+        ], //(鐤插姵鍓�)鍔熺巼鐗规��-璋愭尟棰戠巼(Hz)
+        arr1: [
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+        ], //(鐤插姵鍓�)鍔熺巼鐗规��-鑰楄兘(W)
+        arr2: [
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+        ], //(鐤插姵鍚�)鍔熺巼鐗规��-璋愭尟棰戠巼(Hz)
+        arr3: [
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+          {
+            value: "",
+            state: 0,
+          },
+        ], //(鐤插姵鍚�)鍔熺巼鐗规��-鑰楄兘(W)
+      },
+      powerCharacteristicsCopy: [
+        {
+          value: "",
+          state: 0,
+        },
+        {
+          value: "",
+          state: 0,
+        },
+        {
+          value: "",
+          state: 0,
+        },
+        {
+          value: "",
+          state: 0,
+        },
+      ],
+      // 闃叉尟閿ゅ姛鐜囩壒鎬�---缁撴潫
+      // 鐤插姵璇曢獙---寮�濮�
+      fatigueTestInfo: {
+        model: null,
+        methodS: null,
+        sampleType: null,
+        // 浠ヤ笅鐨勬槸杈撳叆鍙傛暟
+        startTime: null,
+        endTime: null,
+        tension: null,
+        distance0: null,
+        distance1: null,
+        frequency: null,
+        amplitude0: null,
+        wavelength: null,
+        amplitude1: null,
+        strain: null,
+        pitch: null,
+        num: null,
+        damage: null,
+        attenuation: null,
+      },
+      // 鐤插姵璇曢獙---缁撴潫
+    };
+  },
+  // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+  computed: {
+    headers() {
+      return {
+        token: sessionStorage.getItem("token"),
+      };
+    },
+    action() {
+      return this.javaApi + this.$api.insOrderPlan.uploadFile;
+    },
+  },
+  created() {
+    console.log("妫�楠屼汉鍛�---", this.inspectorList);
+    this.componentData.entity.sonLaboratory = this.sonLaboratory;
+    this.id = this.orderId;
+    this.getUserInfo();
+  },
+  mounted() {
+    this.getSonLaboratoryList();
+    this.getTypeDicts();
+    this.getInsStateDicts();
+    this.getComparisonList();
+    this.getAuthorizedPerson();
+    this.scrollInit();
+    this.getPower();
+    this.startWorker();
+  },
+  watch: {
+    // 鐩戝惉浠诲姟id锛岃幏鍙栦换鍔′俊鎭�
+    id(val) {
+      this.loading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.doInsOrder, {
+          id: val,
+          laboratory: this.sonLaboratory,
+        })
+        .then(async (res) => {
+          this.insOrder = res.data.insOrder;
+          this.insOrderState = res.data.insState;
+          this.componentData0.entity.insOrderId = val;
+          this.$refs.fileList.selectList();
+          this.urgentList.forEach((m) => {
+            if (m.value == this.insOrder.type) {
+              this.insOrder.typeName = m.label;
+            }
+          });
+          this.loading = false;
+          if (!res.data.sampleProduct || res.data.sampleProduct.length == 0) {
+            return this.$message.error("璇ヤ换鍔℃病鏈夋牱鍝佷俊鎭�");
+          }
+          // 璧嬪�煎綋鍓嶆牱鍝佸垪琛�
+          this.sampleProduct = res.data.sampleProduct;
+          this.fileterSampleProducts = JSON.parse(
+            JSON.stringify(res.data.sampleProduct)
+          );
+          this.currentSample = this.HaveJson(this.sampleProduct[0]);
+          let insProduct = this.HaveJson(this.currentSample.insProduct);
+          // 娓╁害銆佹箍搴﹁祴鍊�
+          if (insProduct && insProduct.length > 0) {
+            const filterList = insProduct.filter(
+              (ele) => ele.temperature || ele.humidity
+            );
+            if (filterList && filterList.length > 0) {
+              let { temperature, humidity } = filterList[0];
+              this.otherForm = {
+                temperature: temperature ? temperature : null,
+                humidity: humidity ? humidity : null,
+              };
+            }
+          }
+          // 鑾峰彇褰撳墠鏍峰搧鐨勬楠岄」
+          let list = await this.getCurrentProduct(this.currentSample.id, 0);
+          console.log(888, list);
+          if (list) {
+            this.currentSample.insProduct = this.HaveJson(list);
+          }
+          // 鍒濆鍖栦紶閫掑埌鍚庣鐨勫弬鏁�
+          this.param = {};
+          this.changeType = 0;
+          this.currentSample.insProduct.forEach((a, j) => {
+            this.param[a.id] = {
+              insValue: [],
+              comValue: [],
+              resValue: null,
+              equipValue: [],
+              equipName: [],
+              insResult: null,
+            };
+          });
+          this.determineWhetherToCollectData(); //鏄惁闇�瑕佹暟閲�
+          this.getReportModel(this.currentSample.id); //鑾峰彇濂楃銆佸厜绾ゅ甫銆佸厜绾や俊鎭�
+          if (this.currentSample.index == undefined)
+            this.currentSample["index"] = 1;
+          let bushing = this.currentSample.bushing;
+          this.getTableLists(); //澶勭悊妯℃澘鍒楄〃淇℃伅
+
+          this.componentData.currentId = val;
+          this.currentKey = 1;
+          // 娓呯┖鍏夌氦閰嶇疆鐩稿叧鏁版嵁---涓嬮潰淇℃伅鏆傛椂鍙拷鐣�
+          this.fiberOpticTape = [];
+          this.currentFiberOpticTape = null;
+          this.fiberOptic = [];
+          this.currentFiberOptic = null;
+          this.bushing = [];
+          this.currentBushing = null;
+          this.currentTab = null;
+          if (bushing && bushing.length > 0) {
+            this.bushing = bushing;
+          }
+          // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+          this.worker.postMessage(
+            JSON.stringify({
+              modelType: this.sampleProduct[0].model,
+              type: "saveData",
+              tableList: this.tableList,
+              param: this.param,
+              currentTable: this.currentTable,
+            })
+          );
+        });
+    },
+    // 鐩戝惉褰撳墠妯℃澘鍙樺寲
+    currentTable(val1, val0) {
+      if (val0 != null && val1 != val0) {
+        // if(this.tableLists.find(m=>m.templateId==val1)&&(this.tableLists.find(m=>m.templateId==val1).templateName=='鎴愬搧缂嗘楠屽師濮嬭褰�')){
+        //   if(this.casing.length>0){
+        //     this.handleChange(this.casing[0].id,3)
+        //   }
+        //   return
+        // }
+        //76:鐤插姵璇曢獙妫�楠屽師濮嬭褰曚笉鎵ц涓嬮潰鐨勬搷浣�
+        if (this.changeType && this.changeType > 0) {
+          // 濡傛灉鏄厜绾ゃ�佸厜绾ゅ甫锛屽垯涓嶆墽琛屼笅闈㈡搷浣�
+          return;
+        }
+        this.tableLists.forEach(async (m, i) => {
+          if (m.templateId == val1) {
+            let list = await this.getCurrentProduct(this.currentSample.id, 0);
+            this.currentSample.insProduct = this.HaveJson(list); //璧嬪�煎綋鍓嶆牱鍝佺殑妫�楠岄」
+            this.param = {}; //鍒濆鍖栦紶鍒板悗绔殑鍙傛暟
+            this.currentSample.insProduct.forEach((a, j) => {
+              this.param[a.id] = {
+                insValue: [],
+                comValue: [],
+                resValue: null,
+                equipValue: [],
+                equipName: [],
+                insResult: null,
+              };
+            });
+            this.getReportModel(this.currentSample.id); //鑾峰彇濂楃銆佸厜绾ゅ甫銆佸厜绾や俊鎭�
+            // 鍘婚噸妯℃澘锛岃繑鍥炴湁鍑犱釜妯℃澘
+            const mySet1 = new Set();
+            this.tableLists = this.currentSample.insProduct.filter((m) => {
+              let num0 = mySet1.size;
+              if (m.templateId != null && m.template != null) {
+                try {
+                  mySet1.add(
+                    JSON.stringify({
+                      template: m.template,
+                      templateId: m.templateId,
+                    })
+                  );
+                } catch (error) {
+                  console.log(222, error);
+                }
+              }
+              let num1 = mySet1.size;
+              if (num1 > num0) {
+                return m;
+              }
+            });
+            if (this.tableLists && this.tableLists.length > 0) {
+              this.tableList = null;
+              this.tableList = this.tableLists.filter(
+                (m) => m.templateId == val1
+              );
+              // 瀵规ā鏉胯繘琛屽鐞�
+              this.handleTableData();
+              // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+              this.worker.postMessage(
+                JSON.stringify({
+                  modelType: this.sampleProduct[0].model,
+                  type: "saveData",
+                  tableList: this.tableList,
+                  param: this.param,
+                  currentTable: this.currentTable,
+                })
+              );
+            }
+          }
+        });
+      }
+    },
+    // 鐗规畩妫�楠岄」--鐩戝惉璁惧淇℃伅鏀瑰彉
+    "equipForm.code0": {
+      deep: true,
+      handler(oldVal, newVal) {
+        this.changEquip("code0");
+      },
+    },
+    "equipForm.code1": {
+      deep: true,
+      handler(oldVal, newVal) {
+        this.changEquip("code1");
+      },
+    },
+    // equipForm:{
+    //   deep:true,
+    //   handler(oldVal,newVal){
+
+    //   }
+    // },
+  },
+  beforeDestroy() {
+    // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕�
+    this.stopWorker();
+  },
+  methods: {
+    blockModifications(val) {
+      // 鎭㈠鍘熷鍊�
+      this.$nextTick(() => {
+        this.equipForm.value0 = JSON.parse(JSON.stringify(this.equipName));
+        if (this.$refs[val]) {
+          this.$refs[val].blur();
+        } else {
+          console.error(`No ref found with name ${val}`);
+        }
+      });
+    },
+    getSonLaboratoryList() {
+      this.$axios
+        .post(this.$api.insOrderPlan.upPlanUser2, {
+          orderId: this.orderId,
+        })
+        .then((res) => {
+          if (res.code === 200 && res.data.length > 0) {
+            this.sonLaboratoryList = [];
+            res.data.forEach((m) => {
+              this.sonLaboratoryList.push({
+                value: m,
+                label: m,
+              });
+            });
+            this.connect.sonLaboratory = this.sonLaboratoryList[0].value;
+          }
+        });
+    },
+    // 鍐呴儴浜ゆ帴
+    confirmConnect() {
+      if (
+        this.connect.connectPerson == null ||
+        this.connect.connectPerson == "" ||
+        this.connect.connectPerson == undefined
+      ) {
+        this.$message.error("鏈�夋嫨浜ゆ帴浜哄憳");
+        return;
+      }
+      if (
+        this.connect.sonLaboratory == null ||
+        this.connect.sonLaboratory == "" ||
+        this.connect.sonLaboratory == undefined
+      ) {
+        this.$message.error("鏈�夋嫨璇曢獙瀹�");
+        return;
+      }
+      this.loading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.upPlanUser, {
+          orderId: this.orderId,
+          userId: this.connect.connectPerson,
+          sonLaboratory: this.connect.sonLaboratory,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.loading = false;
+            this.$message.success("鎿嶄綔鎴愬姛");
+          }
+          this.connectVisible = false;
+          this.$emit("goback");
+        })
+        .catch((error) => {
+          console.error(error);
+          this.loading = false;
+        });
+    },
+    // 鏍峰搧缂栧彿鎼滅储
+    filterSampleProduct() {
+      console.log(123, this.filterSampleCode);
+      let list = JSON.parse(JSON.stringify(this.fileterSampleProducts));
+      this.sampleProduct = list.filter((m) =>
+        m.sampleCode.includes(this.filterSampleCode)
+      );
+    },
+    //淇敼璁惧
+    changEquip() {
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        (this.tableLists.find((m) => m.templateId == this.currentTable)
+          .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�" ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("鐑惊鐜�") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("娓╁崌璇曢獙") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("寮у瀭") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("鏋剁┖鍦扮嚎搴斿姏搴斿彉") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("闃叉尟閿ゅ姛鐜囩壒鎬�") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("鐤插姵璇曢獙妫�楠屽師濮嬭褰�")) &&
+        this.equipOptions &&
+        this.equipOptions.length > 0
+      ) {
+        let list = this.currentSample.insProduct.filter(
+          (m) =>
+            m.inspectionItem.includes("鐑惊鐜�") ||
+            m.inspectionItem.includes("娓╁害寰幆") ||
+            m.inspectionItem.includes("娓╁崌") ||
+            m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+            m.inspectionItem.includes("寮у瀭") ||
+            m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+            m.inspectionItem.includes("搴斿姏搴斿彉") ||
+            m.inspectionItem.includes("闃叉尟閿ゅ姛鐜囩壒鎬�") ||
+            m.inspectionItem.includes("鎸姩鐤插姵") ||
+            m.inspectionItem.includes("鑸炲姩鐤插姵")
+        );
+        console.log(123, list);
+        list.forEach((m) => {
+          // 淇濆瓨妫�楠屽��
+          console.log(m);
+          if (m.inspectionItem == "鍗曟牴鍨傜洿鐕冪儳") {
+            this.param[m.id].insResult = {
+              i: m.id,
+              v: { v: m.insResult },
+            };
+            this.param[m.id].resValue = {
+              i: m.id,
+              v: { v: m.resValue },
+            };
+            this.param[m.id].insValue = [];
+            m.value.forEach((item) => {
+              let obj = {
+                i: m.id,
+                v: {
+                  v: item,
+                },
+              };
+              this.param[m.id].insValue.push(obj);
+            });
+          }
+          // //閲嶆柊璧嬪�糹nsValue
+          // if(m.insProductResult){
+          //     const valueArr = JSON.parse(m.insProductResult.insValue)
+          //     valueArr.forEach(ele=>{
+          //       this.param[m.id].insValue.push({
+          //         i:m.id,
+          //         v:{v:ele.v}
+          //       })
+          //     })
+          // }
+          // 鍒濆鍖栬澶囦俊鎭�
+          this.param[m.id].equipValue = [];
+          this.param[m.id].equipName = [];
+          if (this.equipForm.code0) {
+            // 璧嬪�肩涓�涓澶囩殑淇℃伅
+            // this.equipForm.value0 = this.equipOptions.find(
+            //   (m) => m.value == this.equipForm.code0
+            // ).label;
+
+            if (
+              !m.inspectionItem.includes("娓╁害寰幆") &&
+              !m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳")
+            ) {
+              // 璧嬪�艰澶囧悕绉�
+
+              let list1 = [];
+              this.equipOptions
+                .filter((m) => this.equipForm.code0.includes(m.value))
+                .forEach((item) => {
+                  list1.push(item.label);
+                });
+              this.equipForm.value0 = [...new Set(list1)];
+              this.equipForm.code0.forEach((item, index) => {
+                this.param[m.id].equipValue.push({
+                  i: m.id,
+                  v: {
+                    v: item,
+                  },
+                });
+                this.param[m.id].equipName.push({
+                  i: m.id,
+                  v: {
+                    v: list1[index],
+                  },
+                });
+              });
+              console.log("this.equipOptions", this.equipOptions);
+            } else {
+              this.equipForm.value0 = this.equipOptions.find(
+                (m) => m.value == this.equipForm.code0
+              ).label;
+              this.param[m.id].equipValue.push({
+                i: m.id,
+                v: {
+                  v: this.equipForm.code0,
+                },
+              });
+              this.param[m.id].equipName.push({
+                i: m.id,
+                v: {
+                  v: this.equipForm.value0,
+                },
+              });
+            }
+            // this.param[m.id].equipValue.push({
+            //   i: m.id,
+            //   v: {
+            //     v: code0,
+            //   },
+            // });
+            // this.param[m.id].equipName.push({
+            //   i: m.id,
+            //   v: {
+            //     v: value0,
+            //   },
+            // });
+          }
+          if (
+            this.equipForm.code1 &&
+            (m.inspectionItem.includes("娓╁害寰幆") ||
+              m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳"))
+          ) {
+            // 璧嬪�肩浜屼釜璁惧鐨勪俊鎭�
+            this.equipForm.value1 = this.equipOptions.find(
+              (m) => m.value == this.equipForm.code1
+            ).label;
+            this.param[m.id].equipValue.push({
+              i: m.id,
+              v: {
+                v: this.equipForm.code1,
+              },
+            });
+            this.param[m.id].equipName.push({
+              i: m.id,
+              v: {
+                v: this.equipForm.value1,
+              },
+            });
+          }
+          // 淇濆瓨鏁版嵁
+          this.saveInsContext(m.id);
+        });
+      }
+    },
+    // 鐤插姵璇曢獙鐗规��---寮�濮�
+    getFatigueTestInfo() {
+      for (let i in this.fatigueTestInfo) {
+        this.fatigueTestInfo[i] = null;
+      }
+      let obj = this.currentSample.insProduct.filter(
+        (m) =>
+          m.inspectionItem.includes("鎸姩鐤插姵") ||
+          m.inspectionItem.includes("鑸炲姩鐤插姵")
+      )[0];
+      // 鑾峰彇璁惧鍒楄〃
+      this.getEquipOptions(true, obj.id);
+      this.fatigueTestInfo.model = this.currentSample.model;
+      this.fatigueTestInfo.methodS = obj.methodS;
+      this.fatigueTestInfo.sampleType = obj.sampleType;
+      this.fatigueTestInfo.id = obj.id;
+      this.fatigueTestInfo.insProductResult = obj.insProductResult;
+      // 鍥炴樉鏁版嵁
+      if (
+        obj.insProductResult &&
+        obj.insProductResult.insValue &&
+        obj.insProductResult.insValue.length > 5
+      ) {
+        this.fatigueTestInfo = {
+          ...this.fatigueTestInfo,
+          ...JSON.parse(obj.insProductResult.insValue),
+        };
+      }
+    },
+    //鐤插姵璇曢獙淇濆瓨鏂规硶
+    saveFatigueTest() {
+      let obj = this.HaveJson(this.fatigueTestInfo);
+      delete obj.insProductResult;
+      delete obj.id;
+      delete obj.model;
+      delete obj.methodS;
+      delete obj.sampleType;
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.saveInsContext2,
+          {
+            id: this.fatigueTestInfo.insProductResult
+              ? this.fatigueTestInfo.insProductResult.id
+              : "",
+            insProductId: this.fatigueTestInfo.id,
+            sampleId: this.currentSample.id,
+            orderId: this.currentSample.insOrderId,
+            insValue: JSON.stringify(obj),
+            templateName: "鐤插姵璇曢獙",
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+          }
+        )
+        .then((res) => {
+          if (res.code == 201) {
+            this.$message.error("淇濆瓨澶辫触");
+            return;
+          }
+          this.$message.success("淇濆瓨鎴愬姛");
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 鐤插姵璇曢獙鐗规��---缁撴潫
+    // 闃叉尟閿ゅ姛鐜囩壒鎬�---寮�濮�
+    getPowerCharacteristicsInfo() {
+      this.powerCharacteristicsInfo.arr0 = this.HaveJson(
+        this.powerCharacteristicsCopy
+      );
+      this.powerCharacteristicsInfo.arr1 = this.HaveJson(
+        this.powerCharacteristicsCopy
+      );
+      this.powerCharacteristicsInfo.arr2 = this.HaveJson(
+        this.powerCharacteristicsCopy
+      );
+      this.powerCharacteristicsInfo.arr3 = this.HaveJson(
+        this.powerCharacteristicsCopy
+      );
+      let obj = this.currentSample.insProduct.filter((m) =>
+        m.inspectionItem.includes("闃叉尟閿ゅ姛鐜囩壒鎬�")
+      )[0];
+      // 鑾峰彇璁惧鍒楄〃
+      this.getEquipOptions(true, obj.id);
+      this.powerCharacteristicsInfo.model = this.currentSample.model;
+      this.powerCharacteristicsInfo.methodS = obj.methodS;
+      this.powerCharacteristicsInfo.id = obj.id;
+      this.powerCharacteristicsInfo.insProductResult = obj.insProductResult;
+      // 鍥炴樉鏁版嵁
+      if (obj.insProductResult) {
+        if (
+          obj.insProductResult.insValue &&
+          obj.insProductResult.insValue.length > 5
+        ) {
+          let obj0 = JSON.parse(obj.insProductResult.insValue);
+          this.powerCharacteristicsInfo.arr0 = obj0.arr0;
+          this.powerCharacteristicsInfo.arr1 = obj0.arr1;
+        }
+        if (
+          obj.insProductResult.comValue &&
+          obj.insProductResult.comValue.length > 5
+        ) {
+          let obj1 = JSON.parse(obj.insProductResult.comValue);
+          this.powerCharacteristicsInfo.arr2 = obj1.arr2;
+          this.powerCharacteristicsInfo.arr3 = obj1.arr3;
+        }
+      }
+    },
+    // 鏀瑰彉鐤插姵鍚庣殑璋愭尟棰戠巼(Hz)
+    changeArr2(val, index) {
+      if (!this.powerCharacteristicsInfo.arr0[index].value || !val) {
+        return;
+      }
+      let num0 = Number(this.powerCharacteristicsInfo.arr0[index].value) * 0.8;
+      let num1 = Number(this.powerCharacteristicsInfo.arr0[index].value) * 1.2;
+      if (Number(val) > num0 && Number(val) < num1) {
+        this.powerCharacteristicsInfo.arr2[index].state = 1;
+      } else {
+        this.powerCharacteristicsInfo.arr2[index].state = 2;
+      }
+    },
+    // 鏀瑰彉鐤插姵鍚庣殑璋愯�楄兘(W)
+    changeArr3(val, index) {
+      if (!this.powerCharacteristicsInfo.arr1[index].value || !val) {
+        return;
+      }
+      let num0 = Number(this.powerCharacteristicsInfo.arr1[index].value) * 0.8;
+      let num1 = Number(this.powerCharacteristicsInfo.arr1[index].value) * 1.2;
+      if (Number(val) > num0 && Number(val) < num1) {
+        this.powerCharacteristicsInfo.arr3[index].state = 1;
+      } else {
+        this.powerCharacteristicsInfo.arr3[index].state = 2;
+      }
+    },
+    //闃叉尟閿ゅ姛鐜囩壒鎬т繚瀛樻柟娉�
+    savePowerCharacteristics() {
+      let obj0 = {};
+      obj0.arr0 = this.powerCharacteristicsInfo.arr0;
+      obj0.arr1 = this.powerCharacteristicsInfo.arr1;
+      let obj1 = {};
+      obj1.arr2 = this.powerCharacteristicsInfo.arr2;
+      obj1.arr3 = this.powerCharacteristicsInfo.arr3;
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.saveInsContext2,
+          {
+            id: this.powerCharacteristicsInfo.insProductResult
+              ? this.powerCharacteristicsInfo.insProductResult.id
+              : "",
+            insProductId: this.powerCharacteristicsInfo.id,
+            sampleId: this.currentSample.id,
+            orderId: this.currentSample.insOrderId,
+            insValue: JSON.stringify(obj0),
+            comValue: JSON.stringify(obj1),
+            templateName: "闃叉尟閿ゅ姛鐜囩壒鎬�",
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+          }
+        )
+        .then((res) => {
+          if (res.code == 201) {
+            this.$message.error("淇濆瓨澶辫触");
+            return;
+          }
+          this.$message.success("淇濆瓨鎴愬姛");
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 闃叉尟閿ゅ姛鐜囩壒鎬�---缁撴潫
+    // 鏋剁┖瀵煎湴绾垮簲鍔涘簲鍙�---寮�濮�
+    getStressStrainInfo() {
+      this.powerList = this.HaveJson(this.powerList0);
+      let obj = this.currentSample.insProduct.filter((m) =>
+        m.inspectionItem.includes("搴斿姏搴斿彉")
+      )[0];
+      // 鑾峰彇璁惧鍒楄〃
+      this.getEquipOptions(true, obj.id);
+      this.stressStrainInfo.model = this.currentSample.model;
+      this.stressStrainInfo.methodS = obj.methodS;
+      this.stressStrainInfo.id = obj.id;
+      this.stressStrainInfo.insProductResult = obj.insProductResult;
+      // 鍥炴樉鏁版嵁
+      this.stressStrainInfo.elasticity = obj.elasticityModulus;
+      if (
+        obj.insProductResult &&
+        obj.insProductResult.insValue &&
+        obj.insProductResult.insValue.length > 5
+      ) {
+        this.powerList = [];
+        let obj0 = JSON.parse(obj.insProductResult.insValue);
+        for (let i in obj0) {
+          this.powerList.push({
+            value: i,
+            arr: obj0[i],
+          });
+        }
+      }
+      let ask = obj.ask
+        ? obj.ask
+            .replace("=", "")
+            .replace("<", "")
+            .replace(">", "")
+            .replace("锛�", "")
+            .replace("锛�", "")
+            .replace("鈮�", "")
+            .replace("鈮�", "")
+        : 0;
+      this.stressStrainInfo.ask = ask;
+    },
+    //鏋剁┖鍦扮嚎搴斿姏搴斿彉淇濆瓨鏂规硶
+    saveStressStrain() {
+      if (
+        this.stressStrainInfo.elasticity == null ||
+        this.stressStrainInfo.elasticity == "" ||
+        undefined == this.stressStrainInfo.elasticity
+      ) {
+        this.$message.error("璇峰厛濉啓寮规�фā閲�");
+        return;
+      }
+      let obj = {};
+      for (let i = 0; i < this.powerList.length; i++) {
+        if (this.powerList[i].value) {
+          obj[this.powerList[i].value] = this.powerList[i].arr;
+        }
+      }
+      obj.elasticityModulus = this.stressStrainInfo.elasticity;
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.saveInsContext2,
+          {
+            id: this.stressStrainInfo.insProductResult
+              ? this.stressStrainInfo.insProductResult.id
+              : "",
+            sampleId: this.currentSample.id,
+            orderId: this.currentSample.insOrderId,
+            insProductId: this.stressStrainInfo.id,
+            insValue: JSON.stringify(obj),
+            templateName: "鏋剁┖鍦扮嚎搴斿姏搴斿彉",
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+          }
+        )
+        .then((res) => {
+          if (res.code == 201) {
+            this.$message.error("淇濆瓨澶辫触");
+            return;
+          }
+          this.$message.success("淇濆瓨鎴愬姛");
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 鍒犻櫎璁板綍
+    delStressStrain(index) {
+      if (this.powerList.length == 1) {
+        this.$message.warning("鑷冲皯闇�瑕佷竴鏉℃暟鎹�");
+        return;
+      }
+      this.powerList.splice(index, 1);
+    },
+    // 娣诲姞璁板綍
+    addStressStrain() {
+      this.powerList.push({
+        value: "",
+        arr: ["", "", "", "", "", ""],
+      });
+    },
+    // 濉啓寮规�фā閲�
+    changeElasticity(e) {
+      if (e) {
+        if (!this.stressStrainInfo.ask) {
+          this.$message.warning("璇峰厛鍘绘爣鍑嗗簱缁存姢鏍囧噯閲�");
+          this.stressStrainInfo.elasticity = null;
+          return;
+        }
+        let num = Math.abs(e - Number(this.stressStrainInfo.ask));
+        if (num > 2) {
+          this.$message.warning("寮规�фā閲忎笉鑳借秴杩囨爣鍑嗛噺鐨劼�2");
+          this.stressStrainInfo.elasticity = null;
+          return;
+        }
+        this.stressStrainInfo.elasticity = e;
+        // else {
+        //   this.$axios
+        //     .post(
+        //       this.$api.insOrderPlan.write2 +
+        //         "?id=" +
+        //         this.stressStrainInfo.id +
+        //         "&elasticityModulus=" +
+        //         e
+        //     )
+        //     .then((res) => {
+        //       if (res.code == 201) {
+        //         this.$message.error("淇濆瓨澶辫触");
+        //         return;
+        //       }
+        //       this.$message.success("宸蹭繚瀛�");
+        //     });
+        // }
+      }
+    },
+    // 鏋剁┖瀵煎湴绾垮簲鍔涘簲鍙�---缁撴潫
+    // 寮у瀭鐗规��---寮�濮�
+    // 鍒犻櫎琛�
+    deleteSag(index) {
+      if (this.sagData.length == 1) {
+        this.$message.warning("鑷冲皯闇�瑕佷竴鏉℃暟鎹�");
+        return;
+      }
+      this.sagData.splice(index, 1);
+      //this.saveSageInfo('楂樺害','height')
+      this.saveSageInfo("寮у瀭", "sag");
+      this.saveSageInfo("瀹ゆ俯", "temperature");
+      this.saveSageInfo("寮犲姏", "remark");
+      this.saveSageInfo("瀵肩嚎娓╁害", this.sagData[this.sagData.length - 1]);
+    },
+    // 娣诲姞寮у瀭妫�娴�
+    addSag() {
+      this.sagData.push({
+        height: null,
+        sag: null,
+        value0: null,
+        value1: null,
+        value2: null,
+        value3: null,
+        value4: null,
+        value5: null,
+        average: null,
+        temperature: null,
+        remark: null,
+      });
+    },
+    // 鍒濆鍖栭〉闈㈡暟鎹�
+    getSageInfo() {
+      let obj = this.currentSample.insProduct.filter((m) =>
+        m.inspectionItem.includes("寮у瀭")
+      )[0];
+      // 鑾峰彇璁惧鍒楄〃
+      this.getEquipOptions(true, obj.id);
+      this.$axios
+        .post(this.$api.insOrderPlan.getSagTemperatureProducts, {
+          sampleId: this.currentSample.id,
+        })
+        .then((res) => {
+          if (res.code == 201) return;
+          let { productVos, sampleVo } = res.data;
+          // 鍥炴樉鍩虹淇℃伅
+          this.sagForm = sampleVo;
+          this.sagForm.productVos = productVos;
+          productVos.forEach((item) => {
+            // 鍒濆鍖栧悗绔弬鏁�
+            this.param[item.insProduct.id] = {
+              insValue: [],
+              comValue: [],
+              resValue: {
+                i: item.insProduct.id,
+                r: 0,
+                c: 0,
+                v: {
+                  v: null,
+                },
+              },
+              equipValue: [],
+              equipName: [],
+              insResult: {
+                i: item.insProduct.id,
+                v: {
+                  v: null,
+                },
+              },
+            };
+            // 鏈夋暟鎹�->鍥炴樉鏁版嵁
+            if (item.insProduct.insProductResult) {
+              let type = item.insProduct.inspectionItemSubclass;
+              let insValue = JSON.parse(
+                item.insProduct.insProductResult.insValue
+              );
+              if (
+                !(
+                  type == "棰濆畾鎷夋柇鍔�" ||
+                  type == "璺ㄨ窛闀垮害" ||
+                  type == "杞借嵎" ||
+                  type == "瀵肩嚎娓╁害"
+                )
+              ) {
+                if (this.sagData.length < insValue.length) {
+                  for (let i = this.sagData.length; i < insValue.length; i++) {
+                    this.sagData.push({
+                      height: null,
+                      sag: null,
+                      value0: null,
+                      value1: null,
+                      value2: null,
+                      value3: null,
+                      value4: null,
+                      value5: null,
+                      average: null,
+                      temperature: null,
+                      remark: null,
+                    });
+                  }
+                }
+              }
+              if (insValue.length > 0) {
+                switch (type) {
+                  case "棰濆畾鎷夋柇鍔�":
+                    this.$set(this.sagForm, "tensileForce", insValue[0].v);
+                    break;
+                  case "璺ㄨ窛闀垮害":
+                    this.$set(this.sagForm, "spanLength", 100);
+                    break;
+                  case "杞借嵎":
+                    this.$set(this.sagForm, "load", insValue[0].v);
+                    break;
+                  // case '楂樺害':
+                  //   insValue.forEach((m,i)=>{
+                  //     this.sagData[i].height = m.v
+                  //   })
+                  //   break;
+                  case "寮у瀭":
+                    insValue.forEach((m, i) => {
+                      this.sagData[i].sag = m.v;
+                    });
+                    break;
+                  case "瀹ゆ俯":
+                    insValue.forEach((m, i) => {
+                      this.sagData[i].temperature = m.v;
+                    });
+                    break;
+                  case "寮犲姏":
+                    insValue.forEach((m, i) => {
+                      this.sagData[i].remark = m.v;
+                    });
+                    break;
+                  case "瀵肩嚎娓╁害":
+                    let comValue = JSON.parse(
+                      item.insProduct.insProductResult.comValue
+                    );
+                    if (comValue.length > 0) {
+                      comValue.forEach((m, i) => {
+                        this.sagData[i].average = m.v ? m.v : null;
+                      });
+                    }
+                    insValue.forEach((m, i) => {
+                      this.sagData[m.c][`value${m.r}`] = m.v ? m.v : null;
+                    });
+                    break;
+                }
+              }
+            }
+          });
+        })
+        .catch((err) => {});
+    },
+    // 淇濆瓨鏁版嵁
+    saveSageInfo(type, value) {
+      let obj = this.sagForm.productVos.find(
+        (m) => m.insProduct.inspectionItemSubclass == type
+      );
+      if (obj) {
+        if (type == "棰濆畾鎷夋柇鍔�" || type == "璺ㄨ窛闀垮害" || type == "杞借嵎") {
+          this.param[obj.insProduct.id].insValue = [
+            {
+              i: obj.insProduct.id,
+              r: 0,
+              c: 0,
+              v: {
+                v: value,
+              },
+            },
+          ];
+        } else if (type == "瀵肩嚎娓╁害") {
+          let arr = [];
+          for (let i = 0; i < 6; i++) {
+            arr.push(value[`value${i}`]);
+          }
+          arr = arr.filter((m) => m != null).map((m) => Number(m));
+          let num = 0;
+          arr.forEach((item) => {
+            num += item;
+          });
+          value.average = (num / arr.length).toFixed(2);
+          let comValueList = [];
+          let insValueList = [];
+          this.sagData.forEach((item, index) => {
+            comValueList.push({
+              i: obj.insProduct.id,
+              r: 0,
+              c: index,
+              v: {
+                v: item.average,
+              },
+            });
+            for (let i = 0; i < 6; i++) {
+              insValueList.push({
+                i: obj.insProduct.id,
+                r: i,
+                c: index,
+                v: {
+                  v: item[`value${i}`],
+                },
+              });
+            }
+          });
+          this.param[obj.insProduct.id].insValue = insValueList;
+          this.param[obj.insProduct.id].comValue = comValueList;
+        } else {
+          let arr = this.sagData.map((m) => {
+            let obj0 = {
+              i: obj.insProduct.id,
+              r: 0,
+              c: 0,
+              v: {
+                v: m[value],
+              },
+            };
+            return obj0;
+          });
+          this.param[obj.insProduct.id].insValue = arr;
+        }
+        // 杩涜鏁版嵁鐨勪繚瀛�
+        this.saveInsContext(obj.insProduct.id);
+      }
+    },
+    // 寮у瀭鐗规��---缁撴潫
+    // 鏁版嵁閲囬泦
+    getDataAcquisitionDevice() {
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists.find((m) => m.templateId == this.currentTable)
+          .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�"
+      ) {
+        // 娓╁害寰幆妫�楠屽師濮嬭褰�----鏁伴噰----PK8000
+        let temperature = this.wareForm.inspectionItemSubclass;
+        if (typeof temperature == "string" && temperature.includes("(甯告俯)")) {
+          temperature = `20鈩�(甯告俯)`;
+        } else {
+          temperature = temperature + "鈩�";
+        }
+        this.dataAcquisitionLoading = true;
+        this.$axios
+          .post(
+            this.$api.deviceScope.temDataAcquisition,
+            {
+              entrustCode: this.insOrder.entrustCode,
+              sampleCode: this.currentSample.sampleCode,
+              model: this.wareForm0.model,
+              cycles: this.wareForm.inspectionItem,
+              temperature: temperature,
+            },
+            {
+              headers: {
+                "Content-Type": "application/json",
+              },
+              noQs: true,
+            }
+          )
+          .then((res) => {
+            this.dataAcquisitionLoading = false;
+            if (res.code != 200) {
+              return;
+            }
+            // 璧嬪�煎洖鏄綪K8000鐨勬暟鎹�
+            this.wareFormChange();
+          });
+      } else {
+        const _than = this;
+        // 涓�鑸殑鏁版嵁閲囬泦
+        _than.dataAcquisitionLoading = true;
+        let urlStr =
+          this.$api.deviceScope.dataCollection +
+          "?entrustCode=" +
+          this.insOrder.entrustCode +
+          "&sampleCode=" +
+          this.currentSample.sampleCode +
+          "&id=" +
+          this.currentSample.id;
+        console.log(_than.fibers);
+        if (_than.fibers && _than.fibers.length > 0) {
+          //褰撳墠閫変腑鐨勫厜绾ゅ甫
+          let currentFibers = _than.fibers.find(
+            (f) => f.id == _than.currentTab
+          );
+          if (null == currentFibers || currentFibers.length == 0) {
+            currentFibers = _than.fibers[0];
+          }
+          urlStr +=
+            "&fiberOpticRibbon=" +
+            currentFibers.bushingColor +
+            "-" +
+            currentFibers.code;
+        }
+        let replaceUrlStr = urlStr
+          .split("")
+          .map((s) => s.replace("#", "%23"))
+          .join("");
+        this.$axios.get(replaceUrlStr).then((res) => {
+          this.dataAcquisitionLoading = false;
+          if (res.code != 200) {
+            return;
+          }
+          this.dataAcquisitionInfoNew = this.HaveJson(res.data);
+          // 瀵规暟閲囧洖鏉ョ殑鍊艰繘琛屽鐞�
+          this.handleDataAcquisition(res.data);
+        });
+      }
+    },
+    handleDataAcquisition(data) {
+      // 鏄惁鍙互缂栬緫鏁伴噰鏁版嵁
+      if (this.dataAcquisitionEidtAble) {
+        this.getDataType = 1;
+      } else {
+        this.getDataType = 2;
+      }
+      this.dataAcquisitionInfo = {};
+      this.getData = [];
+      for (let i in data) {
+        let obj = {
+          faName: i,
+          child: [],
+        };
+        // 寰幆鏁伴噰鏁版嵁
+        for (let j in data[i]) {
+          // 鎷兼帴瀛楃涓�  妫�楠岄」+妫�楠屽瓙椤�
+          let str0 = "";
+          if (i == j) {
+            str0 = i + ",";
+          } else {
+            str0 = i + "," + j;
+          }
+          if (
+            j != "frequency" &&
+            data[i][j] &&
+            (!data[i][j].result || typeof data[i][j].result == "string")
+          ) {
+            // 澶勭悊鏁伴噰淇℃伅鏍煎紡
+            if (data[i][j].result) {
+              this.dataAcquisitionInfo[str0] = {
+                value: data[i][j].result,
+                frequency: data[i].frequency,
+              };
+            }
+            let list = this.tableList[0].arr;
+            // 寰幆椤甸潰鍒楄〃淇℃伅锛屽垽鏂暟閲囨暟鎹搴旈〉闈㈠垪琛ㄤ俊鎭殑妫�楠岄」鏄摢涓紝骞剁粰褰撳墠妫�楠岄」缁戝畾璁惧淇℃伅
+            list.forEach((item, index) => {
+              let num0 = 0;
+              let str = "";
+              item.forEach((m) => {
+                if (
+                  m.v.ps &&
+                  (m.v.ps.value == "妫�楠屽瓙椤�" || m.v.ps.value == "妫�楠岄」")
+                ) {
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」") {
+                    if (num0 == 0) {
+                      str = m.v.v + ",";
+                      num0++;
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠屽瓙椤�") {
+                    if (num0 == 1) {
+                      str = str + m.v.v;
+                    }
+                  }
+                }
+                // 缁戝畾璁惧淇℃伅
+                if (
+                  data[i][j].equipName &&
+                  data[i][j].equipValue &&
+                  m.v &&
+                  m.v.ps &&
+                  m.v.ps.value == "璁惧缂栫爜" &&
+                  str0 == str
+                ) {
+                  if (!m.v.v) {
+                    this.changeEquip(
+                      data[i][j].equipValue,
+                      m,
+                      data[i][j].equipName
+                    );
+                  }
+                }
+              });
+            });
+          } else if (
+            j != "frequency" &&
+            data[i][j] &&
+            Array.isArray(data[i][j].result)
+          ) {
+            // 濡傛灉杩斿洖鐨勬暟閲囨暟鎹槸鏁扮粍锛屽垯澶勭悊鏁扮粍
+            // 浠ヤ笅閫昏緫涓鸿幏鍙栨瘡涓楠岄」鍙緭鍏ョ殑妫�楠屽�肩殑鏈�澶т釜鏁�
+            let str0 = "";
+            if (i == j) {
+              str0 = i + ",";
+            } else {
+              str0 = i + "," + j;
+            }
+            let list = this.tableList[0].arr;
+            let maxNum = 0;
+            list.forEach((item, index) => {
+              let num0 = 0;
+              let str = "";
+              item.forEach((m) => {
+                if (
+                  m.v.ps &&
+                  (m.v.ps.value == "妫�楠屽瓙椤�" || m.v.ps.value == "妫�楠岄」")
+                ) {
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」") {
+                    if (num0 == 0) {
+                      str = m.v.v + ",";
+                      num0++;
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠屽瓙椤�") {
+                    if (num0 == 1) {
+                      str = str + m.v.v;
+                    }
+                  }
+                  let num = 0;
+                  list[index].forEach((n) => {
+                    if (
+                      n.v.ps &&
+                      n.v.ps.value &&
+                      typeof n.v.ps.value == "string" &&
+                      n.v.ps.value.includes("妫�楠屽��")
+                    ) {
+                      num++;
+                    }
+                  });
+                  if (str0 == str) {
+                    maxNum = num;
+                  }
+                }
+                // 缁戝畾璁惧
+                if (
+                  data[i][j].equipName &&
+                  data[i][j].equipValue &&
+                  m.v &&
+                  m.v.ps &&
+                  m.v.ps.value == "璁惧缂栫爜" &&
+                  str0 == str
+                ) {
+                  if (!m.v.v) {
+                    console.log(
+                      "changeEquip-->>",
+                      data[i][j].equipValue,
+                      m,
+                      data[i][j].equipName
+                    );
+                    this.changeEquip(
+                      data[i][j].equipValue,
+                      m,
+                      data[i][j].equipName
+                    );
+                  }
+                }
+              });
+            });
+            // let arr3 = []
+            // for (let l=0 ;i<data[i][j].result.length;i++){
+            //   arr3.push({
+            //     id:,
+            //     value:
+            //   })
+            // }
+            // 鑾峰彇鍒版渶澶ф楠屽�艰緭鍏ヤ釜鏁板悗閲嶇粍鏁版嵁
+            let obj0 = {
+              name: j,
+              arr: data[i][j].result,
+              maxNum: maxNum,
+              value: [],
+            };
+            // 濡傛灉鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏皢鏁伴噰鏁版嵁鍦ㄥ脊妗嗕腑灞曠ず锛岀敤鎴烽�夋嫨闇�瑕佹墜鍔ㄩ�夋嫨鏁伴噰鐨勪俊鎭�
+            if (
+              data[i][j].result &&
+              Array.isArray(data[i][j].result) &&
+              data[i][j].result.length > maxNum
+            ) {
+              obj.child.push(obj0);
+            } else {
+              this.dataAcquisitionInfo[str0] = {
+                value: data[i][j].result,
+              };
+            }
+          }
+        }
+        if (obj.child.length > 0) {
+          this.getData.push(obj);
+        }
+      }
+      // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨
+      if (this.getData.length > 0) {
+        this.dataGetDia = true;
+        this.getDataIndex = [];
+      } else {
+        // 濡傛灉閮戒笉瀛樺湪锛屽垯锛岃繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹�
+        try {
+          // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+          this.getDataIndexLoading = false;
+          this.dataGetDia = false;
+          this.getDataTypeId = "";
+          this.worker0.postMessage(
+            JSON.stringify({
+              dataAcquisitionInfo: this.dataAcquisitionInfo,
+              list: this.tableList[0].arr,
+            })
+          );
+        } catch (error) {
+          console.log(1111, error);
+        }
+      }
+      // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋�
+      this.worker0.onmessage = (event) => {
+        let result = JSON.parse(event.data);
+        if (result.method == "changeInput") {
+          // 閲囬泦鍚庣殑鏁版嵁锛岄渶瑕佽繘琛岃绠楃殑绾跨▼杩涜璁$畻
+          let { list, n } = result.value;
+          this.$set(this.tableList[0], "arr", list);
+          this.changeInput(
+            "",
+            `${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,
+            n
+          );
+        } else if (result.getDataTypeId) {
+          // 鑾峰彇鍒版暟閲囨渶鍚庝竴椤癸紝妫�楠岄」鐨処D
+          this.getDataTypeId = result.getDataTypeId;
+        }
+      };
+    },
+    // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨锛岃繖閲屾槸寮规鐨勬彁浜�
+    submitDataGet() {
+      if (this.getDataIndex.length == 0) {
+        this.$message.error("璇烽�夋嫨闇�瑕侀噰闆嗙殑鏁版嵁");
+        return;
+      }
+      this.getDataIndex.sort((a, b) => a - b);
+      for (let i = 0; i < this.getData.length; i++) {
+        for (let j = 0; j < this.getData[i].child.length; j++) {
+          // 瀵圭敤鎴烽�夋嫨鐨勬暟閲囦俊鎭繘琛屽鐞嗭紝璧嬪��
+          let arr = [];
+          for (let k = 0; k < this.getDataIndex.length; k++) {
+            arr.push(
+              this.dataAcquisitionInfoNew[this.getData[i].faName][
+                this.getData[i].child[j].name
+              ].result[this.getDataIndex[k]]
+            );
+          }
+          this.dataAcquisitionInfoNew[this.getData[i].faName][
+            this.getData[i].child[j].name
+          ].result = arr;
+        }
+      }
+      this.getDataIndexLoading = true;
+      // 璧嬪�煎畬鎴愬悗闇�瑕佸啀娆¤繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹�
+      this.handleDataAcquisition(this.dataAcquisitionInfoNew);
+    },
+    // 澶氱嚎绋�
+    startWorker() {
+      if (this.worker) {
+        this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝�
+      }
+      // 鍒涘缓 Worker 瀹炰緥
+      this.worker = new Worker("/static/js/worker.js");
+      if (this.worker0) {
+        this.stopWorker(); // 纭繚涔嬪墠鐨� Worker 宸插仠姝�
+      }
+      // 鍒涘缓 Worker 瀹炰緥
+      this.worker0 = new Worker("/static/js/worker0.js");
+    },
+    // 鍋滄澶氱嚎绋�
+    stopWorker() {
+      if (this.worker) {
+        this.worker.terminate();
+        this.worker = null;
+      }
+      if (this.worker0) {
+        this.worker0.terminate();
+        this.worker0 = null;
+      }
+    },
+    // 娓╁害寰幆---寮�濮�
+    changeItem(row) {
+      // 鍐呯銆佸绔繘琛岃祴鍊奸�昏緫澶勭悊
+
+      // 璧嬪�煎埌椤甸潰
+      if (row.value0 && !row.value1) {
+        // 璧嬪�煎唴绔�
+        this.$set(row, "comValue", Number(row.value0).toFixed(3));
+      } else if (!row.value0 && row.value1) {
+        // 璧嬪�煎绔�
+        this.$set(row, "comValue", Number(row.value1).toFixed(3));
+      } else if (row.value0 && row.value1) {
+        // 璧嬪�艰绠楀��
+        this.$set(
+          row,
+          "comValue",
+          ((Number(row.value0) + Number(row.value1)) / 2).toFixed(3)
+        );
+      } else {
+        return;
+      }
+      // 璧嬪�煎埌浼犲埌鍚庣鐨勫弬鏁�---鐗规畩椤圭洰蹇呴』涓ユ牸鎸夌収杩欑鏍煎紡浼犲弬锛屽惁鍒欏悗绔瘑鍒笉浜�
+      // 璧嬪�煎唴澶栫
+      this.param[row.id].insValue = [
+        {
+          i: row.id,
+          v: {
+            v: row.value0,
+          },
+        },
+        {
+          i: row.id,
+          v: {
+            v: row.value1,
+          },
+        },
+      ];
+      // 璧嬪�艰绠楀��
+      this.param[row.id].comValue = [
+        {
+          i: row.id,
+          v: {
+            v: row.comValue,
+          },
+        },
+      ];
+      // 鍒ゆ柇缁撴灉锛屽緱鍑虹粨璁�
+      if (this.wareForm.inspectionItemSubclass != "20(甯告俯)") {
+        // 缁欓〉闈㈠垪琛ㄨ祴鍊兼渶缁堝��
+        row.resValue = row.comValue
+          ? Math.abs(row.comValue - Number(row.insProduct.complue)).toFixed(3)
+          : "";
+        // 缁欎紶閫掑埌鍚庣鐨勫弬鏁拌祴鍊兼渶缁堝��
+        this.param[row.id].resValue.v.v = row.resValue;
+        // 鍒ゆ柇缁撹锛岀粰椤甸潰鍒楄〃璧嬪�肩粨璁�
+        if (row.ask && row.resValue) {
+          if (row.ask.includes("<")) {
+            row.insResult = row.resValue < row.ask.split("<")[1] ? 1 : 0;
+          } else if (row.ask.includes(">")) {
+            row.insResult = row.resValue < row.ask.split(">")[1] ? 1 : 0;
+          } else if (row.ask.includes("=")) {
+            row.insResult = row.resValue == row.ask.split("=")[1] ? 1 : 0;
+          } else if (row.ask.includes("鈮�")) {
+            row.insResult = row.resValue >= row.ask.split("鈮�")[1] ? 1 : 0;
+          } else if (row.ask.includes("鈮�")) {
+            row.insResult = row.resValue <= row.ask.split("鈮�")[1] ? 1 : 0;
+          }
+          // 缁欎紶閫掑埌鍚庣鐨勫弬鏁拌祴鍊肩粨璁�
+          this.param[row.id].insResult.v.v = row.insResult;
+        }
+      } else {
+        // 20(甯告俯)榛樿鍚堟牸
+        this.param[row.id].insResult.v.v = 1;
+      }
+      this.$refs.wareTableData.doLayout();
+      // 杩涜鏁版嵁鐨勪繚瀛�
+      this.saveInsContext(row.id);
+    },
+    // 褰撳惊鐜鏁般�佹俯搴︾偣鍙樺寲銆丳K8000鏁伴噰鏃朵細璋冪敤锛屼富瑕佹槸鑾峰彇淇℃伅杩涜鍥炴樉
+    wareFormChange(m, type) {
+      if (
+        this.PROJECT != "妫�娴嬩腑蹇�" ||
+        !this.tableLists.find((m) => m.templateId == this.currentTable) ||
+        this.tableLists.find((m) => m.templateId == this.currentTable)
+          .templateName != "娓╁害寰幆妫�楠屽師濮嬭褰�"
+      ) {
+        return;
+      }
+      if (m && type) {
+        this.wareForm[type] = m;
+      }
+      let wareForm = { ...this.wareForm };
+      if (this.wareForm.inspectionItemSubclass == "20(甯告俯)") {
+        wareForm.inspectionItemSubclass = "20鈩�(甯告俯)";
+      } else {
+        wareForm.inspectionItemSubclass = wareForm.inspectionItemSubclass + "鈩�";
+      }
+      this.wareTableDataLoading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.temCycle, {
+          sampleId: this.currentSample.id,
+          ...wareForm,
+        })
+        .then((res) => {
+          this.wareTableDataLoading = false;
+          if (res.code == 201) return;
+          let { productVos, sampleVo } = res.data;
+          this.wareForm0 = sampleVo;
+          // 鍒濆鍖栦紶鍒板悗绔殑鍙傛暟
+          productVos = productVos.map((m) => {
+            let obj = { ...m, ...m.insProduct };
+            this.param[obj.id] = {
+              insValue: [],
+              comValue: [],
+              resValue: {
+                i: obj.id,
+                v: {
+                  v: null,
+                },
+              },
+              equipValue: [],
+              equipName: [],
+              insResult: {
+                i: obj.id,
+                v: {
+                  v: null,
+                },
+              },
+            };
+            let insProductResult = obj.insProductResult;
+            // 缁欎紶閫掑埌鍚庣鐨勫弬鏁拌繘琛岃祴鍊硷紝缁欓〉闈㈡暟鎹祴鍊�
+            if (insProductResult) {
+              for (let i in insProductResult) {
+                switch (i) {
+                  // 妫�楠屽�艰祴鍊�
+                  case "insValue":
+                    let insValue = JSON.parse(insProductResult[i]);
+                    if (insValue && insValue.length > 1) {
+                      // 鍚庣鐨勫弬鏁拌繘琛岃祴鍊�
+                      this.param[obj.id].insValue = [
+                        {
+                          i: obj.id,
+                          v: {
+                            v: insValue[0].v,
+                          },
+                        },
+                        {
+                          i: obj.id,
+                          v: {
+                            v: insValue[1].v,
+                          },
+                        },
+                      ];
+                      // 椤甸潰鏁版嵁璧嬪��
+                      obj.value0 = insValue[0].v;
+                      obj.value1 = insValue[1].v;
+                    } else if (insValue && insValue.length == 1) {
+                      // 鍚庣鐨勫弬鏁拌繘琛岃祴鍊�
+                      this.param[obj.id].insValue = [
+                        {
+                          i: obj.id,
+                          v: {
+                            v: insValue[0].v,
+                          },
+                        },
+                        {
+                          i: obj.id,
+                          v: {
+                            v: "",
+                          },
+                        },
+                      ];
+                      // 椤甸潰鏁版嵁璧嬪��
+                      obj.value0 = insValue[0].v;
+                      obj.value1 = "";
+                    }
+                    break;
+                  // 璁$畻鍊艰祴鍊�
+                  case "comValue":
+                    let comValue = JSON.parse(insProductResult[i]);
+                    if (comValue && comValue.length > 0) {
+                      // 鍚庣鐨勫弬鏁拌繘琛岃祴鍊�
+                      this.param[obj.id].comValue = [
+                        {
+                          i: obj.id,
+                          v: {
+                            v: comValue[0].v,
+                          },
+                        },
+                      ];
+                      // 椤甸潰鏁版嵁璧嬪��
+                      obj.comValue = comValue[0].v;
+                    }
+                    break;
+                  default:
+                    break;
+                }
+              }
+              // 鏈�缁堝�艰祴鍊�
+              // 鍚庣鐨勫弬鏁拌繘琛岃祴鍊�
+              this.param[obj.id].resValue = {
+                i: obj.id,
+                v: {
+                  v: obj.lastValue,
+                },
+              };
+              // 椤甸潰鏁版嵁璧嬪��
+              obj.resValue = obj.lastValue;
+              // 缁撹璧嬪��
+              // 鍚庣鐨勫弬鏁拌繘琛岃祴鍊�
+              this.param[obj.id].insResult = {
+                i: obj.id,
+                v: {
+                  v: obj.insResult,
+                },
+              };
+            }
+            return obj;
+          });
+          // 浠ヤ笅鏄娓╁害寰幆椤甸潰鍛堢幇杩涜澶勭悊锛屽幓閲嶃�佹暟鎹噸缃瓑绛�
+          let arr = [];
+          let arr0 = [];
+          let mySet = new Set();
+          productVos.forEach((m, i) => {
+            let num0 = mySet.size;
+            mySet.add(m.inspectionItemClass);
+            let num1 = mySet.size;
+            if (num0 != num1) {
+              if (i > 0) {
+                arr.push(arr0);
+              }
+              arr0 = [];
+              arr0.push(m);
+            } else {
+              arr0.push(m);
+            }
+          });
+          arr.push(arr0);
+          let arr1 = [];
+          this.wareLength = [];
+          for (let i = 0; i < arr.length; i++) {
+            this.wareLength.push(arr[i][0].inspectionItemClass);
+          }
+          for (let i = 0; i < arr[0].length; i++) {
+            arr1.push([]);
+          }
+          arr.forEach((item, index) => {
+            item.forEach((m, i) => {
+              try {
+                arr1[i].push(m);
+              } catch (e) {
+                console.log(e);
+              }
+            });
+          });
+          let arr2 = [];
+          arr1.forEach((item) => {
+            let obj = {
+              bushColor: item[0].bushColor,
+              code: item[0].code,
+              color: item[0].color,
+              arr: item,
+            };
+            arr2.push(obj);
+          });
+          // 杩欐槸椤甸潰鏈�缁堝憟鐜扮殑鏍煎紡
+          this.wareTableData = arr2;
+        });
+      // 鑾峰彇璁惧鍒楄〃
+      this.getEquipOptions(true, this.currentSample.insProduct[0].id);
+      // this.$refs.wareTableData&&this.$refs.wareTableData.doLayout()
+    },
+    // 娓╁害寰幆---缁撴潫
+    // 鐑惊鐜�---寮�濮�
+    // 寰幆娆℃暟鍒囨崲鏃惰皟鐢�
+    thermalCyclingChange() {
+      this.thermalCyclingLoading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.temCycle, {
+          sampleId: this.currentSample.id,
+          inspectionItem: this.thermalCyclingInfo.inspectionItem,
+        })
+        .then((res) => {
+          this.thermalCyclingLoading = false;
+          if (res.code == 201) return;
+          let { productVos, sampleVo } = res.data;
+          this.thermalCyclingInfo = { ...this.thermalCyclingInfo, ...sampleVo };
+          // if(this.thermalCyclingInfo.inspectionItem>1){
+          //   for(let i in this.param){
+          //     if(this.param[i].inspectionItemSubclass){
+          //       delete this.param[i]
+          //     }
+          //   }
+          // }
+          for (let i in this.param) {
+            if (this.param[i].inspectionItemSubclass) {
+              delete this.param[i];
+            }
+          }
+          if (productVos.length > 0) {
+            this.thermalCyclingInfo.inspectionItemClass =
+              productVos[0].insProduct.inspectionItemClass;
+            // 鏍规嵁妫�楠岄」锛屽垵濮嬪寲浼犲埌鍚庣鐨勫弬鏁�
+            productVos.forEach((item) => {
+              this.param[item.insProduct.id] = {
+                insValue: [],
+                comValue: [],
+                resValue: {
+                  i: item.insProduct.id,
+                  r: 0,
+                  c: 0,
+                  v: {
+                    v: null,
+                  },
+                },
+                equipValue: [],
+                equipName: [],
+                insResult: {
+                  i: item.insProduct.id,
+                  v: {
+                    v: null,
+                  },
+                },
+                inspectionItemSubclass: item.insProduct.inspectionItemSubclass,
+              };
+              let obj = { ...item, ...item.insProduct };
+              let insProductResult = obj.insProductResult;
+              if (insProductResult) {
+                // 缁欓〉闈㈠垪琛ㄨ祴鍊硷紝缁欏悗绔紶鍙傝祴鍊�
+                for (let i in insProductResult) {
+                  switch (i) {
+                    case "insValue":
+                      // 缁欓〉闈㈠垪琛ㄨ祴鍊�
+                      let insValue = JSON.parse(insProductResult[i]);
+                      if (insValue && insValue.length > 0) {
+                        this.thermalCyclingInfo.length = 0;
+                        this.thermalCyclingInfo.arr.forEach((a) => {
+                          if (a.name == obj.inspectionItemSubclass) {
+                            a.arr = [];
+                            for (let i = 0; i < insValue.length; i++) {
+                              a.arr.push({
+                                value0: insValue[i].v,
+                                value1: insValue[i].w,
+                              });
+                              this.thermalCyclingInfo.length++;
+                            }
+                            a.insResult = obj.insResult;
+                          }
+                        });
+                        // 缁欏悗绔紶鍙傝祴鍊�
+                        this.param[obj.id].insValue = [];
+                        insValue.forEach((m) => {
+                          this.param[obj.id].insValue.push({
+                            i: obj.id,
+                            r: 0,
+                            c: 0,
+                            w: m.w,
+                            v: {
+                              v: m.v,
+                            },
+                          });
+                        });
+                      }
+                      break;
+                  }
+                }
+                // 缁欏悗绔紶鍙傝祴鍊�
+                this.param[obj.id].insResult = {
+                  i: obj.id,
+                  v: {
+                    v: obj.insResult,
+                  },
+                };
+              } else {
+                // 缁欓〉闈㈠垪琛ㄨ祴鍊�
+                this.thermalCyclingInfo.arr.forEach((a) => {
+                  if (a.name == obj.inspectionItemSubclass) {
+                    a.insResult = null;
+                    a.arr = [];
+                    a.arr.push({
+                      value0: "",
+                      value1: "",
+                    });
+                  }
+                });
+                this.thermalCyclingInfo.length = 1;
+              }
+            });
+          }
+          // 鑾峰彇璁惧鍒楄〃
+          this.getEquipOptions(true, this.currentSample.insProduct[0].id);
+        });
+    },
+    // 娣诲姞妫�楠屽��
+    handleAddThermal() {
+      this.thermalCyclingInfo.length++;
+      this.thermalCyclingInfo.arr.forEach((item) => {
+        item.arr.push({
+          value0: "",
+          value1: "",
+        });
+      });
+    },
+    // 鍒犻櫎妫�楠屽��
+    handleDeleteThermal() {
+      if (this.thermalCyclingInfo.length == 1) {
+        this.$message.error("鏈�鍚庝竴鏉℃暟鎹笉鑳藉垹闄�");
+        return;
+      } else {
+        this.thermalCyclingInfo.length--;
+        this.thermalCyclingInfo.arr.forEach((item) => {
+          item.arr.pop();
+        });
+        // 鍒犻櫎鍚庨渶瑕佷繚瀛樹竴涓嬫暟鎹�
+        this.saveThermalCycling(true, { name: "瀵肩嚎娓╁害" }, true, true);
+      }
+    },
+    saveThermalCycling(m, item, type, isDelete) {
+      console.log(m, item, type);
+      console.log(this.thermalCyclingInfo);
+      // 缁撴灉鍒ゆ柇
+      if (m == "") {
+        m = "0";
+      }
+      if (m && item && type) {
+        if (
+          item.name == "瀵肩嚎娓╁害" ||
+          item.name == "鑰愬紶娓╁害" ||
+          item.name == "鎺ョ画娓╁害"
+        ) {
+          this.thermalCyclingInfo.arr.forEach((a) => {
+            if (a.name == "鑰愬紶娓╁害") {
+              a.arr.forEach((b, i) => {
+                // 鑾峰彇瀵瑰簲鐨勫绾挎俯搴�
+                let num0 = 0;
+                this.thermalCyclingInfo.arr.forEach((c) => {
+                  if (c.name == "瀵肩嚎娓╁害") {
+                    num0 = c.arr[i].value0;
+                  }
+                });
+                // 鍒ゆ柇缁撹
+                if (!num0 || !b.value0) {
+                  b.state = null;
+                } else if (Number(num0) > Number(b.value0)) {
+                  b.state = 1;
+                } else {
+                  b.state = 0;
+                }
+              });
+              let state = a.arr.filter((b) => b.state == null).length;
+              let state0 = a.arr.filter((b) => b.state == 0).length;
+              let state1 = a.arr.filter((b) => b.state == 1).length;
+              if (state > 0) {
+                // 寰呭畾
+                a.insResult = null;
+              } else if (state0 > 0) {
+                // 涓嶅悎鏍�
+                a.insResult = 0;
+              } else if (state1 == a.arr.length) {
+                // 鍚堟牸
+                a.insResult = 1;
+              }
+            }
+            if (a.name == "鎺ョ画娓╁害") {
+              a.arr.forEach((b, i) => {
+                // 鑾峰彇瀵瑰簲鐨勫绾挎俯搴�
+                let num0 = 0;
+                this.thermalCyclingInfo.arr.forEach((c) => {
+                  if (c.name == "瀵肩嚎娓╁害") {
+                    num0 = c.arr[i].value0;
+                  }
+                });
+                if (!num0 || !b.value0) {
+                  b.state = null;
+                } else if (Number(num0) > Number(b.value0)) {
+                  b.state = 1;
+                } else {
+                  b.state = 0;
+                }
+              });
+              let state = a.arr.filter((b) => b.state == null).length;
+              let state0 = a.arr.filter((b) => b.state == 0).length;
+              let state1 = a.arr.filter((b) => b.state == 1).length;
+              if (state > 0) {
+                a.insResult = null;
+              } else if (state0 > 0) {
+                a.insResult = 0;
+              } else if (state1 == a.arr.length) {
+                a.insResult = 1;
+              }
+            }
+          });
+        }
+      }
+      // 缁欏悗绔紶鍙傝祴鍊�
+      this.thermalCyclingInfo.arr.forEach((item) => {
+        for (let i in this.param) {
+          if (this.param[i].inspectionItemSubclass == item.name) {
+            switch (item.name) {
+              case "鐜娓╁害":
+                this.param[i].insResult.v.v = 1;
+                this.param[i].insValue = [];
+                item.arr.forEach((insValue) => {
+                  this.param[i].insValue.push({
+                    i: i,
+                    r: 0,
+                    c: 0,
+                    v: {
+                      v: insValue.value0,
+                    },
+                  });
+                });
+                break;
+              case "瀵肩嚎娓╁害":
+                this.param[i].insResult.v.v = 1;
+                this.param[i].insValue = [];
+                item.arr.forEach((insValue) => {
+                  this.param[i].insValue.push({
+                    i: i,
+                    r: 0,
+                    c: 0,
+                    w: insValue.value1,
+                    v: {
+                      v: insValue.value0,
+                    },
+                  });
+                });
+                break;
+              case "鑰愬紶娓╁害":
+                this.param[i].insValue = [];
+                item.arr.forEach((insValue) => {
+                  this.param[i].insValue.push({
+                    i: i,
+                    r: 0,
+                    c: 0,
+                    w: insValue.value1,
+                    v: {
+                      v: insValue.value0,
+                    },
+                  });
+                });
+                this.param[i].insResult.v.v = item.insResult;
+                break;
+              case "鎺ョ画娓╁害":
+                this.param[i].insValue = [];
+                item.arr.forEach((insValue) => {
+                  this.param[i].insValue.push({
+                    i: i,
+                    r: 0,
+                    c: 0,
+                    w: insValue.value1,
+                    v: {
+                      v: insValue.value0,
+                    },
+                  });
+                });
+                this.param[i].insResult.v.v = item.insResult;
+                break;
+            }
+          }
+        }
+      });
+      // 淇濆瓨鏁版嵁
+      let currentId = null;
+      for (let i in this.param) {
+        if (this.param[i].inspectionItemSubclass == item.name) {
+          currentId = i;
+        }
+      }
+      if (isDelete) {
+        this.saveInsContext(currentId, true);
+      } else {
+        this.saveInsContext(currentId);
+      }
+    },
+    // 鐑惊鐜�---缁撴潫
+    // 鍗曟牴鍨傜洿鐕冪儳---寮�濮�
+    singleRootVertical() {
+      let obj = this.currentSample.insProduct.filter((m) =>
+        m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳")
+      )[0];
+      this.singleRootVerticalInfo.arr = this.currentSample.insProduct.filter(
+        (m) => m.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳")
+      );
+      if (obj) {
+        let tell = obj.tell;
+        this.singleRootVerticalInfo.num = Number(
+          tell.split(",")[1].replace("鏍�", "")
+        );
+        this.singleRootVerticalInfo.model = obj.model;
+        this.singleRootVerticalInfo.methodName = obj.methodS;
+        this.singleRootVerticalInfo.arr.forEach((a) => {
+          this.$set(a, "value", []);
+          a.value = [];
+          for (let i = 0; i < this.singleRootVerticalInfo.num; i++) {
+            this.$set(a.value, i, "");
+            if (a.insProductResult) {
+              let valueList = JSON.parse(a.insProductResult.insValue);
+              if (valueList.length > 0) {
+                this.$set(a.value, i, valueList[i].v);
+              }
+            }
+          }
+          this.$set(a, "resValue", a.lastValue);
+          this.$set(a, "insResult", a.insResult);
+        });
+        this.getEquipOptions(true, obj.id);
+      }
+    },
+    changeSingleRootVertical(value, item) {
+      let arr = item.value.filter((m) => m !== "");
+      if (
+        item.inspectionItemSubclass == "涓婃敮鏋朵笅缂樺拰鐐寲閮ㄥ垎涓婅捣鐐逛箣闂寸殑璺濈"
+      ) {
+        // 姹傛渶灏忓��
+        item.resValue = Math.min(...arr);
+      } else {
+        // 姹傛渶澶у��
+        item.resValue = Math.max(...arr);
+      }
+      // 淇濆瓨鏈�缁堝��
+      this.param[item.id].resValue = {
+        i: item.id,
+        v: {
+          v: item.resValue,
+        },
+      };
+      // 淇濆瓨妫�楠屽��
+      this.param[item.id].insValue = [];
+      item.value.forEach((a) => {
+        let obj = {
+          i: item.id,
+          v: {
+            v: a,
+          },
+        };
+        this.param[item.id].insValue.push(obj);
+      });
+      let ask = item.ask;
+      if (ask) {
+        if (ask.includes("锝�")) {
+          ask = ask.replace("锝�", "~");
+        }
+        if (ask.includes("锛�")) {
+          ask = ask.replace("锛�", ">");
+        }
+        if (ask.includes("锛�")) {
+          ask = ask.replace("锛�", "<");
+        }
+        if (ask.includes("=")) {
+          let val = ask.replace("=", "");
+          item.insResult = item.resValue == Number(val) ? 1 : 0;
+        } else if (ask.includes("鈮�")) {
+          let val = ask.replace("鈮�", "");
+          item.insResult =
+            item.resValue == Number(val) || item.resValue > Number(val) ? 1 : 0;
+        } else if (ask.includes("鈮�")) {
+          let val = ask.replace("鈮�", "");
+          item.insResult =
+            item.resValue == Number(val) || item.resValue < Number(val) ? 1 : 0;
+        } else if (ask.includes("<")) {
+          let val = ask.replace("<", "");
+          item.insResult = item.resValue < Number(val) ? 1 : 0;
+        } else if (ask.includes(">")) {
+          let val = ask.replace(">", "");
+          item.insResult = item.resValue > Number(val) ? 1 : 0;
+        }
+        // 淇濆瓨缁撹
+        this.param[item.id].insResult = {
+          i: item.id,
+          v: {
+            v: item.insResult,
+          },
+        };
+        // 杩涜鏁版嵁鐨勪繚瀛�
+        this.saveInsContext(item.id);
+      }
+    },
+    // 鍗曟牴鍨傜洿鐕冪儳---缁撴潫
+    // 淇濆瓨婀垮害銆佹俯搴︽暟鎹�
+    subOtherForm(m, type) {
+      // let ids = []
+      // for (let i in this.param) {
+      //   ids.push(i)
+      // }
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.write,
+          {
+            [type]: Number(m),
+            insOrderId: this.currentSample.insOrderId,
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+            noQs: true,
+          }
+        )
+        .then((res) => {
+          if (res.code == 201) return;
+          this.$message.success("淇濆瓨鎴愬姛");
+        });
+    },
+    // 鏉冮檺鑾峰彇
+    getPower() {
+      let power = JSON.parse(sessionStorage.getItem("power"));
+      let fileDel = false;
+      let fileAdd = false;
+      let collected = false;
+      let temDataAcquisition = false;
+      for (var i = 0; i < power.length; i++) {
+        if (power[i].menuMethod == "uploadFile") {
+          fileAdd = true;
+        }
+        if (power[i].menuMethod == "delfile") {
+          fileDel = true;
+        }
+        if (power[i].menuMethod == "isItAllowedToModifyTheCollectedValues") {
+          collected = true;
+        }
+        if (power[i].menuMethod == "temDataAcquisition") {
+          temDataAcquisition = true;
+        }
+      }
+      if (!fileDel) {
+        this.componentData0.do.splice(1, 1);
+      }
+      this.fileAdd = fileAdd;
+      this.collected = collected;
+      this.temDataAcquisition = temDataAcquisition;
+    },
+    uploadSample() {
+      this.$axios
+        .post(this.$api.insOrderPlan.doInsOrder, {
+          id: this.id,
+          laboratory: this.sonLaboratory,
+        })
+        .then(async (res) => {
+          this.sampleProduct = res.data.sampleProduct;
+        });
+    },
+    // 鏍规嵁绫诲瀷銆佷换鍔d銆佸疄楠屽鏉ヨ幏鍙栨牱鍝佺殑妫�楠岄」淇℃伅
+    async getCurrentProduct(id, type) {
+      this.tableLoading = true;
+      let res = await this.$axios.post(
+        this.$api.insOrderPlan.getInsProduct +
+          "?id=" +
+          id +
+          "&type=" +
+          type +
+          "&laboratory=" +
+          this.sonLaboratory
+      );
+      this.tableLoading = false;
+      console.log("getCurrentProduct-->", res.data);
+      return res.data;
+    },
+    handleChangeBushing(row, column, event) {
+      this.currentBushing = row;
+      this.fiberOpticTape = [];
+      this.currentFiberOpticTape = null;
+      this.fiberOptic = [];
+      this.currentFiberOptic = null;
+      if (row.fiber && row.fiber.length > 0) {
+        // 鐩存帴閰嶇疆鍏夌氦
+        this.fiberOptic = row.fiber;
+      } else if (row.fibers && row.fibers.length > 0) {
+        // 閰嶇疆鍏夌氦甯﹀悗锛屽啀閰嶇疆鍏夌氦
+        this.fiberOpticTape = row.fibers;
+      }
+      this.bushingVisible = false;
+      this.currentKey0 = row.index;
+    },
+    async handleChangeOptic(row, column, event) {
+      this.currentFiberOptic = row;
+      this.currentFiberOptic.productList.forEach((a) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      this.fiberOpticVisible = false;
+      let list = await this.getCurrentProduct(row.id, 2);
+      this.getTableLists0(list);
+      this.currentKey2 = row.index;
+    },
+    async handleChangeTape(row, column, event) {
+      this.currentFiberOpticTape = row;
+      this.param = {};
+      this.fiberOptic = [];
+      this.currentFiberOptic = null;
+      this.currentFiberOpticTape.productList.forEach((a) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      this.fiberOpticTapeVisible = false;
+      let list = await this.getCurrentProduct(row.id, 1);
+      this.getTableLists0(list);
+      if (row.fiber && row.fiber.length > 0) {
+        // 閰嶇疆鍏夌氦
+        this.fiberOptic = row.fiber;
+      }
+      this.currentKey1 = row.index;
+    },
+    // 鍒囨崲鏍峰搧
+    async handleChangeSample(row, column, event) {
+      // 鍒濆鍖栨暟鎹�
+      this.param = {};
+      // 娓呯┖鍏夌氦閰嶇疆鐩稿叧鏁版嵁
+      this.fiberOpticTape = [];
+      this.currentFiberOpticTape = null;
+      this.fiberOptic = [];
+      this.currentFiberOptic = null;
+      this.bushing = [];
+      this.currentBushing = null;
+      this.sampleVisible = false;
+      this.filterSampleCode = null;
+      this.sampleProduct = JSON.parse(
+        JSON.stringify(this.fileterSampleProducts)
+      );
+      // 璧嬪�兼牱鍝�
+      this.currentSample = this.HaveJson(row);
+      let list = await this.getCurrentProduct(row.id, 0);
+      // 璧嬪�兼牱鍝佹楠岄」
+      this.currentSample.insProduct = this.HaveJson(list);
+      // 鍒濆鍖栧悗绔紶鍙�
+      this.param = {};
+      this.changeType = 0;
+      this.currentSample.insProduct.forEach((a, j) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      // 鑾峰彇濂楃,鍏夌氦甯�,鍏夌氦鏁版嵁
+      this.getReportModel(row.id);
+      let bushing = this.currentSample.bushing;
+      if (bushing && bushing.length > 0) {
+        this.bushing = bushing;
+      }
+      // 澶勭悊椤甸潰鍒楄〃鏁版嵁
+      this.getTableLists();
+      // this.currentKey = row.index
+      this.currentKey = this.sampleProduct.findIndex((m) => m.id == row.id) + 1;
+      this.currentTab = null;
+      // 鍚戝绾跨▼鍘讳繚瀛橀〉闈㈠垪琛ㄦ暟鎹�,鍚庣浼犲弬,褰撳墠妯℃澘淇℃伅
+      this.worker.postMessage(
+        JSON.stringify({
+          modelType: this.sampleProduct[0].model,
+          type: "saveData",
+          tableList: this.tableList,
+          param: this.param,
+          currentTable: this.currentTable,
+        })
+      );
+    },
+    // 鏉惧绠$殑鍒ゆ柇\濡傛灉changeType涓嶇瓑浜�3閭d箞椤甸潰涓嶅睍绀烘澗濂楃妫�楠岄」
+    handleCasing(inspectionItem) {
+      if (this.changeType != 3) {
+        if (inspectionItem.includes("鏉惧绠�")) {
+          return false;
+        } else {
+          return true;
+        }
+      } else {
+        return true;
+      }
+    },
+    // 鑾峰彇濂楃,鍏夌氦甯�,鍏夌氦鏁版嵁
+    getReportModel(id) {
+      if (this.PROJECT != "妫�娴嬩腑蹇�") {
+        return;
+      }
+      this.getReportModelLoading = true;
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.getReportModel +
+            "?sampleId=" +
+            id +
+            "&sonLaboratory=" +
+            this.sonLaboratory,
+          {}
+        )
+        .then((res) => {
+          this.getReportModelLoading = false;
+          this.fibers = res.data["鍏夌氦甯�"];
+          this.fiber = res.data["鍏夌氦"];
+          this.casing = res.data["濂楃"];
+        });
+    },
+    // 濂楃,鍏夌氦甯�,鍏夌氦绛夊垏鎹�,瀵瑰簲鍘熷璁板綍妯℃澘涔熻鍒囨崲
+    async handleChange(m, type) {
+      if (this.fiber && this.fiber.length > 0) {
+        const fiber = this.fiber.find((ele) => ele.id == m);
+        if (fiber) {
+          this.insFibersId = fiber.insFibersId;
+        }
+      }
+      this.changeType = type;
+      if (m) {
+        // 鑾峰彇妫�楠岄」
+        let list = await this.getCurrentProduct(m, type);
+        if (list.length > 0) {
+          // 鍒濆鍖栧悗绔紶鍙�
+          this.param = {};
+          list.forEach((a) => {
+            this.param[a.id] = {
+              insValue: [],
+              comValue: [],
+              resValue: null,
+              equipValue: [],
+              equipName: [],
+              insResult: null,
+            };
+          });
+          // 椤甸潰鍒楄〃鏁版嵁澶勭悊
+          this.getTableLists0(list);
+          // 鑾峰彇濂楃,鍏夌氦甯�,鍏夌氦鏁版嵁
+          this.getReportModel(this.currentSample.id);
+          // 鍚戝绾跨▼淇濆瓨鏁版嵁
+          this.worker.postMessage(
+            JSON.stringify({
+              modelType: this.sampleProduct[0].model,
+              type: "saveData",
+              tableList: this.tableList,
+              param: this.param,
+              currentTable: this.currentTable,
+              bushing: m,
+            })
+          );
+        } else {
+          this.tableLists = [];
+          this.tableList = [];
+          this.$message.error("妫�楠岄」涓虹┖");
+        }
+      }
+    },
+    // 鏀瑰彉浠诲姟
+    handleChangeTask(row) {
+      if (row.length > 0) this.id = row[0].id;
+      this.taskVisible = false;
+    },
+    // 瀛楀吀鑾峰彇淇℃伅
+    getTypeDicts() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "绱ф�ョ▼搴�",
+        })
+        .then((res) => {
+          let data = res.data;
+          data.forEach((ele) => {
+            if (ele.value === "0") {
+              ele.type = "success";
+            } else if (ele.value === "1") {
+              ele.type = "warning";
+            } else if (ele.value === "2") {
+              ele.type = "danger";
+            }
+          });
+          this.urgentList = data;
+          this.componentData.tagField.type.select = data;
+        });
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "杞借嵎",
+        })
+        .then((res) => {
+          this.loadList = res.data;
+        });
+    },
+    // 瀛楀吀鑾峰彇淇℃伅
+    getInsStateDicts() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "妫�楠屼换鍔$姸鎬�",
+        })
+        .then((res) => {
+          let data = res.data;
+          data.forEach((ele) => {
+            //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃
+            if (["2", "5"].includes(ele.value)) {
+              ele.type = "success";
+            } else if (["1", "3"].includes(ele.value)) {
+              ele.type = "warning";
+            } else if (["0", "4"].includes(ele.value)) {
+              ele.type = "danger";
+            }
+          });
+          this.typeList = data;
+          this.componentData.tagField.insState.select = data;
+        });
+    },
+    // 瀛楀吀鑾峰彇淇℃伅
+    getComparisonList() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "琛ㄦ牸鍧愭爣杞崲",
+        })
+        .then((res) => {
+          let data = res.data;
+          this.comparisonList = data;
+        });
+    },
+    // 鑾峰彇妫�楠屽�间负涓嬫媺鏃剁殑涓嬫媺鍒楄〃
+    selectEnumByCategoryOfSelect(val) {
+      this.enumList = [];
+      if (val === undefined || val === null) {
+        return;
+      }
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: val,
+        })
+        .then((res) => {
+          this.enumList = res.data;
+        });
+    },
+    tableRowClassName({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    // 澶勭悊椤甸潰鍒楄〃鏁版嵁--鍘婚噸,鐢熸垚妫�楠屾ā鏉垮垏鎹㈠垪琛�
+    getTableLists() {
+      const mySet1 = new Set();
+      this.tableLists = this.currentSample.insProduct.filter((m) => {
+        let num0 = mySet1.size;
+        if (m.templateId != null && m.template != null) {
+          try {
+            mySet1.add(
+              JSON.stringify({
+                template: m.template,
+                templateId: m.templateId,
+              })
+            );
+          } catch (error) {
+            console.log(222, error);
+          }
+        }
+        let num1 = mySet1.size;
+        if (num1 > num0) {
+          return m;
+        }
+      });
+      console.log(111, this.tableLists);
+      if (this.tableLists && this.tableLists.length > 0) {
+        this.tableList = null;
+        this.tableList = [this.tableLists[0]];
+        this.currentTable = this.tableLists[0].templateId;
+        // 澶勭悊椤甸潰鍒楄〃鏁版嵁
+        this.handleTableData();
+      }
+    },
+    // 鍏夌氦閰嶇疆鐩稿叧妯℃澘table鍒楄〃
+    getTableLists0(list) {
+      const mySet1 = new Set();
+      this.tableLists = list.filter((m) => {
+        let num0 = mySet1.size;
+        if (m.templateId != null && m.template != null) {
+          try {
+            mySet1.add(
+              JSON.stringify({
+                template: m.template,
+                templateId: m.templateId,
+              })
+            );
+          } catch (error) {
+            console.log(333, error);
+          }
+        }
+        let num1 = mySet1.size;
+        if (num1 > num0) {
+          return m;
+        }
+      });
+      if (this.tableLists && this.tableLists.length > 0) {
+        this.tableList = null;
+        this.tableList = [this.tableLists[0]];
+        this.currentTable = this.tableLists[0].templateId;
+        this.currentSample.insProduct = this.HaveJson(list);
+        // 澶勭悊椤甸潰鍒楄〃鏁版嵁
+        this.handleTableData();
+      }
+    },
+    // 澶勭悊椤甸潰鍒楄〃鏁版嵁
+    handleTableData() {
+      this.excelMethodList = []; //excel鍑芥暟鍒楄〃
+      this.widthList = this.tableList[0].style.columnlen; //椤甸潰瀹藉害--鏍规嵁妯℃澘鏉ョ殑
+      // 鐗规畩妫�楠岄」璁惧鏁版嵁娓呯┖
+      this.equipForm = {
+        value0: null,
+        code0: null,
+        value1: null,
+        code1: null,
+      };
+      // 娓╁害寰幆妫�楠屽師濮嬭褰�--寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists.find((m) => m.templateId == this.currentTable)
+          .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�"
+      ) {
+        // 瀵硅姹傚�艰繘琛屾媶鍒嗗鐞�,杩涜�屽緱鍑洪〉闈㈠唴瀹�
+        let ask = this.currentSample.insProduct.filter(
+          (m) => m.inspectionItem == "娓╁害寰幆"
+        )[0].ask;
+        let askList = ask.split(";");
+        // 鑾峰彇寰幆娆℃暟
+        this.numOptions = [];
+        for (let i = 1; i <= askList[askList.length - 1]; i++) {
+          this.numOptions.push({
+            value: i,
+            label: i,
+          });
+        }
+        let mySet1 = new Set();
+        askList.forEach((m, i) => {
+          if (i < askList.length - 1) {
+            mySet1.add(m.split(",")[0].replace("鈩�", ""));
+          }
+        });
+        // 鑾峰彇娓╁害鐐瑰垪琛�
+        this.temperatureOptions = [];
+        mySet1.forEach((m) => {
+          this.temperatureOptions.push({
+            value: String(m),
+            label: m,
+          });
+        });
+        // 鍒濆鍖栭〉闈㈡暟鎹�
+        this.wareTableDataLoading = true;
+        this.$axios
+          .post(
+            this.$api.deviceScope.temDataAcquisition2,
+            {
+              entrustCode: this.insOrder.entrustCode,
+              sampleCode: this.currentSample.sampleCode,
+              model: this.currentSample.model,
+            },
+            {
+              headers: {
+                "Content-Type": "application/json",
+              },
+              noQs: true,
+            }
+          )
+          .then((res) => {
+            this.wareFormChange();
+          });
+      }
+      // 娓╁害寰幆妫�楠屽師濮嬭褰�---缁撴潫
+      // 鐑惊鐜楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        (this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("鐑惊鐜�") ||
+          this.tableLists
+            .find((m) => m.templateId == this.currentTable)
+            .templateName.includes("娓╁崌璇曢獙"))
+      ) {
+        // 鏍规嵁瑕佹眰鍊兼媶鍒嗘暟鎹�,寰楀埌椤甸潰娓叉煋鐨勪俊鎭�
+        // let ask = this.currentSample.insProduct[0].ask
+        let ask = this.currentSample.insProduct.filter(
+          (m) => m.inspectionItem == "鐑惊鐜�" || m.inspectionItem == "娓╁崌璇曢獙"
+        )[0].ask;
+        let askList = ask.split(";");
+        this.thermalCyclingInfo.max = Number(askList[askList.length - 1]);
+        let arr = [];
+        for (let i = 0; i < askList.length - 1; i++) {
+          arr.push(askList[i].split(",")[0]);
+        }
+        arr = arr.map((item) => {
+          let obj = {};
+          obj.name = item;
+          if (obj.insResult == null || obj.insResult == undefined) {
+            obj.arr = [
+              {
+                value0: "",
+                value1: "",
+              },
+            ];
+            obj.insResult = null;
+          }
+          return obj;
+        });
+        this.thermalCyclingInfo.arr = arr;
+        // 鍒濆鍖栭〉闈㈡暟鎹�
+        this.thermalCyclingChange();
+      }
+      // 鐑惊鐜楠屽師濮嬭褰�---缁撴潫
+      // 鍗曟牴鍨傜洿鐕冪儳妫�楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("鍗曟牴鍨傜洿鐕冪儳")
+      ) {
+        this.singleRootVertical();
+      }
+      // 鍗曟牴鍨傜洿鐕冪儳妫�楠屽師濮嬭褰�---缁撴潫
+      // 寮у瀭妫�楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("寮у瀭")
+      ) {
+        this.getSageInfo();
+      }
+      // 寮у瀭妫�楠屽師濮嬭褰�---缁撴潫
+
+      // 鏋剁┖鍦扮嚎搴斿姏搴斿彉妫�楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("鏋剁┖鍦扮嚎搴斿姏搴斿彉")
+      ) {
+        this.getStressStrainInfo();
+      }
+      // 鏋剁┖鍦扮嚎搴斿姏搴斿彉妫�楠屽師濮嬭褰�---缁撴潫
+
+      // 闃叉尟閿ゅ姛鐜囩壒鎬ф楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("闃叉尟閿ゅ姛鐜囩壒鎬�")
+      ) {
+        this.getPowerCharacteristicsInfo();
+      }
+      // 闃叉尟閿ゅ姛鐜囩壒鎬ф楠屽師濮嬭褰�---缁撴潫
+      // 鐤插姵璇曢獙妫�楠屽師濮嬭褰�---寮�濮�
+      if (
+        this.tableLists.find((m) => m.templateId == this.currentTable) &&
+        this.tableLists
+          .find((m) => m.templateId == this.currentTable)
+          .templateName.includes("鐤插姵璇曢獙妫�楠屽師濮嬭褰�")
+      ) {
+        this.getFatigueTestInfo();
+      }
+      // 鐤插姵璇曢獙妫�楠屽師濮嬭褰�---缁撴潫
+      // 鏈寰幆涓昏鍋氶〉闈㈡覆鏌撳眰闈㈢殑澶勭悊--鍗曞厓鏍煎悎骞堕澶勭悊
+      this.tableList.forEach((a) => {
+        let mcList = [];
+        a.template.forEach((b) => {
+          if (
+            b.v.mc != undefined &&
+            b.v.mc.cs != undefined &&
+            b.v.mc.rs != undefined
+          ) {
+            mcList.push(b);
+          }
+        });
+        let count = 0;
+        mcList.forEach((b) => {
+          for (var c in a.template) {
+            for (var i = 0; i < b.v.mc.cs; i++) {
+              for (var i2 = 0; i2 < b.v.mc.rs; i2++) {
+                if (
+                  a.template[c].c === b.c + i &&
+                  a.template[c].r === b.r + i2
+                ) {
+                  let bb = this.HaveJson(b);
+                  a.template[c].v.v = bb.v.v;
+                  a.template[c].v.ps = bb.v.ps;
+                  a.template[c].v.fc = bb.v.fc;
+                  a.template[c].v.fs = bb.v.fs;
+                  a.template[c].v.ht = bb.v.ht;
+                  a.template[c].mc = count;
+                  break;
+                }
+              }
+            }
+          }
+          count++;
+        });
+      });
+      // 鏈寰幆涓昏鏄帶鍒跺悎骞�,浠ュ強鎺у埗妫�楠岄」淇℃伅鏄惁灞曠ず鍑烘潵,浠ヤ究鍚庣画妫�楠�
+      this.tableList.forEach((a) => {
+        let dels = new Set(); //闇�瑕佸垹闄ょ殑琛�
+        let ids = []; //鎵�鏈夋楠岄」鐨刬d
+        let set3 = new Set();
+        a.template.forEach((b) => {
+          let size1 = set3.size;
+          let size2 = set3.add(b.r).size;
+          if (size1 < size2) {
+            let str = "";
+            let count4 = 0;
+            let isThree = 0;
+            a.template.forEach((c) => {
+              // 鑾峰彇鍒� 妫�楠岄」鍒嗙被+妫�楠岄」+妫�楠屽瓙椤圭殑鎷兼帴,濡傛灉妯℃澘閲岀殑淇℃伅璺熸帴鍙h繑鍥炵殑妫�楠岄」淇℃伅鑳藉鍖归厤鍒欏睍绀哄嚭鏉�
+              if (b.r === c.r) {
+                if (
+                  c.v.ps != undefined &&
+                  c.v.ps.value === "妫�楠岄」鍒嗙被" &&
+                  count4 === 0
+                ) {
+                  // 涓夌骇鍒嗙被
+                  isThree = 1;
+                } else if (
+                  c.v.ps != undefined &&
+                  c.v.ps.value === "妫�楠岄」" &&
+                  count4 === 0
+                ) {
+                  // 浜岀骇鍒嗙被
+                  isThree = 0;
+                }
+                if (isThree == 0) {
+                  if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」") {
+                    if (count4 === 0) {
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (
+                    c.v.ps != undefined &&
+                    c.v.ps.value === "妫�楠屽瓙椤�"
+                  ) {
+                    if (count4 === 1) {
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  }
+                } else if (isThree == 1) {
+                  if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」鍒嗙被") {
+                    if (count4 === 0) {
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」") {
+                    if (count4 === 1) {
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (
+                    c.v.ps != undefined &&
+                    c.v.ps.value === "妫�楠屽瓙椤�"
+                  ) {
+                    if (count4 === 2) {
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  }
+                }
+              }
+            });
+            if (str != "") {
+              let count2 = 0;
+              for (let i in this.currentSample.insProduct) {
+                let inspectionItemClass =
+                  this.currentSample.insProduct[i].inspectionItemClass ==
+                    null ||
+                  this.currentSample.insProduct[i].inspectionItemClass ==
+                    undefined
+                    ? ""
+                    : this.currentSample.insProduct[i].inspectionItemClass;
+                let inspectionItem =
+                  this.currentSample.insProduct[i].inspectionItem == null ||
+                  this.currentSample.insProduct[i].inspectionItem == undefined
+                    ? ""
+                    : this.currentSample.insProduct[i].inspectionItem;
+                let inspectionItemSubclass =
+                  this.currentSample.insProduct[i].inspectionItemSubclass ==
+                    null ||
+                  this.currentSample.insProduct[i].inspectionItemSubclass ==
+                    undefined
+                    ? ""
+                    : this.currentSample.insProduct[i].inspectionItemSubclass;
+                // 濡傛灉鐩哥瓑,閭d箞璇存槑鎵惧埌浜�,骞朵笖鎶奿d瀛樿捣鏉�,鍚庣画妫�楠岄」涔熶細鍦ㄩ〉闈腑鏄剧ず鍑烘潵
+                const itemStr =
+                  inspectionItemClass + inspectionItem + inspectionItemSubclass;
+                if (
+                  this.currentSample.insProduct[i].templateId ===
+                    a.templateId &&
+                  itemStr === str &&
+                  !(this.changeType != 3 && itemStr.includes("鏉惧绠�"))
+                ) {
+                  ids.push({
+                    r: b.r,
+                    id: this.currentSample.insProduct[i].id,
+                    product: this.currentSample.insProduct[i],
+                  });
+                  break;
+                }
+                count2++;
+              }
+              if (count2 == this.currentSample.insProduct.length) {
+                dels.add(b.r);
+              }
+            }
+          }
+        });
+        // 鎿嶄綔鍒犻櫎
+        dels.forEach((del) => {
+          for (let b = 0; b < a.template.length; b++) {
+            if (a.template[b].r === del) {
+              a.template.splice(b, 1);
+              b -= 1;
+            }
+          }
+        });
+        // 鎿嶄綔璧嬪��--涓昏璧嬪�煎崟浣�,璇曢獙鏂规硶绛変俊鎭�
+        ids.forEach((id) => {
+          for (let b = 0; b < a.template.length; b++) {
+            if (a.template[b].r === id.r) {
+              a.template[b].i = id.id;
+              if (
+                a.template[b].v.ps != undefined &&
+                a.template[b].v.ps.value === "鍗曚綅"
+              ) {
+                a.template[b].v.v = id.product.unit;
+              }
+              if (
+                a.template[b].v.ps != undefined &&
+                (a.template[b].v.ps.value === "璇曢獙鏂规硶" ||
+                  a.template[b].v.ps.value === "妫�娴嬫柟娉�")
+              ) {
+                a.template[b].v.v = id.product.methodS;
+              }
+            }
+          }
+        });
+        let set2 = new Set();
+        // 鍚堝苟鐨勬暟鎹鐞�,cs  rs  浠h〃鍚堝苟鐨勬暟閲�
+        a.template.forEach((b) => {
+          let size1 = set2.size;
+          let size2 = set2.add(b.mc).size;
+          if (b.mc != undefined && size1 < size2) {
+            b.v.mc.rs = 0;
+            b.v.mc.cs = 0;
+            a.template.forEach((c) => {
+              if (b.mc === c.mc) {
+                if (b.r === c.r) {
+                  b.v.mc.cs += 1;
+                }
+                if (b.c === c.c) {
+                  b.v.mc.rs += 1;
+                }
+              }
+            });
+          }
+        });
+      });
+      // 鏈寰幆涓昏鏄鍚庣浼犲弬杩涜鍒濆鍖�,鏍峰紡閫昏緫淇敼
+      this.tableList.forEach((a) => {
+        let arrs = [];
+        let set = new Set();
+        let count1 = 0;
+        let conclusionList = []; //缁撹鍒楄〃
+        let finalList = []; //鏈�缁堝�煎垪琛�
+        // 缁撹涓庢渶缁堝�煎湪杩欓噷涓�涓�瀵瑰簲,浠ヤ笅涓や釜鍒楄〃闀垮害鑲畾鏄竴鏍风殑,濡傛灉鏈変笉涓�鏍�,閭d箞澶氬崐鏄ā鏉块厤缃緱闂
+        conclusionList = a.template.filter(
+          (n) => n.v.ps != undefined && n.v.ps.value === "缁撹"
+        ); //缁撹鍒楄〃
+        finalList = a.template.filter(
+          (n) => n.v.ps != undefined && n.v.ps.value === "鏈�缁堝��"
+        ); //鏈�缁堝�煎垪琛�
+        a.template.forEach((b) => {
+          if (
+            b.v.ps != undefined &&
+            b.v.ps.value === "搴忓彿" &&
+            (b.v.mc == undefined || Object.keys(b.v.mc).length === 4)
+          ) {
+            // 瀵瑰簭鍙疯繘琛岃祴鍊�
+            count1++;
+            b.v.v = count1;
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "瑕佹眰鍊�") {
+            // 瀵硅姹傚�艰繘琛岃祴鍊�
+            b.v.v = this.getAsk(b.i);
+          }
+          // 瀵归〉闈㈢殑鍜岀粰鍚庣浼犲弬鐨勬楠屽��,璁$畻鍊�,璁惧缂栫爜,璁惧鍚嶇О,鏈�缁堝��,缁撹杩涜鍒濆鍖�
+          if (
+            b.v.ps != undefined &&
+            typeof b.v.ps.value === "string" &&
+            b.v.ps.value.includes("妫�楠屽��")
+          ) {
+            this.$set(b.v, "v", "");
+            // b.v.v = ''
+            b.u = "";
+            b.i && this.param[b.i] && this.param[b.i].insValue.push(b);
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "璁$畻鍊�") {
+            this.$set(b.v, "v", "");
+            // b.v.v = ''
+            b.i && this.param[b.i] && this.param[b.i].comValue.push(b);
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "璁惧缂栫爜") {
+            // b.v.v = ''
+            this.$set(b.v, "v", "");
+            b.i && this.param[b.i] && this.param[b.i].equipValue.push(b);
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "璁惧鍚嶇О") {
+            this.$set(b.v, "v", "");
+            // b.v.v = ''
+            b.i && this.param[b.i] && this.param[b.i].equipName.push(b);
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "鏈�缁堝��") {
+            // b.v.v = ''
+            this.$set(b.v, "v", "");
+            if (
+              b.i !== undefined &&
+              this.param[b.i] &&
+              !this.param[b.i].resValue
+            ) {
+              this.param[b.i].resValue = b;
+            }
+          }
+          if (b.v.ps != undefined && b.v.ps.value === "缁撹") {
+            if (
+              b.i !== undefined &&
+              this.param[b.i] &&
+              !this.param[b.i].insResult
+            ) {
+              this.param[b.i].insResult = b;
+              conclusionList.forEach((n, i) => {
+                if (n.r == b.r && n.c == b.c) {
+                  b.v.f = `(${
+                    this.comparisonList.find((j) => j.value == finalList[i].c)
+                      .label
+                  }${finalList[i].r + 1})`;
+                }
+              });
+            }
+          }
+          set.add(b.r);
+          // 濡傛灉妯℃澘鍒楄〃鐨勫嚱鏁板瓨鍦�,閭d箞鍔犲叆鍒癳xcel鍑芥暟鍒楄〃閲岄潰
+          if (b.v.f) {
+            this.excelMethodList.push(b);
+          }
+        });
+        // 浠ヤ笅鏄牱寮忓鐞嗛�昏緫
+        set = Array.sort(set);
+        set.forEach((b) => {
+          let arr = [];
+          a.template.forEach((c) => {
+            if (c.r === b) {
+              arr.push(c);
+            }
+          });
+          arrs.push(arr);
+        });
+        a.arr = arrs;
+        this.tableWidth = 0;
+        for (let i = 0; i < arrs[0].length; i++) {
+          this.tableWidth +=
+            a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i];
+        }
+      });
+      // 鏈寰幆涓昏鏄椤甸潰鍙婂悗绔紶鍙傝繘琛屽垵濮嬪寲璧嬪��
+      this.currentSample.insProduct.forEach(async (a) => {
+        try {
+          // 璁$畻鍊艰祴鍊�
+          let comValue = JSON.parse(a.insProductResult.comValue);
+          for (var i = 0; i < comValue.length; i++) {
+            // this.param[a.id].comValue[i].v.v = this.toFixed(comValue[i].v,this.param[a.id].comValue[i].v.ct)
+            if (
+              this.param[a.id].comValue.find(
+                (m) => m.c == comValue[i].c && m.r == comValue[i].r
+              )
+            ) {
+              this.param[a.id].comValue.find(
+                (m) => m.c == comValue[i].c && m.r == comValue[i].r
+              ).v.v = this.toFixed(
+                comValue[i].v,
+                this.param[a.id].comValue.find(
+                  (m) => m.c == comValue[i].c && m.r == comValue[i].r
+                ).v.ct
+              );
+            } else if (!comValue[i].c || !comValue[i].r) {
+              this.param[a.id].comValue[i].v.v = this.toFixed(
+                comValue[i].v,
+                this.param[a.id].comValue[i].v.ct
+              );
+            }
+          }
+        } catch (e) {}
+        try {
+          // 妫�楠屽�艰祴鍊�
+          let insValue = JSON.parse(a.insProductResult.insValue);
+          for (let i = 0; i < insValue.length; i++) {
+            if (
+              this.param[a.id].insValue.find(
+                (m) => m.c == insValue[i].c && m.r == insValue[i].r
+              )
+            ) {
+              this.param[a.id].insValue.find(
+                (m) => m.c == insValue[i].c && m.r == insValue[i].r
+              ).v.v = this.toFixed(
+                insValue[i].v,
+                this.param[a.id].insValue.find(
+                  (m) => m.c == insValue[i].c && m.r == insValue[i].r
+                ).v.ct
+              );
+              this.param[a.id].insValue.find(
+                (m) => m.c == insValue[i].c && m.r == insValue[i].r
+              ).u = insValue[i].u;
+              // this.param[a.id].insValue[i].v.v = insValue[i].v
+              // this.param[a.id].insValue[i].u = insValue[i].u
+            }
+          }
+        } catch (e) {}
+        try {
+          // 璁惧缂栧彿璧嬪��
+          let equipValue = JSON.parse(a.insProductResult.equipValue);
+          if (
+            this.tableLists.find((m) => m.templateId == this.currentTable) &&
+            ((this.tableLists.find((m) => m.templateId == this.currentTable)
+              .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�" &&
+              a.inspectionItem.includes("娓╁害寰幆")) ||
+              a.inspectionItem.includes("鐑惊鐜�") ||
+              a.inspectionItem.includes("娓╁崌璇曢獙") ||
+              a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+              a.inspectionItem.includes("寮у瀭") ||
+              a.inspectionItem.includes("搴斿姏搴斿彉") ||
+              a.inspectionItem.includes("鎸姩鐤插姵") ||
+              a.inspectionItem.includes("鑸炲姩鐤插姵"))
+          ) {
+            // 鐗规畩椤圭洰鍒濆鍖�
+            this.param[a.id].equipValue = [];
+            for (let i = 0; i < equipValue.length; i++) {
+              this.param[a.id].equipValue.push({
+                v: {
+                  v: "",
+                },
+              });
+            }
+          }
+          for (let i = 0; i < equipValue.length; i++) {
+            if (
+              this.tableLists.find((m) => m.templateId == this.currentTable) &&
+              ((this.tableLists.find((m) => m.templateId == this.currentTable)
+                .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�" &&
+                a.inspectionItem.includes("娓╁害寰幆")) ||
+                a.inspectionItem.includes("鐑惊鐜�") ||
+                a.inspectionItem.includes("娓╁崌璇曢獙") ||
+                a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+                a.inspectionItem.includes("寮у瀭") ||
+                a.inspectionItem.includes("搴斿姏搴斿彉") ||
+                a.inspectionItem.includes("鎸姩鐤插姵") ||
+                a.inspectionItem.includes("鑸炲姩鐤插姵"))
+            ) {
+              // 娓╁害寰幆璁惧璧嬪��
+              // this.$set(this.equipForm, `code` + i, equipValue[i].v);
+              // this.param[a.id].equipValue[i].v.v = equipValue[i].v;
+              if (
+                a.inspectionItem.includes("娓╁害寰幆") ||
+                a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳")
+              ) {
+                this.$set(this.equipForm, `code` + i, equipValue[i].v);
+              } else {
+                if (Array.isArray(this.equipForm.code0)) {
+                  this.equipForm.code0.push(equipValue[i].v);
+                } else {
+                  let arr = [];
+                  arr.push(equipValue[i].v);
+                  this.$set(this.equipForm, `code0`, arr);
+                }
+              }
+              this.param[a.id].equipValue[i].v.v = equipValue[i].v;
+            } else {
+              // 鏅�氳澶囪祴鍊�
+              if (a.inspectionItem.includes("闃叉尟閿ゅ姛鐜囩壒鎬�")) {
+                let filterList = this.param[a.id].equipValue.filter(
+                  (m) => m.v.v != "" && m.v.v != null && m.v.v != undefined
+                );
+                if (filterList.length > 0) {
+                  this.param[a.id].equipValue[i].v.v = filterList[0].v.v;
+                } else {
+                  this.param[a.id].equipValue[i].v.v = equipValue[i].v;
+                }
+              } else {
+                this.param[a.id].equipValue[i].v.v = equipValue[i].v;
+              }
+            }
+          }
+        } catch (e) {}
+        try {
+          // 璁惧鍚嶇О璧嬪��
+          let equipName = JSON.parse(a.insProductResult.equipName);
+          if (
+            this.tableLists.find((m) => m.templateId == this.currentTable) &&
+            ((this.tableLists.find((m) => m.templateId == this.currentTable)
+              .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�" &&
+              a.inspectionItem.includes("娓╁害寰幆")) ||
+              a.inspectionItem.includes("鐑惊鐜�") ||
+              a.inspectionItem.includes("娓╁崌璇曢獙") ||
+              a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+              a.inspectionItem.includes("寮у瀭") ||
+              a.inspectionItem.includes("搴斿姏搴斿彉") ||
+              a.inspectionItem.includes("鎸姩鐤插姵") ||
+              a.inspectionItem.includes("鑸炲姩鐤插姵"))
+          ) {
+            // 璁惧鍚嶇О鍒濆鍖�
+            this.param[a.id].equipName = [];
+            for (let i = 0; i < equipName.length; i++) {
+              this.param[a.id].equipName.push({
+                v: {
+                  v: "",
+                },
+              });
+            }
+          }
+          for (let i = 0; i < equipName.length; i++) {
+            if (
+              this.tableLists.find((m) => m.templateId == this.currentTable) &&
+              ((this.tableLists.find((m) => m.templateId == this.currentTable)
+                .templateName == "娓╁害寰幆妫�楠屽師濮嬭褰�" &&
+                a.inspectionItem.includes("娓╁害寰幆")) ||
+                a.inspectionItem.includes("鐑惊鐜�") ||
+                a.inspectionItem.includes("娓╁崌璇曢獙") ||
+                a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳") ||
+                a.inspectionItem.includes("寮у瀭") ||
+                a.inspectionItem.includes("搴斿姏搴斿彉") ||
+                a.inspectionItem.includes("鎸姩鐤插姵") ||
+                a.inspectionItem.includes("鑸炲姩鐤插姵"))
+            ) {
+              // 娓╁害寰幆璧嬪��
+              // this.$set(this.equipForm, `value` + i, equipName[i].v);
+              if (
+                a.inspectionItem.includes("娓╁害寰幆") ||
+                a.inspectionItem.includes("鍗曟牴鍨傜洿鐕冪儳")
+              ) {
+                this.$set(this.equipForm, `value` + i, equipName[i].v);
+              } else {
+                if (Array.isArray(this.equipForm.value0)) {
+                  this.equipForm.value0.push(equipName[i].v);
+                } else {
+                  let arr = [];
+                  arr.push(equipName[i].v);
+                  this.$set(this.equipForm, `value0`, arr);
+                }
+              }
+              // 淇濈暀鏈�鍒濈殑涓�涓澶囧悕绉�
+              this.equipName = JSON.parse(
+                JSON.stringify(this.equipForm.value0)
+              );
+              this.param[a.id].equipName[i].v.v = equipName[i].v;
+            } else {
+              // 鏅�氳澶囧悕绉拌祴鍊�
+              if (a.inspectionItem.includes("闃叉尟閿ゅ姛鐜囩壒鎬�")) {
+                let filterList = this.param[a.id].equipName.filter(
+                  (m) => m.v.v != "" && m.v.v != null && m.v.v != undefined
+                );
+                if (filterList.length > 0) {
+                  this.param[a.id].equipName[i].v.v = equipName[0].v.v;
+                } else {
+                  this.param[a.id].equipName[i].v.v = equipName[i].v;
+                }
+              }
+              this.param[a.id].equipName[i].v.v = equipName[i].v;
+            }
+          }
+        } catch (e) {}
+        try {
+          // 鏈�缁堝�艰祴鍊�
+          this.param[a.id].resValue.v.v = this.toFixed(
+            a.lastValue,
+            this.param[a.id].resValue.v.ct
+          );
+          // 缁撹璧嬪��
+          this.param[a.id].insResult.v.v = a.insResult;
+        } catch (e) {}
+      });
+      // 瀵筫xcel鍑芥暟杩涜澶勭悊
+      this.handleExcelMethod();
+    },
+    // 妫�楠屽�艰緭鍏ュ悗瑙﹀彂鐨勫嚱鏁�
+    changeInput(m, code, n, getDataType) {
+      console.log("---->999");
+      // 涓烘暟閲囧畾涔変竴涓�昏緫鍙傛暟
+      if (getDataType == "getDataType") {
+        this.getDataType = 2;
+      }
+      let currentInsItemId = null; //褰撳墠妫�楠岄」id
+      if (n) {
+        currentInsItemId = JSON.parse(JSON.stringify(n.i));
+        // 闇�瑕佺瀛﹁鏁版硶鐨勫彲浠ヨ蛋杩欓噷
+        if (this.PROJECT === "妫�娴嬩腑蹇�") {
+          if (
+            this.currentSample.insProduct.find(
+              (ele) =>
+                ele.id == currentInsItemId && ele.inspectionItem == "浣撶Н鐢甸樆鐜�"
+            )
+          ) {
+            if (parseFloat(n.v.v) >= 100000) {
+              let num2 = new this.$Big(n.v.v);
+              n.v.v = num2.toExponential();
+            }
+          }
+        }
+        // 瀹氫箟涓�涓嚱鏁版潵楠岃瘉鍒嗘暟鏄惁鏈夋晥
+        function isValidFraction(fraction) {
+          const [numerator, denominator] = fraction.split("/"); // 鍒嗗瓙鍜屽垎姣�
+          return !(!denominator || !numerator);
+        }
+        const isTrue = isValidFraction(n.v.v);
+        if (!isTrue) {
+          n.v.v = n.v.v.replace("/", "");
+        }
+      }
+      try {
+        // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+        this.worker.postMessage(
+          JSON.stringify({
+            code: code,
+            tableList: this.tableList,
+            excelMethodList: this.excelMethodList,
+            comparisonList: this.comparisonList,
+            currentSample: this.currentSample,
+            PROJECT: this.PROJECT,
+            param: this.param,
+            currentTable: this.currentTable,
+            getDataTypeId: this.getDataTypeId,
+            modelType: this.sampleProduct[0].model,
+            currentInsItem: n,
+          })
+        );
+      } catch (error) {
+        console.log(444, error);
+      }
+
+      // 鐩戝惉 Worker 杩斿洖鐨勭粨鏋�
+      this.worker.onmessage = (event) => {
+        this.result = JSON.parse(event.data);
+        switch (this.result.method) {
+          case "saveInsContext":
+            this.$nextTick(() => {
+              // this.$delete(this.tableList[0],'arr')
+              this.$set(
+                this.tableList[0],
+                "arr",
+                this.result.value.tableList[0].arr
+              );
+              this.param = this.result.value.param;
+              if (this.result.value.currentInsItemId) {
+                currentInsItemId = this.result.value.currentInsItemId;
+              }
+              // 鐗规畩澶勭悊涓�涓嬬粨璁�,浼氭湁杩欑鐗规畩鎯呭喌
+              for (var i in this.param) {
+                if (
+                  this.param[i].insResult &&
+                  this.param[i].insResult.v &&
+                  this.param[i].insResult.v.v
+                ) {
+                  if (this.param[i].insResult.v.v == "鍚堟牸") {
+                    this.$set(this.param[i].insResult.v, "v", 1);
+                  } else if (this.param[i].insResult.v.v == "涓嶅悎鏍�") {
+                    this.$set(this.param[i].insResult.v, "v", 0);
+                  }
+                }
+              }
+              this.saveInsContext(currentInsItemId);
+              // 濡傛灉鏄暟閲囧彲缂栬緫杈撳叆鐨勬儏鍐�,鍙互鐩存帴淇濆瓨鏁版嵁
+              // if(this.getDataType==2){
+              //   console.log("aaaaaa--->>>",currentInsItemId);
+              //   this.saveInsContext()
+              // }else{
+              //   if(this.isGet&&!this.dataAcquisitionEidtAble){
+              //     // if(this.result.value.getDataTypeId==''){
+              //     //   // 濡傛灉鏄暟閲囦笉鍙紪杈戣緭鍏ョ殑鎯呭喌,涓旀渶鍚庝竴涓暟閲囨病鏈夊畬鎴�,鍒欎笉淇濆瓨鏁版嵁
+              //     //   return
+              //     // }
+              //     // 淇濆瓨鏁版嵁
+              //     this.saveInsContext()
+              //     // setTimeout(()=>{
+              //     // },2000)
+              //   }else if(this.isGet&&this.dataAcquisitionEidtAble){
+              //     if(this.getDataType==1){
+              //       // if(this.result.value.getDataTypeId==''){
+              //       //   // 濡傛灉鏄暟閲囧彲缂栬緫杈撳叆鐨勬儏鍐�,涓旀渶鍚庝竴涓暟閲囨病鏈夊畬鎴�,鍒欎笉淇濆瓨鏁版嵁
+              //       //   return
+              //       // }
+              //       this.saveInsContext()
+              //     }else{
+              //       this.saveInsContext()
+              //     }
+              //   }else{
+              //     this.saveInsContext()
+              //   }
+              // }
+            });
+            break;
+          case "tableList":
+            this.$nextTick(() => {
+              // 鏇存柊鏁版嵁
+              this.$delete(this.tableList[0], "arr");
+              this.$set(this.tableList[0], "arr", this.result.value[0].arr);
+            });
+            break;
+          case "getCurrentInsProduct":
+            // 鏇存柊椤甸潰鏁版嵁
+            this.getCurrentInsProduct(this.result.value);
+            break;
+        }
+      };
+    },
+    // 鏄惁闇�瑕佹暟閲�
+    async determineWhetherToCollectData() {
+      let res = await this.$axios.get(
+        this.$api.deviceScope.determineWhetherToCollectData +
+          "?managementNumber=''"
+      );
+      this.isGet = res.data;
+      if (
+        this.currentSample.insProduct.filter(
+          (ele) => ele.inspectionItemType == "1"
+        ).length > 0
+      ) {
+        this.isEdit = true;
+      }
+    },
+    // 鏍规嵁鍚庣浼犲弬鏇存柊椤甸潰鏁版嵁   param => this.tableList[0].insProductResult
+    getCurrentInsProduct(pId) {
+      if (!this.tableList[0].insProductResult) {
+        this.tableList[0].insProductResult = {};
+      }
+      for (let m in this.param[pId]) {
+        let value = this.param[pId][m];
+        switch (m) {
+          case "comValue":
+            // 璧嬪�艰绠楀��
+            if (value && value.length > 0) {
+              this.tableList[0].insProductResult[m] = [];
+              value.forEach((a, i) => {
+                let obj = {
+                  v: a.v.v,
+                };
+                this.tableList[0].insProductResult[m].push(obj);
+              });
+              try {
+                this.tableList[0].insProductResult[m] = JSON.stringify(
+                  this.tableList[0].insProductResult[m]
+                );
+              } catch (error) {
+                console.log(555, error);
+              }
+            }
+            break;
+          // 璧嬪�兼楠屽��
+          case "insValue":
+            if (value && value.length > 0) {
+              this.tableList[0].insProductResult[m] = [];
+              value.forEach((a, i) => {
+                let obj = {
+                  v: a.v.v,
+                  u: a.u,
+                };
+                this.tableList[0].insProductResult[m].push(obj);
+              });
+              try {
+                this.tableList[0].insProductResult[m] = JSON.stringify(
+                  this.tableList[0].insProductResult[m]
+                );
+              } catch (error) {
+                console.log(666, error);
+              }
+            }
+            break;
+          // 璧嬪�艰澶囩紪鍙�
+          case "equipValue":
+            if (value && value.length > 0) {
+              this.tableList[0].insProductResult[m] = [];
+              value.forEach((a, i) => {
+                let obj = {
+                  v: a.v.v,
+                };
+                this.tableList[0].insProductResult[m].push(obj);
+              });
+              try {
+                this.tableList[0].insProductResult[m] = JSON.stringify(
+                  this.tableList[0].insProductResult[m]
+                );
+              } catch (error) {
+                console.log(777, error);
+              }
+            }
+            break;
+          // 璧嬪�艰澶囧悕绉�
+          case "equipName":
+            if (value && value.length > 0) {
+              this.tableList[0].insProductResult[m] = [];
+              value.forEach((a, i) => {
+                let obj = {
+                  v: a.v.v,
+                };
+                this.tableList[0].insProductResult[m].push(obj);
+              });
+              try {
+                this.tableList[0].insProductResult[m] = JSON.stringify(
+                  this.tableList[0].insProductResult[m]
+                );
+              } catch (error) {
+                console.log(888, error);
+              }
+            }
+            break;
+          // 璧嬪�兼渶缁堝��
+          case "resValue":
+            this.tableList[0].lastValue = value ? value.v.v : "";
+            break;
+          // 璧嬪�肩粨璁�
+          case "insResult":
+            this.tableList[0].insResult = value ? value.v.v : "";
+            break;
+        }
+      }
+    },
+    // 瀵笶XCEL鍑芥暟杩涜澶勭悊
+    handleExcelMethod() {
+      if (this.excelMethodList.length > 0) {
+        this.excelMethodList.map((item) => {
+          // 寰楀埌姣忎釜鍑芥暟鐨勫弬鏁板垪琛�
+          item.valueList = excelFunction.changeParameter(item.v.f);
+          return item;
+        });
+      }
+    },
+    getValue(v) {
+      // 瀵归〉闈㈠睍绀烘暟鎹繘琛屽鐞�,@,浠h〃鎹㈣
+      let str = v.v
+        ? v.v
+        : v.v === 0
+        ? v.v
+        : v.ct && v.ct.s
+        ? v.ct.s.length > 0 &&
+          v.ct.s[0].v
+            .replace(new RegExp("\n", "g"), "<br/>")
+            .replace(new RegExp("@", "g"), "<br/>")
+        : "";
+      // 瀵规暟鎹繚鐣欏皬鏁扮偣杩涜澶勭悊
+      if (v.ct && v.ct.fa && v.ct.fa.includes(".") && str) {
+        let num = 0;
+        let str0 = v.ct.fa.split(".")[1];
+        num = str0.length;
+        str = Number(str).toFixed(num);
+      }
+      if (v.v && typeof v.v == "string" && v.v.includes("@")) {
+        str = v.v.replace(new RegExp("@", "g"), "<br/>");
+      }
+      return str;
+    },
+    // 鑾峰彇褰撳墠杈撳叆妗嗙被鍨�
+    getInspectionValueType(id) {
+      for (var a in this.currentSample.insProduct) {
+        if (this.currentSample.insProduct[a].id == id) {
+          return this.currentSample.insProduct[a].inspectionValueType;
+        }
+      }
+    },
+    // 鑾峰彇瑕佹眰鎻忚堪
+    getTell(id) {
+      for (var a in this.currentSample.insProduct) {
+        if (this.currentSample.insProduct[a].id == id) {
+          return this.currentSample.insProduct[a].tell;
+        }
+      }
+    },
+    // 鍔ㄦ�佽幏鍙栧崟鍏冩牸瀹藉害
+    handleWidth(n) {
+      let sum = 0;
+      if (n.v.mc && n.v.mc.cs && n.v.mc.c != undefined) {
+        for (let i = 0; i < n.v.mc.cs; i++) {
+          let num = this.widthList[i + n.v.mc.c]
+            ? this.widthList[i + n.v.mc.c]
+            : 100;
+          sum += num;
+        }
+      } else {
+        sum = this.widthList[n.c] ? this.widthList[n.c] : 100;
+      }
+      return sum;
+    },
+    // 瀵硅緭鍏ュ�艰繘琛屾牸寮忔牎楠�
+    handleInput(n) {
+      try {
+        n.v.v = n.v.v.replace(/[^\d.^e\-/+]/g, "");
+        n.v.v = n.v.v.replace(/\.{2,}/g, "."); //鍙繚鐣欑涓�涓�. 娓呴櫎澶氫綑鐨�
+        n.v.v = n.v.v
+          .replace(".", "$#$")
+          .replace(/\./g, "")
+          .replace("$#$", ".");
+        n.v.v = n.v.v.replace(/\/{2,}/g, "/"); //鍙繚鐣欑涓�涓�/娓呴櫎澶氫綑鐨�
+        n.v.v = n.v.v
+          .replace("/", "$#$")
+          .replace(/\//g, "")
+          .replace("$#$", "/");
+      } catch (error) {
+        console.log(error);
+      }
+    },
+    getInspectionItemType(id) {
+      for (var a in this.currentSample.insProduct) {
+        if (this.currentSample.insProduct[a].id == id) {
+          return this.currentSample.insProduct[a].inspectionItemType;
+        }
+      }
+    },
+    // 鑾峰彇瑕佹眰鍊�
+    getAsk(id) {
+      for (var a in this.currentSample.insProduct) {
+        if (this.currentSample.insProduct[a].id == id) {
+          return this.currentSample.insProduct[a].ask;
+        }
+      }
+    },
+    getSystemValue(n) {
+      let code = null;
+      try {
+        this.param[n.i].equipValue.forEach((a) => {
+          if (a.r === n.r) {
+            if (a.v.v == null || a.v.v == "") {
+              this.$message.error("璇峰厛閫夋嫨閲囬泦鐨勮澶�");
+              return;
+            } else {
+              code = a.v.v;
+            }
+          }
+        });
+      } catch (e) {
+        // console.log(e);
+        this.$message.error("鎵句笉鍒拌澶囧唴瀹�");
+      }
+      // console.log(n, code);
+      fetch("http://localhost:82/寰俊鍥剧墖_20240518100811.png")
+        .then((res) => res.blob())
+        .then((blob) => {
+          // console.log(blob);
+          const url = URL.createObjectURL(blob);
+          // console.log(url);
+        });
+      /* this.$message.error('閲囬泦澶辫触銆愬凡寮�鏀炬墜鍔ㄦ柟寮忋��')
+        for (var a in this.currentSample.insProduct) {
+          if (this.currentSample.insProduct[a].id == n.i) {
+            this.currentSample.insProduct[a].inspectionItemType = 0
+          }
+        } */
+    },
+    // 鑾峰彇璁惧
+    getEquipOptions(e, id) {
+      console.log(e);
+      if (e) {
+        this.equipOptions = [];
+        let product = this.currentSample.insProduct.find((m) => m.id == id);
+        console.log(product);
+        this.$axios
+          .post(this.$api.deviceScope.selectDeviceByCategory, {
+            inspectionItem: product.inspectionItem,
+            inspectionItemSubclass: product.inspectionItemSubclass,
+            sonLaboratory: product.sonLaboratory,
+          })
+          .then((res) => {
+            if (res.code === 200 && res.data) {
+              this.equipOptions = res.data.map((m) => {
+                m.value = m.managementNumber;
+                m.label = m.deviceName;
+                return m;
+              });
+            }
+          })
+          .catch((error) => {
+            console.error(error);
+          });
+      }
+    },
+    getDic(e, id) {
+      if (e) {
+        for (var a in this.currentSample.insProduct) {
+          if (this.currentSample.insProduct[a].id == id) {
+            let str = this.currentSample.insProduct[a].dic;
+            this.selectEnumByCategoryOfSelect(str);
+            return str;
+          }
+        }
+      }
+    },
+    getUserInfo() {
+      this.$axios.get(this.$api.user.getUserInfo).then((res) => {
+        this.userId = res.data.id;
+        this.componentData.entity.userId = res.data.id;
+        // console.log(1111,this.userId)
+      });
+    },
+    // 澶嶆牳
+    upInsReview(e) {
+      if (e == 1) {
+        // 閫氳繃
+        this.reviewLoading = true;
+        this.$axios
+          .post(this.$api.insOrderPlan.verifyPlan, {
+            orderId: this.orderId,
+            type: 1,
+            laboratory: this.sonLaboratory,
+            tell: null,
+          })
+          .then((res) => {
+            if (res.code === 200) {
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.$emit("goback");
+            }
+            this.reviewLoading = false;
+          })
+          .catch((error) => {
+            console.error(error);
+            this.reviewLoading = false;
+          });
+      } else {
+        // 涓嶉�氳繃
+        this.reviewDia = true;
+      }
+    },
+    handleReviewDia() {
+      if (this.noReason) {
+        this.reviewLoading = true;
+        this.$axios
+          .post(this.$api.insOrderPlan.verifyPlan, {
+            orderId: this.orderId,
+            type: 0,
+            laboratory: this.sonLaboratory,
+            tell: this.noReason,
+          })
+          .then((res) => {
+            if (res.code === 200) {
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.$emit("goback");
+            }
+            this.reviewLoading = false;
+          })
+          .catch((error) => {
+            console.error(error);
+            this.reviewLoading = false;
+          });
+      } else {
+        this.$message.error("鏈緭鍏ヤ笉閫氳繃鍘熷洜");
+      }
+    },
+    submit() {
+      if (this.verifyUser === null || this.verifyUser === "") {
+        this.$message.error("璇锋寚瀹氬鏍镐汉鍛�");
+        return;
+      }
+      if (!this.otherForm.humidity) {
+        this.$message.error("璇疯緭鍏ユ箍搴�");
+        return;
+      }
+      if (!this.otherForm.temperature) {
+        this.$message.error("璇疯緭鍏ユ俯搴�");
+        return;
+      }
+      this.addVerifyDia = false;
+      this.submitLoading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.checkSubmitPlan, {
+          orderId: this.orderId,
+          laboratory: this.sonLaboratory,
+          humidity: this.otherForm.humidity,
+          temperature: this.otherForm.temperature,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            if (!res.data || res.data.length == 0) {
+              this.$axios
+                .get(
+                  this.$api.insOrderPlan.getEquipName +
+                    "?orderId=" +
+                    this.orderId +
+                    "&sonLaboratory=" +
+                    this.sonLaboratory
+                )
+                .then((response) => {
+                  console.log(typeof response.data, response.data.length);
+                  if (response.data.length > 0) {
+                    let newData = [];
+                    const h = this.$createElement;
+                    for (let i in response.data) {
+                      newData.push(
+                        h(
+                          "p",
+                          { style: "font-size: 14px;color: red;" },
+                          Number(i) + 1 + "銆�" + response.data[i]
+                        )
+                      );
+                    }
+                    newData.push(
+                      h(
+                        "p",
+                        {
+                          style:
+                            "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
+                        },
+                        "浠ヤ笂椤圭洰鏈�夋嫨璁惧锛岀‘瀹氭彁浜わ紵"
+                      )
+                    );
+                    this.$confirm("鎻愮ず", {
+                      title: "鎻愮ず",
+                      message: h("div", null, newData),
+                      confirmButtonText: "纭畾",
+                      cancelButtonText: "鍙栨秷",
+                      type: "",
+                    })
+                      .then(() => {
+                        this.$axios
+                          .post(this.$api.insOrderPlan.submitPlan, {
+                            orderId: this.orderId,
+                            laboratory: this.sonLaboratory,
+                            verifyUser: this.verifyUser,
+                            entrustCode: this.insOrder.entrustCode,
+                          })
+                          .then((res) => {
+                            if (res.code === 200) {
+                              this.$message.success("鎿嶄綔鎴愬姛");
+                              this.$emit("goback");
+                            }
+                            this.submitLoading = false;
+                          });
+                      })
+                      .catch(() => {
+                        this.submitLoading = false;
+                      });
+                  } else {
+                    this.$axios
+                      .post(this.$api.insOrderPlan.submitPlan, {
+                        orderId: this.orderId,
+                        laboratory: this.sonLaboratory,
+                        verifyUser: this.verifyUser,
+                        entrustCode: this.insOrder.entrustCode,
+                      })
+                      .then((res) => {
+                        if (res.code === 200) {
+                          this.$message.success("鎿嶄綔鎴愬姛");
+                          this.$emit("goback");
+                        }
+                        this.submitLoading = false;
+                      });
+                  }
+                });
+
+              // this.$axios
+              //   .post(this.$api.insOrderPlan.submitPlan, {
+              //     orderId: this.orderId,
+              //     laboratory: this.sonLaboratory,
+              //     verifyUser: this.verifyUser,
+              //     entrustCode: this.insOrder.entrustCode,
+              //   })
+              //   .then((res) => {
+              //     if (res.code === 200) {
+              //       this.$message.success("鎿嶄綔鎴愬姛");
+              //       this.$emit("goback");
+              //     }
+              //     this.submitLoading = false;
+              //   })
+            } else {
+              this.$axios
+                .get(
+                  this.$api.insOrderPlan.getEquipName +
+                    "?orderId=" +
+                    this.orderId +
+                    "&sonLaboratory=" +
+                    this.sonLaboratory
+                )
+                .then((response) => {
+                  console.log(typeof response.data, response.data.length);
+                  if (response.data.length > 0) {
+                    let newData = [];
+                    const h = this.$createElement;
+                    for (let i in response.data) {
+                      newData.push(
+                        h(
+                          "p",
+                          { style: "font-size: 14px;color: red;" },
+                          Number(i) + 1 + "銆�" + response.data[i]
+                        )
+                      );
+                    }
+                    newData.push(
+                      h(
+                        "p",
+                        {
+                          style:
+                            "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
+                        },
+                        "浠ヤ笂椤圭洰鏈�夋嫨璁惧锛岀‘瀹氭彁浜わ紵"
+                      )
+                    );
+                    this.$confirm("鎻愮ず", {
+                      title: "鎻愮ず",
+                      message: h("div", null, newData),
+                      confirmButtonText: "纭畾",
+                      cancelButtonText: "鍙栨秷",
+                      type: "",
+                    })
+                      .then(() => {
+                        let newData1 = [];
+                        const h1 = this.$createElement;
+                        // 鍘婚噸涓嶅悎鏍煎鐞�
+                        let set = new Set();
+                        res.data.forEach((item) => {
+                          if (!set.has(item)) {
+                            set.add(item);
+                          }
+                        });
+                        res.data = Array.from(set);
+                        for (let i in res.data) {
+                          const lastChar = res.data[i].slice(-1);
+                          if (lastChar == "-") {
+                            res.data[i] = res.data[i].slice(0, -1);
+                          }
+                          newData1.push(
+                            h1(
+                              "p",
+                              { style: "font-size: 14px;color: red;" },
+                              Number(i) + 1 + "銆�" + res.data[i]
+                            )
+                          );
+                        }
+                        newData1.push(
+                          h1(
+                            "p",
+                            {
+                              style:
+                                "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
+                            },
+                            "浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�"
+                          )
+                        );
+                        this.$confirm("鎻愮ず", {
+                          title: "鎻愮ず",
+                          message: h1("div", null, newData1),
+                          confirmButtonText: "纭畾",
+                          cancelButtonText: "鍙栨秷",
+                          type: "",
+                        })
+                          .then(() => {
+                            this.$axios
+                              .post(this.$api.insOrderPlan.submitPlan, {
+                                orderId: this.orderId,
+                                laboratory: this.sonLaboratory,
+                                verifyUser: this.verifyUser,
+                              })
+                              .then((res) => {
+                                if (res.code === 200) {
+                                  this.$message.success("鎿嶄綔鎴愬姛");
+                                  this.$emit("goback");
+                                }
+                              })
+                              .catch((error) => {
+                                console.error(error);
+                              });
+                          })
+                          .catch(() => {});
+                      })
+                      .catch(() => {
+                        this.submitLoading = false;
+                      });
+                  } else {
+                    let newData = [];
+                    const h = this.$createElement;
+                    // 鍘婚噸涓嶅悎鏍煎鐞�
+                    let set = new Set();
+                    res.data.forEach((item) => {
+                      if (!set.has(item)) {
+                        set.add(item);
+                      }
+                    });
+                    res.data = Array.from(set);
+                    for (let i in res.data) {
+                      const lastChar = res.data[i].slice(-1);
+                      if (lastChar == "-") {
+                        res.data[i] = res.data[i].slice(0, -1);
+                      }
+                      newData.push(
+                        h(
+                          "p",
+                          { style: "font-size: 14px;color: red;" },
+                          Number(i) + 1 + "銆�" + res.data[i]
+                        )
+                      );
+                    }
+                    newData.push(
+                      h(
+                        "p",
+                        {
+                          style:
+                            "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
+                        },
+                        "浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�"
+                      )
+                    );
+                    this.$confirm("鎻愮ず", {
+                      title: "鎻愮ず",
+                      message: h("div", null, newData),
+                      confirmButtonText: "纭畾",
+                      cancelButtonText: "鍙栨秷",
+                      type: "",
+                    })
+                      .then(() => {
+                        this.$axios
+                          .post(this.$api.insOrderPlan.submitPlan, {
+                            orderId: this.orderId,
+                            laboratory: this.sonLaboratory,
+                            verifyUser: this.verifyUser,
+                          })
+                          .then((res) => {
+                            if (res.code === 200) {
+                              this.$message.success("鎿嶄綔鎴愬姛");
+                              this.$emit("goback");
+                            }
+                          })
+                          .catch((error) => {
+                            console.error(error);
+                          });
+                      })
+                      .catch(() => {});
+                    this.submitLoading = false;
+                  }
+                });
+
+              //   let newData = [];
+              //   const h = this.$createElement;
+              //   // 鍘婚噸涓嶅悎鏍煎鐞�
+              //   let set = new Set();
+              //   res.data.forEach((item) => {
+              //     if (!set.has(item)) {
+              //       set.add(item);
+              //     }
+              //   });
+              //   res.data = Array.from(set);
+              //   for (let i in res.data) {
+              //     const lastChar = res.data[i].slice(-1);
+              //     if (lastChar == "-") {
+              //       res.data[i] = res.data[i].slice(0, -1);
+              //     }
+              //     newData.push(
+              //       h(
+              //         "p",
+              //         { style: "font-size: 14px;color: red;" },
+              //         Number(i) + 1 + "銆�" + res.data[i]
+              //       )
+              //     );
+              //   }
+              //   newData.push(
+              //     h(
+              //       "p",
+              //       {
+              //         style:
+              //           "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh",
+              //       },
+              //       "浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�"
+              //     )
+              //   );
+              //   this.$confirm("鎻愮ず", {
+              //     title: "鎻愮ず",
+              //     message: h("div", null, newData),
+              //     confirmButtonText: "纭畾",
+              //     cancelButtonText: "鍙栨秷",
+              //     type: "",
+              //   })
+              //     .then(() => {
+              //       this.$axios
+              //         .post(this.$api.insOrderPlan.submitPlan, {
+              //           orderId: this.orderId,
+              //           laboratory: this.sonLaboratory,
+              //           verifyUser: this.verifyUser,
+              //         })
+              //         .then((res) => {
+              //           if (res.code === 200) {
+              //             this.$message.success("鎿嶄綔鎴愬姛");
+              //             this.$emit("goback");
+              //           }
+              //         })
+              //         .catch((error) => {
+              //           console.error(error);
+              //         });
+              //     })
+              //     .catch(() => {});
+            }
+          }
+          this.submitLoading = false;
+        })
+        .catch((error) => {
+          console.error(error);
+          this.submitLoading = false;
+        });
+      return;
+    },
+    // 缁熶竴鍦ㄨ繖閲屼繚瀛樻暟鎹�
+    saveInsContext(currentInsItemId, isDelete = false) {
+      // console.log("saveInsContext-->",this.param);
+      try {
+        if (this.param) {
+          let param = null;
+          if (currentInsItemId) {
+            param = { [currentInsItemId]: this.param[currentInsItemId] };
+          } else {
+            param = this.param;
+          }
+          console.log("param-->", param);
+          this.$axios
+            .post(this.$api.insOrderPlan.saveInsContext, {
+              param: JSON.stringify(param),
+              currentTable: this.currentTable,
+              sampleId: this.currentSample.id,
+              orderId: this.orderId,
+              sonLaboratory: this.sonLaboratory,
+              isDelete: isDelete,
+            })
+            .then((res) => {
+              if (res.code == 201) {
+                this.$message.error("淇濆瓨澶辫触");
+                return;
+              }
+              this.$message.success("宸蹭繚瀛�");
+            });
+          // 鍚� Worker 鍙戦�佹秷鎭紝寮�濮嬪鐞嗛�昏緫
+          this.worker.postMessage(
+            JSON.stringify({
+              modelType: this.sampleProduct[0].model,
+              type: "saveData",
+              tableList: this.tableList,
+              param: this.param,
+              currentTable: this.currentTable,
+            })
+          );
+        }
+      } catch (error) {
+        console.log(999, error);
+      }
+    },
+    // 璁惧鏀瑰彉
+    changeEquip(val, n, v) {
+      this.$set(n.v, "v", val);
+      this.tableList[0].arr.forEach((item, index) => {
+        item.forEach((m, i) => {
+          if (this.param[m.i]) {
+            this.param[m.i].state = 1;
+          }
+          if (m.i == n.i && m.v.ps && m.v.ps.value == "璁惧鍚嶇О" && v) {
+            this.$set(m.v, "v", v);
+          }
+        });
+      });
+      for (let i in this.param) {
+        if (this.param[i].state != 1) {
+          delete this.param[i];
+        }
+      }
+      if (val && v) {
+        for (let i1 in this.param[n.i].equipName) {
+          if (
+            this.param[n.i].equipName[i1].i === n.i &&
+            this.param[n.i].equipName[i1].r === n.r
+          ) {
+            this.$delete(this.param[n.i].equipValue[i1].v, "v");
+            this.$set(this.param[n.i].equipValue[i1].v, "v", val);
+            this.$delete(this.param[n.i].equipName[i1].v, "v");
+            this.$set(this.param[n.i].equipName[i1].v, "v", v);
+          }
+        }
+      }
+      for (let i in this.equipOptions) {
+        if (this.equipOptions[i].value == val) {
+          for (let i1 in this.param[n.i].equipName) {
+            if (
+              this.param[n.i].equipName[i1].i === n.i &&
+              this.param[n.i].equipName[i1].r === n.r
+            ) {
+              this.$delete(this.param[n.i].equipValue[i1].v, "v");
+              this.$set(this.param[n.i].equipValue[i1].v, "v", val);
+              this.$delete(this.param[n.i].equipName[i1].v, "v");
+              this.$set(
+                this.param[n.i].equipName[i1].v,
+                "v",
+                this.equipOptions[i].label
+              );
+              this.tableList[0].arr.forEach((item, index) => {
+                item.forEach((m) => {
+                  if (m.i == n.i && m.v.ps && m.v.ps.value == "璁惧鍚嶇О") {
+                    this.$set(m.v, "v", this.equipOptions[i].label);
+                  }
+                });
+              });
+            }
+          }
+        }
+      }
+      console.log("param", this.param);
+      console.log("tableList", this.tableList);
+      let ids = [];
+      ids.push(n.i);
+      // 閫夋嫨璁惧闇�瑕佸皢鍚堝苟鐨勫崟鍏冩牸涓�璧疯祴鍊�
+      this.tableList[0].arr.forEach((item, index) => {
+        item.forEach((m, i) => {
+          if (m.i == n.i && m.v.ps && m.v.ps.value == "璁惧鍚嶇О") {
+            if (m.v.mc) {
+              if (m.v.mc.rs) {
+                for (let j = 1; j < m.v.mc.rs; j++) {
+                  let value = m.v.v; // 璁惧鍚嶇О
+                  this.tableList[0].arr[index + j][i].v.v = value;
+                }
+              }
+            }
+          }
+          if (m.i == n.i && m.v.ps && m.v.ps.value == "璁惧缂栫爜") {
+            if (m.v.mc) {
+              if (m.v.mc.rs) {
+                for (let j = 1; j < m.v.mc.rs; j++) {
+                  let value = m.v.v; // 璁惧缂栫爜
+                  this.tableList[0].arr[index + j][i].v.v = value;
+                  let productId = this.tableList[0].arr[index + j][0].i;
+                  ids.push(productId);
+                }
+              }
+            }
+          }
+        });
+      });
+
+      console.log("ids", ids);
+      console.log("tableList2", this.tableList);
+      //淇濆瓨鏁版嵁
+      ids.forEach((id) => {
+        setTimeout(() => {
+          this.saveInsContext(id);
+        }, 100);
+      });
+
+      //this.saveInsContext(ids[i]);
+    },
+    getAuthorizedPerson() {
+      this.$axios.get(this.$api.user.getLaboratoryPersonList).then((res) => {
+        // let data = []
+        // // let userName = JSON.parse(localStorage.getItem("user")).name;
+        // res.data.forEach(a => {
+        //   if(!this.inspectorList.includes(a.name)) {
+        //     data.push({
+        //     label: a.name,
+        //     value: a.id
+        //   })
+        //   }
+        // })
+        this.personList = res.data;
+      });
+    },
+    scrollInit() {
+      // 鑾峰彇瑕佺粦瀹氫簨浠剁殑鍏冪礌
+      const nav = document.getElementById("nav");
+      var flag; // 榧犳爣鎸変笅
+      var downX; // 榧犳爣鐐瑰嚮鐨剎涓嬫爣
+      var scrollLeft; // 褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲�
+      nav.addEventListener("mousedown", function (event) {
+        flag = true;
+        downX = event.clientX; // 鑾峰彇鍒扮偣鍑荤殑x涓嬫爣
+        scrollLeft = this.scrollLeft; // 鑾峰彇褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲�
+      });
+      nav.addEventListener("mousemove", function (event) {
+        if (flag) {
+          // 鍒ゆ柇鏄惁鏄紶鏍囨寜涓嬫粴鍔ㄥ厓绱犲尯鍩�
+          var moveX = event.clientX; // 鑾峰彇绉诲姩鐨剎杞�
+          var scrollX = moveX - downX; // 褰撳墠绉诲姩鐨剎杞翠笅鏍囧噺鍘诲垰鐐瑰嚮涓嬪幓鐨剎杞翠笅鏍囧緱鍒伴紶鏍囨粦鍔ㄨ窛绂�
+          this.scrollLeft = scrollLeft - scrollX; // 榧犳爣鎸変笅鐨勬粴鍔ㄦ潯鍋忕Щ閲忓噺鍘诲綋鍓嶉紶鏍囩殑婊戝姩璺濈
+        }
+      });
+      // 榧犳爣鎶捣鍋滄鎷栧姩
+      nav.addEventListener("mouseup", function () {
+        flag = false;
+      });
+      // 榧犳爣绂诲紑鍏冪礌鍋滄鎷栧姩
+      nav.addEventListener("mouseleave", function (event) {
+        flag = false;
+      });
+    },
+    // 椤甸潰閲岄潰鍒囨崲鏍峰搧
+    async caretSample(num) {
+      let index = this.currentKey + num;
+      if (index < 1) {
+        this.$message.error("褰撳墠鏄涓�涓牱鍝�");
+        return;
+      } else if (index > this.sampleProduct.length) {
+        this.$message.error("褰撳墠鏄渶鍚庝竴涓牱鍝�");
+        return;
+      }
+      this.currentKey = index;
+      this.currentSample = this.HaveJson(this.sampleProduct[index - 1]);
+      // 鑾峰彇妫�楠岄」
+      let list = await this.getCurrentProduct(this.currentSample.id, 0);
+      this.currentSample.insProduct = this.HaveJson(list);
+      // 鍒濆鍖栧悗绔紶鍙�
+      this.param = {};
+      this.changeType = 0;
+      this.currentSample.insProduct.forEach((a, j) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      // 鏇存柊椤甸潰鍏夌氦閫夋嫨
+      this.getReportModel(this.currentSample.id);
+      // 椤甸潰鏁版嵁澶勭悊
+      this.getTableLists();
+      // 鏇存柊鍒板绾跨▼
+      this.worker.postMessage(
+        JSON.stringify({
+          modelType: this.sampleProduct[0].model,
+          type: "saveData",
+          tableList: this.tableList,
+          param: this.param,
+          currentTable: this.currentTable,
+        })
+      );
+    },
+    caretBushing(num) {
+      let index = this.currentKey0 + num;
+      if (index < 1) {
+        this.$message.error("褰撳墠鏄涓�涓绠�");
+        return;
+      } else if (index > this.bushing.length) {
+        this.$message.error("褰撳墠鏄渶鍚庝竴涓绠�");
+        return;
+      }
+      this.currentKey0 = index;
+      this.currentBushing = this.HaveJson(this.bushing[index - 1]);
+      this.fiberOpticTape = [];
+      this.currentFiberOpticTape = null;
+      this.fiberOptic = [];
+      this.currentFiberOptic = null;
+      if (this.currentBushing.fiber && this.currentBushing.fiber.length > 0) {
+        // 鐩存帴閰嶇疆鍏夌氦
+        this.fiberOptic = this.currentBushing.fiber;
+      } else if (
+        this.currentBushing.fibers &&
+        this.currentBushing.fibers.length > 0
+      ) {
+        // 閰嶇疆鍏夌氦甯﹀悗锛屽啀閰嶇疆鍏夌氦
+        this.fiberOpticTape = this.currentBushing.fibers;
+      }
+    },
+    async caretTape(num) {
+      let index = this.currentKey1 + num;
+      if (index < 1) {
+        this.$message.error("褰撳墠鏄涓�涓厜绾ゅ甫");
+        return;
+      } else if (index > this.fiberOpticTape.length) {
+        this.$message.error("褰撳墠鏄渶鍚庝竴涓厜绾ゅ甫");
+        return;
+      }
+      this.currentKey1 = index;
+      this.currentFiberOpticTape = this.HaveJson(
+        this.fiberOpticTape[index - 1]
+      );
+      this.param = {};
+      this.fiberOptic = [];
+      this.currentFiberOptic = null;
+      this.currentFiberOpticTape.productList.forEach((a) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      this.fiberOpticTapeVisible = false;
+      let list = await this.getCurrentProduct(this.currentFiberOpticTape.id, 1);
+      this.getTableLists0(list);
+      if (
+        this.currentFiberOpticTape.fiber &&
+        this.currentFiberOpticTape.fiber.length > 0
+      ) {
+        // 閰嶇疆鍏夌氦
+        this.fiberOptic = this.currentFiberOpticTape.fiber;
+      }
+    },
+    async caretOptic(num) {
+      let index = this.currentKey2 + num;
+      if (index < 1) {
+        this.$message.error("褰撳墠鏄涓�涓厜绾�");
+        return;
+      } else if (index > this.fiberOptic.length) {
+        this.$message.error("褰撳墠鏄渶鍚庝竴涓厜绾�");
+        return;
+      }
+      this.currentKey2 = index;
+      this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1]);
+      this.currentFiberOptic.productList.forEach((a) => {
+        this.param[a.id] = {
+          insValue: [],
+          comValue: [],
+          resValue: null,
+          equipValue: [],
+          equipName: [],
+          insResult: null,
+        };
+      });
+      let list = await this.getCurrentProduct(this.currentFiberOptic.id, 2);
+      this.getTableLists0(list);
+    },
+    handleSuccessUp(response) {
+      this.upLoading = false;
+      if (response.code == 200) {
+        this.$message.success("涓婁紶鎴愬姛");
+        this.$refs.fileList.selectList();
+      }
+    },
+    beforeUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error("涓婁紶鏂囦欢涓嶈秴杩�10M");
+        this.$refs.upload.clearFiles();
+        return false;
+      } else {
+        this.upLoading = true;
+        return true;
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error("涓婁紶澶辫触");
+      this.$refs.upload.clearFiles();
+    },
+    handleDown(row) {
+      this.$axios
+        .post(this.$api.insOrderPlan.downFile, {
+          id: row.id,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            let url = "";
+            if (res.data.type == 1) {
+              url = this.javaApi + "/img/" + res.data.fileUrl;
+              file.downloadIamge(url, row.fileName);
+            } else {
+              url = this.javaApi + "/word/" + res.data.fileUrl;
+              const link = document.createElement("a");
+              link.href = url;
+              link.download = row.fileName;
+              link.click();
+            }
+          }
+        })
+        .catch((error) => {});
+    },
+    /**
+     * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆�
+     *
+     * @param v 瑕佹牸寮忓寲鐨勬暟鍊�
+     * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄
+     * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟
+     * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛�
+     */
+    toFixed(v, ct) {
+      if (v && ct && ct.fa) {
+        if (ct.fa.includes(".")) {
+          let num = ct.fa.slice(4).length;
+          return Number(v).toFixed(num);
+        } else {
+          return v;
+        }
+      } else {
+        return v;
+      }
+    },
+  },
+};
+</script>
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index c4c94aa..329d4e4 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -1,9 +1,2068 @@
 <template>
-  <div>妫�楠屼换鍔�</div>
+  <div class="bg-1" style="padding: 15px 5px">
+    <basic-container>
+      <div class="search" :style="`height: ${more ? 100 : 50}px;`">
+        <el-row :gutter="10" style="width: 100%">
+          <el-col :span="16" style="display: flex; flex-wrap: wrap">
+            <div
+              class="search_thing"
+              style="margin-left: 20px"
+              v-if="maxNum > 1"
+            >
+              <div class="search_label">濮旀墭缂栧彿锛�</div>
+              <div class="search_input">
+                <el-input
+                  size="small"
+                  placeholder="璇疯緭鍏�"
+                  clearable
+                  v-model="queryParams.entrustCode"
+                  @keyup.enter.native="refreshTable()"
+                ></el-input>
+              </div>
+            </div>
+            <div
+              class="search_thing"
+              style="margin-left: 20px"
+              v-if="maxNum > 2"
+            >
+              <div class="search_label">鏍峰搧缂栧彿锛�</div>
+              <div class="search_input">
+                <el-input
+                  size="small"
+                  placeholder="璇疯緭鍏�"
+                  clearable
+                  v-model="queryParams.sampleCode"
+                  @keyup.enter.native="refreshTable()"
+                ></el-input>
+              </div>
+            </div>
+            <div
+              class="search_thing"
+              style="margin-left: 20px"
+              v-if="maxNum > 3"
+            >
+              <div class="search_label">鏍峰搧鍚嶇О锛�</div>
+              <div class="search_input">
+                <el-input
+                  size="small"
+                  placeholder="鏍峰搧澶х被/鏍峰搧鍚嶇О"
+                  clearable
+                  v-model="queryParams.sample"
+                  @keyup.enter.native="refreshTable()"
+                ></el-input>
+              </div>
+            </div>
+            <div
+              class="search_thing"
+              style="margin-left: 20px"
+              v-if="maxNum >= 4 || more"
+            >
+              <div class="search_label">妫�楠岀姸鎬侊細</div>
+              <div class="search_input">
+                <el-select
+                  size="small"
+                  v-model="queryParams.insState"
+                  style="width: 100%"
+                  clearable
+                  @change="refreshTable()"
+                >
+                  <el-option
+                    v-for="(a, i) in insStateList"
+                    :key="i"
+                    :label="a.dictLabel"
+                    :value="a.dictValue"
+                  ></el-option>
+                </el-select>
+              </div>
+            </div>
+            <div
+              class="search_thing"
+              style="margin-left: 20px"
+              v-if="maxNum >= 5 || more"
+            >
+              <div class="search_label">涓嬪彂鏃堕棿锛�</div>
+              <div class="search_input">
+                <div class="search_input">
+                  <el-date-picker
+                    size="small"
+                    clearable
+                    @change="refreshTable()"
+                    v-model="queryParams.sendTimeRange"
+                    type="daterange"
+                    value-format="yyyy-MM-dd[T]HH:mm:ss"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡"
+                    :default-time="['00:00:00', '23:59:59']"
+                  >
+                  </el-date-picker>
+                </div>
+              </div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="search_thing">
+              <el-button
+                v-if="maxNum < 5"
+                type="text"
+                :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
+                style="color: #3a7bfa"
+                @click="more = !more"
+                >{{ !more ? "鏇村" : "鏀惰捣" }}</el-button
+              >
+              <div class="search_thing" style="padding-left: 10px">
+                <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+                <el-button size="small" type="primary" @click="refreshTable()"
+                  >鏌� 璇�</el-button
+                >
+                <template>
+                  <el-button size="small" type="primary" @click="excelExport"
+                    >鏌ョ湅缁撴灉</el-button
+                  >
+                  <el-button
+                    size="small"
+                    type="primary"
+                    @click="unInsDialogVisible = true"
+                    >瀵煎嚭寰呮淇℃伅</el-button
+                  >
+                </template>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+    </basic-container>
+    <basic-container>
+      <div class="center">
+        <div class="center-options">
+          <el-row>
+            <el-col :span="24">
+              <div
+                style="
+                  display: flex;
+                  align-items: center;
+                  justify-content: space-between;
+                "
+              >
+                <div style="display: flex; align-items: center">
+                  <ul class="tab">
+                    <li
+                      v-for="(m, i) in tabList"
+                      :key="i"
+                      :class="{ active: i == tabIndex }"
+                      @click="handleTab(m, i)"
+                    >
+                      {{ m.label.replace("璇曢獙瀹�", "") }}
+                    </li>
+                  </ul>
+                  <div>
+                    <el-checkbox
+                      @change="changeCheckBox"
+                      class="view-self-checkbox"
+                      v-model="alone"
+                      ><span>鎴戠殑浠诲姟</span></el-checkbox
+                    >
+                  </div>
+                </div>
+                <div class="center-title">
+                  <p>
+                    <span>鏈湀浠诲姟鏁伴噺:</span>
+                    <span v-if="currentMonthPlanTotal != undefined">{{
+                      currentMonthPlanTotal
+                    }}</span>
+                  </p>
+                  <p>
+                    <span>鎬昏浠诲姟鏁伴噺:</span>
+                    <span v-if="$refs.insOrderPlan != undefined">{{
+                      $refs.insOrderPlan.page.total
+                    }}</span>
+                  </p>
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <lims-table
+          ref="insOrderPlan"
+          highlightCurrentRow
+          :rowClassName="changeRowClass"
+          :tableData="tableData"
+          :height="tableMainHeight + ''"
+          :column="column"
+          @pagination="pagination"
+          :page="page"
+          :tableLoading="tableLoading"
+        >
+        </lims-table>
+      </div>
+    </basic-container>
+    <div v-show="activeFace == 0 && state == 0" style="height: 100%"></div>
+
+    <el-dialog title="鎻愮ず" :visible.sync="claimVisible" width="400px">
+      鏄惁璁ら濮旀墭缂栧彿<span style="color: #33c130">{{
+        sampleUserForm.entrustCode
+      }}</span
+      >鐨勪换鍔�
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="claimVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmClaim" :loading="loading"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <el-dialog title="妫�楠屼氦鎺�" :visible.sync="connectVisible" width="400px">
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>浜ゆ帴浜哄憳锛�
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.connectPerson"
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+            filterable
+          >
+            <el-option-group
+              v-for="(item, index) in Object.keys(personList)"
+              :key="index"
+              :label="item"
+            >
+              <el-option
+                :disabled="
+                  userNameList.filter((name) => name == op.name).length > 0
+                "
+                v-for="op in personList[item]"
+                :key="op.id"
+                :label="op.name"
+                :value="op.id"
+              >
+              </el-option>
+            </el-option-group>
+          </el-select>
+        </div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>璇曢獙瀹わ細
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.sonLaboratory"
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+            filterable
+          >
+            <el-option
+              v-for="item in sonLaboratoryList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="connectVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmConnect" :loading="loading"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <div style="width: 100%; height: 100%" v-if="activeFace > 0">
+      <Add :active="activeFace" :currentId="currentId" :examine="examine" />
+    </div>
+    <Inspection
+      v-if="state > 0"
+      @goback="goback"
+      :handover="personList"
+      :sonLaboratoryList="sonLaboratoryList"
+      :orderId="orderId"
+      :inspectorList="inspectorList"
+      :sonLaboratory="componentData.entity.sonLaboratory"
+      :state="state"
+    />
+    <el-dialog
+      title="鏁版嵁鏌ョ湅"
+      :visible.sync="dataDialogVisible"
+      width="100%"
+      fullscreen
+    >
+      <!-- <div
+        style="width: 100%; text-align: right; margin-bottom: 10px"
+        v-if="premissionReviewFun()"
+      >
+        <el-button type="primary" size="small" @click="goReview(currentRow)"
+          >鍓嶅線澶嶆牳</el-button
+        >
+      </div> -->
+      <lims-table
+        ref="dataLookTable"
+        highlightCurrentRow
+        :tableData="dataLooktableData"
+        height="80vh"
+        :column="dataLookColumn"
+        :tableLoading="dataLookTableLoading"
+      >
+      </lims-table>
+    </el-dialog>
+    <!-- 瀵煎嚭寮规 -->
+    <el-dialog
+      :title="title"
+      :visible.sync="dialogVisibleExcel"
+      fullscreen
+      :before-close="handleClose"
+    >
+      <div class="search">
+        <div style="display: flex">
+          <div style="margin-right: 20px">
+            <span>濮旀墭鍗曞彿锛�</span>
+            <el-input
+              size="mini"
+              placeholder="璇疯緭鍏�"
+              clearable
+              style="width: 180px"
+              v-model="excelForm.entrustCode"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
+          </div>
+          <div style="margin-right: 20px">
+            <span>鏍峰搧缂栧彿锛�</span>
+            <el-input
+              size="mini"
+              placeholder="璇疯緭鍏�"
+              clearable
+              v-model="excelForm.sampleCode"
+              style="width: 180px"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
+          </div>
+          <div style="margin-right: 20px">
+            <span>妫�楠屼汉锛�</span>
+            <el-select
+              size="mini"
+              v-model="excelForm.sampleName"
+              placeholder="璇烽�夋嫨"
+              @keyup.enter.native="refreshTable()"
+              style="width: 120px"
+            >
+              <el-option-group
+                v-for="(item, index) in Object.keys(personList)"
+                :key="index"
+                :label="item"
+              >
+                <el-option
+                  v-for="op in personList[item]"
+                  :key="op.id"
+                  :label="op.name"
+                  :value="op.id"
+                >
+                </el-option>
+              </el-option-group>
+            </el-select>
+          </div>
+          <div style="margin-right: 20px">
+            <span>鏃ユ湡锛�</span>
+            <el-date-picker
+              size="mini"
+              v-model="excelForm.dateTime"
+              type="daterange"
+              range-separator="鑷�"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              format="yyyy-MM-dd"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+            >
+            </el-date-picker>
+          </div>
+        </div>
+        <div class="search_thing">
+          <el-button
+            size="mini"
+            type="primary"
+            icon="el-icon-search"
+            @click="excelSearch"
+            >鏌� 璇�</el-button
+          >
+          <el-button
+            size="mini"
+            icon="el-icon-download"
+            type="primary"
+            @click="excelExportTrends"
+            :loading="outLoading"
+            >瀵� 鍑�</el-button
+          >
+        </div>
+      </div>
+      <!-- 琛ㄦ牸鍐呭 -->
+      <el-divider content-position="left">妫�楠岀粨鏋�</el-divider>
+      <br />
+      <div>
+        <el-tabs
+          type="border-card"
+          v-model="activeName"
+          @tab-click="handleClick"
+        >
+          <el-tab-pane
+            v-for="(v, i) in tabs"
+            :key="i"
+            :label="v"
+            :name="i.toString()"
+          >
+            <el-table
+              :data="tabsData"
+              border
+              ref="showResultTable"
+              v-loading="loadingTable"
+              :height="tableHeight"
+              element-loading-text="鍔犺浇涓�"
+              element-loading-spinner="el-icon-loading"
+              element-loading-background="rgba(255, 255, 255, 1)"
+            >
+              <el-table-column
+                label="搴忓彿"
+                type="index"
+                width="60"
+              ></el-table-column>
+              <el-table-column
+                label="濮旀墭鍗曞彿"
+                show-overflow-tooltip
+                prop="entrustCode"
+                width="180"
+              ></el-table-column>
+              <el-table-column
+                show-overflow-tooltip
+                label="鏍峰搧缂栧彿"
+                prop="sampleCode"
+                width="180"
+              ></el-table-column>
+              <el-table-column
+                label="绠¤壊鏍�"
+                prop="bushing"
+                width="80"
+              ></el-table-column>
+              <el-table-column
+                label="鍏夌氦甯﹁壊鏍�"
+                prop="fibers"
+                width="110"
+              ></el-table-column>
+              <el-table-column
+                label="鍏夌氦鑹叉爣"
+                prop="fiber"
+                width="100"
+              ></el-table-column>
+              <el-table-column
+                label="妫�娴嬮」鐩垎绫�"
+                show-overflow-tooltip
+                prop="inspectionItem"
+                v-if="tabName != '娓╁害寰幆'"
+                width="180"
+              ></el-table-column>
+              <el-table-column
+                label="妫�娴嬩汉"
+                prop="userName"
+                width="80"
+              ></el-table-column>
+              <el-table-column
+                label="妫�娴嬫椂闂�"
+                prop="insTime"
+                width="180"
+              ></el-table-column>
+              <el-table-column
+                label="涓嬪彂鏃堕棿"
+                prop="sendTime"
+                width="180"
+              ></el-table-column>
+              <el-table-column
+                v-for="(v, i) in tableHeader"
+                :label="v.label"
+                :prop="v.prop"
+                :key="i"
+                min-width="120"
+                show-overflow-tooltip
+                :width="calcTableColumnWidth(v.label)"
+              >
+              </el-table-column>
+            </el-table>
+            <el-pagination
+              background
+              style="text-align: right; margin-top: 20px"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[10, 20, 50, 100, 200]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+            >
+            </el-pagination>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </el-dialog>
+    <!-- 瀵煎嚭濮旀墭璐圭敤寮规 -->
+    <el-dialog
+      title="濮旀墭璐圭敤缁熻瀵煎嚭"
+      :visible.sync="commissionFeesDialogVisible"
+      width="30%"
+      :before-close="handleCloseCommissionFees"
+    >
+      <el-form :model="exportFees" ref="exportFees" :rules="feesRule">
+        <el-form-item label="涓嬪崟鏃ユ湡" prop="commissionFeesDate">
+          <el-date-picker
+            v-model="exportFees.commissionFeesDate"
+            type="daterange"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleCloseCommissionFees">鍙� 娑�</el-button>
+        <el-button type="primary" @click="exportcommissionFees"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- 瀵煎嚭寰呮淇℃伅寮规 -->
+    <el-dialog
+      title="寰呮浠诲姟瀵煎嚭"
+      :visible.sync="unInsDialogVisible"
+      width="30%"
+      :before-close="handleCloseUnInsDialog"
+    >
+      <el-form
+        :model="unInsProductsData"
+        ref="exportUnInsProducts"
+        :rules="unInsRule"
+      >
+        <el-form-item label="涓嬪彂鏃ユ湡" prop="sendTime">
+          <el-date-picker
+            v-model="unInsProductsData.sendTime"
+            type="daterange"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleCloseUnInsDialog">鍙� 娑�</el-button>
+        <el-button type="primary" @click="exportUnInsProductsFun"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- 鏁版嵁鏌ョ湅璇︽儏 -->
+    <el-dialog
+      title="鏌ョ湅璇︽儏"
+      :visible.sync="dialogVisible"
+      width="70%"
+      :before-close="handleClose3"
+    >
+      <el-table
+        v-if="type == '鍗曟牴鍨傜洿鐕冪儳' || type == '鏉惧绠�'"
+        :data="viewDetailsList"
+        border
+        height="400px"
+        style="width: 100%"
+      >
+        <el-table-column
+          type="index"
+          label="搴忓彿"
+          width="80px"
+        ></el-table-column>
+        <el-table-column prop="entrustCode" label="濮旀墭鍗曞彿"></el-table-column>
+        <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿"></el-table-column>
+        <el-table-column
+          prop="color"
+          label="濂楃"
+          v-if="viewDetailsList.filter((ele) => ele.color !== '').length > 0"
+        ></el-table-column>
+        <!-- <el-table-column prop="inspectionItem" label="妫�楠岄」"></el-table-column> -->
+        <el-table-column prop="insValue" label="妫�楠岀粨鏋�"></el-table-column>
+      </el-table>
+
+      <el-table
+        v-if="type == '鎶楁媺寮哄害'"
+        :data="viewDetailsList"
+        height="400px"
+        border
+        style="width: 100%"
+      >
+        <el-table-column
+          type="index"
+          label="搴忓彿"
+          width="80px"
+        ></el-table-column>
+        <el-table-column prop="inspectionItem" label="妫�楠岄」"></el-table-column>
+        <el-table-column
+          prop="inspectionItemSubclass"
+          label="妫�楠屽瓙椤�"
+        ></el-table-column>
+        <el-table-column prop="width" label="瀹藉害"></el-table-column>
+        <el-table-column prop="thickness" label="鍘氬害"></el-table-column>
+        <el-table-column prop="testValue" label="妫�楠屽��"></el-table-column>
+      </el-table>
+
+      <el-table
+        v-if="type == '鏂浼搁暱鐜�'"
+        :data="viewDetailsList"
+        height="400px"
+        border
+        style="width: 100%"
+      >
+        <el-table-column
+          type="index"
+          label="搴忓彿"
+          width="80px"
+        ></el-table-column>
+        <el-table-column prop="inspectionItem" label="妫�楠岄」"></el-table-column>
+        <el-table-column
+          prop="inspectionItemSubclass"
+          label="妫�楠屽瓙椤�"
+        ></el-table-column>
+        <el-table-column
+          v-for="(v, i) in tableHeader"
+          :key="i"
+          :prop="`testValue${i}`"
+          :label="`妫�楠屽��${i + 1}`"
+        ></el-table-column>
+      </el-table>
+    </el-dialog>
+    <!-- 璁㈠崟鍩烘湰淇℃伅寮规 -->
+    <el-dialog
+      title="濮旀墭鍗曚俊鎭�"
+      :visible.sync="orderInfoDialog"
+      top="5vh"
+      width="70%"
+    >
+      <el-divider content-position="left">妫�楠屾牱鍝佺紪鍙峰垪琛�</el-divider>
+      <el-table
+        :data="insSampleListData"
+        border
+        height="200"
+        :cell-style="{ textAlign: 'center' }"
+        :header-cell-style="{ textAlign: 'center' }"
+      >
+        <el-table-column label="鏍峰搧缂栧彿" prop="sampleCode"></el-table-column>
+        <el-table-column label="鐘舵��" prop="state">
+          <template slot-scope="scope">
+            <el-tag type="danger" v-if="scope.row.state == 0">寰呮</el-tag>
+            <el-tag type="warning" v-if="scope.row.state == 1">鍦ㄦ</el-tag>
+            <el-tag type="success" v-if="scope.row.state == 2">宸叉</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="妫�娴嬩汉" prop="inspectName"></el-table-column>
+      </el-table>
+      <br />
+      <el-divider content-position="left">濮旀墭鍗曞唴瀹�</el-divider>
+      <el-table
+        :data="insProductVOSData"
+        border
+        height="300"
+        :cell-style="{ textAlign: 'center' }"
+        :header-cell-style="{ textAlign: 'center' }"
+      >
+        <el-table-column
+          label="鏍峰搧缂栧彿"
+          prop="sampleCode"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          label="鏍峰搧鍨嬪彿"
+          prop="model"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          label="妫�娴嬮」鐩�"
+          prop="testItem"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          label="妫�娴嬪瓙椤�"
+          prop="testItemChildren"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          label="璇曢獙鏂规硶"
+          prop="testMethod"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          label="鏍囧噯瑕佹眰"
+          prop="requirement"
+          show-overflow-tooltip
+        ></el-table-column>
+      </el-table>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-export default {};
+import { mapGetters } from "vuex";
+import Inspection from "./Inspection.vue";
+import { getYearAndMonthAndDays } from "@/utils/date";
+import { transformExcel } from "@/utils/file";
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  getCurrentMonthPlanTotal,
+  exportCommissionFees,
+  exportUnInsProducts,
+  exportInsOrderPlanResult,
+  getTabHeader,
+  getInsOrderTemList,
+  getInsOrderPlanList,
+  claimInsOrderPlan,
+  getSampleInfoByOrderId,
+  selectInsOrderPlanList,
+  upPlanUser2,
+  upPlanUser,
+} from "@/api/business/inspectionTask";
+import {
+  selectSampleAndProductByOrderId,
+  viewDetails,
+} from "@/api/business/inspectionOrder";
+import { getDicts } from "@/api/system/dict/data";
+import { getLaboratoryPersonList } from "@/api/system/user";
+import LimsTable from "../../../components/Table/lims-table.vue";
+export default {
+  components: {
+    Inspection,
+    limsTable,
+    LimsTable,
+  },
+  computed: {
+    ...mapGetters(["permissions", "nickName"]),
+  },
+  data() {
+    return {
+      insStateList: [],
+      urgencyDictList: [],
+      tableData: [],
+      column: [
+        {
+          label: "濮旀墭缂栧彿",
+          prop: "entrustCode",
+          minWidth: "160px",
+          width: "160px",
+          dataType: "link",
+          linkEvent: {
+            method: "selectAllByOne",
+            vueComponent: this,
+          },
+        },
+        {
+          label: "濮旀墭鍗曚綅",
+          prop: "company",
+          minWidth: "160px",
+          width: "160px",
+        },
+        {
+          label: "鏍峰搧鍚嶇О",
+          prop: "sample",
+          minWidth: "140px",
+          width: "140px",
+          dataType: "link",
+          linkEvent: {
+            method: "selectOrderInfo",
+            vueComponent: this,
+          },
+        },
+        {
+          label: "鏍峰搧鍨嬪彿",
+          prop: "model",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "绱ф�ョ▼搴�",
+          prop: "type",
+          dataType: "tag",
+          minWidth: "90px",
+          width: "90px",
+          formatData: (params) => {
+            let index = this.urgencyDictList.findIndex(
+              (item) => item.dictValue == params
+            );
+            if (index > -1) {
+              return this.urgencyDictList[index].dictLabel;
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            let index = this.urgencyDictList.findIndex(
+              (item) => item.dictValue == params
+            );
+            if (index > -1) {
+              return this.urgencyDictList[index].listClass;
+            } else {
+              return null;
+            }
+          },
+        },
+        {
+          label: "鐘舵��",
+          prop: "insState",
+          dataType: "tag",
+          minWidth: "100px",
+          width: "100px",
+          formatData: (params) => {
+            let index = this.insStateList.findIndex(
+              (item) => item.dictValue == params
+            );
+            if (index > -1) {
+              return this.insStateList[index].dictLabel;
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            let index = this.insStateList.findIndex(
+              (item) => item.dictValue == params
+            );
+            if (index > -1) {
+              return this.insStateList[index].listClass;
+            } else {
+              return null;
+            }
+          },
+        },
+        {
+          label: "妫�楠屼汉",
+          prop: "userName",
+          minWidth: "140px",
+          width: "140px",
+        },
+        {
+          label: "澶嶆牳浜�",
+          prop: "checkName",
+          minWidth: "100px",
+          width: "100px",
+        },
+        {
+          label: "绾﹀畾鏃堕棿",
+          prop: "appointed",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "涓嬪彂鏃堕棿",
+          prop: "sendTime",
+          minWidth: "140px",
+          width: "140px",
+        },
+        {
+          label: "妫�楠屽紑濮嬫椂闂�",
+          prop: "insTime",
+          minWidth: "140px",
+          width: "140px",
+        },
+        {
+          label: "鐞嗙敱",
+          prop: "verifyTell",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "鎿嶄綔",
+          dataType: "action",
+          fixed: "right",
+          operation: [
+            {
+              name: "鏁版嵁鏌ョ湅",
+              type: "text",
+              clickFun: (row) => {
+                this.handleDataLook(row);
+              },
+            },
+            {
+              name: "妫�楠�",
+              type: "text",
+              clickFun: (row) => {
+                this.handleInspection(row);
+              },
+              disabled: (row, index) => {
+                return (
+                  row.userName == null ||
+                  row.insState == 3 ||
+                  row.insState == 5 ||
+                  (row.userName && !row.userName.includes(this.nickName))
+                );
+              },
+            },
+            {
+              name: "浜ゆ帴",
+              type: "text",
+              clickFun: (row) => {
+                this.handleConnect(row);
+              },
+              disabled: (row, index) => {
+                return (
+                  row.userName == null ||
+                  row.insState == 5 ||
+                  row.insState == 3 ||
+                  (row.userName &&
+                    !row.userName.includes(this.nickName) &&
+                    !this.isLeader)
+                );
+              },
+            },
+            {
+              name: "澶嶆牳",
+              type: "text",
+              clickFun: (row) => {
+                this.handleReview(row);
+              },
+              disabled: (row, userName) => {
+                return (
+                  row.userName == null ||
+                  row.insState != 3 ||
+                  (row.checkName && !row.checkName.includes(this.nickName))
+                );
+              },
+            },
+            {
+              name: "璁ら",
+              type: "text",
+              clickFun: (row) => {
+                this.claimFun(row);
+              },
+              disabled: (row, index) => {
+                return row.userName != null || row.checkName != null;
+              },
+            },
+          ],
+        },
+      ],
+      dataLooktableData: [],
+      insResultList: [
+        {
+          value: 1,
+          label: "鍚堟牸",
+          type: "success",
+        },
+        {
+          value: 0,
+          label: "涓嶅悎鏍�",
+          type: "danger",
+        },
+        {
+          value: 3,
+          label: "涓嶅垽瀹�",
+          type: "",
+        },
+      ],
+      dataLookColumn: [
+        {
+          label: "濮旀墭缂栧彿",
+          prop: "entrustCode",
+          minWidth: "160px",
+          width: "160px",
+        },
+        {
+          label: "鏍峰搧缂栧彿",
+          prop: "sampleCode",
+          minWidth: "160px",
+          width: "160px",
+        },
+        {
+          label: "绠″鑹叉爣",
+          prop: "bushColor",
+          minWidth: "100px",
+          width: "100px",
+        },
+        {
+          label: "鍏夌氦甯︾紪鍙�",
+          prop: "code",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "鍏夌氦鑹叉爣",
+          prop: "color",
+          minWidth: "100px",
+          width: "100px",
+        },
+        {
+          label: "妫�楠岄」",
+          prop: "inspectionItem",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "妫�楠屽瓙椤�",
+          prop: "inspectionItemSubclass",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "妫�楠岀粨鏋�",
+          prop: "lastValue",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "缁撴灉鍒ゅ畾",
+          prop: "insResult",
+          minWidth: "100px",
+          width: "100px",
+          dataType: "tag",
+          formatData: (params) => {
+            let index = this.insResultList.findIndex(
+              (item) => item.value == params
+            );
+            if (index > -1) {
+              return this.insResultList[index].label;
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            let index = this.insResultList.findIndex(
+              (item) => item.value == params
+            );
+            if (index > -1) {
+              return this.insResultList[index].type;
+            } else {
+              return null;
+            }
+          },
+        },
+        {
+          label: "鍗曚綅",
+          prop: "unit",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "璇曢獙瑕佹眰",
+          prop: "tell",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "妫�楠屼汉",
+          prop: "checkName",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          label: "妫�楠屾棩鏈�",
+          prop: "checkTime",
+          minWidth: "140px",
+          width: "140px",
+        },
+        {
+          label: "鏍峰搧鍚嶇О",
+          prop: "sample",
+          minWidth: "160px",
+          width: "160px",
+        },
+        {
+          label: "鏍峰搧鍨嬪彿",
+          prop: "model",
+          minWidth: "160px",
+          width: "160px",
+        },
+        {
+          label: "璇曢獙瀹�",
+          prop: "sonLaboratory",
+          minWidth: "120px",
+          width: "120px",
+        },
+        {
+          dataType: "action",
+          label: "鎿嶄綔",
+          fixed: "right",
+          operation: [
+            {
+              name: "鏌ョ湅",
+              type: "text",
+              clickFun: (row) => {
+                this.viewDetails(row);
+              },
+              // showHide: (row) => {
+              //   return (
+              //     row.inspectionItem == "鍗曟牴鍨傜洿鐕冪儳" ||
+              //     row.inspectionItem.includes("鏉惧绠�") ||
+              //     row.inspectionItemSubclass.includes("鏉惧绠�") ||
+              //     (row.inspectionItem == "鎶楁媺寮哄害" &&
+              //       (row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍓�" ||
+              //         row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍚�")) ||
+              //     (row.inspectionItem == "鏂浼搁暱鐜�" &&
+              //       (row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍓�" ||
+              //         row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍚�"))
+              //   );
+              // },
+            },
+          ],
+        },
+      ],
+      dataLookTableLoading: false,
+      queryParams: {
+        entrustCode: null,
+        sampleCode: null,
+        sample: null,
+        insState: null,
+        sendTimeRange: [],
+      },
+      page: {
+        total: 0,
+        size: 20,
+        current: 1,
+      },
+      tableLoading: false,
+
+      //old
+      tableHeader: [],
+      type: "",
+      maxNum: 1,
+      isShowMore: false,
+      more: false,
+      dialogVisible: false,
+      viewDetailsList: [],
+      unInsDialogVisible: false,
+      unInsProductsData: {
+        sendTime: [],
+      },
+      exportFees: {
+        commissionFeesDate: [],
+      },
+      feesRule: {
+        commissionFeesDate: {
+          required: true,
+          message: "璇烽�夋嫨涓嬪崟鏃ユ湡",
+          trigger: "change",
+        },
+      },
+      unInsRule: {
+        sendTime: {
+          required: true,
+          message: "璇烽�夋嫨涓嬪彂鏃ユ湡",
+          trigger: "change",
+        },
+      },
+      commissionFeesDialogVisible: false,
+      commissionFeesDate: null,
+      orderInfoDialog: false, //璁㈠崟鍩烘湰淇℃伅寮规
+      tableHeight: 0,
+      tableMainHeight: 0,
+      outLoading: false,
+      trendsTable: [],
+      pageSize: 20,
+      total: 0,
+      currentPage: 1,
+      loadingTable: true,
+      activeName: "0",
+      tabName: null,
+      tabsData: [],
+      tabs: [],
+      selectTab: "",
+      excelForm: {
+        entrustCode: null,
+        sampleCode: null,
+        sampleName: null,
+        dateTime: null,
+      },
+      dialogVisibleExcel: false,
+      examine: null,
+      inspectorList: [], //妫�楠屼汉鍛樺垪琛�
+      alone: false,
+      sampleUserForm: {
+        entrustCode: null,
+        insSampleId: null,
+        userId: null,
+      },
+      claimVisible: false,
+      tabList: [],
+      active: 1,
+      tabIndex: 0,
+      componentDataDataLook: {
+        isPage: false,
+        entity: {
+          id: 0,
+          orderBy: {
+            field: "sampleCode",
+            order: "asc",
+          },
+        },
+        isIndex: false,
+        showSelect: false,
+        select: false,
+        do: [
+          {
+            id: "",
+            font: "鏌ョ湅",
+            type: "text",
+            method: "viewDetails",
+            showFun: (row, index) => {
+              return (
+                row.inspectionItem == "鍗曟牴鍨傜洿鐕冪儳" ||
+                row.inspectionItem.includes("鏉惧绠�") ||
+                row.inspectionItemSubclass.includes("鏉惧绠�") ||
+                (row.inspectionItem == "鎶楁媺寮哄害" &&
+                  (row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍓�" ||
+                    row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍚�")) ||
+                (row.inspectionItem == "鏂浼搁暱鐜�" &&
+                  (row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍓�" ||
+                    row.inspectionItemSubclass == "鐑�佸寲澶勭悊鍚�"))
+              );
+            },
+          },
+        ],
+        tagField: {
+          insState: {
+            select: [],
+          },
+          insResult: {
+            select: [
+              {
+                value: 1,
+                label: "鍚堟牸",
+                type: "success",
+              },
+              {
+                value: 0,
+                label: "涓嶅悎鏍�",
+                type: "danger",
+              },
+              {
+                value: 3,
+                label: "涓嶅垽瀹�",
+                type: "",
+              },
+            ],
+          },
+        },
+        selectField: {},
+        spanConfig: {
+          rows: [
+            // {
+            //   name: "entrustCode",
+            //   index: 0,
+            // },
+            // {
+            //   name: "sampleCode",
+            //   index: 1,
+            // },
+          ],
+        },
+        requiredAdd: [],
+        requiredUp: [],
+      },
+      dataDialogVisible: false,
+
+      upIndex: 0,
+      planTotal: 0,
+      state: 0, //0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0
+      activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0
+      currentId: null,
+      entityCopy: {},
+      orderId: 0,
+      personList: [],
+      connectVisible: false,
+      connect: {
+        connectPerson: "",
+        sonLaboratory: "",
+      },
+      loading: false,
+      currentTime: null,
+      sonLaboratoryList: [],
+      userNameList: [],
+      currentRow: null,
+      insProductVOSData: [],
+      insSampleListData: [],
+      currentMonthPlanTotal: 0,
+    };
+  },
+  created() {
+    this.getLaboratoryDicts();
+    this.getTypeDicts();
+    this.getInsStateDicts();
+    this.getAuthorizedPerson();
+    this.currentTime = getYearAndMonthAndDays();
+    this.getTableHeight();
+    this.handleResize();
+  },
+  mounted() {
+    window.addEventListener("resize", this.getTableHeight);
+    // 鐩戝惉绐楀彛澶у皬鏀瑰彉浜嬩欢
+    window.addEventListener("resize", this.handleResize);
+  },
+  beforeDestroy() {
+    window.removeEventListener("resize", this.getTableHeight);
+    window.removeEventListener("resize", this.handleResize);
+  },
+  watch: {
+    more() {
+      this.getTableHeight();
+    },
+    tabsData() {
+      this.$nextTick(() => {
+        this.$refs.showResultTable &&
+          this.$refs.showResultTable.forEach((e) => e.doLayout());
+      });
+    },
+  },
+  computed: {
+    title() {
+      return this.selectTab + "妫�楠岀粨鏋滄樉绀�";
+    },
+    isLeader() {
+      const power = JSON.parse(sessionStorage.getItem("power"));
+      if (power) {
+        const filterList = power.filter((ele) => ele.menuMethod == "leader");
+        return filterList.length > 0;
+      }
+      return false;
+    },
+  },
+  methods: {
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.getList();
+    },
+    getList() {
+      this.tableLoading = true;
+      selectInsOrderPlanList({ ...this.queryParams, ...this.page })
+        .then((res) => {
+          if (res.code === 200) {
+            this.tableData = res.data.records;
+            this.page.total = res.data.total;
+          }
+          this.tableLoading = false;
+        })
+        .catch((error) => {
+          this.tableLoading = false;
+          console.error(error);
+        });
+    },
+    getCurrentMonthPlanTotal() {
+      let startTime = null;
+      let endTime = null;
+      if (this.queryParams.sendTimeRange.length > 1) {
+        startTime = this.queryParams.sendTimeRange[0].replace("T", " ");
+        endTime = this.queryParams.sendTimeRange[1].replace("T", " ");
+      }
+      getCurrentMonthPlanTotal({
+        sonLaboratory: this.queryParams.sonLaboratory,
+        startTime: startTime,
+        endTime: endTime,
+      })
+        .then((res) => {
+          if (res.code === 200) {
+            this.currentMonthPlanTotal = res.data;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    // 瀹氫箟涓�涓嚱鏁版潵澶勭悊瑙嗗彛瀹藉害鍙樺寲
+    handleResize() {
+      //瑙嗗彛瀹藉害
+      let windowWidth = window.innerWidth;
+      //鍑忓幓宸﹁竟鑿滃崟鏍忓搴�200锛岄〉杈硅窛40,鍙宠竟鐨勬搷浣滄寜閽搴iewportWidth*33.33333%
+      let viewportWidth = windowWidth - 200 - 40;
+      //鎼滅储琛ㄥ崟鏈�澶у搴�
+      let formMaxWidth = viewportWidth - viewportWidth * 0.3333333;
+      //鍗曚釜鎼滅储妗嗗搴︿负230
+      this.maxNum = formMaxWidth / 250;
+    },
+    // 鏌ョ湅璇︽儏
+    viewDetails(row) {
+      this.dialogVisible = true;
+      if (
+        row.inspectionItem.includes("鏉惧绠�") ||
+        row.inspectionItemSubclass.includes("鏉惧绠�")
+      ) {
+        this.type = "鏉惧绠�";
+      } else {
+        this.type = row.inspectionItem;
+      }
+      let data = {
+        inspectionItem: row.inspectionItem,
+        inspectionItemSubclass: row.inspectionItemSubclass,
+        insProductId: row.insProductId,
+        insSampleId: row.insSampleId,
+        entrustCode: row.entrustCode,
+        sampleCode: row.sampleCode,
+      };
+      viewDetails(data)
+        .then((res) => {
+          if (res.code === 200) {
+            this.viewDetailsList = res.data;
+            if (res.data[0].tableHeader) {
+              this.tableHeader = res.data[0].tableHeader;
+            } else {
+              this.tableHeader = [
+                {
+                  testValue0: "",
+                },
+              ];
+            }
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    handleCommand(command) {
+      switch (command) {
+        case "showInsResults":
+          //鏌ヨ妫�楠岀粨鏋�
+          this.excelExport();
+          break;
+        case "exportFees":
+          //瀵煎嚭濮旀墭璐圭敤
+          this.commissionFeesDialogVisible = true;
+          break;
+        case "exportUnInsProducts":
+          //瀵煎嚭寰呮淇℃伅
+          this.unInsDialogVisible = true;
+          break;
+      }
+    },
+    // 瀵煎嚭濮旀墭璐圭敤
+    exportcommissionFees() {
+      this.$refs.exportFees.validate((valid) => {
+        if (valid) {
+          let data = {
+            startTime: this.exportFees.commissionFeesDate[0],
+            endTime: this.exportFees.commissionFeesDate[1],
+          };
+          exportCommissionFees(data)
+            .then((res) => {
+              transformExcel(res, "濮旀墭璐圭敤缁熻.xlsx");
+              this.$nextTick(() => {
+                this.$message.success("瀵煎嚭鎴愬姛");
+                this.commissionFeesDate = null;
+                this.commissionFeesDialogVisible = false;
+              });
+            })
+            .catch((error) => {
+              console.error(error);
+            });
+        }
+      });
+    },
+    handleCloseCommissionFees() {
+      this.exportFees.commissionFeesDate = null;
+      this.commissionFeesDialogVisible = false;
+      this.$refs.exportFees.resetFields();
+    },
+    // 瀵煎嚭寰呮浠诲姟
+    exportUnInsProductsFun() {
+      this.$refs.exportUnInsProducts.validate((valid) => {
+        if (valid) {
+          let data = {
+            startDate: this.unInsProductsData.sendTime[0],
+            endDate: this.unInsProductsData.sendTime[1],
+            entrustCode: this.queryParams.entrustCode,
+            insState: this.queryParams.insState,
+            sampleCode: this.queryParams.sampleCode,
+            sample: this.queryParams.sample,
+            sonLaboratory: this.queryParams.sonLaboratory,
+          };
+          console.log(data);
+          exportUnInsProducts(data)
+            .then((res) => {
+              transformExcel(res, "寰呮浠诲姟缁熻.xlsx");
+              this.$nextTick(() => {
+                this.$message.success("瀵煎嚭鎴愬姛");
+                this.handleCloseUnInsDialog();
+              });
+            })
+            .catch((error) => {
+              console.error(error);
+            });
+        }
+      });
+    },
+    handleCloseUnInsDialog() {
+      this.unInsProductsData.sendTime = [];
+      this.unInsDialogVisible = false;
+      this.$refs.exportUnInsProducts.resetFields();
+    },
+    //鍓嶅線澶嶆牳鎸夐挳鏉冮檺鏍¢獙
+    premissionReviewFun() {
+      if (this.currentRow) {
+        let row = this.currentRow;
+        return !(
+          row.userName == null ||
+          row.insState != 3 ||
+          (row.checkName && !row.checkName.includes(this.nickName))
+        );
+      }
+    },
+    //鍓嶅線澶嶆牳鏂规硶
+    goReview(currentRow) {
+      this.dataDialogVisible = false;
+      this.$nextTick(() => {
+        this.handleReview(currentRow);
+      });
+    },
+    //鏌ョ湅妫�楠岀粨鏋�-璁$畻琛ㄦ牸鍒楀搴�
+    calcTableColumnWidth(columnName) {
+      let width = 120;
+      if (columnName) {
+        let clacWidth = 20 * columnName.length;
+        width = clacWidth > width ? clacWidth : width;
+      }
+      return width;
+    },
+    getTableHeight() {
+      const outherMainHeight = this.more ? 386 : 336; //涓昏〃鏍煎叾浣欓珮搴�
+      const otherHeight = 320; // 鍏朵綑楂樺害
+      const tableH = 50; // 璺濈椤甸潰涓嬫柟鐨勯珮搴�
+      const tableHeightDetil = window.innerHeight - tableH;
+      if (tableHeightDetil <= 300) {
+        this.tableHeight = 200;
+        this.tableMainHeight = 200;
+      } else {
+        this.tableHeight = window.innerHeight - tableH - otherHeight;
+        this.tableMainHeight = window.innerHeight - tableH - outherMainHeight;
+      }
+    },
+    // 瀵煎嚭鏌ョ湅缁撴灉鏁版嵁
+    excelExportTrends() {
+      this.$message.warning("姝e湪瀵煎嚭 璇风◢鍚�...");
+      this.outLoading = true;
+      exportInsOrderPlanResult({
+        sampleType: this.tabName,
+        sonLaboratory: this.selectTab,
+        entrustCode: this.excelForm.entrustCode,
+        sampleCode: this.excelForm.sampleCode,
+        createUser: this.excelForm.sampleName,
+        insTime: this.excelForm.dateTime,
+        headerS: JSON.stringify(this.tableHeader),
+      })
+        .then((res) => {
+          this.outLoading = false;
+          this.$message.success("瀵煎嚭鎴愬姛");
+          const blob = new Blob([res], { type: "application/octet-stream" });
+          const url = URL.createObjectURL(blob);
+          const link = document.createElement("a");
+          link.href = url;
+          link.download = "妫�楠岀粨鏋�.xlsx";
+          link.click();
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    handleClose3() {
+      this.dialogVisible = false;
+    },
+    handleSizeChange(val) {
+      this.pageSize = val;
+      let table = JSON.parse(JSON.stringify(this.trendsTable));
+      this.tabsData = table.slice(0, val);
+      console.log(`姣忛〉 ${val} 鏉);
+    },
+    handleCurrentChange(val) {
+      let table = JSON.parse(JSON.stringify(this.trendsTable));
+      this.tabsData = table.slice(
+        (val - 1) * this.pageSize,
+        val * this.pageSize
+      );
+      console.log(`褰撳墠椤�: ${val}`);
+    },
+    handleClick(tab, event) {
+      this.tabName = this.tabs[tab.name];
+      this.getTabHeader(this.tabs[tab.name]);
+    },
+    excelSearch() {
+      this.getTabHeader(this.tabName);
+    },
+    // 瀵煎嚭寮规鑾峰彇tabs椤垫爣绛�
+    excelExport() {
+      this.resetForm();
+      this.outLoading = false;
+      this.activeName = "0";
+      if (this.selectTab == null || this.selectTab == "") {
+        this.selectTab = this.tabList[0].value;
+      }
+      this.loadingTable = true;
+      getTabHeader({
+        sonLaboratory: this.selectTab,
+        samples: "",
+      })
+        .then((res) => {
+          if (res.code === 200) {
+            this.tabs = res.data.tabHeader;
+            this.tabName = this.tabs[0];
+            this.getTabHeader(this.tabs[0]); // 鑾峰彇鍔ㄦ�佽〃澶�
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+      this.dialogVisibleExcel = true;
+    },
+    // samples鑾峰彇鍔ㄦ�佽〃澶�
+    getTabHeader(samples) {
+      getTabHeader({
+        sonLaboratory: this.selectTab,
+        samples: samples,
+      })
+        .then((res) => {
+          if (res.code === 200) {
+            this.loadingTable = true;
+            this.tableHeader = [];
+            this.tableHeader = res.data.tableHeader;
+            let data = {
+              sampleType: samples,
+              sonLaboratory: this.selectTab,
+              entrustCode: this.excelForm.entrustCode,
+              sampleCode: this.excelForm.sampleCode,
+              createUser: this.excelForm.sampleName,
+              insTime: this.excelForm.dateTime,
+              headerS: JSON.stringify(this.tableHeader),
+            };
+            if (samples == "娓╁害寰幆") {
+              // 鑾峰彇琛ㄦ牸鏁版嵁
+              getInsOrderTemList(data)
+                .then((res) => {
+                  if (res.code === 200) {
+                    this.tabsData = [];
+                    this.trendsTable = res.data;
+                    // 鍒嗛〉
+                    this.total = this.trendsTable.length;
+                    this.tabsData = res.data.slice(0, this.pageSize);
+                    this.loadingTable = false;
+                  }
+                })
+                .catch((error) => {
+                  console.error(error);
+                });
+            } else {
+              // 鑾峰彇琛ㄦ牸鏁版嵁
+              getInsOrderPlanList(data)
+                .then((res) => {
+                  if (res.code === 200) {
+                    this.tabsData = [];
+                    this.trendsTable = res.data;
+                    // 鍒嗛〉
+                    this.total = this.trendsTable.length;
+                    this.tabsData = res.data.slice(0, this.pageSize);
+                    this.loadingTable = false;
+                  }
+                })
+                .catch((error) => {
+                  console.error(error);
+                });
+            }
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    // 娓呯┖琛ㄥ崟
+    resetForm() {
+      this.excelForm = {
+        entrustCode: null,
+        sampleCode: null,
+        sampleName: null,
+        dateTime: null,
+      };
+    },
+
+    // 鏁版嵁鏌ョ湅
+    handleDataLook(row) {
+      this.dataLookTableLoading = true;
+      selectSampleAndProductByOrderId({ id: row.id })
+        .then((res) => {
+          if (res.code === 200) {
+            this.dataLooktableData = res.data;
+          }
+          this.dataLookTableLoading = false;
+        })
+        .catch((error) => {
+          console.error(error);
+          this.dataLookTableLoading = false;
+        });
+      this.dataDialogVisible = true;
+    },
+    changeCheckBox(val) {
+      this.queryParams.userId = val ? 0 : null;
+      this.refreshTable();
+    },
+    refresh() {
+      if (this.tabList.length > 0) {
+        this.tabIndex = 0;
+        this.queryParams.sonLaboratory = this.tabList[0].value;
+      }
+      this.refreshTable();
+    },
+    claimFun(row) {
+      if (row) {
+        this.sampleUserForm = {
+          entrustCode: row.entrustCode,
+          insSampleId: row.id,
+          sonLaboratory: row.sonLaboratory,
+        };
+        this.claimVisible = true;
+      }
+    },
+    confirmClaim() {
+      this.loading = true;
+      claimInsOrderPlan(this.sampleUserForm)
+        .then((res) => {
+          if (res.code === 200 && res.data) {
+            this.loading = false;
+            this.$message.success("璁ら鎴愬姛");
+            this.claimVisible = false;
+            this.refreshTable("page");
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+          this.loading = false;
+        });
+    },
+    refreshTable() {
+      this.getList();
+      this.$nextTick(() => {
+        this.getCurrentMonthPlanTotal();
+      });
+    },
+    changeRowClass({ row, rowIndex }) {
+      if (this.currentTime == row.appointed) {
+        return "highlight-warning-row-border";
+      } else if (this.currentTime > row.appointed) {
+        return "highlight-danger-row-border";
+      }
+      return "";
+    },
+    onReset() {
+      this.searchForm = {
+        sampleName: null,
+        state: null,
+      };
+      this.componentData.entity.insState = null;
+      this.componentData.entity.sampleName = null;
+      this.refreshTable();
+    },
+    onSubmit() {
+      this.componentData.entity.insState = this.searchForm.state;
+      this.componentData.entity.sampleName = this.searchForm.sampleName;
+      this.$nextTick(() => {
+        this.refreshTable();
+      });
+    },
+    handleTab(m, i) {
+      console.log("aaa", m, i);
+      this.selectTab = m.value;
+      this.tabIndex = i;
+      this.queryParams.sonLaboratory = m.value;
+      this.refreshTable();
+    },
+    getTypeDicts() {
+      getDicts("urgency_level")
+        .then((res) => {
+          if (res.code === 200) {
+            this.urgencyDictList = res.data;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    getInsStateDicts() {
+      getDicts("inspection_task_state")
+        .then((res) => {
+          if (res.code === 200) {
+            this.insStateList = res.data;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+      // this.$axios
+      //   .post(this.$api.enums.selectEnumByCategory, {
+      //     category: "",
+      //   })
+      //   .then((res) => {
+      //     let data = res.data;
+
+      //     data.forEach((ele) => {
+      //       //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃
+      //       if (["2", "5"].includes(ele.value)) {
+      //         ele.type = "success";
+      //       } else if (["1", "3"].includes(ele.value)) {
+      //         ele.type = "warning";
+      //       } else if (["0", "4"].includes(ele.value)) {
+      //         ele.type = "danger";
+      //       }
+      //     });
+      //     this.componentData.tagField.insState.select = data;
+      //   });
+    },
+    getLaboratoryDicts() {
+      getDicts("sys_sub_lab")
+        .then((res) => {
+          if (res.code === 200) {
+            this.tabList = res.data.map((ele) => {
+              return {
+                label: ele.dictLabel,
+                value: ele.dictValue,
+              };
+            });
+            if (this.tabList.length > 0) {
+              this.queryParams.sonLaboratory = this.tabList[0].value;
+            }
+            this.refreshTable();
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    selectAllByOne(row) {
+      this.$router.push({
+        name: "showDetails",
+        query: {
+          active: 2,
+          currentId: row.id,
+          examine: 1,
+          isPlan: true,
+        },
+      });
+    },
+    //鏌ョ湅濮旀墭鍗曞熀鏈俊鎭�
+    selectOrderInfo(row) {
+      if (row) {
+        getSampleInfoByOrderId({
+          id: row.id,
+          sonLaboratory: row.sonLaboratory,
+        })
+          .then((res) => {
+            if (res.code == 200) {
+              this.insSampleListData = res.data.insSamples;
+              this.insProductVOSData = res.data.insProductVOS;
+            }
+          })
+          .catch((error) => {
+            console.error(error);
+          });
+      }
+      this.$nextTick(() => {
+        this.orderInfoDialog = true;
+      });
+    },
+    playOrder(num) {
+      this.activeFace = num;
+    },
+    goback() {
+      this.state = 0;
+      this.refreshTable("page");
+    },
+    handleInspection(row) {
+      //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
+      let inspectorList = [];
+      if (row.userName) {
+        inspectorList = row.userName.split(",");
+      }
+      inspectorList.push(this.nickName);
+      this.inspectorList = inspectorList;
+      this.state = 1;
+      this.orderId = row.id;
+    },
+    handleConnect(row) {
+      this.orderId = row.id;
+      this.connect = {
+        connectPerson: "",
+        sonLaboratory: "",
+      };
+      this.userNameList = row.userName.split(",");
+      this.connectVisible = true;
+      upPlanUser2({
+        orderId: this.orderId,
+      })
+        .then((res) => {
+          if (res.code === 200 && res.data.length > 0) {
+            this.sonLaboratoryList = [];
+            res.data.forEach((m) => {
+              this.sonLaboratoryList.push({
+                value: m,
+                label: m,
+              });
+            });
+            this.connect.sonLaboratory = row.sonLaboratory;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    confirmConnect() {
+      if (
+        this.connect.connectPerson == null ||
+        this.connect.connectPerson == "" ||
+        this.connect.connectPerson == undefined
+      ) {
+        this.$message.error("鏈�夋嫨浜ゆ帴浜哄憳");
+        return;
+      }
+      if (
+        this.connect.sonLaboratory == null ||
+        this.connect.sonLaboratory == "" ||
+        this.connect.sonLaboratory == undefined
+      ) {
+        this.$message.error("鏈�夋嫨璇曢獙瀹�");
+        return;
+      }
+      this.loading = true;
+      upPlanUser({
+        orderId: this.orderId,
+        userId: this.connect.connectPerson,
+        sonLaboratory: this.connect.sonLaboratory,
+      })
+        .then((res) => {
+          if (res.code === 200) {
+            this.loading = false;
+            this.$message.success("鎿嶄綔鎴愬姛");
+            this.refreshTable("page");
+          }
+          this.connectVisible = false;
+        })
+        .catch((error) => {
+          console.error(error);
+          this.loading = false;
+        });
+    },
+    handleReview(row) {
+      this.state = 2;
+      this.orderId = row.id;
+    },
+    getAuthorizedPerson() {
+      getLaboratoryPersonList()
+        .then((res) => {
+          if (res.code === 200) {
+            this.personList = res.data;
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    handleClose(done) {
+      done();
+    },
+    getStyle() {
+      return "height: calc(100% - " + (this.more ? "94" : "44") + "px)";
+    },
+  },
+};
 </script>
 
-<style></style>
+<style scoped lang="scss">
+.ins-order-plan-main .title {
+  font-size: 20px;
+  color: #3a7bfa;
+}
+
+.search {
+  background-color: #fff;
+  display: flex;
+  align-items: center;
+}
+
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 50px;
+  width: 230px;
+}
+
+.search_label {
+  /* width: 90px; */
+  font-size: 14px;
+  text-align: right;
+}
+
+.search_input {
+  width: calc(100% - 70px);
+}
+
+.ins-order-plan-main .search {
+  width: 100%;
+  margin-bottom: 10px;
+  height: 80px;
+  background-color: #fff;
+  border-radius: 3px;
+}
+
+.search .form-inline {
+  height: 50px;
+  padding-top: 20px;
+  padding-left: 20px;
+}
+
+.tab {
+  list-style-type: none;
+  display: flex;
+  padding-inline-start: 0px;
+}
+
+.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-last-child(1) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3a7bfa;
+  color: #3a7bfa;
+}
+
+.center .center-options .center-title {
+  display: flex;
+  align-items: center;
+  justify-content: right;
+  text-align: right;
+  span:last-child {
+    color: #3a7bfa;
+    font-size: 23px;
+    font-weight: 400;
+  }
+  p:last-child {
+    margin-left: 20px;
+  }
+}
+
+.view-self-checkbox {
+  margin-left: 50px;
+}
+.ins-order-plan-main .el-form-item__label {
+  color: #000;
+}
+
+.ins-order-plan-main .el-table th.el-table__cell > .cell {
+  height: 46px;
+  line-height: 30px;
+}
+</style>

--
Gitblit v1.9.3