From 037a7112a2bc9e38bb2f398ff5ca740ac01a8fb2 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 20 二月 2025 10:21:05 +0800
Subject: [PATCH] 检验任务搬迁30%

---
 src/components/Table/lims-table.vue                                 |    3 
 src/assets/styles/index.scss                                        |   32 
 src/api/business/inspectionTask.js                                  |  162 +
 src/main.js                                                         |    6 
 src/utils/excelFountion.js                                          |  358 +++
 package.json                                                        |    1 
 src/views/business/inspectionTask/inspection.vue                    | 3290 ++++++++++++++++++++++++++++
 src/views/performance/manHour/workTimeConfig.vue                    |  143 -
 src/components/Table/value-table.vue                                | 2531 +++++++++++++---------
 src/views/business/inspectionTask/components/EditInspectionItem.vue |    9 
 src/views/business/inspectionTask/index.vue                         |  316 --
 11 files changed, 5,422 insertions(+), 1,429 deletions(-)

diff --git a/package.json b/package.json
index fb5655f..823e179 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",
     "highlight.js": "9.18.5",
+    "html2canvas": "^1.4.1",
     "js-beautify": "1.13.0",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.0.0-rc.1",
diff --git a/src/api/business/inspectionTask.js b/src/api/business/inspectionTask.js
index 7efcdea..d8704f6 100644
--- a/src/api/business/inspectionTask.js
+++ b/src/api/business/inspectionTask.js
@@ -107,3 +107,165 @@
     params: query,
   });
 }
+
+// 闄勪欢涓婁紶
+export function uploadFile(data) {
+  return request({
+    url: "/insOrderPlan/uploadFile",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏌ヨ妫�楠屼换鍔�
+export function doInsOrder(query) {
+  return request({
+    url: "/insOrderPlan/doInsOrder",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏌ヨ鏄惁鏈夐渶瑕佸娆℃楠岀殑鐢电紗閰嶇疆
+export function getCableTag(query) {
+  return request({
+    url: "/insOrderPlan/getCableTag",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏌ョ湅閲嶅鏍囪瘑
+export function getRepetitionTag(query) {
+  return request({
+    url: "/insOrderPlan/getRepetitionTag",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏌ヨ鏄惁鏈夐渶瑕佸娆℃楠岀殑鐢电紗閰嶇疆
+export function getRawMaterialTag(query) {
+  return request({
+    url: "/insOrderPlan/getRawMaterialTag",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏁伴噰-鏁版嵁閲囬泦
+export function dataCollection(data) {
+  return request({
+    url: "/deviceScope/dataCollection",
+    method: "post",
+    data: data,
+  });
+}
+
+// 濉啓娓╁害涓庢箍搴�
+export function write(data) {
+  return request({
+    url: "/insOrderPlan/write",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鑾峰彇妫�楠岄」鐩拰妯℃澘鍐呭
+export function getInsProduct(query) {
+  return request({
+    url: "/insOrderPlan/getInsProduct",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鍒囨崲鍏夌氦-鍏夌氦甯﹁褰曟ā鐗堟煡璇㈡楠屽唴瀹�
+export function getReportModel(query) {
+  return request({
+    url: "/insOrderPlan/getReportModel",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鍒ゆ柇璇ヨ澶囨槸鍚﹀彲浠ユ暟閲�
+export function determineWhetherToCollectData(query) {
+  return request({
+    url: "/deviceScope/determineWhetherToCollectData",
+    method: "get",
+    params: query,
+  });
+}
+
+// 閫氳繃璁惧鍒嗙被鑾峰彇璁惧鍒楄〃
+export function search(query) {
+  return request({
+    url: "/deviceScope/search",
+    method: "get",
+    params: query,
+  });
+}
+
+// 澶嶆牳妫�楠屼换鍔�
+export function verifyPlan(data) {
+  return request({
+    url: "/insOrderPlan/verifyPlan",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏍¢獙妫�楠屼换鍔℃彁浜�
+export function checkSubmitPlan(data) {
+  return request({
+    url: "/insOrderPlan/checkSubmitPlan",
+    method: "post",
+    data: data,
+  });
+}
+
+// 妫�楠屼换鍔℃彁浜�
+export function submitPlan(data) {
+  return request({
+    url: "/insOrderPlan/submitPlan",
+    method: "post",
+    data: data,
+  });
+}
+
+// 淇濆瓨妫�楠屽唴瀹�
+export function saveInsContext(data) {
+  return request({
+    url: "/insOrderPlan/saveInsContext",
+    method: "post",
+    data: data,
+  });
+}
+
+// 闄勪欢涓嬭浇
+export function downFile(query) {
+  return request({
+    url: "/insOrderPlan/downFile",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏌ョ湅妫�楠屽崟涓嬬殑闄勪欢鍒楄〃
+export function getFileList(query) {
+  return request({
+    url: "/insOrderPlan/getFileList",
+    method: "get",
+    params: query,
+  });
+}
+
+// 闄勪欢鍒犻櫎
+export function delfile(query) {
+  return request({
+    url: "/insOrderPlan/delfile",
+    method: "delete",
+    params: query,
+  });
+}
diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss
index cacf353..541cff9 100644
--- a/src/assets/styles/index.scss
+++ b/src/assets/styles/index.scss
@@ -1,16 +1,17 @@
-@import './variables.scss';
-@import './mixin.scss';
-@import './transition.scss';
-@import './element-ui.scss';
-@import './sidebar.scss';
-@import './btn.scss';
+@import "./variables.scss";
+@import "./mixin.scss";
+@import "./transition.scss";
+@import "./element-ui.scss";
+@import "./sidebar.scss";
+@import "./btn.scss";
 
 body {
   height: 100%;
   -moz-osx-font-smoothing: grayscale;
   -webkit-font-smoothing: antialiased;
   text-rendering: optimizeLegibility;
-  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
+    Microsoft YaHei, Arial, sans-serif;
 }
 
 label {
@@ -104,7 +105,8 @@
   display: block;
   line-height: 32px;
   font-size: 16px;
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
+    Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
   color: #2c3e50;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
@@ -137,7 +139,7 @@
 }
 
 .text-center {
-  text-align: center
+  text-align: center;
 }
 
 .sub-navbar {
@@ -148,7 +150,13 @@
   text-align: right;
   padding-right: 20px;
   transition: 600ms ease position;
-  background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
+  background: linear-gradient(
+    90deg,
+    rgba(32, 182, 249, 1) 0%,
+    rgba(32, 182, 249, 1) 0%,
+    rgba(33, 120, 241, 1) 100%,
+    rgba(33, 120, 241, 1) 100%
+  );
 
   .subtitle {
     font-size: 20px;
@@ -183,3 +191,7 @@
     margin-bottom: 10px;
   }
 }
+
+.required-span {
+  color: red;
+}
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index dc592f0..8b5b5b4 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -361,11 +361,10 @@
   },
   data() {
     return {
-      spanInfo: {},
       spanList: [],
     };
   },
-  created() {
+  mounted() {
     this.calculateSpanInfo();
   },
   methods: {
diff --git a/src/components/Table/value-table.vue b/src/components/Table/value-table.vue
index 0998661..3647f3c 100644
--- a/src/components/Table/value-table.vue
+++ b/src/components/Table/value-table.vue
@@ -1,320 +1,666 @@
 <style scoped>
-  .value-table {
-    width: 100%;
-    height: 100%;
-    overflow-y: auto;
-  }
+.value-table {
+  width: 100%;
+  height: 100%;
+  overflow-y: auto;
+}
 
-  .table {
-    width: 100%;
-    height: calc(100% - 42px);
-  }
+.table {
+  width: 100%;
+  height: calc(100% - 42px);
+}
 
-  .page {
-    width: 100%;
-    height: 30px;
-    text-align: right;
-    margin-top: 10px;
-  }
+.page {
+  width: 100%;
+  height: 30px;
+  text-align: right;
+  margin-top: 10px;
+}
 
-  .down-left {
-    width: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
+.down-left {
+  width: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 
-  .down-right {
-    width: 50%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
+.down-right {
+  width: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 
-  .body {
-    overflow-x: hidden;
-  }
+.body {
+  overflow-x: hidden;
+}
 
-  .handleBtn {
-    border: none;
-    padding: 0;
-    color: #409EFF;
-    background: transparent;
-  }
+.handleBtn {
+  border: none;
+  padding: 0;
+  color: #409eff;
+  background: transparent;
+}
 
-  .handleBtn:hover {
-    background: transparent;
-  }
+.handleBtn:hover {
+  background: transparent;
+}
 
-  .handleBtn.is-disabled {
-    color: #C0C4CC;
-  }
-  .red{
-    color: red !important;
-  }
-  >>>.el-loading-parent--relative {
-    z-index: 1 !important;
-  }
-  >>> .el-table__body-wrapper::-webkit-scrollbar {
-    height: 14px; /* 璁剧疆婊氬姩鏉″搴� */
-  }
+.handleBtn.is-disabled {
+  color: #c0c4cc;
+}
+.red {
+  color: red !important;
+}
+>>> .el-loading-parent--relative {
+  z-index: 1 !important;
+}
+>>> .el-table__body-wrapper::-webkit-scrollbar {
+  height: 14px; /* 璁剧疆婊氬姩鏉″搴� */
+}
 </style>
 <style>
-  /* .value-table .highlight-warning-row-border td {
+/* .value-table .highlight-warning-row-border td {
 		border-top: 2px solid #ffcd29;
 		border-bottom: 2px solid #ffcd29;
 	} */
 
-  .value-table .highlight-warning-row-border td:first-child {
-    border-left: 4px solid #ffcd29;
-  }
+.value-table .highlight-warning-row-border td:first-child {
+  border-left: 4px solid #ffcd29;
+}
 
-  .value-table .highlight-warning-row-border td:last-child {
-    border-right: 4px solid #ffcd29;
-  }
+.value-table .highlight-warning-row-border td:last-child {
+  border-right: 4px solid #ffcd29;
+}
 
-  /* .value-table .highlight-danger-row-border td {
+/* .value-table .highlight-danger-row-border td {
 		border-top: 2px solid red;
 		border-bottom: 2px solid red;
 	} */
 
-  .value-table .highlight-danger-row-border td:first-child {
-    border-left: 4px solid #f56c6c;
-  }
+.value-table .highlight-danger-row-border td:first-child {
+  border-left: 4px solid #f56c6c;
+}
 
-  .value-table .highlight-danger-row-border td:last-child {
-    border-right: 4px solid #f56c6c;
-  }
+.value-table .highlight-danger-row-border td:last-child {
+  border-right: 4px solid #f56c6c;
+}
 
-  .value-table .el-upload {
-    width: 100%;
-  }
+.value-table .el-upload {
+  width: 100%;
+}
 
-  .value-table .el-upload-dragger {
-    width: 100%;
-  }
+.value-table .el-upload-dragger {
+  width: 100%;
+}
 
-  .value-table .handleBtn.is-disabled .el-upload:focus {
-    color: #C0C4CC !important;
-  }
+.value-table .handleBtn.is-disabled .el-upload:focus {
+  color: #c0c4cc !important;
+}
 
-  .value-table .avatar-uploader .el-upload {
-    height: 80px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-  }
-  .el-table__empty-text{
-    text-align: left;
-    width: 100%;
-    display: inline-block;
-    margin-left: 200px;
-  }
-
+.value-table .avatar-uploader .el-upload {
+  height: 80px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.el-table__empty-text {
+  text-align: left;
+  width: 100%;
+  display: inline-block;
+  margin-left: 200px;
+}
 </style>
 
 <template>
   <div class="value-table">
-    <div :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''" class="table">
-      <el-table :key="specialKey" ref="eltable" v-loading="loading" :current-row-key="data.currentId" :data="tableData" :highlight-current-row="data.highlight===undefined||data.highlight"
-        :row-class-name="tableRowClassName" :row-key="record=>record[rowKey]" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" :span-method="spanMethod"
+    <div
+      :style="
+        data.isPage != undefined && data.isPage != true ? 'height:100%' : ''
+      "
+      class="table"
+    >
+      <el-table
+        :key="specialKey"
+        ref="eltable"
+        v-loading="loading"
+        :current-row-key="data.currentId"
+        :data="tableData"
+        :highlight-current-row="data.highlight === undefined || data.highlight"
+        :row-class-name="tableRowClassName"
+        :row-key="(record) => record[rowKey]"
+        :show-summary="
+          data.countFleid != undefined && data.countFleid.length > 0
+        "
+        :span-method="spanMethod"
         :summary-method="getSummaries"
-        height="100%" style="width: 100%;" tooltip-effect="dark"
-        @select="select" @selection-change="selectChange"
-        @sort-change="sortChange" @row-click="rowClick">
-        <el-table-column v-if="data.showSelect" :key="Math.random()" :width="selectionWidth" type="selection">
+        height="100%"
+        style="width: 100%"
+        tooltip-effect="dark"
+        @select="select"
+        @selection-change="selectChange"
+        @sort-change="sortChange"
+        @row-click="rowClick"
+      >
+        <el-table-column
+          v-if="data.showSelect"
+          :key="Math.random()"
+          :width="selectionWidth"
+          type="selection"
+        >
         </el-table-column>
-        <el-table-column v-if="data.isIndex" :key="Math.random()" :width="selectionWidth" align="center" label="搴忓彿" type="index">
+        <el-table-column
+          v-if="data.isIndex"
+          :key="Math.random()"
+          :width="selectionWidth"
+          align="center"
+          label="搴忓彿"
+          type="index"
+        >
         </el-table-column>
-        <el-table-column v-for="(a, ai) in tableHead" v-if="!data.headNoShow||(data.headNoShow&&data.headNoShow.length==0)||(data.headNoShow&&data.headNoShow.length>0&&!data.headNoShow.find(d=>d==a.label))" :key="ai+'bbbbb'" :isColumnWidth="isColumnWidth" :isShowZero="isShowZero"
-          :label="a.value" :min-width="columnMinWidth" :prop="a.label" :sortable="a.sort === 'custom' ? 'custom' : false" show-overflow-tooltip>
+        <el-table-column
+          v-for="(a, ai) in tableHead"
+          v-if="
+            !data.headNoShow ||
+            (data.headNoShow && data.headNoShow.length == 0) ||
+            (data.headNoShow &&
+              data.headNoShow.length > 0 &&
+              !data.headNoShow.find((d) => d == a.label))
+          "
+          :key="ai + 'bbbbb'"
+          :isColumnWidth="isColumnWidth"
+          :isShowZero="isShowZero"
+          :label="a.value"
+          :min-width="columnMinWidth"
+          :prop="a.label"
+          :sortable="a.sort === 'custom' ? 'custom' : false"
+          show-overflow-tooltip
+        >
           <template slot-scope="scope">
             <div v-if="showType(a.label, data.tagField) != null">
-              <template v-if="typeof(scope.row[a.label]) == 'object'">
+              <template v-if="typeof scope.row[a.label] == 'object'">
                 <template v-for="(param, i) in scope.row[a.label]">
-                  <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-if="b.value == param" :key="bi+'cccc'"
-                    :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag>
+                  <el-tag
+                    v-for="(b, bi) in data.tagField[a.label].select"
+                    v-if="b.value == param"
+                    :key="bi + 'cccc'"
+                    :type="b.type"
+                    size="medium"
+                    style="margin-right: 5px"
+                    >{{ b.label }}</el-tag
+                  >
                 </template>
               </template>
               <template v-else>
-                <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-show="b.value == scope.row[a.label]" :key="bi+'ddddd'"
-                  :type="b.type" size="medium">{{b.label}}</el-tag>
+                <el-tag
+                  v-for="(b, bi) in data.tagField[a.label].select"
+                  v-show="b.value == scope.row[a.label]"
+                  :key="bi + 'ddddd'"
+                  :type="b.type"
+                  size="medium"
+                  >{{ b.label }}</el-tag
+                >
               </template>
             </div>
             <!-- 鍙搷浣滆杩涜鐐瑰嚮浜嬩欢 -->
-            <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;"
-              @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span>
-            <img v-else-if="showUpload(a.label)&&scope.row[a.label]" :src="javaApi+'/img/'+scope.row[a.label]"
-              alt="" style="width: 40px;height: 40px;margin-top: 10px;">
-            <span v-else :class="{red:getRedColor(a.label,scope.row)}" >{{scope.row[a.label]}}</span>
+            <span
+              v-else-if="data.linkEvent && showLink(a.label, data.linkEvent)"
+              style="color: #409eff; cursor: pointer"
+              @click="handleLinkEvent(scope.row, data.linkEvent[a.label])"
+              >{{ scope.row[a.label] }}</span
+            >
+            <img
+              v-else-if="showUpload(a.label) && scope.row[a.label]"
+              :src="javaApi + '/img/' + scope.row[a.label]"
+              alt=""
+              style="width: 40px; height: 40px; margin-top: 10px"
+            />
+            <span v-else :class="{ red: getRedColor(a.label, scope.row) }">{{
+              scope.row[a.label]
+            }}</span>
           </template>
         </el-table-column>
-        <el-table-column v-if="data.do.length > 0" :width="getWidth()" align="center" fixed="right" label="鎿嶄綔">
+        <el-table-column
+          v-if="data.do.length > 0"
+          :width="getWidth()"
+          align="center"
+          fixed="right"
+          label="鎿嶄綔"
+        >
           <template slot-scope="scope">
-            <el-button v-for="(a, ai) in data.do" :key="ai
-            +'qqqq'" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false"
-              :type="a.type" class="handleBtn"
-              @click="main(scope.row, a)">
-              <span v-if="a.type!='upload'">{{a.font}}</span>
-              <el-upload v-else ref='upload'
-                :accept='a.uploadConfig.accept' :action="javaApi+a.uploadConfig.url+'?id='+ (a.uploadConfig.uploadIdFun ? a.uploadConfig.uploadIdFun(scope.row) :  scope.row.id)"
-                :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :headers="token" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false"
-                name="file" style="background: transparent;">
-                <span>{{a.font}}</span>
+            <el-button
+              v-for="(a, ai) in data.do"
+              :key="ai + 'qqqq'"
+              :disabled="
+                a.disabFun ? a.disabFun(scope.row, scope.$index) : false
+              "
+              :type="a.type"
+              class="handleBtn"
+              @click="main(scope.row, a)"
+            >
+              <span v-if="a.type != 'upload'">{{ a.font }}</span>
+              <el-upload
+                v-else
+                ref="upload"
+                :accept="a.uploadConfig.accept"
+                :action="
+                  javaApi +
+                  a.uploadConfig.url +
+                  '?id=' +
+                  (a.uploadConfig.uploadIdFun
+                    ? a.uploadConfig.uploadIdFun(scope.row)
+                    : scope.row.id)
+                "
+                :disabled="
+                  a.disabFun ? a.disabFun(scope.row, scope.$index) : false
+                "
+                :headers="token"
+                :on-error="onError"
+                :on-success="handleSuccessUp"
+                :show-file-list="false"
+                name="file"
+                style="background: transparent"
+              >
+                <span>{{ a.font }}</span>
               </el-upload>
             </el-button>
           </template>
         </el-table-column>
       </el-table>
     </div>
-    <div v-if="data.isPage==undefined||data.isPage" class="page">
-      <el-pagination :current-page="page.current" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]"
-        :total="total" layout="total, sizes, prev, pager, next, jumper" @size-change="sizeChange"
-        @current-change="currentChange">
+    <div v-if="data.isPage == undefined || data.isPage" class="page">
+      <el-pagination
+        :current-page="page.current"
+        :page-size="page.size"
+        :page-sizes="[10, 20, 30, 50, 100]"
+        :total="total"
+        layout="total, sizes, prev, pager, next, jumper"
+        @size-change="sizeChange"
+        @current-change="currentChange"
+      >
       </el-pagination>
     </div>
-    <el-dialog :close-on-click-modal="false" :visible.sync="upDia"
-               :width="data.row==1?'500px':540+data.row * 200 + 'px'"
-               append-to-body title="缂栬緫">
-      <div class="body" style="max-height: 600px;overflow-y: auto;padding: 5px 10px 5px 0;">
+    <el-dialog
+      :close-on-click-modal="false"
+      :visible.sync="upDia"
+      :width="data.row == 1 ? '500px' : 540 + data.row * 200 + 'px'"
+      append-to-body
+      title="缂栬緫"
+    >
+      <div
+        class="body"
+        style="max-height: 600px; overflow-y: auto; padding: 5px 10px 5px 0"
+      >
         <div v-if="data.row > 1">
-          <div v-for="(a, ai) in upHead" :key="ai+'ffff'" style="line-height: 50px;">
-            <el-col :offset="1" :span="6/data.row" style="text-align: right;">
-              <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}锛�
+          <div
+            v-for="(a, ai) in upHead"
+            :key="ai + 'ffff'"
+            style="line-height: 50px"
+          >
+            <el-col :offset="1" :span="6 / data.row" style="text-align: right">
+              <span v-if="showUpReq(a.label)" class="required-span">* </span
+              >{{ a.value }}锛�
             </el-col>
-            <el-col :span="16/data.row">
-              <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`璇疯緭鍏�${a.value}`"
+            <el-col :span="16 / data.row">
+              <el-input
+                v-if="
+                  showType(a.label, data.selectField) == null &&
+                  !showUpload(a.label) &&
+                  !showCascader(a.label)
+                "
+                v-model="upData[a.label]"
+                :disabled="isDisabled(a.label)"
+                :placeholder="`璇疯緭鍏�${a.value}`"
                 clearable
-                size="small"></el-input>
-              <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :allow-create="data.selectField[a.label].allowCreate"
-                         :default-first-option="data.selectField[a.label].defaultFirstOption"
-                         :disabled="isDisabled(a.label)"
-                :multiple="data.selectField[a.label].choose" clearable filterable
-                size="small" style="width: 100%;">
-                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'eeeee'" :label="b.label"
-                  :value="b.value">
+                size="small"
+              ></el-input>
+              <el-select
+                v-if="showType(a.label, data.selectField) != null"
+                v-model="upData[a.label]"
+                :allow-create="data.selectField[a.label].allowCreate"
+                :default-first-option="
+                  data.selectField[a.label].defaultFirstOption
+                "
+                :disabled="isDisabled(a.label)"
+                :multiple="data.selectField[a.label].choose"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(b, bi) in data.selectField[a.label].select"
+                  :key="bi + 'eeeee'"
+                  :label="b.label"
+                  :value="b.value"
+                >
                 </el-option>
               </el-select>
-              <el-upload v-if="showUpload(a.label)" ref='upload'
-                :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
-                :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+              <el-upload
+                v-if="showUpload(a.label)"
+                ref="upload"
+                :accept="data.addUploadConfig.accept"
+                :action="javaApi + data.addUploadConfig.url"
+                :headers="token"
+                :multiple="false"
+                :on-error="onError"
+                :on-success="(m) => handleSuccessUp(m, a.label)"
+                :show-file-list="false"
+                class="avatar-uploader"
                 name="file"
-                style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
-                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
-                  style="width: 80px;height: 80px;border-radius: 6px;">
+                style="
+                  background: transparent;
+                  width: 80px;
+                  height: 80px;
+                  border: 1px solid #dcdfe6;
+                  border-radius: 6px;
+                  margin: 10px 0;
+                "
+              >
+                <img
+                  v-if="upData[a.label]"
+                  :src="javaApi + '/img/' + upData[a.label]"
+                  class="avatar"
+                  style="width: 80px; height: 80px; border-radius: 6px"
+                />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
               </el-upload>
-              <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
-                :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]"
-                clearable filterable size="small"
-                style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+              <el-cascader
+                v-if="showCascader(a.label)"
+                :options="data.cascaderField[a.label].tree"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                :props="data.cascaderField.props"
+                :show-all-levels="false"
+                :value="upData[a.label]"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+                @change="(m) => handleCascader(m, a.label)"
+              ></el-cascader>
             </el-col>
           </div>
         </div>
         <div v-else>
-          <el-row v-for="(a, ai) in upHead" :key="ai+'ggggg'" style="line-height: 50px;">
-            <el-col :span="6" style="text-align: right;">
-              <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}锛�
+          <el-row
+            v-for="(a, ai) in upHead"
+            :key="ai + 'ggggg'"
+            style="line-height: 50px"
+          >
+            <el-col :span="6" style="text-align: right">
+              <span v-if="showUpReq(a.label)" class="required-span">* </span
+              >{{ a.value }}锛�
             </el-col>
             <el-col :offset="1" :span="16">
-              <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`璇疯緭鍏�${a.value}`"
+              <el-input
+                v-if="
+                  showType(a.label, data.selectField) == null &&
+                  !showUpload(a.label) &&
+                  !showCascader(a.label)
+                "
+                v-model="upData[a.label]"
+                :disabled="isDisabled(a.label)"
+                :placeholder="`璇疯緭鍏�${a.value}`"
                 clearable
-                size="small"></el-input>
-              <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :disabled="isDisabled(a.label)"
-                :multiple="data.selectField[a.label].choose" clearable filterable
-                size="small" style="width: 100%;">
-                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'fffff'" :label="b.label"
-                  :value="b.value"></el-option>
+                size="small"
+              ></el-input>
+              <el-select
+                v-if="showType(a.label, data.selectField) != null"
+                v-model="upData[a.label]"
+                :disabled="isDisabled(a.label)"
+                :multiple="data.selectField[a.label].choose"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(b, bi) in data.selectField[a.label].select"
+                  :key="bi + 'fffff'"
+                  :label="b.label"
+                  :value="b.value"
+                ></el-option>
               </el-select>
-              <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept'
-                :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError"
-                :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file"
-                style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
-                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
-                  style="width: 80px;height: 80px;border-radius: 6px;">
+              <el-upload
+                v-if="showUpload(a.label)"
+                ref="upload"
+                :accept="data.addUploadConfig.accept"
+                :action="javaApi + data.addUploadConfig.url"
+                :headers="token"
+                :multiple="false"
+                :on-error="onError"
+                :on-success="(m) => handleSuccessUp(m, a.label)"
+                :show-file-list="false"
+                class="avatar-uploader"
+                name="file"
+                style="
+                  background: transparent;
+                  width: 80px;
+                  height: 80px;
+                  border: 1px solid #dcdfe6;
+                  border-radius: 6px;
+                  margin: 10px 0;
+                "
+              >
+                <img
+                  v-if="upData[a.label]"
+                  :src="javaApi + '/img/' + upData[a.label]"
+                  class="avatar"
+                  style="width: 80px; height: 80px; border-radius: 6px"
+                />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
               </el-upload>
-              <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
-                :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable
-                filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+              <el-cascader
+                v-if="showCascader(a.label)"
+                :options="data.cascaderField[a.label].tree"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                :props="data.cascaderField.props"
+                :show-all-levels="false"
+                :value="upData[a.label]"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+                @change="(m) => handleCascader(m, a.label)"
+              ></el-cascader>
             </el-col>
           </el-row>
         </div>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="upDia = false">鍙� 娑�</el-button>
-        <el-button :loading="upLoad" type="primary" @click="saveUpData">纭� 瀹�</el-button>
+        <el-button :loading="upLoad" type="primary" @click="saveUpData"
+          >纭� 瀹�</el-button
+        >
       </span>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" :visible.sync="addDia"
-               :width="data.row==1?'500px':540+data.row * 200 + 'px'"
-               append-to-body title="鏂板">
-      <div v-if="addDia" class="body" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;">
+    <el-dialog
+      :close-on-click-modal="false"
+      :visible.sync="addDia"
+      :width="data.row == 1 ? '500px' : 540 + data.row * 200 + 'px'"
+      append-to-body
+      title="鏂板"
+    >
+      <div
+        v-if="addDia"
+        class="body"
+        style="max-height: 550px; overflow-y: auto; padding: 5px 10px 5px 0"
+      >
         <div v-if="data.row > 1">
-          <div v-for="(a, ai) in upHead" :key="ai+'yyyyy'" style="line-height: 50px;">
-            <el-col :offset="1" :span="6/data.row" style="text-align: right;"><span v-if="showAddReq(a.label)"
-                class="required-span">*
-              </span>{{a.value}}锛�</el-col>
-            <el-col :span="16/data.row">
-              <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`璇疯緭鍏�${a.value}`" clearable
-                size="small"></el-input>
-              <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose"
-              :placeholder="`璇烽�夋嫨${a.value}`"
-                clearable filterable size="small" style="width: 100%;">
-                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'hhhh'" :label="b.label"
-                  :value="b.value"></el-option>
+          <div
+            v-for="(a, ai) in upHead"
+            :key="ai + 'yyyyy'"
+            style="line-height: 50px"
+          >
+            <el-col :offset="1" :span="6 / data.row" style="text-align: right"
+              ><span v-if="showAddReq(a.label)" class="required-span">* </span
+              >{{ a.value }}锛�</el-col
+            >
+            <el-col :span="16 / data.row">
+              <el-input
+                v-if="
+                  showType(a.label, data.selectField) == null &&
+                  !showUpload(a.label) &&
+                  !showCascader(a.label)
+                "
+                v-model="upData[a.label]"
+                :placeholder="`璇疯緭鍏�${a.value}`"
+                clearable
+                size="small"
+              ></el-input>
+              <el-select
+                v-if="showType(a.label, data.selectField) != null"
+                v-model="upData[a.label]"
+                :multiple="data.selectField[a.label].choose"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(b, bi) in data.selectField[a.label].select"
+                  :key="bi + 'hhhh'"
+                  :label="b.label"
+                  :value="b.value"
+                ></el-option>
               </el-select>
-              <el-upload v-if="showUpload(a.label)" ref='upload'
-                :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
-                :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+              <el-upload
+                v-if="showUpload(a.label)"
+                ref="upload"
+                :accept="data.addUploadConfig.accept"
+                :action="javaApi + data.addUploadConfig.url"
+                :headers="token"
+                :multiple="false"
+                :on-error="onError"
+                :on-success="(m) => handleSuccessUp(m, a.label)"
+                :show-file-list="false"
+                class="avatar-uploader"
                 name="file"
-                style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
-                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
-                  style="width: 80px;height: 80px;border-radius: 6px;">
+                style="
+                  background: transparent;
+                  width: 80px;
+                  height: 80px;
+                  border: 1px solid #dcdfe6;
+                  border-radius: 6px;
+                  margin: 10px 0;
+                "
+              >
+                <img
+                  v-if="upData[a.label]"
+                  :src="javaApi + '/img/' + upData[a.label]"
+                  class="avatar"
+                  style="width: 80px; height: 80px; border-radius: 6px"
+                />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
               </el-upload>
-              <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
-                :props="data.cascaderField.props" :show-all-levels="false" clearable filterable
-                size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+              <el-cascader
+                v-if="showCascader(a.label)"
+                :options="data.cascaderField[a.label].tree"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                :props="data.cascaderField.props"
+                :show-all-levels="false"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+                @change="(m) => handleCascader(m, a.label)"
+              ></el-cascader>
             </el-col>
           </div>
         </div>
         <div v-else>
-          <el-row v-for="(a, ai) in upHead" :key="ai+'jjjjj'" style="line-height: 50px;">
-            <el-col :span="6" style="text-align: right;"><span v-if="showAddReq(a.label)" class="required-span">*
-              </span>{{a.value}}锛�</el-col>
+          <el-row
+            v-for="(a, ai) in upHead"
+            :key="ai + 'jjjjj'"
+            style="line-height: 50px"
+          >
+            <el-col :span="6" style="text-align: right"
+              ><span v-if="showAddReq(a.label)" class="required-span">* </span
+              >{{ a.value }}锛�</el-col
+            >
             <el-col :offset="1" :span="16">
-              <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`璇疯緭鍏�${a.value}`" clearable
-                size="small"></el-input>
-              <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose"
-              :placeholder="`璇烽�夋嫨${a.value}`"
-                clearable size="small" style="width: 100%;">
-                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'mmmmmm'" :label="b.label"
-                  :value="b.value"></el-option>
+              <el-input
+                v-if="
+                  showType(a.label, data.selectField) == null &&
+                  !showUpload(a.label) &&
+                  !showCascader(a.label)
+                "
+                v-model="upData[a.label]"
+                :placeholder="`璇疯緭鍏�${a.value}`"
+                clearable
+                size="small"
+              ></el-input>
+              <el-select
+                v-if="showType(a.label, data.selectField) != null"
+                v-model="upData[a.label]"
+                :multiple="data.selectField[a.label].choose"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                clearable
+                size="small"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(b, bi) in data.selectField[a.label].select"
+                  :key="bi + 'mmmmmm'"
+                  :label="b.label"
+                  :value="b.value"
+                ></el-option>
               </el-select>
-              <el-upload v-if="showUpload(a.label)" ref='upload'
-                :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false"
-                :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader"
+              <el-upload
+                v-if="showUpload(a.label)"
+                ref="upload"
+                :accept="data.addUploadConfig.accept"
+                :action="javaApi + data.addUploadConfig.url"
+                :headers="token"
+                :multiple="false"
+                :on-error="onError"
+                :on-success="(m) => handleSuccessUp(m, a.label)"
+                :show-file-list="false"
+                class="avatar-uploader"
                 name="file"
-                style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
-                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
-                  style="width: 80px;height: 80px;border-radius: 6px;">
+                style="
+                  background: transparent;
+                  width: 80px;
+                  height: 80px;
+                  border: 1px solid #dcdfe6;
+                  border-radius: 6px;
+                  margin: 10px 0;
+                "
+              >
+                <img
+                  v-if="upData[a.label]"
+                  :src="javaApi + '/img/' + upData[a.label]"
+                  class="avatar"
+                  style="width: 80px; height: 80px; border-radius: 6px"
+                />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
               </el-upload>
-              <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`璇烽�夋嫨${a.value}`"
-                :props="data.cascaderField.props" :show-all-levels="false" clearable filterable
-                size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
+              <el-cascader
+                v-if="showCascader(a.label)"
+                :options="data.cascaderField[a.label].tree"
+                :placeholder="`璇烽�夋嫨${a.value}`"
+                :props="data.cascaderField.props"
+                :show-all-levels="false"
+                clearable
+                filterable
+                size="small"
+                style="width: 100%"
+                @change="(m) => handleCascader(m, a.label)"
+              ></el-cascader>
             </el-col>
           </el-row>
         </div>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="addDia = false">鍙� 娑�</el-button>
-        <el-button :loading="addLoad" type="primary" @click="saveAddData">纭� 瀹�</el-button>
+        <el-button :loading="addLoad" type="primary" @click="saveAddData"
+          >纭� 瀹�</el-button
+        >
       </span>
     </el-dialog>
     <el-dialog :visible.sync="downDia" title="瀵煎嚭" width="400px">
-      <div style="display: flex;width: 100%;height: 100px;">
+      <div style="display: flex; width: 100%; height: 100px">
         <div class="down-left" @click="downFile(true)">
           <el-button>鏈〉瀵煎嚭</el-button>
         </div>
@@ -324,10 +670,22 @@
       </div>
     </el-dialog>
     <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px">
-      <div style="margin: 0 auto;">
-        <el-upload ref="upload" :accept="data.accept===undefined?'.csv':data.accept" :action="javaApi + inputUrl" :auto-upload="false" :data="{param: data.uploadStr}" :file-list="fileList"
-          :headers="token" :limit="1" :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess"
-          drag name="file">
+      <div style="margin: 0 auto">
+        <el-upload
+          ref="upload"
+          :accept="data.accept === undefined ? '.csv' : data.accept"
+          :action="javaApi + inputUrl"
+          :auto-upload="false"
+          :data="{ param: data.uploadStr }"
+          :file-list="fileList"
+          :headers="token"
+          :limit="1"
+          :on-change="beforeUpload"
+          :on-error="onError"
+          :on-success="onSuccess"
+          drag
+          name="file"
+        >
           <i class="el-icon-upload"></i>
           <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
         </el-upload>
@@ -341,323 +699,346 @@
 </template>
 
 <script>
-  export default {
-    props: {
-      selectionWidth: {
-        type: String,
-        default: () => '65'
-      },
-      columnMinWidth: {
-        type: String,
-        default: () => '155'
-      },
-      isColumnWidth: {
-        type: Boolean,
-        default: () => false
-      },
-      isShowZero: {
-        type: Boolean,
-        default: () => false
-      },
-      tableRowClassName: {
-        type: Function
-      },
-      rowKey: {
-        type: String,
-        default: ()=>{
-          return 'id'
-        }
-      },
-      url: {
-        type: String,
-        default: () => null
-      },
-      upUrl: {
-        type: String,
-        default: () => null
-      },
-      delUrl: {
-        type: String,
-        default: () => null
-      },
-      downUrl: {
-        type: String,
-        default: () => null
-      },
-      inputUrl: {
-        type: String,
-        default: () => null
-      },
-      componentData: {
-        type: Object,
-        default: () => {
-          return {
-            entity: {
-              orderBy: {
-                field: 'id',
-                order: 'asc'
-              }
-            },
-            isIndex: false,
-            showSelect: false,
-            select: true,
-            row: 1,
-            do: [{
-              id: 'update',
-              font: '缂栬緫',
-              type: 'text',
-              method: 'doDiy'
-            }, {
-              id: 'delete',
-              font: '鍒犻櫎',
-              type: 'text',
-              method: 'doDiy'
-            }],
-            doDiy: true,
-            tagField: [{
-              label: 'state',
-              select: [{
-                value: '1',
-                type: 'success',
-                label: '鍚敤'
-              }, {
-                value: '0',
-                type: 'danger',
-                label: '鍋滅敤'
-              }]
-            }]
-          }
-        }
-      }
+export default {
+  props: {
+    selectionWidth: {
+      type: String,
+      default: () => "65",
     },
-    data() {
-      return {
-        data: {
+    columnMinWidth: {
+      type: String,
+      default: () => "155",
+    },
+    isColumnWidth: {
+      type: Boolean,
+      default: () => false,
+    },
+    isShowZero: {
+      type: Boolean,
+      default: () => false,
+    },
+    tableRowClassName: {
+      type: Function,
+    },
+    rowKey: {
+      type: String,
+      default: () => {
+        return "id";
+      },
+    },
+    url: {
+      type: String,
+      default: () => null,
+    },
+    upUrl: {
+      type: String,
+      default: () => null,
+    },
+    delUrl: {
+      type: String,
+      default: () => null,
+    },
+    downUrl: {
+      type: String,
+      default: () => null,
+    },
+    inputUrl: {
+      type: String,
+      default: () => null,
+    },
+    componentData: {
+      type: Object,
+      default: () => {
+        return {
           entity: {
             orderBy: {
-              field: 'id',
-              order: 'asc'
-            }
+              field: "id",
+              order: "asc",
+            },
           },
           isIndex: false,
           showSelect: false,
           select: true,
           row: 1,
-          isPage: true, //
-          do: [{
-            font: '鍒犻櫎',
-            type: 'text'
-          }],
-          type: [],
-          uploadStr: "",
-          currentId: '', //褰撳墠楂樹寒鐨処D
+          do: [
+            {
+              id: "update",
+              font: "缂栬緫",
+              type: "text",
+              method: "doDiy",
+            },
+            {
+              id: "delete",
+              font: "鍒犻櫎",
+              type: "text",
+              method: "doDiy",
+            },
+          ],
+          doDiy: true,
+          tagField: [
+            {
+              label: "state",
+              select: [
+                {
+                  value: "1",
+                  type: "success",
+                  label: "鍚敤",
+                },
+                {
+                  value: "0",
+                  type: "danger",
+                  label: "鍋滅敤",
+                },
+              ],
+            },
+          ],
+        };
+      },
+    },
+  },
+  data() {
+    return {
+      data: {
+        entity: {
+          orderBy: {
+            field: "id",
+            order: "asc",
+          },
         },
-        tableHead: [],
-        tableData: [],
-        multipleSelection: [],
-        user: {},
-        page: {
-          current: 1,
-          size: 20,
-        },
-        total: 0,
-        loading: false,
-        upDia: false,
-        upData: {},
-        upHead: [],
-        upLoad: false,
-        addDia: false,
-        addUrl: null,
-        addLoad: false,
-        dataCopy: {},
-        downDia: false,
-        uploadDia: false,
-        token: null,
-        fileList: [],
-        init: true,
-        spanList: [
-          // {
-          //   arr:[],
-          //   position:0
-          // }
+        isIndex: false,
+        showSelect: false,
+        select: true,
+        row: 1,
+        isPage: true, //
+        do: [
+          {
+            font: "鍒犻櫎",
+            type: "text",
+          },
         ],
-        specialSpanList: [
-          // {
-          //   arr:[],
-          //   position:0
-          // }
-        ],
-        param: {},
-        specialKey:'table-'
-      }
-    },
-    beforeUpdate() {
-      this.$nextTick(() => {
-        this.$refs.eltable.doLayout()
-      })
-    },
-    mounted() {
-      this.data = this.componentData
-      this.dataCopy = this.HaveJson(this.componentData)
-      if (this.data.init === undefined || this.data.init === true) {
-        this.selectList()
-      }
-      this.token = {
-        'token': sessionStorage.getItem('token')
-      }
-      this.specialKey = this.specialKey+Math.random()*100;
-    },
-    methods: {
-      rowspan(spanArr, position, spanName) {
-        this.tableData.forEach((item, index) => {
-          if (index === 0) {
+        type: [],
+        uploadStr: "",
+        currentId: "", //褰撳墠楂樹寒鐨処D
+      },
+      tableHead: [],
+      tableData: [],
+      multipleSelection: [],
+      user: {},
+      page: {
+        current: 1,
+        size: 20,
+      },
+      total: 0,
+      loading: false,
+      upDia: false,
+      upData: {},
+      upHead: [],
+      upLoad: false,
+      addDia: false,
+      addUrl: null,
+      addLoad: false,
+      dataCopy: {},
+      downDia: false,
+      uploadDia: false,
+      token: null,
+      fileList: [],
+      init: true,
+      spanList: [
+        // {
+        //   arr:[],
+        //   position:0
+        // }
+      ],
+      specialSpanList: [
+        // {
+        //   arr:[],
+        //   position:0
+        // }
+      ],
+      param: {},
+      specialKey: "table-",
+    };
+  },
+  beforeUpdate() {
+    this.$nextTick(() => {
+      this.$refs.eltable.doLayout();
+    });
+  },
+  mounted() {
+    this.data = this.componentData;
+    this.dataCopy = this.HaveJson(this.componentData);
+    if (this.data.init === undefined || this.data.init === true) {
+      this.selectList();
+    }
+    this.token = {
+      token: sessionStorage.getItem("token"),
+    };
+    this.specialKey = this.specialKey + Math.random() * 100;
+  },
+  methods: {
+    rowspan(spanArr, position, spanName) {
+      this.tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+          position = 0;
+        } else {
+          if (
+            this.tableData[index][spanName] ===
+            this.tableData[index - 1][spanName]
+          ) {
+            spanArr[position] += 1;
+            spanArr.push(0);
+          } else {
             spanArr.push(1);
-            position = 0;
-          } else {
-            if (
-              this.tableData[index][spanName] ===
-              this.tableData[index - 1][spanName]
-            ) {
-              spanArr[position] += 1;
-              spanArr.push(0);
-            } else {
-              spanArr.push(1);
-              position = index;
-            }
+            position = index;
           }
+        }
+      });
+    },
+    spanMethod({ row, column, rowIndex, columnIndex }) {
+      // 涓�鑸殑鍚堝苟琛�
+      if (
+        this.data.spanConfig != undefined &&
+        this.data.spanConfig.rows &&
+        this.data.spanConfig.rows.length > 0
+      ) {
+        let i = null;
+        let obj = this.data.spanConfig.rows.find((item, index) => {
+          i = index;
+          return item.index == columnIndex;
         });
-      },
-      spanMethod({
-        row,
-        column,
-        rowIndex,
-        columnIndex
-      }) {
-        // 涓�鑸殑鍚堝苟琛�
-        if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) {
-          let i = null;
-          let obj = this.data.spanConfig.rows.find((item, index) => {
-            i = index;
-            return item.index == columnIndex
-          })
-          if (obj) {
-            const _row = this.spanList[i].arr[rowIndex];
-            const _col = _row > 0 ? 1 : 0;
-            return {
-              rowspan: _row,
-              colspan: _col,
-            };
-          }
+        if (obj) {
+          const _row = this.spanList[i].arr[rowIndex];
+          const _col = _row > 0 ? 1 : 0;
+          return {
+            rowspan: _row,
+            colspan: _col,
+          };
         }
-        // 鐗规畩鐨勫悎骞惰
-        if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main &&
-          this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
-          let i = null;
-          let obj = this.data.spanConfig.special.rows.find((item, index) => {
-            i = index;
-            return item.index == columnIndex
-          })
-          if (obj) {
-            const _row = this.specialSpanList[i].arr[rowIndex];
-            const _col = _row > 0 ? 1 : 0;
-            return {
-              rowspan: _row,
-              colspan: _col,
-            };
-          }
+      }
+      // 鐗规畩鐨勫悎骞惰
+      if (
+        this.data.spanConfig != undefined &&
+        this.data.spanConfig.special &&
+        this.data.spanConfig.special.main &&
+        this.data.spanConfig.special.rows &&
+        this.data.spanConfig.special.rows.length > 0
+      ) {
+        let i = null;
+        let obj = this.data.spanConfig.special.rows.find((item, index) => {
+          i = index;
+          return item.index == columnIndex;
+        });
+        if (obj) {
+          const _row = this.specialSpanList[i].arr[rowIndex];
+          const _col = _row > 0 ? 1 : 0;
+          return {
+            rowspan: _row,
+            colspan: _col,
+          };
         }
-      },
-      selectChange(val) {
-        if (this.data.select) {
-          this.multipleSelection = val;
+      }
+    },
+    selectChange(val) {
+      if (this.data.select) {
+        this.multipleSelection = val;
+      } else {
+        this.multipleSelection = val[val.length - 1];
+      }
+      if (this.data.selectMethod != undefined) {
+        if (this.$parent.$el.className.indexOf("el-") == 0) {
+          this.$parent.$parent[this.data.selectMethod](val);
         } else {
-          this.multipleSelection = val[val.length - 1];
+          this.$parent[this.data.selectMethod](val);
         }
-        if (this.data.selectMethod != undefined) {
-          if (this.$parent.$el.className.indexOf('el-') == 0) {
-            this.$parent.$parent[this.data.selectMethod](val)
-          } else {
-            this.$parent[this.data.selectMethod](val)
+      }
+    },
+    select(val, row) {
+      if (!this.data.select) {
+        this.$refs["eltable"].clearSelection();
+        this.$refs["eltable"].toggleRowSelection(row, true);
+      }
+    },
+    rowClick(row, column, event) {
+      if (this.data.select) {
+        this.$refs["eltable"].toggleRowSelection(row);
+      } else {
+        this.$refs["eltable"].clearSelection();
+        this.$refs["eltable"].toggleRowSelection(row, true);
+      }
+    },
+    sizeChange(val) {
+      this.page.size = val;
+      this.selectList("page");
+    },
+    currentChange(val) {
+      this.page.current = val;
+      this.selectList("page");
+    },
+    // 璋冨彇琛ㄦ牸鏌ヨ鎺ュ彛
+    selectList(val) {
+      // console.log('val---', val)
+      // console.log('this.page---', this.page)
+      // this.loading = true
+      if (val === undefined) {
+        this.page.current = 1;
+      }
+      if (val === "lastPage") {
+        this.page.current = this.page.current - 1; // 渚嬪鍒犻櫎鏈〉鏈�鍚庝竴鏉℃暟鎹紝灏嗗綋鍓嶉〉闈㈠畾涓轰笂涓�椤碉紝闄ょ涓�椤靛
+      }
+      // 涓嶈鍒嗛〉灏卞叏鏌�
+      if (this.data.isPage != undefined && this.data.isPage != true) {
+        this.page = {
+          current: -1,
+          size: -1,
+        };
+      }
+      this.$axios
+        .post(
+          this.url,
+          {
+            page: this.page,
+            entity: this.data.entity,
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
           }
-        }
-      },
-      select(val, row) {
-        if (!this.data.select) {
-          this.$refs['eltable'].clearSelection()
-          this.$refs['eltable'].toggleRowSelection(row, true)
-        }
-      },
-      rowClick(row, column, event) {
-        if (this.data.select) {
-          this.$refs['eltable'].toggleRowSelection(row)
-        } else {
-          this.$refs['eltable'].clearSelection()
-          this.$refs['eltable'].toggleRowSelection(row, true)
-        }
-      },
-      sizeChange(val) {
-        this.page.size = val
-        this.selectList('page')
-      },
-      currentChange(val) {
-        this.page.current = val
-        this.selectList('page')
-      },
-      // 璋冨彇琛ㄦ牸鏌ヨ鎺ュ彛
-      selectList(val) {
-        // console.log('val---', val)
-        // console.log('this.page---', this.page)
-        // this.loading = true
-        if(val===undefined){
-          this.page.current = 1;
-        }
-        if (val === 'lastPage') {
-          this.page.current = this.page.current - 1 // 渚嬪鍒犻櫎鏈〉鏈�鍚庝竴鏉℃暟鎹紝灏嗗綋鍓嶉〉闈㈠畾涓轰笂涓�椤碉紝闄ょ涓�椤靛
-        }
-        // 涓嶈鍒嗛〉灏卞叏鏌�
-        if (this.data.isPage != undefined && this.data.isPage != true) {
-          this.page = {
-            current: -1,
-            size: -1,
-          }
-        }
-        this.$axios.post(this.url, {
-          page: this.page,
-          entity: this.data.entity
-        }, {
-          headers: {
-            'Content-Type': 'application/json'
-          }
-        }).then(res => {
+        )
+        .then((res) => {
           if (res.code === 201) {
-            this.loading = false
-            return
+            this.loading = false;
+            return;
           }
-          this.total = res.data.body.total
-          this.tableHead = res.data.head
-          this.tableData = res.data.body.records
+          this.total = res.data.body.total;
+          this.tableHead = res.data.head;
+          this.tableData = res.data.body.records;
           if (this.data.needSort !== undefined) {
             // 鏍规嵁鐖剁粍浠朵紶鍥炴潵鐨刵eedSort鏁扮粍锛屽垽鏂摢浜涘瓧娈甸渶瑕佹帓搴忓姛鑳�
             for (var i = 0; i < this.data.needSort.length; i++) {
-              this.tableHead.forEach(item => {
+              this.tableHead.forEach((item) => {
                 if (item.label === this.data.needSort[i]) {
-                  item.sort = 'custom'
+                  item.sort = "custom";
                 }
-              })
+              });
             }
           }
           if (this.isShowZero) {
             // 宸ユ椂绠$悊-宸ユ椂缁熻娌℃湁鏃堕棿鐨勫氨灞曠ず0
-            this.tableData.map(item => {
-              Object.keys(item).forEach(val => {
-                if (item[val] === null && (val.includes('Hours') || val === 'total')) {
-                  item[val] = 0
+            this.tableData.map((item) => {
+              Object.keys(item).forEach((val) => {
+                if (
+                  item[val] === null &&
+                  (val.includes("Hours") || val === "total")
+                ) {
+                  item[val] = 0;
                 }
-              })
-            })
+              });
+            });
           }
           if (this.tableData.length === 0 && this.page.current > 1) {
-            this.selectList('lastPage')
+            this.selectList("lastPage");
           }
           // if (this.isColumnWidth) {
           //   this.tableHead.forEach(item => {
@@ -684,554 +1065,634 @@
           // console.log(JSON.stringify(this.tableHead)+"---------"+JSON.stringify(this.tableData))
           for (var a in this.data.selectField) {
             if (this.data.selectField[a].choose == true) {
-              this.tableData.map(b => {
+              this.tableData.map((b) => {
                 try {
-                  b[a] = JSON.parse(b[a])
+                  b[a] = JSON.parse(b[a]);
                 } catch (e) {}
-              })
+              });
             }
           }
           // 涓�鑸殑鍚堝苟琛�
-          if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length >
-            0) {
+          if (
+            this.data.spanConfig != undefined &&
+            this.data.spanConfig.rows &&
+            this.data.spanConfig.rows.length > 0
+          ) {
             this.spanList = [];
             this.data.spanConfig.rows.forEach((item, index) => {
               this.spanList.push({
                 arr: [],
-                position: 0
-              })
-              this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name);
-            })
+                position: 0,
+              });
+              this.rowspan(
+                this.spanList[index].arr,
+                this.spanList[index].position,
+                item.name
+              );
+            });
           }
           // 鐗规畩鐨勫悎骞惰
-          if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special
-            .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
-            this.specialSpanList = []
+          if (
+            this.data.spanConfig != undefined &&
+            this.data.spanConfig.special &&
+            this.data.spanConfig.special.main &&
+            this.data.spanConfig.special.rows &&
+            this.data.spanConfig.special.rows.length > 0
+          ) {
+            this.specialSpanList = [];
             this.data.spanConfig.special.rows.forEach((item, index) => {
               this.specialSpanList.push({
                 arr: [],
-                position: 0
-              })
-              this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data
-                .spanConfig.special.main);
-            })
+                position: 0,
+              });
+              this.rowspan(
+                this.specialSpanList[index].arr,
+                this.specialSpanList[index].position,
+                this.data.spanConfig.special.main
+              );
+            });
           }
-          this.loading = false
-        }).catch(e => {
-          console.log('璇峰埛鏂伴〉闈㈠啀灏濊瘯---', e)
-          this.loading = false
-          this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯')
+          this.loading = false;
         })
-      },
-      sortChange(ob) {
-        this.data.entity.orderBy = {}
-        this.data.entity.orderBy.field = ob.prop
-        if (ob.order == 'ascending') {
-          this.data.entity.orderBy.order = 'asc'
-        } else if (ob.order == 'descending') {
-          this.data.entity.orderBy.order = 'desc'
-        } else {
-          if (this.componentData.entity.orderBy != undefined) {
-            this.data.entity.orderBy = this.HaveJson(this.dataCopy.entity.orderBy)
-          }
-        }
-        this.selectList()
-      },
-      // 灞曠ずtag
-      showType(val, ob) {
-        var str = ob[val]
-        return str == undefined ? null : ob[val].select
-      },
-      // 灞曠ず鎿嶄綔鏍�
-      showLink(val, ob) {
-        var str = ob[val]
-        return str == undefined ? null : ob[val].method
-      },
-      showAddReq(label) {
-        if (this.data.requiredAdd == undefined) {
-          return
-        }
-        for (var i = 0; i < this.data.requiredAdd.length; i++) {
-          if (label == this.data.requiredAdd[i]) {
-            return true
-          }
-        }
-        return false
-      },
-      showUpReq(label) {
-        if (this.data.requiredUp == undefined) {
-          return
-        }
-        for (var i = 0; i < this.data.requiredUp.length; i++) {
-          if (label == this.data.requiredUp[i]) {
-            return true
-          }
-        }
-        return false
-      },
-      showUpload(label) {
-        if (this.data.addUpload && this.data.addUpload.find(m => m == label)) {
-          return true;
-        } else {
-          return false;
-        }
-      },
-      showCascader(label) {
-        if (this.data.cascaderField && this.data.cascaderField[label]) {
-          return true;
-        } else {
-          return false;
-        }
-      },
-      handleTree(arr, value) {
-        let label = ''
-        for (let i = 0; i < arr.length; i++) {
-          if (arr[i].id == value) {
-            label = arr[i].name
-            return label
-          } else if (arr[i].children) {
-            label = this.handleTree(arr[i].children, value)
-          }
-        }
-        return label
-      },
-      main(row, val) {
-        if (val.method == undefined) return
-        else if (val.method == 'doDiy') {
-          if (val.id == 'update') { // 缂栬緫鎿嶄綔
-            this.upDia = true,
-            this.upData = this.HaveJson(row)
-            this.upHead = this.HaveJson(this.tableHead)
-            this.upHead.forEach((item, index) => {
-              if (this.data.cascaderField && this.data.cascaderField[item.label]) {
-                if (this.upData[item.label]) {
-                  this.upData[item.label] = JSON.parse(this.upData[item.label])
-                } else {
-                  this.upData[item.label] = []
-                }
-              }
-            })
-            this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime')
-            delete this.upData.orderBy
-            delete this.upData.createTime
-            delete this.upData.updateTime
-            delete this.upData.createUser
-            delete this.upData.updateUser
-            val.field.forEach(a => {
-              if (this.upData[a] === undefined) {
-                this.upHead.push({
-                  value: a.split('=')[0],
-                  label: a.split('=')[1]
-                })
-              } else {
-                delete this.upData[a]
-                for (var i = 0; i < this.upHead.length; i++) {
-                  if (this.upHead[i].label == a) {
-                    this.upHead.splice(i, 1);
-                    i--
-                    break
-                  }
-                }
-              }
-            })
-          } else if (val.id == 'delete') { // 鍒犻櫎鎿嶄綔
-            if (this.delUrl == null) {
-              this.$message.error('璇风粰鍒犻櫎璇锋眰鍦板潃')
-              return
-            }
-            this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
-              confirmButtonText: "纭畾",
-              cancelButtonText: "鍙栨秷",
-              type: "warning"
-            }).then(() => {
-              this.$axios.post(this.delUrl, {
-                id: row.id
-              }).then(res => {
-                if (res.code === 201) {
-                  return
-                }
-                this.$message.success('鍒犻櫎鎴愬姛')
-                this.selectList('page')
-                this.$emit('delete')
-              }).catch(e => {
-                this.$message.error('鍒犻櫎澶辫触')
-              })
-            }).catch(() => {})
-          }
-        } else if (val.id === 'parent') {
-          delete row.orderBy
-          this.$parent.$parent[val.method](row)
-        } else {
-          delete row.orderBy
-          this.$parent[val.method](row)
-        }
-      },
-      saveUpData() {
-        if (this.upUrl == null) {
-          this.$message.error('璇风粰淇敼璇锋眰鍦板潃')
-          return
-        }
-        for (var i = 0; i < this.data.requiredUp.length; i++) {
-          // 蹇呭~鏍¢獙
-          if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') {
-            var list = this.upHead.filter(a => {
-              if (a.label == this.data.requiredUp[i]) return a
-            })
-            if (list[0].value == undefined) continue
-            this.$message.error(list[0].value + '鏄繀濉」')
-            return
-          }
-        }
-        for (var a in this.data.selectField) {
-          if (this.data.selectField[a].choose == true) {
-            this.upData[a] = JSON.stringify(this.upData[a])
-          }
-        }
-        for (var i = 0; i < this.upHead.length; i++) {
-          if(this.upHead[i].label == 'password'){
-            if(this.upData[this.upHead[i].label]){
-              const reg2 =/^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/;
-              if (!reg2.test(this.upData[this.upHead[i].label])) {
-                this.$message.error('瀵嗙爜蹇呴』鍖呮嫭鏁板瓧銆佸ぇ灏忓啓瀛楁瘝浠ュ強鐗规畩瀛楃')
-                return
-              }
-            }
-          }
-          if (this.data.cascaderField && this.data.cascaderField[this.upHead[i].label]) {
-            if (this.upData[this.upHead[i].label]) {
-              this.upData[this.upHead[i].label] = JSON.stringify(this.upData[this.upHead[i].label])
-            } else {
-              this.upData[this.upHead[i].label] = ''
-            }
-          }
-        }
-        this.upLoad = true
-        this.$axios.post(this.upUrl, this.upData, {
-          headers: {
-            'Content-Type': 'application/json'
-          }
-        }).then(res => {
-          if (res.code === 201) {
-            this.upLoad = false
-            return
-          }
-          this.$message.success('淇敼鎴愬姛')
-          this.upDia = false
-          this.selectList('page')
-          this.$refs.eltable.doLayout();
-          this.upLoad = false
-        }).catch(e => {
-          this.$message.error('淇敼澶辫触')
-          this.upDia = false
-          this.upLoad = false
-        })
-      },
-      // 鎵撳紑鏂板寮规鍥炶皟
-      openAddDia(addUrl, param) {
-        this.addDia = true
-        this.addUrl = addUrl
-        this.param = param
-        this.upData = {}
-        this.tableHead.forEach((k, v) => {
-          if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != 'createUser' && k.label != 'updateUser')
-            this.upData[k.label] = null
-        })
-        this.upData = this.HaveJson(this.upData)
-        this.upHead = this.HaveJson(this.tableHead)
-        this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime')
-        var val = this.data.do.filter(a => a.id == 'update')[0]
-        if (val == undefined) {
-          val = {
-            field: []
-          }
-        }
-        val.field.forEach(a => {
-          if (JSON.stringify(this.upData[a]) === undefined) {
-            this.upHead.push({
-              value: a.split('=')[0],
-              label: a.split('=')[1]
-            })
-          } else {
-            delete this.upData[a]
-            for (var i = 0; i < this.upHead.length; i++) {
-              if (this.upHead[i].label == a) {
-                this.upHead.splice(i, 1);
-                i--
-                break
-              }
-            }
-          }
-        })
-      },
-      // 鏂板鍥炶皟
-      saveAddData() {
-        if (this.addUrl == null) {
-          this.$message.error('璇风粰娣诲姞璇锋眰鍦板潃')
-          return
-        }
-        for (var i = 0; i < this.data.requiredAdd.length; i++) {
-          if (this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === '') {
-            var list = this.upHead.filter(a => {
-              if (a.label == this.data.requiredAdd[i]) return a
-            })
-            if (list[0].value == undefined) continue
-            this.$message.error(list[0].value + '鏄繀濉」')
-            return
-          }
-        }
-        this.addLoad = true
-        for (var a in this.data.selectField) {
-          if (this.data.selectField[a].choose == true) {
-            this.upData[a] = JSON.stringify(this.upData[a])
-          }
-        }
-        this.upHead.forEach((item, index) => {
-          if (this.data.cascaderField && this.data.cascaderField[item.label]) {
-            if (this.upData[item.label]) {
-              this.upData[item.label] = JSON.stringify(this.upData[item.label])
-            } else {
-              this.upData[item.label] = ''
-            }
-          }
-        })
-        if (this.param !== undefined && this.param !== null) {
-          for (let i in this.param) {
-            this.upData[i] = this.param[i]
-          }
-        }
-        this.$axios.post(this.addUrl, this.upData, {
-          headers: {
-            'Content-Type': 'application/json'
-          }
-        }).then(res => {
-          if (res.code === 201) {
-            this.addLoad = false
-            return
-          }
-          this.$message.success('娣诲姞鎴愬姛')
-          this.addDia = false
-          this.selectList('page')
-          this.addLoad = false
-        }).catch(e => {
-          this.addDia = false
-          this.addLoad = false
-        })
-      },
-      openDownDia() {
-        this.downDia = true
-      },
-      downFile(type) {
-        if (this.downUrl == null) {
-          this.$message.error('璇风粰瀵煎嚭璇锋眰鍦板潃')
-          return
-        }
-        var page = this.HaveJson(this.page)
-        if (!type) {
-          page.current = 0
-          page.size = this.total
-        }
-        this.loading = true
-        this.$axios.post(this.downUrl, {
-          page: page,
-          entity: this.data.entity
-        }, {
-          headers: {
-            'Content-Type': 'application/json'
-          }
-        }).then(res => {
-          if (res.code === 201) {
-            this.loading = false
-            return
-          }
-          this.downDia = false
-          this.loading = false
-          this.$message.success('瀵煎嚭鎴愬姛')
-          let eleLink = document.createElement('a')
-          eleLink.style.display = 'none'
-          eleLink.download = res.data
-          eleLink.href = this.javaApi + '/outPath/' + res.data
-          document.body.appendChild(eleLink)
-          eleLink.click()
-          document.body.removeChild(eleLink)
-        }).catch(e => {
-          console.log(e);
-          this.loading = false
-          this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯')
-        })
-      },
-      openUpload() {
-        if (this.inputUrl == null) {
-          this.$message.error('璇风粰瀵煎叆璇锋眰鍦板潃')
-          return
-        }
-        this.uploadDia = true
-      },
-      beforeUpload(file, fileList) {
-        console.log(file.raw.type);
-        if (file.raw.type != (this.data.inputType===undefined?'text/csv':this.data.inputType)) {
-          this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�');
-          this.$refs.upload.clearFiles()
-          return false;
-        }
-      },
-      submitUpload() {
-        if (this.$refs.upload.uploadFiles.length == 0) {
-          this.$message.error('鏈�夋嫨鏂囦欢')
-          return
-        }
-        this.uploading = true
-        this.$refs.upload.submit();
-      },
-      onSuccess(response, file, fileList) {
-        this.$refs.upload.clearFiles()
-        this.uploadDia = false
-        this.uploading = false
-        if (response.code == 201) {
-          this.$message.error(response.message)
-          return
-        }
-        this.$message.success('涓婁紶鎴愬姛')
-        this.selectList()
-      },
-      onError(err, file, fileList) {
-        this.$message.error('涓婁紶澶辫触')
-        this.$refs.upload.clearFiles()
-        this.uploading = false
-      },
-      // 鎿嶄綔鎸夐挳缃伆鍒ゆ柇
-      isDisabled(label) {
-        if (this.data.disabledUp == undefined) {
-          return
-        }
-        for (var i = 0; i < this.data.disabledUp.length; i++) {
-          if (label == this.data.disabledUp[i]) {
-            return true
-          }
-        }
-        return false
-      },
-      getSummaries(param) {
-        const {
-          columns,
-          data
-        } = param;
-        const sums = [];
-        columns.forEach((column, index) => {
-          if (index === 0) {
-            sums[index] = '鍚堣';
-            return;
-          }
-          const values = data.map(item => Number(item[column.property]));
-          if (this.data.countFleid == undefined) {
-            sums[index] = ''
-            return
-          }
-          if (this.data.countFleid.filter(str => {
-              return str === column.property
-            }).length > 0) {
-            sums[index] = values.reduce((prev, curr) => {
-              const value = Number(curr);
-              if (!isNaN(value)) {
-                return prev + curr;
-              } else {
-                return prev;
-              }
-            }, 0);
-            sums[index] += '';
-          } else {
-            sums[index] = '';
-          }
+        .catch((e) => {
+          console.log("璇峰埛鏂伴〉闈㈠啀灏濊瘯---", e);
+          this.loading = false;
+          this.$message.error("璇峰埛鏂伴〉闈㈠啀灏濊瘯");
         });
-        return sums;
-      },
-      handleLinkEvent(row, val) {
-        if (val.method == 'doDiy') {
-          this.main(row, val)
-        } else {
-          this.$parent[val.method](row)
-        }
-      },
-      getWidth() {
-        let count = 0
-        this.data.do.forEach(a => {
-          count += a.font.length
-        })
-        return count * 15 + 60 + 'px'
-      },
-      handleSuccessUp(response, label) {
-        if (typeof label === 'string') {
-          if (response.code == 200) {
-            this.upData[label] = response.data.url;
-          }
-        } else {
-          if (response.code == 200) {
-            this.$message.success('涓婁紶鎴愬姛')
-            this.selectList()
-          }
-        }
-      },
-      handleCascader(e, label) {
-        this.upData[label] = e;
-      },
-      // 鎵归噺鍒犻櫎
-      batchDelete() {
-        if (this.multipleSelection && this.multipleSelection.length > 0) {
-          this.$confirm('鏄惁鍒犻櫎閫変腑鐨勬暟鎹�?', "璀﹀憡", {
-            confirmButtonText: "纭畾",
-            cancelButtonText: "鍙栨秷",
-            type: "warning"
-          }).then(() => {
-            this.$axios.post(this.delUrl, {
-              ids: JSON.stringify(this.multipleSelection.map(item => item.id))
-            }).then(res => {
-              if (res.code === 201) {
-                return
-              }
-              this.$message.success('鍒犻櫎鎴愬姛')
-              this.selectList('page')
-            }).catch(e => {
-              this.$message.error('鍒犻櫎澶辫触')
-            })
-          }).catch(() => {})
-        } else {
-          this.$message.error('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁')
-        }
-      },
-      // 鏃ュ伐鏃剁鐞嗚緟鍔╁伐鏃�--鎵归噺瀹℃牳鍜屾壒鍑�
-      batchCheck(e) {
-        if (this.multipleSelection && this.multipleSelection.length > 0) {
-          const list = JSON.parse(JSON.stringify(this.multipleSelection))
-          const state = e === 0 ? '涓嶆壒鍑�' : '宸叉壒鍑�'
-          let auxiliaryWorkingHoursDays = []
-          list.forEach(item => {
-            delete item.orderBy
-            item.state = state
-            auxiliaryWorkingHoursDays.push(item)
-          })
-          this.$axios.post(this.$api.auxiliaryWorkingHoursDay.approve, {auxiliaryWorkingHoursDays: auxiliaryWorkingHoursDays
-            },{
-              headers: {
-                'Content-Type': 'application/json'
-              }
-            }
-          ).then(res => {
-            if (res.code === 201) {
-              return
-            }
-            this.$parent.submitBatchCheckDialog()
-            this.$message.success('鎿嶄綔鎴愬姛')
-          })
-        } else {
-          this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�')
-        }
-      },
-      getRedColor(label,row){
-        if(this.data.cellSpecialStyle&&this.data.cellSpecialStyle.redColorByKey&&label.includes(this.data.cellSpecialStyle.redColorByKey)&&row[(label.replace(this.data.cellSpecialStyle.redColorByKey, ""))]){
-          return true
-        }else{
-          return false
+    },
+    sortChange(ob) {
+      this.data.entity.orderBy = {};
+      this.data.entity.orderBy.field = ob.prop;
+      if (ob.order == "ascending") {
+        this.data.entity.orderBy.order = "asc";
+      } else if (ob.order == "descending") {
+        this.data.entity.orderBy.order = "desc";
+      } else {
+        if (this.componentData.entity.orderBy != undefined) {
+          this.data.entity.orderBy = this.HaveJson(
+            this.dataCopy.entity.orderBy
+          );
         }
       }
-    }
-  }
+      this.selectList();
+    },
+    // 灞曠ずtag
+    showType(val, ob) {
+      var str = ob[val];
+      return str == undefined ? null : ob[val].select;
+    },
+    // 灞曠ず鎿嶄綔鏍�
+    showLink(val, ob) {
+      var str = ob[val];
+      return str == undefined ? null : ob[val].method;
+    },
+    showAddReq(label) {
+      if (this.data.requiredAdd == undefined) {
+        return;
+      }
+      for (var i = 0; i < this.data.requiredAdd.length; i++) {
+        if (label == this.data.requiredAdd[i]) {
+          return true;
+        }
+      }
+      return false;
+    },
+    showUpReq(label) {
+      if (this.data.requiredUp == undefined) {
+        return;
+      }
+      for (var i = 0; i < this.data.requiredUp.length; i++) {
+        if (label == this.data.requiredUp[i]) {
+          return true;
+        }
+      }
+      return false;
+    },
+    showUpload(label) {
+      if (this.data.addUpload && this.data.addUpload.find((m) => m == label)) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+    showCascader(label) {
+      if (this.data.cascaderField && this.data.cascaderField[label]) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+    handleTree(arr, value) {
+      let label = "";
+      for (let i = 0; i < arr.length; i++) {
+        if (arr[i].id == value) {
+          label = arr[i].name;
+          return label;
+        } else if (arr[i].children) {
+          label = this.handleTree(arr[i].children, value);
+        }
+      }
+      return label;
+    },
+    main(row, val) {
+      if (val.method == undefined) return;
+      else if (val.method == "doDiy") {
+        if (val.id == "update") {
+          // 缂栬緫鎿嶄綔
+          (this.upDia = true), (this.upData = this.HaveJson(row));
+          this.upHead = this.HaveJson(this.tableHead);
+          this.upHead.forEach((item, index) => {
+            if (
+              this.data.cascaderField &&
+              this.data.cascaderField[item.label]
+            ) {
+              if (this.upData[item.label]) {
+                this.upData[item.label] = JSON.parse(this.upData[item.label]);
+              } else {
+                this.upData[item.label] = [];
+              }
+            }
+          });
+          this.upHead = this.upHead.filter(
+            (a) => a.label != "createTime" && a.label != "updateTime"
+          );
+          delete this.upData.orderBy;
+          delete this.upData.createTime;
+          delete this.upData.updateTime;
+          delete this.upData.createUser;
+          delete this.upData.updateUser;
+          val.field.forEach((a) => {
+            if (this.upData[a] === undefined) {
+              this.upHead.push({
+                value: a.split("=")[0],
+                label: a.split("=")[1],
+              });
+            } else {
+              delete this.upData[a];
+              for (var i = 0; i < this.upHead.length; i++) {
+                if (this.upHead[i].label == a) {
+                  this.upHead.splice(i, 1);
+                  i--;
+                  break;
+                }
+              }
+            }
+          });
+        } else if (val.id == "delete") {
+          // 鍒犻櫎鎿嶄綔
+          if (this.delUrl == null) {
+            this.$message.error("璇风粰鍒犻櫎璇锋眰鍦板潃");
+            return;
+          }
+          this.$confirm("鏄惁鍒犻櫎褰撳墠鏁版嵁?", "璀﹀憡", {
+            confirmButtonText: "纭畾",
+            cancelButtonText: "鍙栨秷",
+            type: "warning",
+          })
+            .then(() => {
+              this.$axios
+                .post(this.delUrl, {
+                  id: row.id,
+                })
+                .then((res) => {
+                  if (res.code === 201) {
+                    return;
+                  }
+                  this.$message.success("鍒犻櫎鎴愬姛");
+                  this.selectList("page");
+                  this.$emit("delete");
+                })
+                .catch((e) => {
+                  this.$message.error("鍒犻櫎澶辫触");
+                });
+            })
+            .catch(() => {});
+        }
+      } else if (val.id === "parent") {
+        delete row.orderBy;
+        this.$parent.$parent[val.method](row);
+      } else {
+        delete row.orderBy;
+        this.$parent[val.method](row);
+      }
+    },
+    saveUpData() {
+      if (this.upUrl == null) {
+        this.$message.error("璇风粰淇敼璇锋眰鍦板潃");
+        return;
+      }
+      for (var i = 0; i < this.data.requiredUp.length; i++) {
+        // 蹇呭~鏍¢獙
+        if (
+          this.upData[this.data.requiredUp[i]] === null ||
+          this.upData[this.data.requiredUp[i]] === ""
+        ) {
+          var list = this.upHead.filter((a) => {
+            if (a.label == this.data.requiredUp[i]) return a;
+          });
+          if (list[0].value == undefined) continue;
+          this.$message.error(list[0].value + "鏄繀濉」");
+          return;
+        }
+      }
+      for (var a in this.data.selectField) {
+        if (this.data.selectField[a].choose == true) {
+          this.upData[a] = JSON.stringify(this.upData[a]);
+        }
+      }
+      for (var i = 0; i < this.upHead.length; i++) {
+        if (this.upHead[i].label == "password") {
+          if (this.upData[this.upHead[i].label]) {
+            const reg2 =
+              /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/;
+            if (!reg2.test(this.upData[this.upHead[i].label])) {
+              this.$message.error("瀵嗙爜蹇呴』鍖呮嫭鏁板瓧銆佸ぇ灏忓啓瀛楁瘝浠ュ強鐗规畩瀛楃");
+              return;
+            }
+          }
+        }
+        if (
+          this.data.cascaderField &&
+          this.data.cascaderField[this.upHead[i].label]
+        ) {
+          if (this.upData[this.upHead[i].label]) {
+            this.upData[this.upHead[i].label] = JSON.stringify(
+              this.upData[this.upHead[i].label]
+            );
+          } else {
+            this.upData[this.upHead[i].label] = "";
+          }
+        }
+      }
+      this.upLoad = true;
+      this.$axios
+        .post(this.upUrl, this.upData, {
+          headers: {
+            "Content-Type": "application/json",
+          },
+        })
+        .then((res) => {
+          if (res.code === 201) {
+            this.upLoad = false;
+            return;
+          }
+          this.$message.success("淇敼鎴愬姛");
+          this.upDia = false;
+          this.selectList("page");
+          this.$refs.eltable.doLayout();
+          this.upLoad = false;
+        })
+        .catch((e) => {
+          this.$message.error("淇敼澶辫触");
+          this.upDia = false;
+          this.upLoad = false;
+        });
+    },
+    // 鎵撳紑鏂板寮规鍥炶皟
+    openAddDia(addUrl, param) {
+      this.addDia = true;
+      this.addUrl = addUrl;
+      this.param = param;
+      this.upData = {};
+      this.tableHead.forEach((k, v) => {
+        if (
+          k.label != "orderBy" &&
+          k.label != "createTime" &&
+          k.label != "updateTime" &&
+          k.label != "createUser" &&
+          k.label != "updateUser"
+        )
+          this.upData[k.label] = null;
+      });
+      this.upData = this.HaveJson(this.upData);
+      this.upHead = this.HaveJson(this.tableHead);
+      this.upHead = this.upHead.filter(
+        (a) => a.label != "createTime" && a.label != "updateTime"
+      );
+      var val = this.data.do.filter((a) => a.id == "update")[0];
+      if (val == undefined) {
+        val = {
+          field: [],
+        };
+      }
+      val.field.forEach((a) => {
+        if (JSON.stringify(this.upData[a]) === undefined) {
+          this.upHead.push({
+            value: a.split("=")[0],
+            label: a.split("=")[1],
+          });
+        } else {
+          delete this.upData[a];
+          for (var i = 0; i < this.upHead.length; i++) {
+            if (this.upHead[i].label == a) {
+              this.upHead.splice(i, 1);
+              i--;
+              break;
+            }
+          }
+        }
+      });
+    },
+    // 鏂板鍥炶皟
+    saveAddData() {
+      if (this.addUrl == null) {
+        this.$message.error("璇风粰娣诲姞璇锋眰鍦板潃");
+        return;
+      }
+      for (var i = 0; i < this.data.requiredAdd.length; i++) {
+        if (
+          this.upData[this.data.requiredAdd[i]] === null ||
+          this.upData[this.data.requiredAdd[i]] === ""
+        ) {
+          var list = this.upHead.filter((a) => {
+            if (a.label == this.data.requiredAdd[i]) return a;
+          });
+          if (list[0].value == undefined) continue;
+          this.$message.error(list[0].value + "鏄繀濉」");
+          return;
+        }
+      }
+      this.addLoad = true;
+      for (var a in this.data.selectField) {
+        if (this.data.selectField[a].choose == true) {
+          this.upData[a] = JSON.stringify(this.upData[a]);
+        }
+      }
+      this.upHead.forEach((item, index) => {
+        if (this.data.cascaderField && this.data.cascaderField[item.label]) {
+          if (this.upData[item.label]) {
+            this.upData[item.label] = JSON.stringify(this.upData[item.label]);
+          } else {
+            this.upData[item.label] = "";
+          }
+        }
+      });
+      if (this.param !== undefined && this.param !== null) {
+        for (let i in this.param) {
+          this.upData[i] = this.param[i];
+        }
+      }
+      this.$axios
+        .post(this.addUrl, this.upData, {
+          headers: {
+            "Content-Type": "application/json",
+          },
+        })
+        .then((res) => {
+          if (res.code === 201) {
+            this.addLoad = false;
+            return;
+          }
+          this.$message.success("娣诲姞鎴愬姛");
+          this.addDia = false;
+          this.selectList("page");
+          this.addLoad = false;
+        })
+        .catch((e) => {
+          this.addDia = false;
+          this.addLoad = false;
+        });
+    },
+    openDownDia() {
+      this.downDia = true;
+    },
+    downFile(type) {
+      if (this.downUrl == null) {
+        this.$message.error("璇风粰瀵煎嚭璇锋眰鍦板潃");
+        return;
+      }
+      var page = this.HaveJson(this.page);
+      if (!type) {
+        page.current = 0;
+        page.size = this.total;
+      }
+      this.loading = true;
+      this.$axios
+        .post(
+          this.downUrl,
+          {
+            page: page,
+            entity: this.data.entity,
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+          }
+        )
+        .then((res) => {
+          if (res.code === 201) {
+            this.loading = false;
+            return;
+          }
+          this.downDia = false;
+          this.loading = false;
+          this.$message.success("瀵煎嚭鎴愬姛");
+          let eleLink = document.createElement("a");
+          eleLink.style.display = "none";
+          eleLink.download = res.data;
+          eleLink.href = this.javaApi + "/outPath/" + res.data;
+          document.body.appendChild(eleLink);
+          eleLink.click();
+          document.body.removeChild(eleLink);
+        })
+        .catch((e) => {
+          console.log(e);
+          this.loading = false;
+          this.$message.error("璇峰埛鏂伴〉闈㈠啀灏濊瘯");
+        });
+    },
+    openUpload() {
+      if (this.inputUrl == null) {
+        this.$message.error("璇风粰瀵煎叆璇锋眰鍦板潃");
+        return;
+      }
+      this.uploadDia = true;
+    },
+    beforeUpload(file, fileList) {
+      console.log(file.raw.type);
+      if (
+        file.raw.type !=
+        (this.data.inputType === undefined ? "text/csv" : this.data.inputType)
+      ) {
+        this.$message.error("涓婁紶鏂囦欢鏍煎紡涓嶆纭�");
+        this.$refs.upload.clearFiles();
+        return false;
+      }
+    },
+    submitUpload() {
+      if (this.$refs.upload.uploadFiles.length == 0) {
+        this.$message.error("鏈�夋嫨鏂囦欢");
+        return;
+      }
+      this.uploading = true;
+      this.$refs.upload.submit();
+    },
+    onSuccess(response, file, fileList) {
+      this.$refs.upload.clearFiles();
+      this.uploadDia = false;
+      this.uploading = false;
+      if (response.code == 201) {
+        this.$message.error(response.message);
+        return;
+      }
+      this.$message.success("涓婁紶鎴愬姛");
+      this.selectList();
+    },
+    onError(err, file, fileList) {
+      this.$message.error("涓婁紶澶辫触");
+      this.$refs.upload.clearFiles();
+      this.uploading = false;
+    },
+    // 鎿嶄綔鎸夐挳缃伆鍒ゆ柇
+    isDisabled(label) {
+      if (this.data.disabledUp == undefined) {
+        return;
+      }
+      for (var i = 0; i < this.data.disabledUp.length; i++) {
+        if (label == this.data.disabledUp[i]) {
+          return true;
+        }
+      }
+      return false;
+    },
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "鍚堣";
+          return;
+        }
+        const values = data.map((item) => Number(item[column.property]));
+        if (this.data.countFleid == undefined) {
+          sums[index] = "";
+          return;
+        }
+        if (
+          this.data.countFleid.filter((str) => {
+            return str === column.property;
+          }).length > 0
+        ) {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr);
+            if (!isNaN(value)) {
+              return prev + curr;
+            } else {
+              return prev;
+            }
+          }, 0);
+          sums[index] += "";
+        } else {
+          sums[index] = "";
+        }
+      });
+      return sums;
+    },
+    handleLinkEvent(row, val) {
+      if (val.method == "doDiy") {
+        this.main(row, val);
+      } else {
+        this.$parent[val.method](row);
+      }
+    },
+    getWidth() {
+      let count = 0;
+      this.data.do.forEach((a) => {
+        count += a.font.length;
+      });
+      return count * 15 + 60 + "px";
+    },
+    handleSuccessUp(response, label) {
+      if (typeof label === "string") {
+        if (response.code == 200) {
+          this.upData[label] = response.data.url;
+        }
+      } else {
+        if (response.code == 200) {
+          this.$message.success("涓婁紶鎴愬姛");
+          this.selectList();
+        }
+      }
+    },
+    handleCascader(e, label) {
+      this.upData[label] = e;
+    },
+    // 鎵归噺鍒犻櫎
+    batchDelete() {
+      if (this.multipleSelection && this.multipleSelection.length > 0) {
+        this.$confirm("鏄惁鍒犻櫎閫変腑鐨勬暟鎹�?", "璀﹀憡", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning",
+        })
+          .then(() => {
+            this.$axios
+              .post(this.delUrl, {
+                ids: JSON.stringify(
+                  this.multipleSelection.map((item) => item.id)
+                ),
+              })
+              .then((res) => {
+                if (res.code === 201) {
+                  return;
+                }
+                this.$message.success("鍒犻櫎鎴愬姛");
+                this.selectList("page");
+              })
+              .catch((e) => {
+                this.$message.error("鍒犻櫎澶辫触");
+              });
+          })
+          .catch(() => {});
+      } else {
+        this.$message.error("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
+      }
+    },
+    // 鏃ュ伐鏃剁鐞嗚緟鍔╁伐鏃�--鎵归噺瀹℃牳鍜屾壒鍑�
+    batchCheck(e) {
+      if (this.multipleSelection && this.multipleSelection.length > 0) {
+        const list = JSON.parse(JSON.stringify(this.multipleSelection));
+        const state = e === 0 ? "涓嶆壒鍑�" : "宸叉壒鍑�";
+        let auxiliaryWorkingHoursDays = [];
+        list.forEach((item) => {
+          delete item.orderBy;
+          item.state = state;
+          auxiliaryWorkingHoursDays.push(item);
+        });
+        this.$axios
+          .post(
+            this.$api.auxiliaryWorkingHoursDay.approve,
+            { auxiliaryWorkingHoursDays: auxiliaryWorkingHoursDays },
+            {
+              headers: {
+                "Content-Type": "application/json",
+              },
+            }
+          )
+          .then((res) => {
+            if (res.code === 201) {
+              return;
+            }
+            this.$parent.submitBatchCheckDialog();
+            this.$message.success("鎿嶄綔鎴愬姛");
+          });
+      } else {
+        this.$message.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+      }
+    },
+    getRedColor(label, row) {
+      if (
+        this.data.cellSpecialStyle &&
+        this.data.cellSpecialStyle.redColorByKey &&
+        label.includes(this.data.cellSpecialStyle.redColorByKey) &&
+        row[label.replace(this.data.cellSpecialStyle.redColorByKey, "")]
+      ) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+  },
+};
 </script>
diff --git a/src/main.js b/src/main.js
index 2e9f017..f0f2eb0 100644
--- a/src/main.js
+++ b/src/main.js
@@ -63,7 +63,9 @@
 Vue.prototype.HaveJson = (val) => {
   return JSON.parse(JSON.stringify(val));
 };
-Vue.prototype.javaApi = process.env.VUE_APP_BASE_API;
+Vue.prototype.javaApi = process.env.VUE_APP_BASE_API
+  ? process.env.VUE_APP_BASE_API
+  : "http://192.168.0.170:8002";
 Vue.prototype.checkPermi = checkPermi;
 
 // 鍏ㄥ眬缁勪欢鎸傝浇
@@ -74,7 +76,7 @@
 Vue.component("FileUpload", FileUpload);
 Vue.component("ImageUpload", ImageUpload);
 Vue.component("ImagePreview", ImagePreview);
-Vue.component('barcode', VueBarcode)
+Vue.component("barcode", VueBarcode);
 
 Vue.use(directive);
 Vue.use(plugins);
diff --git a/src/utils/excelFountion.js b/src/utils/excelFountion.js
new file mode 100644
index 0000000..eced05c
--- /dev/null
+++ b/src/utils/excelFountion.js
@@ -0,0 +1,358 @@
+/**
+ * 璁$畻澶氫釜鏁板�肩殑鍜�
+ *
+ * @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 = null;
+    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,
+};
diff --git a/src/views/business/inspectionTask/components/EditInspectionItem.vue b/src/views/business/inspectionTask/components/EditInspectionItem.vue
index 78d3735..c3116f0 100644
--- a/src/views/business/inspectionTask/components/EditInspectionItem.vue
+++ b/src/views/business/inspectionTask/components/EditInspectionItem.vue
@@ -38,7 +38,7 @@
             style="width: 100%"
           >
             <el-option
-              v-for="dict in dict.type.inspection_value_type"
+              v-for="dict in inspectionValueType"
               :key="dict.value"
               :label="dict.label"
               :value="dict.value"
@@ -73,7 +73,6 @@
   data() {
     // 杩欓噷瀛樻斁鏁版嵁
     return {
-      dicts: ["inspection_value_type"],
       editInspectionDia: false,
       entity: {
         id: 0,
@@ -164,8 +163,14 @@
         inspectionValueType: "",
       },
       handleEditLoading: false,
+      inspectionValueType: [],
     };
   },
+  mounted() {
+    this.getDicts("inspection_value_type").then((response) => {
+      this.inspectionValueType = this.dictToValue(response.data);
+    });
+  },
   // 鏂规硶闆嗗悎
   methods: {
     showDialog(id) {
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index 71998c7..6dccaa2 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -89,43 +89,27 @@
 </style>
 <template>
   <div class="ins-order-plan-main">
-    <div v-show="activeFace == 0 && state == 0" style="height: 100%">
+    <div v-show="activeFace == 0" style="height: 100%">
       <div class="search">
         <div class="search_thing">
           <div class="search_label">濮旀墭缂栧彿锛�</div>
           <div class="search_input">
-            <el-input
-              v-model="queryParams.entrustCode"
-              clearable
-              placeholder="璇疯緭鍏�"
-              size="small"
-              @keyup.enter.native="refreshTable()"
-            ></el-input>
+            <el-input v-model="queryParams.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
+              @keyup.enter.native="refreshTable()"></el-input>
           </div>
         </div>
         <div class="search_thing">
           <div class="search_label">妫�楠岀姸鎬侊細</div>
           <div class="search_input">
-            <el-select
-              v-model="queryParams.insState"
-              size="small"
-              style="width: 100%"
-              @change="refreshTable()"
-            >
-              <el-option
-                v-for="(a, i) in dict.type.inspection_task_state"
-                :key="i"
-                :label="a.label"
-                :value="a.value"
-              ></el-option>
+            <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()">
+              <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label"
+                :value="a.value"></el-option>
             </el-select>
           </div>
         </div>
         <div class="search_thing" style="padding-left: 30px">
           <el-button size="small" @click="refresh()">閲� 缃�</el-button>
-          <el-button size="small" type="primary" @click="refreshTable()"
-            >鏌� 璇�</el-button
-          >
+          <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
         </div>
       </div>
       <div class="center">
@@ -135,22 +119,13 @@
               <div style="display: flex; align-items: center">
                 <span style="font-size: 14px">璇曢獙瀹ょ绫�:</span>
                 <ul class="tab">
-                  <li
-                    v-for="(m, i) in tabList"
-                    :key="i"
-                    :class="{ active: i == tabIndex }"
-                    @click="handleTab(m, i)"
-                  >
+                  <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
-                    v-model="alone"
-                    class="view-self-checkbox"
-                    @change="changeCheckBox"
-                    ><span>鎴戠殑浠诲姟</span></el-checkbox
-                  >
+                  <el-checkbox v-model="alone" class="view-self-checkbox"
+                    @change="changeCheckBox"><span>鎴戠殑浠诲姟</span></el-checkbox>
                 </div>
               </div>
             </el-col>
@@ -162,27 +137,17 @@
             </el-col>
           </el-row>
         </div>
-        <lims-table
-          :tableData="tableData"
-          :column="column"
-          :page="page"
-          :tableLoading="tableLoading"
-          :height="'calc(100vh - 300px)'"
-          @pagination="pagination"
-          key="tableData0"
-        ></lims-table>
+        <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
+          :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0"></lims-table>
       </div>
     </div>
     <el-dialog :visible.sync="claimVisible" title="鎻愮ず" width="400px">
       鏄惁璁ら濮旀墭缂栧彿<span style="color: #33c130">{{
         sampleUserForm.entrustCode
-      }}</span
-      >鐨勪换鍔�
+      }}</span>鐨勪换鍔�
       <span slot="footer" class="dialog-footer">
         <el-button @click="claimVisible = false">鍙� 娑�</el-button>
-        <el-button :loading="loading" type="primary" @click="confirmClaim"
-          >纭� 瀹�</el-button
-        >
+        <el-button :loading="loading" type="primary" @click="confirmClaim">纭� 瀹�</el-button>
       </span>
     </el-dialog>
     <el-dialog :visible.sync="connectVisible" title="妫�楠屼氦鎺�" width="400px">
@@ -191,18 +156,8 @@
           <span class="required-span">* </span>浜ゆ帴浜哄憳锛�
         </div>
         <div class="search_input">
-          <el-select
-            v-model="connect.connectPerson"
-            filterable
-            placeholder="璇烽�夋嫨"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in personList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="connect.connectPerson" filterable placeholder="璇烽�夋嫨" style="width: 100%">
+            <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </div>
@@ -212,39 +167,21 @@
           <span class="required-span">* </span>璇曢獙瀹わ細
         </div>
         <div class="search_input">
-          <el-select
-            v-model="connect.sonLaboratory"
-            filterable
-            placeholder="璇烽�夋嫨"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in sonLaboratoryList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="connect.sonLaboratory" filterable placeholder="璇烽�夋嫨" style="width: 100%">
+            <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 :loading="loading" type="primary" @click="confirmConnect"
-          >纭� 瀹�</el-button
-        >
+        <el-button :loading="loading" type="primary" @click="confirmConnect">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <div
-      v-if="activeFace > 0 && isCopper == null"
-      style="width: 100%; height: 100%"
-    >
+    <div v-if="activeFace > 0 && isCopper == null" style="width: 100%; height: 100%">
       <!-- <Add :active="activeFace" :currentId="currentId" :examine="examine" /> -->
     </div>
-    <div
-      v-if="activeFace > 0 && isCopper == 0"
-      style="width: 100%; height: 100%"
-    >
+    <div v-if="activeFace > 0 && isCopper == 0" style="width: 100%; height: 100%">
       <!-- <CustomsInspection
         :active="activeFace"
         :currentId="currentId"
@@ -252,10 +189,7 @@
         :isReport="isReport"
       /> -->
     </div>
-    <div
-      v-if="activeFace > 0 && isCopper == 1"
-      style="width: 100%; height: 100%"
-    >
+    <div v-if="activeFace > 0 && isCopper == 1" style="width: 100%; height: 100%">
       <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder> -->
     </div>
     <!--<Inspection
@@ -271,46 +205,23 @@
     />-->
     <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%">
       <div v-if="dataDialogVisible" style="height: 70vh; overflow-y: auto">
-        <lims-table
-          :tableData="lookTableData"
-          :column="lookColumn"
-          :page="lookPage"
-          :tableLoading="lookTableLoading"
-          :height="'60vh'"
-          @pagination="lookPagination"
-          key="tableData1"
-        ></lims-table>
+        <lims-table :tableData="lookTableData" :column="lookColumn" :page="lookPage" :tableLoading="lookTableLoading"
+          :height="'60vh'" @pagination="lookPagination" key="tableData1"></lims-table>
       </div>
     </el-dialog>
-    <el-dialog
-      :visible.sync="bindDialogVisible"
-      title="妫�楠岄」缁戝畾"
-      width="600px"
-    >
-      <div
-        slot="title"
-        style="
+    <el-dialog :visible.sync="bindDialogVisible" title="妫�楠岄」缁戝畾" width="600px">
+      <div slot="title" style="
           display: flex;
           align-items: center;
           justify-content: space-between;
-        "
-      >
+        ">
         <span>妫�楠岄」缁戝畾</span>
-        <el-button
-          style="float: right; margin-left: 360px"
-          size="small"
-          @click="openBindAdd"
-          type="primary"
-        >
+        <el-button style="float: right; margin-left: 360px" size="small" @click="openBindAdd" type="primary">
           鏂板
         </el-button>
       </div>
       <el-table :data="bindTableData" style="width: 100%" height="70vh">
-        <el-table-column
-          prop="inspectionItemClass"
-          label="妫�楠岄」鍒嗙被"
-          width="150"
-        >
+        <el-table-column prop="inspectionItemClass" label="妫�楠岄」鍒嗙被" width="150">
         </el-table-column>
         <el-table-column prop="inspectionItem" label="妫�楠岄」" width="150">
         </el-table-column>
@@ -318,30 +229,16 @@
         </el-table-column>
         <el-table-column label="鎿嶄綔">
           <template slot-scope="scope">
-            <el-button size="mini" type="text" @click="handleDelete(scope.row)"
-              >鍒犻櫎</el-button
-            >
+            <el-button size="mini" type="text" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
     </el-dialog>
-    <el-dialog
-      :visible.sync="bindAddDialogVisible"
-      title="閫夋嫨缁戝畾"
-      width="600px"
-    >
-      <el-table
-        :data="bindAddTableData"
-        style="width: 100%"
-        height="60vh"
-        @selection-change="handleBindAddSelectionChange"
-      >
+    <el-dialog :visible.sync="bindAddDialogVisible" title="閫夋嫨缁戝畾" width="600px">
+      <el-table :data="bindAddTableData" style="width: 100%" height="60vh"
+        @selection-change="handleBindAddSelectionChange">
         <el-table-column type="selection" width="55"> </el-table-column>
-        <el-table-column
-          prop="inspectionItemClass"
-          label="妫�楠岄」鍒嗙被"
-          width="150"
-        >
+        <el-table-column prop="inspectionItemClass" label="妫�楠岄」鍒嗙被" width="150">
         </el-table-column>
         <el-table-column prop="inspectionItem" label="妫�楠岄」" width="150">
         </el-table-column>
@@ -350,17 +247,9 @@
       </el-table>
       <span slot="footer" class="dialog-footer">
         <el-button @click="bindAddDialogVisible = false">鍙� 娑�</el-button>
-        <el-button :loading="loading" type="primary" @click="bindAdd"
-          >缁� 瀹�</el-button
-        >
+        <el-button :loading="loading" type="primary" @click="bindAdd">缁� 瀹�</el-button>
       </span>
     </el-dialog>
-    <!-- <un-pass-retest-result
-      v-if="retestVisible"
-      :retestInfo="retestInfo"
-      :retestVisible="retestVisible"
-      @closeRetestLook="closeRetestLook"
-    ></un-pass-retest-result> -->
     <!--浜т笟閾句俊鎭煡鐪�-->
     <!-- <ShowInfo
       v-if="showInfoDialog"
@@ -379,11 +268,9 @@
 // import Add from "../do/b1-ins-order/add.vue";
 // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue";
 // import CopperOrder from "../do/b1-material-ins-order/copper-order.vue";
-// import UnPassRetestResult from "../do/b1-material-ins-order/unPassRetestResult.vue";
 import EditInspectionItem from "./components/EditInspectionItem.vue";
 import limsTable from "@/components/Table/lims-table.vue";
 import {
-  getRetestResult,
   claimInsOrderPlan,
   upPlanUser2,
   upPlanUser,
@@ -406,11 +293,10 @@
     // Inspection,
     // Add,
     // CustomsInspection,
-    // UnPassRetestResult
   },
   dicts: ["urgency_level", "inspection_task_state"],
   computed: {
-    ...mapGetters(["name", "userId"]),
+    ...mapGetters(["nickName", "userId"]),
   },
   data() {
     return {
@@ -435,85 +321,6 @@
       ],
       active: 1,
       tabIndex: 0,
-      componentDataDataLook: {
-        entity: {
-          id: 0,
-          orderBy: {
-            field: "sampleCode",
-            order: "asc",
-          },
-        },
-        isIndex: false,
-        showSelect: false,
-        select: false,
-        do: [
-          {
-            id: "parent",
-            font: "涓嶅悎鏍煎娴嬫煡鐪�",
-            type: "text",
-            method: "getRetestResult",
-            disabFun: (row, index) => {
-              return row.insResult != 0;
-            },
-          },
-          {
-            id: "parent",
-            font: "妫�楠岄」缁戝畾",
-            type: "text",
-            method: "getBinding",
-            disabFun: (row, index) => {
-              return (
-                this.lookInfo.userName == null ||
-                this.lookInfo.insState == 3 ||
-                this.lookInfo.insState == 5
-              );
-            },
-          },
-        ],
-        tagField: {
-          insState: {
-            select: [],
-          },
-          insResult: {
-            select: [
-              {
-                value: 1,
-                label: "鍚堟牸",
-                type: "success",
-              },
-              {
-                value: 0,
-                label: "涓嶅悎鏍�",
-                type: "danger",
-              },
-              {
-                value: 3,
-                label: "涓嶅垽瀹�",
-                type: "",
-              },
-            ],
-          },
-        },
-        selectField: {},
-        spanConfig: {
-          rows: [
-            {
-              name: "sampleCode",
-              index: 0,
-            },
-            {
-              name: "sample",
-              index: 1,
-            },
-            {
-              name: "model",
-              index: 6,
-            },
-          ],
-        },
-        requiredAdd: [],
-        requiredUp: [],
-      },
       dataDialogVisible: false,
       planTotal: 0,
       insStateList: [],
@@ -540,7 +347,6 @@
       customsInspection: {},
       showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
       isReport: 0,
-      retestVisible: false,
       retestInfo: [],
       isCopper: null,
       bindCurrentInfo: {},
@@ -668,7 +474,7 @@
                   row.userName == null ||
                   row.insState == 3 ||
                   row.insState == 5 ||
-                  (row.userName && !row.userName.includes(this.name))
+                  (row.userName && !row.userName.includes(this.nickName))
                 );
               },
             },
@@ -683,7 +489,7 @@
                   row.userName == null ||
                   row.insState == 5 ||
                   row.insState == 3 ||
-                  (row.userName && !row.userName.includes(this.name))
+                  (row.userName && !row.userName.includes(this.nickName))
                 );
               },
             },
@@ -721,6 +527,7 @@
           type: "",
         },
       ],
+      // 鏁版嵁鏌ョ湅鐩稿叧瀛楁---寮�濮�
       lookTableData: [],
       lookColumn: [
         {
@@ -756,16 +563,6 @@
           label: "鎿嶄綔",
           operation: [
             {
-              name: "涓嶅悎鏍煎娴嬫煡鐪�",
-              type: "text",
-              clickFun: (row) => {
-                this.getRetestResult(row);
-              },
-              disabled: (row) => {
-                return row.insResult != 0;
-              },
-            },
-            {
               name: "妫�楠岄」缁戝畾",
               type: "text",
               clickFun: (row) => {
@@ -788,6 +585,7 @@
         current: 0,
       },
       lookTableLoading: false,
+      // 鏁版嵁鏌ョ湅鐩稿叧瀛楁---缁撴潫
     };
   },
   created() {
@@ -837,6 +635,7 @@
           if (res.code === 200) {
             this.lookTableData = res.data.records;
             this.lookPage.total = res.data.total;
+            this.dataDialogVisible = true;
           }
         })
         .catch((err) => {
@@ -860,19 +659,6 @@
     handleDataLook(row) {
       this.lookInfo = row;
       this.getLookList();
-      this.dataDialogVisible = true;
-    },
-    // 鏌ョ湅涓嶅悎鏍煎娴嬬粨鏋�
-    getRetestResult(row) {
-      getRetestResult({ insProductId: row.insProductId }).then((res) => {
-        if (res.code == 201) return;
-        this.retestVisible = true;
-        this.retestInfo = res.data;
-      });
-    },
-    //
-    closeRetestLook() {
-      this.retestVisible = false;
     },
     // 鏉冮檺鍒嗛厤
     getPower(radio) {
@@ -1023,14 +809,24 @@
       if (row.userName) {
         inspectorList = row.userName.split(",");
       }
-      if (this.name) {
-        inspectorList.push(this.name);
+      if (this.nickName) {
+        inspectorList.push(this.nickName);
       }
       this.inspectorList = inspectorList;
       this.sonLaboratory = row.sonLaboratory;
       this.state = 1;
       this.typeSource = row.typeSource;
       this.orderId = row.id;
+      this.$router.push({
+        path: "/inspectionTask/inspection",
+        query: {
+          inspectorList: this.inspectorList,
+          sonLaboratory: this.sonLaboratory,
+          state: this.state,
+          typeSource: this.typeSource,
+          orderId: this.orderId,
+        },
+      });
     },
     // 鏌ョ湅妫�楠屾暟鎹�
     viewInspectInfo(row) {
@@ -1039,8 +835,8 @@
       if (row.userName) {
         inspectorList = row.userName.split(",");
       }
-      if (this.name) {
-        inspectorList.push(this.name);
+      if (this.nickName) {
+        inspectorList.push(this.nickName);
       }
       this.inspectorList = inspectorList;
       this.sonLaboratory = row.sonLaboratory;
@@ -1106,7 +902,7 @@
       this.orderId = row.id;
     },
     getAuthorizedPerson() {
-      selectUserCondition().then((res) => {
+      selectUserCondition({ type: 1 }).then((res) => {
         let data = [];
         res.data.forEach((a) => {
           data.push({
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
index e69de29..f6c7d33 100644
--- a/src/views/business/inspectionTask/inspection.vue
+++ b/src/views/business/inspectionTask/inspection.vue
@@ -0,0 +1,3290 @@
+<template>
+  <div v-loading="loading" class="inspection">
+    <el-row class="title">
+      <el-col :span="4" style="padding-left: 20px; text-align: left">妫�楠屽崟璇︽儏
+      </el-col>
+      <el-col :span="20" style="text-align: right">
+        <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px"
+          style="text-align: right; padding-top: 0; display: inline">
+          <el-form-item label="娓╁害:" style="margin-bottom: 0">
+            <el-input v-model="otherForm.temperature" :disabled="state > 1" placeholder="" size="small"
+              style="width: 90px; line-height: 60px" @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" placeholder="" size="small"
+              style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'humidity')"></el-input>
+            <span style="margin-left: 4px">%</span>
+          </el-form-item>
+        </el-form>
+        <el-button size="small" type="primary" @click="refreshView">鍒锋柊</el-button>
+        <el-button v-if="typeSource === 1" size="small" type="primary" @click="openPurchase">杩涜揣楠岃瘉</el-button>
+        <el-button v-if="state === 1 && typeSource === 1" size="small" type="primary"
+          @click="openUnPassDialog('add')">涓嶅悎鏍煎鐞�</el-button>
+        <el-button size="small" type="primary" @click="
+          sampleVisible = true;
+        uploadSample();
+        ">鏍峰搧鍒囨崲</el-button>
+        <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">浠诲姟鍒囨崲</el-button>
+        <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">鎻愪氦</el-button>
+        <!-- 澶嶆牳 -->
+        <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">閫氳繃</el-button>
+        <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">涓嶉�氳繃</el-button>
+        <el-button type="primary" size="small" @click="exportTable('myTable')">涓嬭浇鍘熷璁板綍</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-position="right" label-width="100px">
+        <el-form-item label="濮旀墭缂栧彿:">
+          <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍峰搧缂栧彿:">
+          <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode">
+            <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+          </el-tooltip>
+        </el-form-item>
+        <el-form-item label="鏍峰搧鍚嶇О:">
+          <el-input v-model="currentSample.sample" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍峰搧鏁伴噺:">
+          <el-input v-model="sampleProduct.length" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍峰搧鍨嬪彿:">
+          <el-input v-model="currentSample.model" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="涓嬪彂鏃堕棿:">
+          <el-input v-model="insOrder.sendTime" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="绱ф�ョ▼搴�:">
+          <el-input v-model="insOrder.typeName" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="绾﹀畾鏃堕棿:">
+          <el-input v-model="insOrder.appointed" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item v-if="typeSource === 1" label="鎶芥鏁伴噺:">
+          <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="璇疯緭鍏�" size="small"></el-input>
+        </el-form-item>
+        <el-form-item v-if="typeSource === 1" label="鍘傚瀵嗗害:">
+          <el-input v-model="supplierDensity" clearable disabled placeholder="璇疯緭鍏�" size="small"></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-input v-model="insOrder.remark" :disabled="state !== 1" clearable placeholder="璇疯緭鍏�" size="small"
+            @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>
+          <!-- <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 v-for="(item, index) in tableLists" :key="index" :label="item.templateId" size="small">{{
+              item.templateName }}</el-radio-button>
+          </el-radio-group>
+        </div>
+        <div style="display: flex; align-items: center">
+          <el-button v-if="state === 1" size="small" type="primary" @click="openAddUnpass">鏂板涓嶅悎鏍煎娴�</el-button>
+          <el-button v-if="state === 1" size="small" type="primary" @click="unpassCheck">涓嶅悎鏍煎娴�</el-button>
+          <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">鏌ョ湅涓嶅悎鏍煎娴�</el-button>
+          <span v-if="cableTagList.length > 0">&nbsp;&nbsp;鐢电紗閰嶇疆锛�</span>
+          <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="璇烽�夋嫨" size="small"
+            @change="(m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m)
+              " @focus="getCableTag(currentSample.id)">
+            <el-option v-for="item in cableTagList" :key="item.cableTag" :label="item.cableTag" :value="item.cableTag">
+              <span style="float: left">{{ item.cableTag }}</span>
+              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
+                type="danger">鏈</el-tag>
+              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
+                type="warning">妫�楠屼腑</el-tag>
+              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
+                type="success">宸叉</el-tag>
+            </el-option>
+          </el-select>
+          <span v-if="repetitionTagList.length > 0">&nbsp;&nbsp;閲嶅妫�楠岄」锛�</span>
+          <el-select v-if="repetitionTagList.length > 0" v-model="repetitionTag" clearable placeholder="璇烽�夋嫨"
+            size="small" @change="(m) =>
+              handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m)
+              " @focus="getRepetitionTag(currentSample.id)">
+            <el-option v-for="item in repetitionTagList" :key="item.repetitionTag" :label="item.radius"
+              :value="item.repetitionTag">
+              <span style="float: left">{{ item.radius }}</span>
+              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
+                type="danger">鏈</el-tag>
+              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
+                type="warning">妫�楠屼腑</el-tag>
+              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
+                type="success">宸叉</el-tag>
+            </el-option>
+          </el-select>
+          <span v-if="typeSource == '1'">&nbsp;&nbsp;寰呮楠屾暟閲忥細</span>
+          <el-select v-if="typeSource == '1'" v-model="rawMaterialTag" placeholder="璇烽�夋嫨" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m)
+            " @focus="getRawMaterialTag(currentSample.id)">
+            <el-option v-for="item in rawMaterialTagList" :key="item.rawMaterialTag" :label="item.rawMaterialTag"
+              :value="item.rawMaterialTag">
+              <span style="float: left">{{ item.rawMaterialTag }}</span>
+              <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px"
+                type="danger">鏈</el-tag>
+              <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px"
+                type="warning">妫�楠屼腑</el-tag>
+              <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px"
+                type="success">宸叉</el-tag>
+            </el-option>
+          </el-select>
+          <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary"
+            @click="getDataAcquisitionDevice">鏁版嵁閲囬泦</el-button>
+          <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small"
+            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "鍏抽棴缂栬緫" : "缂栬緫鏁伴噰"
+            }}</el-button>
+        </div>
+      </div>
+      <!-- 甯歌妫�楠屽師濮嬭褰� -->
+      <div 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 !=
+          '寮у瀭鐗规�ф楠屽師濮嬭褰�')
+      " id="nav" v-loading="tableLoading" class="center-box">
+        <table v-for="(item, index) in tableList" :key="index + currentTable + currentSample.id" border="1"
+          cellpadding="10" class="tables" id="myTable">
+          <tbody>
+            <tr style="white-space: nowrap">
+              濮旀墭缂栧彿锛歿{
+                insOrder.entrustCode
+              }}
+            </tr>
+            <tr v-for="(m, i) in item.arr" :key="i">
+              <td v-for="(n, j) in m" v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4"
+                :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c" :key="j"
+                :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-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]
+                  }px;`" class="content">
+                  <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"
+                      :key="'abc-' + '000' + index + '000' + i + '000' + j" v-model="n.v.v" :disabled="(getInspectionItemType(n.i) == 1 &&
+                        !dataAcquisitionEidtAble) ||
+                        (n.u != userId && n.u != undefined && n.u != '')
+                        " class="table_input" @change="(m) =>
+                          changeInput(
+                            m,
+                            `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                            n,
+                            'getDataType'
+                          )
+                          " @input="handleInput(n)" @mousewheel.native.prevent @keydown.enter="
+                            changeInput(
+                              '',
+                              `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                              n,
+                              'getDataType'
+                            )
+                            ">
+                    </el-input>
+                    <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 ||
+                      (n.u != userId && n.u != undefined && n.u != '')
+                      " class="table_input" type="textarea" @change="(m) =>
+                        changeInput(
+                          m,
+                          `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                          n,
+                          'getDataType'
+                        )
+                        " />
+                    <!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state > 1 ||
+                      getInspectionItemType(n.i) == 1 ||
+                      (n.u != userId && n.u != undefined && n.u != '')
+                      " class="table_input" @change="(m) =>
+                        changeInput(
+                          m,
+                          `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                          n,
+                          'getDataType'
+                        )
+                        " @visible-change="(e) => getDic(e, n.i)">
+                      <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>
+                    </el-select> -->
+                    <span v-else-if="getInspectionValueType(n.i) == 4"
+                      :style="`font-family:${n.v.ff} !important;`">/</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
+                    " v-model="n.v.v" class="table_input" @change="(m) =>
+                      changeInput(
+                        m,
+                        `${item.templateId}-${n.r}-${n.c}-${n.i}`,
+                        n,
+                        'getDataType',
+                        'changeSelect'
+                      )
+                      ">
+                      <el-option :value="1" label="鍚堟牸"></el-option>
+                      <el-option :value="0" label="涓嶅悎鏍�"></el-option>
+                      <el-option :value="3" label="涓嶅垽瀹�"></el-option>
+                      <el-option :value="2" label="寰呭畾"></el-option>
+                    </el-select>
+                    <template v-if="state > 1">
+                      <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 v-if="
+                      PROJECT == '妫�娴嬩腑蹇�' ||
+                      (PROJECT == '瑁呭鐢电紗' &&
+                        getInspectionValueType(n.i) != 2 &&
+                        state == 1)
+                    ">
+                      <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
+                  ">
+                    <span>{{ n.v.v }}</span>
+                  </template>
+                  <template v-else-if="
+                    n.v.ps != undefined && n.v.ps.value === '璁惧鍚嶇О'
+                  ">
+                    <el-select v-model="n.v.v" :disabled="state > 1" class="table_input" filterable multiple
+                      placeholder="璁惧" remote @change="(val) => changeEquip(val, n)"
+                      @visible-change="(e) => getEquipOptions(e, n.i)">
+                      <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.value">
+                        {{ item.label + "--" + item.value }}
+                      </el-option>
+                    </el-select>
+                  </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
+                  ">
+                    <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 :title="currentSample.sampleCode" style="
+                        display: flex;
+                        flex-wrap: nowrap;
+                        align-items: center;
+                        width: 100%;
+                      ">
+                      <i v-if="!currentFiberOpticTape && !currentFiberOptic" class="el-icon-caret-left table_caret"
+                        style="width: 16px" @click="caretSample(-1)"></i>
+                      <div
+                        :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">
+                        {{ currentSample.sampleCode }}
+                      </div>
+                      <i v-if="!currentFiberOpticTape && !currentFiberOptic" class="el-icon-caret-right table_caret"
+                        style="width: 16px" @click="caretSample(1)"></i>
+                    </div>
+                  </template>
+                  <template v-else-if="
+                    n.v.ps != undefined && n.v.ps.value === '鏍峰搧鍨嬪彿'
+                  ">
+                    <div v-if="
+                      currentSample.model !== undefined &&
+                      currentSample.model !== null
+                    " :style="`font-family:${n.v.ff} !important;`">
+                      {{ currentSample.model }}
+                    </div>
+                  </template>
+                  <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)"></span>
+                </div>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+      <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{
+        orderId: id,
+      }" :headers="headers" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false"
+        accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar" style="width: 80px !important">
+        <el-button v-if="state == 1" size="small" type="primary">闄勪欢涓婁紶</el-button></el-upload>
+      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
+        :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table>
+      <!-- <ValueTable :key="upIndex" ref="fileList" :componentData="componentData0" :delUrl="$api.insOrderPlan.delfile"
+        :url="$api.insOrderPlan.getFileList" class="value-table" style="height: 100%; margin-top: 16px" /> -->
+    </div>
+    <el-drawer :size="550" :visible.sync="sampleVisible" title="鏍峰搧鍒囨崲">
+      <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct"
+        :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%"
+        highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample">
+        <el-table-column :key="Math.random()" align="center" label="搴忓彿" type="index" width="70px">
+        </el-table-column>
+        <el-table-column label="鏍峰搧缂栧彿" min-width="100px" prop="sampleCode" show-overflow-tooltip></el-table-column>
+        <el-table-column label="鏍峰搧鍨嬪彿" min-width="100px" prop="model" show-overflow-tooltip></el-table-column>
+        <el-table-column label="妫�娴嬬姸鎬�" prop="insState" show-overflow-tooltip width="100px">
+          <template slot-scope="scope">
+            <el-tag v-for="(item, i) in typeList" v-if="item.value == scope.row.insState" :key="i" :type="item.type"
+              size="medium" style="margin-right: 5px">{{ item.label }}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="妫�楠屼汉" min-width="80px" prop="checkName" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="鏄惁鐣欐牱" prop="isLeave" show-overflow-tooltip width="95px">
+          <template slot-scope="scope">
+            <span>{{ scope.row.isLeave == 0 ? "鍚�" : "鏄�" }}</span>
+          </template>
+        </el-table-column>
+        <!-- 妫�楠屽崟浼氭湁涓�涓槸鍚︽湁閰嶅鏍峰搧瀛楁鎺у埗鏄剧ず -->
+        <el-table-column v-if="insOrder.mating > 0" label="閰嶅鏍峰搧鍨嬪彿" min-width="130px" prop="joinModel"
+          show-overflow-tooltip></el-table-column>
+        <el-table-column v-if="insOrder.mating > 0" label="閰嶅鏍峰搧鍚嶇О" min-width="130px" prop="joinName"
+          show-overflow-tooltip></el-table-column>
+        <el-table-column v-if="insOrder.mating > 0" label="閰嶅鏍峰搧鏁伴噺" min-width="130px" prop="joinNum"
+          show-overflow-tooltip></el-table-column>
+      </el-table>
+    </el-drawer>
+    <el-drawer :size="500" :visible.sync="taskVisible" title="浠诲姟鍒囨崲">
+      <!-- <ValueTable :key="upIndex" ref="insOrderPlan" :componentData="componentData"
+        :url="$api.insOrderPlan.inspectionOrderDetailsTaskSwitching" class="value-table" style="height: 100%" /> -->
+    </el-drawer>
+    <el-dialog :visible.sync="reviewDia" title="妫�楠屽鏍�" width="500px">
+      <div v-if="reviewDia" class="body" style="display: flex; padding: 10px">
+        <div class="search_label" style="width: 150px">
+          <span class="required-span">* </span>涓嶉�氳繃鐨勭悊鐢憋細
+        </div>
+        <div class="search_input" style="width: 100%">
+          <el-input v-model="noReason" :autosize="{ minRows: 4 }" clearable size="small" type="textarea"></el-input>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="reviewDia = false">鍙� 娑�</el-button>
+        <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="addVerifyDia" title="鎸囧畾澶嶆牳浜哄憳" 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" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+            <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="addVerifyDia = false">鍙� 娑�</el-button>
+        <el-button :loading="submitLoading" type="primary" @click="submit()">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false"
+      :visible.sync="dataGetDia" title="鏁版嵁閲囬泦" width="80%">
+      <div>
+        <table border="1" cellpadding="10" class="thermal-table">
+          <tr>
+            <td style="width: 120px">妫�楠岄」鍒嗙被</td>
+            <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.sortName }}</td>
+              <td :rowspan="item.child.length">{{ item.faName }}</td>
+              <td>{{ item.child[0].name }}</td>
+              <td style="text-align: left">
+                <el-select v-if="item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1"
+                  :multiple-limit="item.child[0].maxNum" clearable filterable multiple placeholder="璇烽�夋嫨"
+                  @change="setData(item)">
+                  <el-option v-for="(item, index) in item.child[0].arr" :key="index" :filter-method="filterMethod"
+                    :label="index + 1 + '^' + item.result" :value="index + '^' + item.result">
+                    <span>{{
+                      "搴忓彿锛�" +
+                      (index + 1) +
+                      "锛�" +
+                      "缁撴灉锛�" +
+                      item.result +
+                      "锛�" +
+                      "鍘氬害锛�" +
+                      item.thickness +
+                      "锛�" +
+                      "鏃堕棿锛�" +
+                      item.mergedDateTime
+                    }}</span>
+                  </el-option>
+                </el-select>
+                <el-checkbox-group v-if="!item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1"
+                  :max="item.child[0].maxNum">
+                  <el-checkbox v-for="(n, j) in item.child[0].arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox>
+                </el-checkbox-group>
+              </td>
+            </tr>
+            <tr v-for="(m, i) in item.child" v-show="i > 0" :key="i + 'bbbbbbbbbbbbbb'">
+              <td>{{ m.name }}</td>
+              <td style="text-align: left">
+                <el-select v-if="m.isShowSelect" v-model="m.getDataIndex1" :multiple-limit="m.maxNum" clearable
+                  filterable multiple placeholder="璇烽�夋嫨">
+                  <el-option v-for="(item, index1) in m.arr" :key="index1" :label="index + 1 + '^' + item.result"
+                    :value="index1 + '^' + item.result">
+                    <span>{{
+                      "搴忓彿锛�" +
+                      (index1 + 1) +
+                      "锛�" +
+                      "缁撴灉锛�" +
+                      item.result +
+                      "锛�" +
+                      "鍘氬害锛�" +
+                      item.thickness +
+                      "锛�" +
+                      "鏃堕棿锛�" +
+                      item.mergedDateTime
+                    }}</span>
+                  </el-option>
+                </el-select>
+                <el-checkbox-group v-if="!m.isShowSelect" v-model="m.getDataIndex1" :max="m.maxNum">
+                  <el-checkbox v-for="(n, j) in m.arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox>
+                </el-checkbox-group>
+              </td>
+            </tr>
+          </template>
+        </table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dataGetDia = false">鍙� 娑�</el-button>
+        <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" title="鎸囧畾鎶ュ憡瀹℃牳浜哄憳" width="400px"
+      @close="closeAddVerifyDia">
+      <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="checkUser" clearable filterable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+            <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeAddVerifyDia">鍙� 娑�</el-button>
+        <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <add-un-pass v-if="addUnPassDialog" ref="addUnPassDialog" :addUnPassDialog="addUnPassDialog"
+      @resetAddUnPass="resetAddUnPass"></add-un-pass>
+    <!-- <UnPassDialog
+      v-if="unPassDialog"
+      ref="unPassDialog"
+      :orderId="orderId"
+      :unPassDialog="unPassDialog"
+      @resetForm="resetForm"
+    ></UnPassDialog> -->
+    <!-- <InspectionWord
+      v-if="unPassCheck"
+      :inspectorList="inspectorList"
+      :orderId="orderId"
+      :rawMaterialTag="rawMaterialTag"
+      :sonLaboratory="sonLaboratory"
+      :state="state"
+      :typeSource="typeSource"
+      :unPassCheck="unPassCheck"
+      @closeUnPassCheckDialog="closeUnPassCheckDialog"
+      @refreshView="refreshView"
+    /> -->
+    <!-- <purchase-verification
+      v-if="purchaseDialog"
+      ref="purchaseDialog"
+      :orderId="orderId"
+      :purchaseDialog="purchaseDialog"
+      @resetPurchaseDialog="resetPurchaseDialog"
+    ></purchase-verification> -->
+  </div>
+</template>
+
+<script>
+import excelFunction from "@/utils/excelFountion";
+import limsTable from "@/components/Table/lims-table.vue";
+// import UnPassDialog from "../b1-unpass-manage/unPassDialog.vue";
+// import AddUnPass from "../b1-unpass-manage/addUnPass.vue";
+// import InspectionWord from "./InspectionWord.vue";
+// import PurchaseVerification from "../b1-unpass-manage/PurchaseVerification.vue";
+import {
+  doInsOrder,
+  getCableTag,
+  getRepetitionTag,
+  getRawMaterialTag,
+  dataCollection,
+  write,
+  getInsProduct,
+  getReportModel,
+  determineWhetherToCollectData,
+  search,
+  verifyPlan,
+  checkSubmitPlan,
+  submitPlan,
+  saveInsContext,
+  selectUserCondition,
+  downFile,
+  getFileList,
+  delfile
+} from "@/api/business/inspectionTask.js";
+import html2canvas from "html2canvas";
+import { mapGetters } from "vuex";
+export default {
+  // props: ["sonLaboratory", "orderId", "state", "inspectorList", "typeSource"],
+  components: {
+    // PurchaseVerification,
+    // AddUnPass,
+    limsTable,
+    // UnPassDialog,
+    // InspectionWord,
+  },
+  data() {
+    return {
+      sonLaboratory: null,
+      orderId: null,
+      state: null,
+      inspectorList: null,
+      typeSource: null,
+      sagData: [],
+      sagForm: {
+        sampleCode: null,
+        model: null,
+        inspection: null,
+        methodName: null,
+        tensileForce: null,
+        spanLength: null,
+        load: null,
+      },
+      dataGetDia: false,
+      wareTableDataLoading: false,
+      fileAdd: false,
+      sampleVisible: false,
+      taskVisible: false,
+      submitLoading: false,
+      searchForm: {
+        sampleName: null,
+        state: null,
+      },
+      id: null,
+      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: [],
+      },
+      changeType: null,
+      getReportModelLoading: false,
+      insOrder: {},
+      sampleProduct: [],
+      supplierDensity: "", // 鍘傚瀵嗗害
+      typeList: [],
+      urgentList: [],
+      currentSample: {}, //褰撳墠鏍峰搧淇℃伅
+      tableList: [],
+      loading: false,
+      ps: {},
+      param: {},
+      currentKey: 1,
+      currentKey0: 1,
+      currentKey1: 1,
+      currentKey2: 1,
+      comparisonList: [],
+      excelMethodList: [],
+      equipOptions: [],
+      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,
+      getDataTypeId: "",
+      getDataType: null,
+      unPassDialog: false, // 涓嶅悎鏍煎鐞嗗脊妗�
+      cableTagList: [],
+      rawMaterialTag: "", // 鎵规
+      rawMaterialTagList: [], // 鎵规閫夐」
+      addCheck: false, // 鎸囧畾瀹℃牳浜哄憳寮规
+      checkUser: "",
+      addUnPassDialog: false,
+      type: "",
+      retestTag: "",
+      unPassCheck: false,
+      unPassTableList: [],
+      unPassTableLoading: false,
+      purchaseDialog: false, // 杩涜揣楠岃瘉鍘熷璁板綍寮规
+      temCableTag: "",
+      repetitionTagList: [],
+      repetitionTag: "",
+      // 鏂囦欢鍒楄〃鐩稿叧--寮�濮�
+      tableData: [],
+      column: [
+        {
+          label: "绫诲瀷", prop: "type", dataType: "tag",
+          formatData: (params) => {
+            if (params == 1) {
+              return '鍥剧墖'
+            } else {
+              return '鏂囦欢'
+            }
+          },
+        },
+        { label: "闄勪欢鍚嶇О", prop: "fileName" },
+        { label: "涓婁紶浜�", prop: "name" },
+        { label: "涓婁紶鏃堕棿", prop: "createTime" },
+        {
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
+          operation: [
+            {
+              name: "涓嬭浇",
+              type: "text",
+              clickFun: (row) => {
+                this.handleDown(row);
+              },
+            },
+            {
+              name: "鍒犻櫎",
+              type: "text",
+              clickFun: (row) => {
+                this.handleDelete(row);
+              },
+              disabled: (row) => {
+                return this.state != 1;
+              },
+            },
+          ],
+        },
+      ],
+      page: {
+        total: 0,
+        size: 10,
+        current: 0,
+      },
+      tableLoading: false,
+      // 鏂囦欢鍒楄〃鐩稿叧--缁撴潫
+    };
+  },
+  // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+  computed: {
+    ...mapGetters(["userId"]),
+    headers() {
+      return {
+        token: sessionStorage.getItem("token"),
+      };
+    },
+    action() {
+      return this.javaApi + "/insOrderPlan/uploadFile";
+    },
+  },
+  created() {
+    this.componentData.entity.sonLaboratory = this.sonLaboratory;
+    this.getUserInfo();
+    let { sonLaboratory, orderId, state, inspectorList, typeSource } =
+      this.$route.query;
+    this.sonLaboratory = sonLaboratory;
+    this.orderId = orderId;
+    this.id = this.orderId;
+    this.state = state;
+    this.inspectorList = inspectorList;
+    this.typeSource = typeSource;
+  },
+  mounted() {
+    this.getTypeDicts(); // 鑾峰彇绱ф�ョ▼搴︿笅鎷夋閫夐」
+    this.getInsStateDicts();
+    this.getComparisonList();
+    this.getAuthorizedPerson();
+    this.scrollInit();
+    // this.getPower();
+    this.startWorker();
+  },
+  watch: {
+    // 鐩戝惉浠诲姟id锛岃幏鍙栦换鍔′俊鎭�
+    id(val) {
+      this.loading = true;
+      doInsOrder({
+        id: val,
+        laboratory: this.sonLaboratory,
+      }).then(async (res) => {
+        this.insOrder = res.data.insOrder;
+        this.supplierDensity = res.data.supplierDensity;
+        this.getList()
+        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) {
+          this.$emit("goback");
+          return this.$message.error("璇ヤ换鍔℃病鏈夋牱鍝佷俊鎭�");
+        }
+        // 璧嬪�煎綋鍓嶆牱鍝佸垪琛�
+        this.sampleProduct = res.data.sampleProduct;
+        this.currentSample = this.HaveJson(this.sampleProduct[0]);
+        let insProduct = this.HaveJson(this.currentSample.insProduct);
+        // 娓╁害銆佹箍搴﹁祴鍊�
+        this.otherForm = {
+          temperature: this.insOrder.temperature
+            ? this.insOrder.temperature
+            : null,
+          humidity: this.insOrder.humidity ? this.insOrder.humidity : null,
+        };
+        if (this.typeSource == "1") {
+          this.getRawMaterialTag(this.currentSample.id); // 鍘熸潗鏂欑殑妫�楠屼换鍔℃煡璇㈡壒鏁�
+          this.rawMaterialTag = "1";
+        }
+        this.getEquipOptions(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) => {
+          // 鏄惁涓烘垚鍝佺數缂嗕笅鐨勬澗濂楃椤圭洰锛屼笉鏄垯鎵ц鍒濆鍖�
+          if (this.handleCasing(a.inspectionItem)) {
+            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.getCableTag(this.currentSample.id); // 鏌ヨ鏄惁鏈夎澶氭妫�楠岀殑鐢电紗閰嶇疆
+        this.getRepetitionTag(this.currentSample.id); // 鏌ヨ鏄惁鏈夎閲嶅妫�楠岄」
+        // 娓呯┖鍏夌氦閰嶇疆鐩稿叧鏁版嵁---涓嬮潰淇℃伅鏆傛椂鍙拷鐣�
+        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;
+        }
+      });
+    },
+    // 鐩戝惉褰撳墠妯℃澘鍙樺寲
+    currentTable(val1, val0) {
+      if (val0 != null && val1 != val0) {
+        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) => {
+              if (this.handleCasing(a.inspectionItem)) {
+                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();
+            }
+          }
+        });
+      }
+    },
+    // 鐗规畩妫�楠岄」--鐩戝惉璁惧淇℃伅鏀瑰彉
+    equipForm: {
+      deep: true,
+      handler(val) { },
+    },
+  },
+  beforeDestroy() {
+    // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕�
+    this.stopWorker();
+  },
+  methods: {
+    // 鏂囦欢绠$悊--寮�濮�
+    getList() {
+      this.tableLoading = true;
+      let param = { ...this.page };
+      delete param.total;
+      getFileList({ insOrderId: this.id, ...param })
+        .then((res) => {
+          this.tableLoading = false;
+          if (res.code === 200) {
+            this.tableData = res.data.records;
+            this.page.total = res.data.total;
+          }
+        })
+        .catch((err) => {
+          this.tableLoading = false;
+        });
+    },
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.getList();
+    },
+    handleDelete(row) {
+      this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          delfile({ id: row.id }).then((res) => {
+            if (res.code == 201) return;
+            this.$message.success("鍒犻櫎鎴愬姛");
+            this.refresh();
+          });
+        })
+        .catch(() => { });
+    },
+    // 鏂囦欢绠$悊--缁撴潫
+
+    closeAddVerifyDia() {
+      this.addCheck = false;
+      this.checkUser = "";
+    },
+    // 鍒锋柊椤甸潰
+    refreshView() {
+      this.$emit("refreshView");
+    },
+    closeUnPassCheckDialog() {
+      this.unPassCheck = false;
+    },
+    // 鏌ヨ鏄惁鏈夎澶氭妫�楠岀殑鐢电紗閰嶇疆
+    getCableTag() {
+      getCableTag({
+        id: this.currentSample.id,
+        laboratory: this.sonLaboratory,
+      }).then((res) => {
+        if (res.code === 200 && res.data.length > 0) {
+          this.cableTagList = res.data;
+        }
+      });
+    },
+    // 鏌ヨ鏄惁鏈夎閲嶅妫�楠岄」
+    getRepetitionTag() {
+      getRepetitionTag({
+        id: this.currentSample.id,
+        laboratory: this.sonLaboratory,
+        cableTag: this.temCableTag,
+      }).then((res) => {
+        if (res.code === 200) {
+          this.repetitionTagList = res.data;
+        }
+      });
+    },
+    getRawMaterialTag() {
+      getRawMaterialTag({
+        id: this.currentSample.id,
+        laboratory: this.sonLaboratory,
+      }).then((res) => {
+        if (res.code === 200) {
+          res.data.forEach((item) => {
+            this.rawMaterialTagList = res.data;
+          });
+        }
+      });
+    },
+    // 娣诲姞闇�瑕佸娴嬬殑涓嶅悎鏍兼楠岄」
+    openAddUnpass() {
+      this.addUnPassDialog = true;
+      const info = {
+        id: this.currentSample.id,
+        type: this.type,
+        laboratory: this.sonLaboratory,
+        cableTag: "",
+        rawMaterialTag: this.rawMaterialTag,
+      };
+      this.$nextTick(() => {
+        this.$refs.addUnPassDialog.getInsOrder(info);
+      });
+    },
+    resetAddUnPass() {
+      this.addUnPassDialog = false;
+    },
+    // 杩涜涓嶅悎鏍煎娴�
+    unpassCheck() {
+      this.unPassCheck = true;
+      this.retestTag = "1";
+    },
+    viewUnpassCheck() {
+      this.unPassCheck = true;
+      this.retestTag = "1";
+    },
+    // 鎵撳紑涓嶅悎鏍煎鐞嗗脊妗�
+    openUnPassDialog(type) {
+      this.unPassDialog = true;
+      this.$nextTick(() => {
+        this.$refs.unPassDialog.getInsOrder(type);
+      });
+    },
+    // 鍏抽棴涓嶅悎鏍煎鐞嗗脊妗�
+    resetForm() {
+      this.$refs.unPassDialog.$refs["unPassForm"].resetFields();
+      this.unPassDialog = false;
+    },
+    // 鎵撳紑杩涜揣楠岃瘉寮规
+    openPurchase() {
+      const operationType = this.state === 1 ? "add" : "view";
+      this.purchaseDialog = true;
+      const item = {
+        id: this.currentSample.id,
+        sonLaboratory: this.sonLaboratory,
+        cableTag: this.temCableTag,
+        rawMaterialTag: this.rawMaterialTag,
+        typeSource: this.typeSource,
+      };
+      this.$nextTick(() => {
+        this.$refs.purchaseDialog.getInsOrder(operationType, item);
+      });
+    },
+    resetPurchaseDialog() {
+      this.$refs.purchaseDialog.$refs["purchaseForm"].resetFields();
+      this.purchaseDialog = false;
+    },
+    // 鏁版嵁閲囬泦
+    getDataAcquisitionDevice() {
+      let itemIds = [];
+      this.currentSample.insProduct.forEach((item) => {
+        if (item.inspectionItemType === "1") {
+          itemIds.push(item.id);
+        }
+      });
+      const params = {
+        entrustCode: this.insOrder.entrustCode,
+        sampleCode: this.currentSample.sampleCode,
+        id: this.currentSample.id,
+        itemIds: itemIds,
+      };
+      this.dataAcquisitionLoading = true;
+      dataCollection(params).then((res) => {
+        this.dataAcquisitionLoading = false;
+        if (res.code != 200) {
+          return;
+        }
+        this.dataAcquisitionInfoNew = this.HaveJson(res.data);
+        // 瀵规暟閲囧洖鏉ョ殑鍊艰繘琛屽鐞�
+        this.handleDataAcquisition(res.data);
+      });
+    },
+    objectOrder(obj) {
+      let newkey = Object.keys(obj).sort();
+      let newObj = {};
+      for (let i = 0; i < newkey.length; i++) {
+        newObj[newkey[i]] = obj[newkey[i]];
+      }
+      return newObj;
+    },
+    handleDataAcquisition(data, noDialog) {
+      // 鏄惁鍙互缂栬緫鏁伴噰鏁版嵁
+      if (this.dataAcquisitionEidtAble) {
+        this.getDataType = 1;
+      } else {
+        this.getDataType = 2;
+      }
+      this.dataAcquisitionInfo = {};
+      this.getData = [];
+      for (let i in this.objectOrder(data)) {
+        console.log("i---", i);
+        let obj = {};
+        if (i.includes("@")) {
+          obj = {
+            faName: i.split("@")[0],
+            sortName: i.split("@")[1],
+            child: [],
+          };
+        } else {
+          obj = {
+            faName: i,
+            child: [],
+          };
+        }
+        // 寰幆鏁伴噰鏁版嵁
+        for (let j in data[i]) {
+          // 鎷兼帴瀛楃涓�  妫�楠岄」鍒嗙被+妫�楠岄」+妫�楠屽瓙椤�
+          let str0 = "";
+          if (i.includes("@")) {
+            if (i.split("@")[0] == j) {
+              str0 = i.split("@")[0] + ",";
+            } else {
+              str0 = i.split("@")[1] + "," + i.split("@")[0] + "," + j;
+            }
+          } else {
+            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 == "妫�楠岄」" ||
+                    m.v.ps.value == "妫�楠岄」鍒嗙被")
+                ) {
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」鍒嗙被") {
+                    if (num0 == 0) {
+                      num0++;
+                      str = m.v.v + ",";
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」") {
+                    if (num0 == 1) {
+                      str = str + m.v.v + ",";
+                      num0++;
+                    } else {
+                      str = m.v.v + ",";
+                      num0++;
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠屽瓙椤�") {
+                    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.includes("@")) {
+              if (i.split("@")[0] == j) {
+                str0 = i.split("@")[0] + ",";
+              } else {
+                str0 = i.split("@")[1] + "," + i.split("@")[0] + "," + j;
+              }
+            } else {
+              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 == "妫�楠岄」" ||
+                    m.v.ps.value == "妫�楠岄」鍒嗙被")
+                ) {
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」鍒嗙被") {
+                    if (num0 == 0) {
+                      num0++;
+                      str = m.v.v + ",";
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠岄」") {
+                    if (num0 == 1) {
+                      str = str + m.v.v + ",";
+                      num0++;
+                    } else {
+                      str = m.v.v + ",";
+                      num0++;
+                    }
+                  }
+                  if (m.v.ps && m.v.ps.value == "妫�楠屽瓙椤�") {
+                    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) {
+                    // this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName)
+                  }
+                }
+              });
+            });
+            // 鑾峰彇鍒版渶澶ф楠屽�艰緭鍏ヤ釜鏁板悗閲嶇粍鏁版嵁
+            let obj0 = {
+              name: j,
+              arr: data[i][j].result,
+              maxNum: maxNum,
+              equipValue: data[i][j].equipValue,
+              value: [],
+            };
+            // 濡傛灉鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏皢鏁伴噰鏁版嵁鍦ㄥ脊妗嗕腑灞曠ず锛岀敤鎴烽�夋嫨闇�瑕佹墜鍔ㄩ�夋嫨鏁伴噰鐨勪俊鎭�
+            if (
+              (data[i][j].result &&
+                Array.isArray(data[i][j].result) &&
+                data[i][j].result.length > maxNum &&
+                noDialog !== "noDialog") ||
+              (obj0.equipValue === "JCZX-ZB-FF01014" && noDialog !== "noDialog")
+            ) {
+              obj.child.push(obj0);
+            } else {
+              this.dataAcquisitionInfo[str0] = {
+                value: data[i][j].result,
+              };
+            }
+          }
+        }
+        // 寰幆鏁伴噰鏁版嵁
+        if (obj.child.length > 0) {
+          obj.child.forEach((m) => {
+            this.$set(m, "getDataIndex1", []);
+            // 璁惧閫夋嫨涓烘媺鍔涙満锛屽氨鏄剧ず澶氶�変笅鎷夋
+            if (m.equipValue === "JCZX-ZB-FF01014") {
+              this.$set(m, "isShowSelect", true);
+            } else {
+              this.$set(m, "isShowSelect", false);
+            }
+          });
+          this.getData.push(obj);
+        }
+      }
+      // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨
+      if (this.getData.length > 0) {
+        this.dataGetDia = true;
+      } 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;
+        }
+      };
+      this.dataAcquisitionLoading = false;
+    },
+    setData(item) {
+      if (item.child.length > 1) {
+        let arr1 = [];
+        // 澶氫釜妫�楠屽瓙椤圭殑璇濓紝绗竴涓楠屽瓙椤归�夌殑绗嚑涓笅闈㈢殑灏辫祴鍊肩鍑犱釜
+        for (let j = 0; j < item.child.length; j++) {
+          let arr = [];
+          if (j === 0) {
+            for (let k = 0; k < item.child[j].getDataIndex1.length; k++) {
+              let val1 = item.child[j].getDataIndex1[k];
+              const index = val1.indexOf("^");
+              if (index > -1) {
+                val1 = val1.substring(0, index);
+                arr.push(val1);
+              }
+            }
+            arr1 = arr;
+          } else {
+            this.$set(item.child[j], "getDataIndex1", []);
+            arr1.map((a) => {
+              const value1 = a + "^" + item.child[j].arr[Number(a)].result;
+              item.child[j].getDataIndex1.push(value1);
+            });
+          }
+        }
+      }
+    },
+    // 鎷夊姏鏈烘暟閲�
+    filterMethod(val) {
+      console.log("val---", val);
+    },
+    // 濡傛灉瀛樺湪鏁伴噰杩斿洖鐨勬暟缁勯暱搴﹀ぇ浜庢渶澶ц緭鍏ヤ釜鏁帮紝鍒欏脊鍑哄脊妗嗛�夋嫨锛岃繖閲屾槸寮规鐨勬彁浜�
+    submitDataGet() {
+      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.getData[i].child[j].getDataIndex1.length;
+            k++
+          ) {
+            if (this.getData[i].child[j].getDataIndex1[k].includes("^")) {
+              const index =
+                this.getData[i].child[j].getDataIndex1[k].indexOf("^");
+              if (index > -1) {
+                this.getData[i].child[j].getDataIndex1[k] = this.getData[
+                  i
+                ].child[j].getDataIndex1[k].slice(
+                  index + 1,
+                  this.getData[i].child[j].getDataIndex1[k].length
+                );
+              }
+            }
+            arr.push(this.getData[i].child[j].getDataIndex1[k]);
+          }
+          if (this.getData[i].sortName) {
+            this.dataAcquisitionInfoNew[
+              this.getData[i].faName + "@" + this.getData[i].sortName
+            ][this.getData[i].child[j].name].result = arr;
+          } else {
+            this.dataAcquisitionInfoNew[this.getData[i].faName][
+              this.getData[i].child[j].name
+            ].result = arr;
+          }
+        }
+      }
+      this.getDataIndexLoading = true;
+      // 璧嬪�煎畬鎴愬悗闇�瑕佸啀娆¤繘鍏ュ鐞嗘暟閲囩嚎绋嬮噷鍘诲鐞嗘暟鎹�
+      this.handleDataAcquisition(this.dataAcquisitionInfoNew, "noDialog");
+    },
+    // 澶氱嚎绋�
+    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;
+      }
+    },
+    // 鐑惊鐜�---缁撴潫
+    // 淇濆瓨婀垮害銆佹俯搴︽暟鎹�
+    subOtherForm(m, type) {
+      console.log("m---", m);
+      write({
+        [type]: type === "remark" ? m : Number(m),
+        id: this.insOrder.id,
+      }).then((res) => {
+        if (res.code == 201) return;
+        this.$message.success("淇濆瓨鎴愬姛");
+      });
+    },
+    exportTable(tableId) {
+      // 鑾峰彇table鍏冪礌
+      var table = document.getElementById(tableId);
+
+      // 浣跨敤html2canvas搴撶敓鎴恈anvas
+      html2canvas(table).then(function (canvas) {
+        // 鍒涘缓涓�涓浘鐗囧厓绱�
+        var img = canvas.toDataURL("image/png");
+
+        // 鍒涘缓涓�涓猘鏍囩妯℃嫙鐐瑰嚮杩涜涓嬭浇
+        var a = document.createElement("a");
+        a.href = img;
+        a.download = "table.png";
+        a.click();
+      });
+    },
+    // 鏉冮檺鑾峰彇
+    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() {
+      doInsOrder({
+        id: this.id,
+        laboratory: this.sonLaboratory,
+      }).then(async (res) => {
+        this.sampleProduct = res.data.sampleProduct;
+      });
+    },
+    // 鏍规嵁绫诲瀷銆佷换鍔d銆佸疄楠屽鏉ヨ幏鍙栨牱鍝佺殑妫�楠岄」淇℃伅
+    async getCurrentProduct(id, type, cableTag) {
+      if (cableTag === undefined) {
+        cableTag = "";
+      }
+      this.tableLoading = true;
+      type = this.typeSource == "1" ? 5 : type;
+      this.type = type;
+      let res = await getInsProduct({
+        id: id,
+        type: type,
+        laboratory: this.sonLaboratory,
+        cableTag: (cableTag ? cableTag : this.temCableTag),
+        rawMaterialTag: this.rawMaterialTag,
+        repetitionTag: this.repetitionTag
+      });
+      this.tableLoading = false;
+      if (res.data.length > 0) {
+        return res.data;
+      }
+    },
+    // 鍒囨崲鏍峰搧
+    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.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) => {
+        if (this.handleCasing(a.inspectionItem)) {
+          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.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;
+      getReportModel({
+        sampleId: id
+      }).then((res) => {
+        this.getReportModelLoading = false;
+        this.fibers = res.data["鍏夌氦甯�"];
+        this.fiber = res.data["鍏夌氦"];
+        this.casing = res.data["濂楃"];
+      });
+    },
+    async handleChangeCableTag(m, type, num, m2) {
+      let cableTag = "";
+      let repetitionTag = "";
+      if (num === "cableTag") {
+        cableTag = m2;
+        this.temCableTag = cableTag;
+        this.getRepetitionTag();
+      }
+      if (num === "repetitionTag") {
+        repetitionTag = m2;
+        this.repetitionTag = repetitionTag;
+      }
+      if (!m2) {
+        type = 0;
+      }
+      this.changeType = type;
+      if (m) {
+        let list = await this.getCurrentProduct(m, type, cableTag);
+        if (list && 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({
+              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.getDicts("urgency_level").then((response) => {
+        this.urgentList = this.dictToValue(response.data);
+        this.componentData.tagField.type.select = this.urgentList;
+      });
+    },
+    // 瀛楀吀鑾峰彇淇℃伅
+    getInsStateDicts() {
+      this.getDicts("inspection_task_state").then((response) => {
+        this.typeList = this.dictToValue(response.data);
+        this.componentData.tagField.insState.select = this.typeList;
+      });
+    },
+    // 瀛楀吀鑾峰彇淇℃伅
+    getComparisonList() {
+      this.getDicts("coordinate_transformation").then((response) => {
+        this.comparisonList = this.dictToValue(response.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;
+        }
+      });
+      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.tableList.forEach((a) => {
+        let mcList = a.template.filter(
+          (b) =>
+            b.v.mc != undefined &&
+            b.v.mc.cs != undefined &&
+            b.v.mc.rs != undefined
+        );
+        let count = 0;
+        // 灏� a.template 杞崲涓� Map 浠ュ姞閫熸煡鎵�
+        let templateMap = new Map();
+        a.template.forEach((item) => {
+          templateMap.set(`${item.c}-${item.r}`, item);
+        });
+        mcList.forEach((b) => {
+          let cs = b.v.mc.cs;
+          let rs = b.v.mc.rs;
+          for (let i = 0; i < cs; i++) {
+            for (let i2 = 0; i2 < rs; i2++) {
+              let key = `${b.c + i}-${b.r + i2}`;
+              let item = templateMap.get(key);
+              if (item) {
+                let bb = this.HaveJson(b);
+                item.v.v = bb.v.v;
+                item.v.ps = bb.v.ps;
+                item.v.fc = bb.v.fc;
+                item.v.fs = bb.v.fs;
+                item.v.ht = bb.v.ht;
+                item.mc = count;
+              }
+            }
+          }
+          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 str2 = "";
+            let unit2 = "";
+            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) {
+                      if (c.v.v) {
+                        c.v.v = c.v.v.replace(/\s*/g, "");
+                      }
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (
+                    c.v.ps != undefined &&
+                    c.v.ps.value === "妫�楠屽瓙椤�"
+                  ) {
+                    if (count4 === 1) {
+                      if (c.v.v) {
+                        c.v.v = c.v.v.replace(/\s*/g, "");
+                      }
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  }
+                } else if (isThree == 1) {
+                  if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」鍒嗙被") {
+                    if (count4 === 0) {
+                      if (c.v.v) {
+                        c.v.v = c.v.v.replace(/\s*/g, "");
+                      }
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (c.v.ps != undefined && c.v.ps.value === "妫�楠岄」") {
+                    if (count4 === 1) {
+                      if (c.v.v) {
+                        c.v.v = c.v.v.replace(/\s*/g, "");
+                      }
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  } else if (
+                    c.v.ps != undefined &&
+                    c.v.ps.value === "妫�楠屽瓙椤�"
+                  ) {
+                    if (count4 === 2) {
+                      if (c.v.v) {
+                        c.v.v = c.v.v.replace(/\s*/g, "");
+                      }
+                      str += c.v.v;
+                      count4 += 1;
+                    }
+                  }
+                }
+                if (str === "鏈烘鎬ц兘骞叉�佹媺浼稿己搴�(绾靛悜)") {
+                  if (c.v.ps != undefined && c.v.ps.value === "鍗曚綅") {
+                    if (c.v.v) {
+                      c.v.v = c.v.v.replace(/\s*/g, "");
+                    }
+                    str2 = str + c.v.v;
+                    unit2 = c.v.v;
+                  }
+                }
+              }
+            });
+            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;
+                inspectionItemClass = inspectionItemClass.replace(/\s*/g, "");
+                let inspectionItem =
+                  this.currentSample.insProduct[i].inspectionItem == null ||
+                    this.currentSample.insProduct[i].inspectionItem == undefined
+                    ? ""
+                    : this.currentSample.insProduct[i].inspectionItem;
+                inspectionItem = inspectionItem.replace(/\s*/g, "");
+                let inspectionItemSubclass =
+                  this.currentSample.insProduct[i].inspectionItemSubclass ==
+                    null ||
+                    this.currentSample.insProduct[i].inspectionItemSubclass ==
+                    undefined
+                    ? ""
+                    : this.currentSample.insProduct[i].inspectionItemSubclass;
+                inspectionItemSubclass = inspectionItemSubclass.replace(
+                  /\s*/g,
+                  ""
+                );
+                if (inspectionItemSubclass === "骞叉�佹媺浼稿己搴�(绾靛悜)") {
+                  // 妫�楠屽瓙椤逛负'骞叉�佹媺浼稿己搴�(绾靛悜)'鏃讹紝妯$増閲屾槸涓や釜璁$畻鍊煎搴旂浉鍚岀殑妫�楠屽�煎苟涓旇绠楁柟寮忎笉鍚岋紝瑕佹牴鎹浉鍚岀殑'鍗曚綅'鍋氱壒娈婄殑娓叉煋
+                  const unit = this.currentSample.insProduct[i].unit;
+                  if (
+                    (this.currentSample.insProduct[i].templateId ===
+                      a.templateId &&
+                      inspectionItemClass +
+                      inspectionItem +
+                      inspectionItemSubclass +
+                      unit ===
+                      str2) ||
+                    (this.currentSample.insProduct[i].templateId ===
+                      a.templateId &&
+                      !unit2.includes("/") &&
+                      inspectionItemClass +
+                      inspectionItem +
+                      inspectionItemSubclass ===
+                      str)
+                  ) {
+                    ids.push({
+                      r: b.r,
+                      id: this.currentSample.insProduct[i].id,
+                      product: this.currentSample.insProduct[i],
+                    });
+                    break;
+                  }
+                } else {
+                  // 濡傛灉鐩哥瓑,閭d箞璇存槑鎵惧埌浜�,骞朵笖鎶奿d瀛樿捣鏉�,鍚庣画妫�楠岄」涔熶細鍦ㄩ〉闈腑鏄剧ず鍑烘潵
+                  if (
+                    this.currentSample.insProduct[i].templateId ===
+                    a.templateId &&
+                    inspectionItemClass +
+                    inspectionItem +
+                    inspectionItemSubclass ===
+                    str
+                  ) {
+                    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++) {
+            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);
+          for (let i = 0; i < equipValue.length; i++) {
+            // 鏅�氳澶囪祴鍊�
+            this.param[a.id].equipValue[i].v.v = equipValue[i].v;
+          }
+        } catch (e) { }
+        try {
+          // 璁惧鍚嶇О璧嬪��
+          let equipName = JSON.parse(a.insProductResult.equipName);
+          for (let i = 0; i < equipName.length; i++) {
+            equipName[i].v !== "" &&
+              equipName[i].v.map((val) => {
+                const index = this.equipOptions.findIndex(
+                  (item) => item.value === val
+                );
+                if (index > -1) {
+                  // 鏍规嵁璁惧缂栫爜杞崲涓虹浉搴旂殑璁惧鍚嶇О
+                  val = this.equipOptions[index].deviceName;
+                }
+              });
+          }
+          for (let i = 0; i < equipName.length; i++) {
+            // 鏅�氳澶囧悕绉拌祴鍊�
+            this.param[a.id].equipName[i].v.v = equipName[i].v;
+          }
+        } catch (e) {
+          console.log("璁惧鍚嶇О璧嬪��----", 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, changeSelect) {
+      // 涓烘暟閲囧畾涔変竴涓�昏緫鍙傛暟
+      if (getDataType == "getDataType") {
+        this.getDataType = 2;
+      }
+      let currentInsItemId = null; //褰撳墠妫�楠岄」id
+      if (n) {
+        currentInsItemId = JSON.parse(JSON.stringify(n.i));
+        // 瀹氫箟涓�涓嚱鏁版潵楠岃瘉鍒嗘暟鏄惁鏈夋晥
+        if (typeof n.v.v == "string") {
+          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);
+            });
+            break;
+          case "tableList":
+            this.$nextTick(() => {
+              // 鏇存柊鏁版嵁
+              this.$delete(this.tableList[0], "arr");
+              this.$set(this.tableList[0], "arr", this.result.value[0].arr);
+              // this.param = this.result.value.param
+              if (this.result.value.currentInsItem) {
+                currentInsItemId = this.result.value.currentInsItem.i;
+              }
+            });
+            break;
+          case "getCurrentInsProduct":
+            // 鏇存柊椤甸潰鏁版嵁
+            this.getCurrentInsProduct(this.result.value);
+            break;
+        }
+      };
+      // 淇濆瓨鏁版嵁
+      setTimeout(() => {
+        if (changeSelect) {
+          this.saveInsContext(currentInsItemId);
+        }
+      }, 200);
+    },
+    // 鏄惁闇�瑕佹暟閲�
+    async determineWhetherToCollectData() {
+      let res = await determineWhetherToCollectData({ managementNumber: '' })
+      this.isGet = res.data;
+    },
+    // 鏍规嵁鍚庣浼犲弬鏇存柊椤甸潰鏁版嵁   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;
+        }
+      }
+    },
+    // 鑾峰彇鎵�鏈夎澶�
+    getEquipOptions(e, id) {
+      if (e) {
+        this.equipOptions = [];
+        search({ status: 0 }).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.componentData.entity.userId = this.userId;
+    },
+    openAddCheck() {
+      this.addCheck = true;
+    },
+    // 澶嶆牳
+    upInsReview(e) {
+      if (e == 1) {
+        // 閫氳繃
+        this.reviewLoading = true;
+        verifyPlan({
+          orderId: this.orderId,
+          type: 1,
+          laboratory: this.sonLaboratory,
+          tell: null,
+          userId: this.checkUser,
+        }).then((res) => {
+          if (res.code === 200) {
+            this.$message.success("鎿嶄綔鎴愬姛");
+            this.$emit("goback");
+            this.addCheck = false;
+          }
+          this.reviewLoading = false;
+        })
+          .catch((error) => {
+            console.error(error);
+            this.reviewLoading = false;
+          });
+      } else {
+        // 涓嶉�氳繃
+        this.reviewDia = true;
+      }
+    },
+    handleReviewDia() {
+      if (this.noReason) {
+        this.reviewLoading = true;
+        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.submitLoading = true;
+      checkSubmitPlan({
+        orderId: this.orderId,
+        laboratory: this.sonLaboratory,
+      }).then((res) => {
+        if (res.code === 200) {
+          if (!res.data || res.data.length == 0) {
+            this.submitLoading = true;
+            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.addVerifyDia = false;
+              }
+            })
+              .catch((error) => {
+                console.error(error);
+                this.submitLoading = false;
+              });
+          } else {
+            let newData = [];
+            const h = this.$createElement;
+            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.submitLoading = true;
+                submitPlan({
+                  orderId: this.orderId,
+                  laboratory: this.sonLaboratory,
+                  verifyUser: this.verifyUser,
+                }).then((res) => {
+                  if (res.code === 200) {
+                    this.$message.success("鎿嶄綔鎴愬姛");
+                    this.addVerifyDia = false;
+                    this.$emit("goback");
+                  }
+                  this.submitLoading = false;
+                })
+                  .catch((error) => {
+                    console.error(error);
+                    this.submitLoading = false;
+                  });
+              })
+              .catch(() => { });
+          }
+        }
+      })
+        .catch((error) => {
+          console.error(error);
+          this.submitLoading = false;
+        });
+      return;
+    },
+    // 缁熶竴鍦ㄨ繖閲屼繚瀛樻暟鎹�
+    saveInsContext(currentInsItemId) {
+      try {
+        if (this.param) {
+          let param = null;
+          if (currentInsItemId) {
+            param = { [currentInsItemId]: this.param[currentInsItemId] };
+          } else {
+            param = this.param;
+          }
+          saveInsContext({
+            param: JSON.stringify(param),
+            currentTable: this.currentTable,
+            sampleId: this.currentSample.id,
+          }).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) {
+      try {
+        // 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];
+          }
+        }
+        // this.equipOptions涓鸿澶囧悕绉颁笅鎷夋閫夐」鏁版嵁
+        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.join("锛�"));
+            this.$delete(this.param[n.i].equipName[i1].v, "v");
+            // 灏嗘暟缁勮祴鍊肩粰璁惧缂栫爜
+            this.$set(this.param[n.i].equipName[i1].v, "v", val);
+            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", val.join("锛�"));
+                }
+                if (m.i == n.i && m.v.ps && m.v.ps.value == "璁惧鍚嶇О") {
+                  this.$set(m.v, "v", val);
+                }
+              });
+            });
+          }
+        }
+        // 淇濆瓨鏁版嵁
+        this.saveInsContext(n.i);
+      } catch (e) {
+        console.log("changeEquip----", e);
+      }
+    },
+    getAuthorizedPerson() {
+      selectUserCondition({ type: 0 }).then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.name,
+            value: a.id,
+          });
+        });
+        this.personList = 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) => {
+        if (this.handleCasing(a.inspectionItem)) {
+          this.param[a.id] = {
+            insValue: [],
+            comValue: [],
+            resValue: null,
+            equipValue: [],
+            equipName: [],
+            insResult: null,
+          };
+        }
+      });
+      // 椤甸潰鏁版嵁澶勭悊
+      this.getTableLists();
+      // 鏇存柊鍒板绾跨▼
+      this.worker.postMessage(
+        JSON.stringify({
+          modelType: this.sampleProduct[0].model,
+          type: "saveData",
+          tableList: this.tableList,
+          param: this.param,
+          currentTable: this.currentTable,
+        })
+      );
+    },
+    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) {
+      downFile({ id: row.id }).then((res) => {
+        if (res.code === 200) {
+          let url = "";
+          if (res.data.type == 1) {
+            url = this.javaApi + "/img/" + res.data.fileUrl;
+            this.$download.saveAs(url, row.fileName)
+          } else {
+            url = this.javaApi + "/word/" + res.data.fileUrl;
+            this.$download.saveAs(url, row.fileName)
+          }
+        }
+      })
+        .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>
+<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: auto;
+  /* 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;
+}
+</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>
diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue
index 71eac7d..5364c89 100644
--- a/src/views/performance/manHour/workTimeConfig.vue
+++ b/src/views/performance/manHour/workTimeConfig.vue
@@ -4,168 +4,73 @@
       <div class="search_thing">
         <div class="search_label">缂栧彿锛�</div>
         <div class="search_input">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="queryParams.number"
-            @keyup.enter.native="refreshTable()"
-          ></el-input>
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.number"
+            @keyup.enter.native="refreshTable()"></el-input>
         </div>
       </div>
       <div class="search_thing">
         <div class="search_label">瀹為獙瀹わ細</div>
-        <el-select
-          v-model="queryParams.laboratory"
-          placeholder="鍏ㄩ儴"
-          size="small"
-          @change="refreshTable()"
-          clearable
-        >
-          <el-option
-            v-for="item in laboratoryList"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
+        <el-select v-model="queryParams.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()" clearable>
+          <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </div>
       <div class="search_thing">
         <div class="search_label">閮ㄩ棬锛�</div>
         <div class="search_input">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="queryParams.department"
-            @keyup.enter.native="refreshTable()"
-          ></el-input>
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.department"
+            @keyup.enter.native="refreshTable()"></el-input>
         </div>
       </div>
       <div class="search_thing" style="padding-left: 30px">
         <el-button size="small" @click="refresh()">閲� 缃�</el-button>
-        <el-button size="small" type="primary" @click="refreshTable()"
-          >鏌� 璇�</el-button
-        >
+        <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
       </div>
-      <el-button
-        size="small"
-        type="primary"
-        style="position: absolute; right: 50px"
-        @click="openAdd('鏂板')"
-        v-if="checkPermi(['performance:manHour:workTimeConfig:add'])"
-        >鏂� 澧�</el-button
-      >
+      <el-button size="small" type="primary" style="position: absolute; right: 50px" @click="openAdd('鏂板')"
+        v-if="checkPermi(['performance:manHour:workTimeConfig:add'])">鏂� 澧�</el-button>
     </div>
     <div class="table">
-      <lims-table
-        :tableData="tableData"
-        :column="column"
-        :page="page"
-        :tableLoading="tableLoading"
-        :height="'calc(100vh - 290px)'"
-        @pagination="pagination"
-      ></lims-table>
+      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
+        :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table>
     </div>
     <!-- 鏂板/缂栬緫 -->
     <el-dialog :title="title" :visible.sync="timeDia" width="500px">
-      <el-form
-        :model="timeForm"
-        ref="timeForm"
-        :rules="timeRules"
-        label-position="right"
-        label-width="120px"
-      >
+      <el-form :model="timeForm" ref="timeForm" :rules="timeRules" label-position="right" label-width="120px">
         <el-form-item label="缂栧彿" prop="number">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="timeForm.number"
-          ></el-input>
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.number"></el-input>
         </el-form-item>
         <el-form-item label="杈呭姪椤圭洰鍚嶇О" prop="auxiliaryProject">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="timeForm.auxiliaryProject"
-          >
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.auxiliaryProject">
           </el-input>
         </el-form-item>
         <el-form-item label="閮ㄩ棬" prop="department">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="timeForm.department"
-          >
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.department">
           </el-input>
         </el-form-item>
         <el-form-item label="瀹為獙瀹�" prop="laboratory">
-          <el-select
-            v-model="timeForm.laboratory"
-            size="small"
-            clearable
-            placeholder="璇烽�夋嫨"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in laboratoryList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="timeForm.laboratory" size="small" clearable placeholder="璇烽�夋嫨" style="width: 100%">
+            <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="鍗曚綅" prop="unit">
-          <el-select
-            v-model="timeForm.unit"
-            size="small"
-            clearable
-            placeholder="璇烽�夋嫨"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="item in unitList"
-              :key="item.dictValue"
-              :label="item.dictLabel"
-              :value="item.dictValue"
-            >
+          <el-select v-model="timeForm.unit" size="small" clearable placeholder="璇烽�夋嫨" style="width: 100%">
+            <el-option v-for="item in unitList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="鏍稿噯宸ユ椂" prop="approvedWorkingHour">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="timeForm.approvedWorkingHour"
-          >
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.approvedWorkingHour">
           </el-input>
         </el-form-item>
         <el-form-item label="澶囨敞" prop="remarks">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            type="textarea"
-            :rows="2"
-            clearable
-            v-model="timeForm.remarks"
-          >
+          <el-input size="small" placeholder="璇疯緭鍏�" type="textarea" :rows="2" clearable v-model="timeForm.remarks">
           </el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button @click="timeDia = false">鍙� 娑�</el-button>
-        <el-button
-          :loading="uploading"
-          type="primary"
-          @click="submitProduct('timeForm')"
-          >纭� 璁�</el-button
-        >
+        <el-button :loading="uploading" type="primary" @click="submitProduct('timeForm')">纭� 璁�</el-button>
       </span>
     </el-dialog>
   </div>
@@ -377,7 +282,7 @@
             this.refresh();
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
   },
 };
@@ -387,6 +292,7 @@
 .work-time-config {
   height: 100%;
 }
+
 .search {
   background-color: #fff;
   height: 80px;
@@ -409,6 +315,7 @@
 .search_input {
   width: calc(100% - 70px);
 }
+
 .table {
   padding: 10px;
   padding-top: 0;

--
Gitblit v1.9.3