From 12c8999bab7206bc652fd69ac4f364d84c9e7153 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 12 六月 2026 18:07:46 +0800
Subject: [PATCH] 不合格处理:支持多生产批次提交oa;oa流程查看调整

---
 src/components/Table/lims-table.vue                   |    5 
 src/api/business/unpass.js                            |    9 
 src/api/business/unqualifiedHandler.js                |    7 
 src/views/business/unpass/components/unPassDialog.vue |  193 ++++---
 src/views/business/inspectionTask/inspection.vue      |    7 
 src/views/business/unpass/components/OAProcess.vue    |   46 +
 src/views/business/unpass/index-manage.vue            | 1230 ++++++++++++++++++++++++++----------------------
 7 files changed, 835 insertions(+), 662 deletions(-)

diff --git a/src/api/business/unpass.js b/src/api/business/unpass.js
index 0bc71d9..49ee349 100644
--- a/src/api/business/unpass.js
+++ b/src/api/business/unpass.js
@@ -46,6 +46,15 @@
   });
 }
 
+// 鏌ヨ妫�楠屼笅鍗曞唴瀹硅鎯呭垪琛�
+export function getInsOrderList(data) {
+  return request({
+    url: "/insOrder/getInsOrderList",
+    method: "post",
+    data: data,
+  });
+}
+
 // 鏌ョ湅OA璇︽儏
 export function getUnqualifiedHandler(query) {
   return request({
diff --git a/src/api/business/unqualifiedHandler.js b/src/api/business/unqualifiedHandler.js
index 196e2b2..6904bd9 100644
--- a/src/api/business/unqualifiedHandler.js
+++ b/src/api/business/unqualifiedHandler.js
@@ -42,3 +42,10 @@
     responseType: "blob",
   });
 }
+// 鏌ヨ涓嶅悎鏍煎鐞嗚褰�
+export function getList() {
+  return request({
+    url: "/unqualifiedHandler/getList",
+    method: "get",
+  });
+}
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index ef3af96..769e168 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -316,6 +316,7 @@
         this.tableData.forEach((_, index) => {
           this.$set(this.uploadKeys, index, Date.now());
         });
+        this.calculateSpanInfo();
         this.refreshTableLayout();
       },
       immediate: true
@@ -471,13 +472,15 @@
     calculateSpanInfo() {
       // 鍒濆鍖栨瘡鍒楃殑鍚堝苟淇℃伅
       this.spanList = [];
+      // 璁$畻鏁版嵁鍒楀湪el-table涓殑鐪熷疄璧峰绱㈠紩锛氬簭鍙峰垪(1鍒�) + 鍙�夌殑閫夋嫨鍒�(1鍒�)
+      const colOffset = this.isSelection ? 2 : 1;
       this.column.forEach((m, i) => {
         if (m.mergeCol) {
           this.spanList.push({
             arr: [],
             position: 0,
             name: m.prop,
-            index: i + 1,
+            index: i + colOffset,
           });
         }
       });
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
index d4c101b..9cce797 100644
--- a/src/views/business/inspectionTask/inspection.vue
+++ b/src/views/business/inspectionTask/inspection.vue
@@ -1150,7 +1150,7 @@
     <UnPassDialog
       v-if="unPassDialog"
       ref="unPassDialog"
-      :orderId="orderId"
+      :selectOrderIds="[orderId]"
       :unPassDialog="unPassDialog"
       @resetForm="resetForm"
     ></UnPassDialog>
@@ -4065,11 +4065,6 @@
   display: inline-flex;
   align-items: center;
 }
-</style>
-<style scoped>
-/* .inspection .el-form-item__label {
-  color: #000;
-} */
 
 .inspection .el-drawer__header::before {
   content: "";
diff --git a/src/views/business/unpass/components/OAProcess.vue b/src/views/business/unpass/components/OAProcess.vue
index 7b4e8e6..53b774d 100644
--- a/src/views/business/unpass/components/OAProcess.vue
+++ b/src/views/business/unpass/components/OAProcess.vue
@@ -12,6 +12,7 @@
         <el-timeline-item
           placement="top"
           v-for="node in isOldData?oldNodes:newNodes"
+          v-if="(node.classType && node.classType===classType) || node.classType==='-1'"
           :key="node.id"
           :timestamp="node.name"
           :icon="node.hasData ? 'el-icon-check' : 'el-icon-time'"
@@ -29,7 +30,7 @@
                 <span class="value">{{ node.time || "-" }}</span>
               </div>
               <div class="detail-item">
-                <span class="label">{{node.name && node.name==='1妫�楠屽憳'?'涓嶅悎鏍兼弿杩帮細':'澶勭悊鎰忚锛�'}}</span>
+                <span class="label">{{node.infoTitle}}</span>
                 <span class="value">{{ node.info || "-" }}</span>
               </div>
             </div>
@@ -67,6 +68,7 @@
           id: 1,
           name: "1妫�楠屽憳",
           info: "",
+          infoTitle:"涓嶅悎鏍兼儏鍐垫弿杩�:",
           time: "",
           operator: "",
           operation: "",
@@ -75,6 +77,7 @@
         {
           id: 2,
           name: "2妫�娴嬩富绠$‘璁�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -84,6 +87,7 @@
         {
           id: 3,
           name: "3鐗╂祦閮ㄧ‘璁�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -93,6 +97,7 @@
         {
           id: 4,
           name: "4浜у搧宸ョ▼甯堝鐞嗘剰瑙�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -102,6 +107,7 @@
         {
           id: 5,
           name: "5.鎬诲伐鎴栬�呭壇缁忕悊鐨勫鐞嗘剰瑙�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -111,6 +117,7 @@
         {
           id: 6,
           name: "6璐ㄩ噺閮ㄥ鐞嗘剰瑙�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -120,6 +127,7 @@
         {
           id: 7,
           name: "7璐ㄩ噺閮ㄧ粡鐞�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -129,6 +137,7 @@
         {
           id: 8,
           name: "8鏍哥畻鍛�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -138,6 +147,7 @@
         {
           id: 9,
           name: "9鐗╂祦閮ㄧ储璧旂粨鏋�",
+          infoTitle:"澶勭悊鎰忚:",
           info: "",
           time: "",
           operator: "",
@@ -149,8 +159,10 @@
       newNodes:[
         {
           id: 1,
+          classType: "-1",
           name: "1鐢宠",
           info: "",
+          infoTitle:"涓嶅悎鏍兼儏鍐垫弿杩�:",
           time: "",
           operator: "",
           operation: "",
@@ -158,8 +170,10 @@
         },
         {
           id: 2,
-          name: "2璐ㄩ噺閮ㄧ粡鐞�",
+          classType: "-1",
+          name: "2璐ㄩ噺缁忕悊",
           info: "",
+          infoTitle:"瀵逛笉鍚堟牸浜у搧鐨勫鐞嗚姹�:",
           time: "",
           operator: "",
           operation: "",
@@ -167,7 +181,9 @@
         },
         {
           id: 3,
+          classType: "0",
           name: "3宸ヨ壓锛堜竴绫讳笉鍚堟牸锛�",
+          infoTitle:"鏀硅繘瑕佹眰:",
           info: "",
           time: "",
           operator: "",
@@ -176,7 +192,9 @@
         },
         {
           id: 4,
+          classType: "1",
           name: "3宸ヨ壓锛堜簩绫讳笉鍚堟牸锛�",
+          infoTitle:"鏀硅繘瑕佹眰:",
           info: "",
           time: "",
           operator: "",
@@ -185,8 +203,10 @@
         },
         {
           id: 5,
+          classType: "0",
           name: "4鎶�鏈粡鐞嗭紙涓�绫讳笉鍚堟牸锛�",
           info: "",
+          infoTitle:"鎺柦瑕佹眰:",
           time: "",
           operator: "",
           operation: "",
@@ -194,8 +214,10 @@
         },
         {
           id: 6,
+          classType: "1",
           name: "4鎶�鏈粡鐞嗭紙浜岀被涓嶅悎鏍硷級",
           info: "",
+          infoTitle:"鎺柦瑕佹眰:",
           time: "",
           operator: "",
           operation: "",
@@ -203,8 +225,10 @@
         },
         {
           id: 7,
+          classType: "0",
           name: "5鏍哥畻锛堜竴绫讳笉鍚堟牸锛�",
           info: "",
+          infoTitle:"绱㈣禂瑕佹眰(浜烘皯甯丷MB锟�):",
           time: "",
           operator: "",
           operation: "",
@@ -212,8 +236,10 @@
         },
         {
           id: 8,
+          classType: "1",
           name: "5鎬荤粡鐞嗭紙浜岀被涓嶅悎鏍硷級",
           info: "",
+          infoTitle:"鏈�缁堝鐞嗘剰瑙�:",
           time: "",
           operator: "",
           operation: "",
@@ -221,8 +247,10 @@
         },
         {
           id: 9,
+          classType: "0",
           name: "6褰掓。锛堜竴绫讳笉鍚堟牸锛�",
           info: "",
+          infoTitle:"澶勭悊鎰忚:",
           time: "",
           operator: "",
           operation: "",
@@ -230,8 +258,10 @@
         },
         {
           id: 10,
+          classType: "1",
           name: "6鏍哥畻锛堜簩绫讳笉鍚堟牸锛�",
           info: "",
+          infoTitle:"绱㈣禂瑕佹眰(浜烘皯甯丷MB锟�):",
           time: "",
           operator: "",
           operation: "",
@@ -239,19 +269,23 @@
         },
         {
           id: 11,
+          classType: "1",
           name: "7褰掓。锛堜簩绫讳笉鍚堟牸锛�",
           info: "",
+          infoTitle:"澶勭悊鎰忚:",
           time: "",
           operator: "",
           operation: "",
           hasData: false,
         },
-      ]
+      ],
+      classType:null,
     };
   },
   // 鏂规硶闆嗗悎
   methods: {
-    getInfo(id,unqualifiedDesc) {
+    getInfo(id,unqualifiedDesc,classType) {
+      if(classType)this.classType = classType;
       getOaFlow({
         id: id,
       })
@@ -264,7 +298,7 @@
                 const node = nodes.find((n) => n.name === item.nodeName);
                 if (node) {
                   node.time = item.approvalDate + " " + item.approvalTime;
-                  if(item.nodeName && item.nodeName==="1妫�楠屽憳"){
+                  if(item.nodeName && ['1妫�楠屽憳','1鐢宠'].includes(item.nodeName)){
                     node.info=unqualifiedDesc;
                   }else{
                     node.info = item.approvalOpinion;
@@ -318,7 +352,7 @@
   font-weight: 500;
   color: #606266;
   margin-right: 8px;
-  min-width: 90px;
+  min-width: 110px;
 }
 
 .value {
diff --git a/src/views/business/unpass/components/unPassDialog.vue b/src/views/business/unpass/components/unPassDialog.vue
index af51b98..b6c79ae 100644
--- a/src/views/business/unpass/components/unPassDialog.vue
+++ b/src/views/business/unpass/components/unPassDialog.vue
@@ -1,65 +1,99 @@
 <template>
   <div>
-    <el-dialog :title="type==='view'?'涓嶅悎鏍煎鐞嗚鎯�':'涓嶅悎鏍煎鐞嗘彁浜�'" :visible.sync="isShow" width="740px" :show-close="false" :close-on-click-modal="false"
-      :close-on-press-escape="false">
-      <div class="search">
-        <el-form :inline="true" :model="unPassForm" :rules="unPassFormRules" ref="unPassForm" class="form-inline"
+    <el-dialog :title="type==='view'?'涓嶅悎鏍煎鐞嗚鎯�':'涓嶅悎鏍煎鐞嗘彁浜�'" :visible.sync="isShow" width="40%" :show-close="false" :close-on-click-modal="false"
+      :close-on-press-escape="false" append-to-body>
+      <div>
+        <el-form :model="unPassForm" :rules="unPassFormRules" ref="unPassForm"
           label-width="120px">
-          <div>
-            <el-form-item class="headLine" label="鏍囬:" style="width: 100%" prop="headline">
-              <el-input clearable v-model="unPassForm.headline" size="small" :disabled="type === 'view'" type="textarea"
-                placeholder="璇疯緭鍏�"></el-input>
-            </el-form-item>
-          </div>
-          <el-form-item label="渚涘簲鍟嗗悕绉�:">
-            <el-input clearable v-model="unPassForm.supplierName" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
-          <el-form-item label="鐗╂枡鍚嶇О:" prop="materialName">
-            <el-tooltip class="item" effect="dark" placement="top" :content="unPassForm.materialName">
-              <el-input clearable v-model="unPassForm.materialName" :disabled="type==='view'" size="small" placeholder="璇疯緭鍏�"></el-input>
-            </el-tooltip>
-          </el-form-item>
-          <el-form-item label="鐢熶骇鎵规:">
-            <el-input clearable v-model="unPassForm.productionBatch" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
-          <el-form-item label="鍒拌揣鏁伴噺:">
-            <el-input clearable v-model="unPassForm.cargoQuantity" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
-          <el-form-item label="瑙勬牸鍨嬪彿:">
-            <el-input clearable v-model="unPassForm.specsModels" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
-          <el-form-item label="鎶ユ鏃堕棿:">
-            <el-date-picker v-model="unPassForm.inspectTime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small"
-              disabled style="width: 175px" type="date" placeholder="閫夋嫨鏃ユ湡">
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item label="鍙嶉浜�:">
-            <el-input clearable v-model="unPassForm.feedbackUser" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
-          <el-form-item label="鍙嶉鏃堕棿:" prop="feedbackTime">
-            <el-date-picker  :picker-options="{ disabledDate: this.disabledDate }" v-model="unPassForm.feedbackTime" :disabled="type === 'view'" format="yyyy-MM-dd"
-              value-format="yyyy-MM-dd" size="small" style="width: 175px" type="date" placeholder="閫夋嫨鏃ユ湡">
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item label="鍒嗙被:" prop="classification">
-            <el-select v-model="unPassForm.classification" :disabled="type === 'view' || !unPassForm.id" size="small" placeholder="璇烽�夋嫨">
-              <el-option v-for="item in classificationOptions" :key="item.value" :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="涓嶅悎鏍煎綊灞�:" prop="offGradeAscription">
-            <el-select v-model="unPassForm.offGradeAscription" :disabled="type === 'view'" size="small"
-              placeholder="璇烽�夋嫨">
-              <el-option v-for="item in offGradeAscriptionOptions" :key="item.value" :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="涓嶅悎鏍兼儏鍐垫弿杩�:" prop="unqualifiedDesc">
-            <el-input clearable type="textarea" v-model="unPassForm.unqualifiedDesc" :disabled="type === 'view'"
-              style="width: 484px" size="small" placeholder="璇疯緭鍏�"></el-input>
-          </el-form-item>
+          <el-row >
+            <el-col :span="24">
+              <el-form-item label="鏍囬" prop="headline">
+                <el-input style="width:100%" clearable v-model="unPassForm.headline" size="small" :disabled="type === 'view'" type="textarea"
+                          placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="12">
+              <el-form-item label="渚涘簲鍟嗗悕绉�">
+                <el-input style="width:100%" clearable v-model="unPassForm.supplierName" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鐗╂枡鍚嶇О" prop="materialName">
+                <el-input style="width:100%" clearable v-model="unPassForm.materialName" :disabled="type==='view'" size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="12">
+              <el-form-item label="鐢熶骇鎵规">
+                <el-input style="width:100%" clearable v-model="unPassForm.productionBatch" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鍒拌揣鏁伴噺">
+                <el-input style="width:100%" clearable v-model="unPassForm.cargoQuantity" disabled size="small" placeholder="璇疯緭鍏�" >
+                  <template slot="append">{{unPassForm.buyUnitMeas}}</template>
+                </el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="12">
+              <el-form-item label="瑙勬牸鍨嬪彿">
+                <el-input style="width:100%" clearable v-model="unPassForm.specsModels" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鎶ユ鏃堕棿">
+                <el-date-picker style="width:100%" v-model="unPassForm.inspectTime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small"
+                                disabled type="date" placeholder="閫夋嫨鏃ユ湡">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="12">
+              <el-form-item label="鍙嶉浜�">
+                <el-input style="width:100%" clearable v-model="unPassForm.feedbackUser" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="鍙嶉鏃堕棿" prop="feedbackTime">
+                <el-date-picker style="width:100%" :picker-options="{ disabledDate: this.disabledDate }" v-model="unPassForm.feedbackTime" :disabled="type === 'view'" format="yyyy-MM-dd"
+                                 value-format="yyyy-MM-dd" size="small" type="date" placeholder="閫夋嫨鏃ユ湡">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="12">
+              <el-form-item label="鍒嗙被" prop="classification">
+                <el-select style="width:100%" v-model="unPassForm.classification" :disabled="type === 'view' || !unPassForm.id" size="small" placeholder="璇烽�夋嫨">
+                  <el-option v-for="item in classificationOptions" :key="item.value" :label="item.label"
+                             :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="涓嶅悎鏍煎綊灞�" prop="offGradeAscription">
+                <el-select style="width:100%" v-model="unPassForm.offGradeAscription" :disabled="type === 'view'" size="small"
+                           placeholder="璇烽�夋嫨">
+                  <el-option v-for="item in offGradeAscriptionOptions" :key="item.value" :label="item.label"
+                             :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row >
+            <el-col :span="24">
+              <el-form-item label="涓嶅悎鏍兼儏鍐垫弿杩�" prop="unqualifiedDesc">
+                <el-input style="width:100%" clearable type="textarea" v-model="unPassForm.unqualifiedDesc" :disabled="type === 'view'"
+                           size="small" placeholder="璇疯緭鍏�"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
         </el-form>
         <el-upload v-if="type !== 'view'" ref="upload" :action="action2" :on-change="beforeUpload" :on-error="onError"
           :on-remove="handleRemoveFile" :on-success="getUnpassUrl" :headers="uploadHeader" :file-list="unPassFilesList">
@@ -84,7 +118,7 @@
 </template>
 
 <script>
-import { getInsOrder, getUnqualifiedHandler, downFile, addUnqualifiedHandler,reSubmitPushOa } from '@/api/business/unpass.js'
+import { getInsOrder,getInsOrderList, getUnqualifiedHandler, downFile, addUnqualifiedHandler,reSubmitPushOa } from '@/api/business/unpass.js'
 import {mapGetters} from "vuex";
 export default {
   name: "unPassDialog",
@@ -95,9 +129,11 @@
       type: Boolean,
       default: () => false
     },
-    orderId: {
-      type: String,
-      default: () => null
+    selectOrderIds: {
+      type: Array,
+      default: () => {
+        return []
+      }
     },
   },
   data() {
@@ -152,21 +188,22 @@
       this.type = type
       if (type === 'add') {
         // 璧嬪�奸粯璁ゆ暟鎹�
-        getInsOrder({
-          orderId: this.orderId
+        getInsOrderList({
+          selectOrderIds: this.selectOrderIds
         }).then(res => {
           if (res.code === 200) {
             this.unPassForm.feedbackTime = new Date().toISOString().substring(0, 10) // 鎶ユ鏃堕棿
-            this.unPassForm.headline = `No.0020-涓ぉ鑰愪笣-渚涘簲鍟嗚川閲忓紓甯稿弽棣堟祦绋�-${res.data.insOrderTemplate.supplierName}-${this.unPassForm.feedbackTime}` // 鏍囬
+            this.unPassForm.headline = `No.0020-涓ぉ鑰愪笣-渚涘簲鍟嗚川閲忓紓甯稿弽棣堟祦绋�-${res.data.supplierName}-${this.unPassForm.feedbackTime}` // 鏍囬
             this.unPassForm.feedbackUser = this.nickName // 鍙嶉浜�
-            this.unPassForm.insOrderId = res.data.insOrder.id // 璁㈠崟id
-            this.unPassForm.materialName = res.data.insOrder.sampleType // 鐗╂枡鍚嶇О
-            this.unPassForm.specsModels = res.data.insOrder.partDetail // 瑙勬牸鍨嬪彿
-            this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // 鍘熸潗鏂檌d
-            this.unPassForm.supplierName = res.data.insOrderTemplate.supplierName // 渚涘簲鍟嗗悕绉�
-            this.unPassForm.productionBatch = res.data.insOrderTemplate.updateBatchNo // 鐢熶骇鎵规
-            this.unPassForm.cargoQuantity = res.data.insOrderTemplate.qtyArrived + res.data.insOrderTemplate.buyUnitMeas // 鍒拌揣鏁伴噺
-            this.unPassForm.inspectTime = res.data.insOrderTemplate.sendTime.substring(0, 10)  // 鎶ユ鏃堕棿
+            // this.unPassForm.insOrderId = res.data.insOrder.id // 璁㈠崟id
+            this.unPassForm.materialName = res.data.sampleType // 鐗╂枡鍚嶇О
+            this.unPassForm.specsModels = res.data.partDetail // 瑙勬牸鍨嬪彿
+            // this.unPassForm.inventoryQuantityId = res.data.inventoryQuantityId // 鍘熸潗鏂檌d
+            this.unPassForm.supplierName = res.data.supplierName // 渚涘簲鍟嗗悕绉�
+            this.unPassForm.productionBatch = res.data.updateBatchNo // 鐢熶骇鎵规
+            this.unPassForm.cargoQuantity = res.data.qtyArrived // 鍒拌揣鏁伴噺
+            this.unPassForm.buyUnitMeas = res.data.buyUnitMeas // 閲囪喘鍗曚綅
+            this.unPassForm.inspectTime = res.data.sendTime  // 鎶ユ鏃堕棿
           }
         })
       } else {
@@ -201,7 +238,10 @@
             delete item.orderBy
           })
           this.handlunPassLoading = true
-          addUnqualifiedHandler(this.unPassForm).then(res => {
+          addUnqualifiedHandler({
+            ...this.unPassForm,
+            selectOrderIds: this.selectOrderIds
+          }).then(res => {
             if (res.code === 200) {
               this.$message.success('鎻愪氦鎴愬姛')
               this.$emit('resetForm')
@@ -288,7 +328,4 @@
 </script>
 
 <style scoped>
-.headLine>>>.el-form-item__content {
-  width: 68%;
-}
 </style>
diff --git a/src/views/business/unpass/index-manage.vue b/src/views/business/unpass/index-manage.vue
index d5da046..bac9723 100644
--- a/src/views/business/unpass/index-manage.vue
+++ b/src/views/business/unpass/index-manage.vue
@@ -4,39 +4,85 @@
       <div>
         <el-form :model="entity" ref="entity" size="small" :inline="true">
           <el-form-item label="IFS鍩�" prop="contract">
-            <el-select @keyup.enter.native="refreshTable" v-model="entity.contract" clearable placeholder="璇烽�夋嫨" size="small">
-              <el-option label="ZTNS" value="ZTNS"/>
-              <el-option label="KJNS" value="KJNS"/>
+            <el-select
+              @keyup.enter.native="refreshTable"
+              v-model="entity.contract"
+              clearable
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option label="ZTNS" value="ZTNS" />
+              <el-option label="KJNS" value="KJNS" />
             </el-select>
           </el-form-item>
           <el-form-item label="鎵瑰彿" prop="updateBatchNo">
-            <el-input v-model="entity.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
-                      @keyup.enter.native="refreshTable()">
+            <el-input
+              v-model="entity.updateBatchNo"
+              clearable
+              placeholder="璇疯緭鍏�"
+              size="small"
+              @keyup.enter.native="refreshTable()"
+            >
             </el-input>
           </el-form-item>
           <el-form-item label="璁㈠崟缂栧彿" prop="no">
-            <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.no"
-                      @keyup.enter.native="refreshTable()"></el-input>
+            <el-input
+              size="small"
+              placeholder="璇疯緭鍏�"
+              clearable
+              v-model="entity.no"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
           </el-form-item>
           <el-form-item label="瑙勬牸鍨嬪彿" prop="specsModels">
-            <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.specsModels"
-                      @keyup.enter.native="refreshTable()"></el-input>
+            <el-input
+              size="small"
+              placeholder="璇疯緭鍏�"
+              clearable
+              v-model="entity.specsModels"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
           </el-form-item>
           <el-form-item label="鏍峰搧鍚嶇О" prop="sample">
-            <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.sample"
-                      @keyup.enter.native="refreshTable()"></el-input>
+            <el-input
+              size="small"
+              placeholder="璇疯緭鍏�"
+              clearable
+              v-model="entity.sample"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
           </el-form-item>
           <el-form-item label="鐗╂枡灞炴��" prop="materialProp">
-            <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%" @change="refreshTable()">
-              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
-                         :value="dict.value">
+            <el-select
+              clearable
+              size="small"
+              v-model="entity.materialProp"
+              style="width: 100%"
+              @change="refreshTable()"
+            >
+              <el-option
+                v-for="dict in dict.type.material_prop_type"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              >
               </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="OA瀹℃牳鐘舵��" prop="operation">
-            <el-select clearable size="small" v-model="entity.operation" style="width: 100%" @change="refreshTable()">
-              <el-option v-for="dict in dict.type.oa_workflow_state" :key="dict.value" :label="dict.label"
-                         :value="dict.value">
+            <el-select
+              clearable
+              size="small"
+              v-model="entity.operation"
+              style="width: 100%"
+              @change="refreshTable()"
+            >
+              <el-option
+                v-for="dict in dict.type.oa_workflow_state"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              >
               </el-option>
             </el-select>
           </el-form-item>
@@ -49,26 +95,47 @@
               clearable
               value-format="yyyy-MM-dd"
               v-model="entity.feedbackDateTime"
-              @keyup.enter.native="refreshTable()">
+              @keyup.enter.native="refreshTable()"
+            >
             </el-date-picker>
           </el-form-item>
           <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName">
-            <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.supplierName"
-                      @keyup.enter.native="refreshTable()"></el-input>
+            <el-input
+              size="small"
+              placeholder="璇疯緭鍏�"
+              clearable
+              v-model="entity.supplierName"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button>
+            <el-button type="primary" size="mini" @click="refreshTable"
+              >鏌ヨ</el-button
+            >
             <el-button size="mini" @click="refresh">閲嶇疆</el-button>
-            <el-button :loading="exportLoading" type="success" size="mini" @click="exportUnqualifiedHandler">瀵煎嚭</el-button>
-            <el-button type="primary" size="mini" @click="openInsOrderDialog">鏂板涓嶅悎鏍煎鐞�</el-button>
+            <el-button
+              :loading="exportLoading"
+              type="success"
+              size="mini"
+              @click="exportUnqualifiedHandler"
+              >瀵煎嚭</el-button
+            >
+            <el-button type="primary" size="mini" @click="openInsOrderDialog"
+              >鏂板涓嶅悎鏍煎鐞�</el-button
+            >
           </el-form-item>
         </el-form>
       </div>
     </div>
     <div>
-      <lims-table :tableData="tableData" :column="column"
-                  :more="true" @pagination="pagination"
-                  :page="page" :tableLoading="tableLoading"></lims-table>
+      <lims-table
+        :tableData="tableData"
+        :column="column"
+        :more="true"
+        @pagination="pagination"
+        :page="page"
+        :tableLoading="tableLoading"
+      ></lims-table>
     </div>
     <el-dialog
       title="鎻愪氦"
@@ -76,24 +143,14 @@
       :close-on-press-escape="false"
       :close-on-click-modal="false"
       :visible.sync="dialogVisible"
-      width="30%">
+      width="30%"
+    >
       <span>鏄惁纭鎻愪氦OA锛�</span>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="submitOA" :loading="submitOALoading">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog
-      title="鍒犻櫎"
-      :show-close="false"
-      :close-on-press-escape="false"
-      :close-on-click-modal="false"
-      :visible.sync="deleteVisible"
-      width="30%">
-      <span>鏄惁纭<span style="color: #FF4902">鍒犻櫎</span>OA锛�</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="cancelOA" :loading="cancelOALoading">纭� 瀹�</el-button>
+        <el-button type="primary" @click="submitOA" :loading="submitOALoading"
+          >纭� 瀹�</el-button
+        >
       </span>
     </el-dialog>
     <el-dialog
@@ -102,408 +159,437 @@
       :close-on-click-modal="false"
       :visible.sync="insOrderVisible"
       @closed="resetInsOrderForm"
-      width="50%">
-      <el-row :gutter="20" style="margin-bottom:10px">
+      @open="getListData"
+      width="50%"
+    >
+      <el-row :gutter="20" style="margin-bottom: 10px">
         <el-col :span="12">
-          <el-input clearable size="small" v-model="lotBatchNo" placeholder="璇疯緭鍏ユ壒娆″彿"></el-input>
+          <el-input
+            clearable
+            size="small"
+            v-model="lotBatchNo"
+            placeholder="璇疯緭鍏ユ壒娆″彿"
+          ></el-input>
         </el-col>
         <el-col :span="12">
-          <el-button size="small" type="primary" @click="searchInsOrderList">鎼滅储</el-button>
+          <el-button size="small" type="primary" @click="searchInsOrderList"
+            >鎼滅储</el-button
+          >
         </el-col>
       </el-row>
       <el-tabs v-model="activeName" @tab-click="searchInsOrderList">
         <el-tab-pane label="鍘熸潗鏂欎笅鍗�" name="raw">
-          <lims-table ref="rawInsOrderTable"
-                      v-if="activeName==='raw'"
-                      :tableData="insOrderDataList"
-                      :column="insOrderTableDataColumn"
-                      :isSelection="true"
-                      :selectionSelectable="insOrderSelectable"
-                      :handleSelectionChange="selectRawMethod"
-                      :rowClassName="insOrderRowClassName"
-                      @pagination="insOrderPageination"
-                      :height="500"
-                      :page="insOrderPage"
-                      :tableLoading="insOrderTableLoading">
+          <lims-table
+            ref="rawInsOrderTable"
+            v-if="activeName === 'raw'"
+            :tableData="insOrderDataList"
+            :column="insOrderTableDataColumn"
+            :isSelection="true"
+            :selectionSelectable="insOrderSelectable"
+            :handleSelectionChange="handlerSelection"
+            :rowClassName="insOrderRowClassName"
+            @pagination="insOrderPageination"
+            :height="500"
+            :page="insOrderPage"
+            :tableLoading="insOrderTableLoading"
+          >
           </lims-table>
         </el-tab-pane>
         <el-tab-pane label="澶栬喘涓嬪崟" name="wg">
-          <lims-table ref="wgInsOrderTable"
-                      v-if="activeName==='wg'"
-                      :tableData="wgInsOrderDataList"
-                      :column="wgInsOrderTableDataColumn"
-                      :isSelection="true"
-                      :selectionSelectable="insOrderSelectable"
-                      :handleSelectionChange="selectWgMethod"
-                      :rowClassName="insOrderRowClassName"
-                      @pagination="wgInsOrderPageination"
-                      :height="500"
-                      :page="wgInsOrderPage"
-                      :tableLoading="insOrderTableLoading">
+          <lims-table
+            ref="wgInsOrderTable"
+            v-if="activeName === 'wg'"
+            :tableData="wgInsOrderDataList"
+            :column="wgInsOrderTableDataColumn"
+            :isSelection="true"
+            :selectionSelectable="insOrderSelectable"
+            :handleSelectionChange="handlerSelection"
+            :rowClassName="insOrderRowClassName"
+            @pagination="wgInsOrderPageination"
+            :height="500"
+            :page="wgInsOrderPage"
+            :tableLoading="insOrderTableLoading"
+          >
           </lims-table>
         </el-tab-pane>
       </el-tabs>
 
       <span slot="footer" class="dialog-footer">
         <el-button @click="resetInsOrderForm">鍙� 娑�</el-button>
-        <el-button type="primary" @click="openAddUnqualifiedHandlerView">纭� 瀹�</el-button>
+        <el-button type="primary" @click="openAddUnqualifiedHandlerView"
+          >纭� 瀹�</el-button
+        >
       </span>
     </el-dialog>
-    <UnPassDialog ref="unPassDialog" v-if="unPassDialog"
-                  :orderId="orderId"
-                  @resetForm="resetForm1"
-                  :unPassDialog="unPassDialog"></UnPassDialog>
-    <OAProcess ref="OAProcess"
-               :OAProcess="OAProcess"
-               :isOldData="isOldData"
-               @closeOAProcess="closeOAProcess"
-               v-if="OAProcess"></OAProcess>
+    <UnPassDialog
+      ref="unPassDialog"
+      v-if="unPassDialog"
+      :selectOrderIds="selectOrderIds"
+      @resetForm="resetForm1"
+      :unPassDialog="unPassDialog"
+    ></UnPassDialog>
+    <OAProcess
+      ref="OAProcess"
+      :OAProcess="OAProcess"
+      :isOldData="isOldData"
+      @closeOAProcess="closeOAProcess"
+      v-if="OAProcess"
+    ></OAProcess>
   </div>
 </template>
 
 <script>
-import {getIfsByAll} from "@/api/business/rawMaterialOrder";
-import {  getIfsByAll as getIfsByWgAll } from "@/api/business/outsourcingFinishProductInspection";
+import { getIfsByAll } from "@/api/business/rawMaterialOrder";
+import { getIfsByAll as getIfsByWgAll } from "@/api/business/outsourcingFinishProductInspection";
 import UnPassDialog from "./components/unPassDialog.vue";
 import OAProcess from "./components/OAProcess.vue";
 import limsTable from "@/components/Table/lims-table.vue";
-import {deleteUnqualifiedHandler, page, pushOA,exportUnqualifiedHandler} from "@/api/business/unqualifiedHandler";
-import {transformExcel} from '@/utils/file'
+import {
+  deleteUnqualifiedHandler,
+  page,
+  pushOA,
+  exportUnqualifiedHandler,
+  getList
+} from "@/api/business/unqualifiedHandler";
+import { transformExcel } from "@/utils/file";
 export default {
   components: {
     limsTable,
     OAProcess,
     UnPassDialog,
   },
-  dicts: ['material_prop_type','oa_workflow_state','categories_no_conformities','attribution_no_conformities'],
+  dicts: [
+    "material_prop_type",
+    "oa_workflow_state",
+    "categories_no_conformities",
+    "attribution_no_conformities",
+  ],
   data() {
     return {
-      activeName: 'raw',
-      lotBatchNo:null,
-      insOrderVisible:false,
-      insOrderTableLoading:false,
-      insOrderDataList:[],
-      insOrderTableDataColumn:[
+      activeName: "raw",
+      lotBatchNo: null,
+      insOrderVisible: false,
+      insOrderTableLoading: false,
+      insOrderDataList: [],
+      insOrderTableDataColumn: [
         {
-          label: 'IFS鍩�',
-          prop: 'contract',
-          width: '120px',
-          dataType: 'tag',
+          label: "IFS鍩�",
+          prop: "contract",
+          width: "120px",
+          dataType: "tag",
           formatData: (params) => {
-            return params
+            return params;
           },
           formatType: (params) => {
-            if (params === 'ZTNS') {
-              return ''
-            } else if (params === 'KJNS') {
-              return 'success'
-            }else {
-              return null
+            if (params === "ZTNS") {
+              return "";
+            } else if (params === "KJNS") {
+              return "success";
+            } else {
+              return null;
             }
-          }
-
+          },
         },
-        { label: '濮旀墭缂栧彿', prop: 'entrustCode', width: "160px", },
+        { label: "濮旀墭缂栧彿", prop: "entrustCode", width: "160px" },
         {
-          dataType: 'tag',
-          label: '妫�楠岀姸鎬�',
-          prop: 'inspectStatus',
+          dataType: "tag",
+          label: "妫�楠岀姸鎬�",
+          prop: "inspectStatus",
           formatData: (params) => {
             if (params == 0) {
-              return '妫�楠屼腑'
+              return "妫�楠屼腑";
             } else if (params == 1) {
-              return '鍚堟牸'
+              return "鍚堟牸";
             } else if (params == 2) {
-              return '涓嶅悎鏍�'
+              return "涓嶅悎鏍�";
             } else if (params == 3) {
-              return '鏈笅鍗�'
+              return "鏈笅鍗�";
             } else if (params == 4) {
-              return '璁╂鏀捐'
+              return "璁╂鏀捐";
             } else {
-              return null
+              return null;
             }
           },
           formatType: (params) => {
             if (params == 0) {
-              return 'warning'
+              return "warning";
             } else if (params == 1) {
-              return 'success'
+              return "success";
             } else if (params == 2) {
-              return 'danger'
+              return "danger";
             } else if (params == 3) {
-              return 'info'
+              return "info";
             } else if (params == 4) {
-              return ''
+              return "";
             } else {
-              return null
+              return null;
             }
-          }
+          },
         },
-        { label: '璁㈠崟鍙�', prop: 'orderNo' },
-        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore' ,width:'160' },
-        { label: '涓嬪彂鏃堕棿', prop: 'sendTime',width:'160' },
-        { label: '鎵瑰彿', prop: 'updateBatchNo',width:'160' },
-        { label: '闆朵欢鍙�', prop: 'partNo',width:'140' },
-        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
-        { label: '渚涘簲鍟嗙紪鐮�', prop: 'supplierId',width:'140' },
-        { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName',width:'140' },
+        { label: "璁㈠崟鍙�", prop: "orderNo" },
+        { label: "鎶佃揪鐨勯噰璐暟閲�", prop: "purQtyInStore", width: "160" },
+        { label: "涓嬪彂鏃堕棿", prop: "sendTime", width: "160" },
+        { label: "鎵瑰彿", prop: "updateBatchNo", width: "160" },
+        { label: "闆朵欢鍙�", prop: "partNo", width: "140" },
+        { label: "闆朵欢鎻忚堪", prop: "partDesc" },
+        { label: "渚涘簲鍟嗙紪鐮�", prop: "supplierId", width: "140" },
+        { label: "渚涘簲鍟嗗悕绉�", prop: "supplierName", width: "140" },
         {
-          dataType: 'tag',
-          label: '鍏嶆',
-          prop: 'isExemption',
+          dataType: "tag",
+          label: "鍏嶆",
+          prop: "isExemption",
           formatData: (params) => {
             if (params == 1) {
-              return '鍏嶆'
+              return "鍏嶆";
             } else {
-              return null
+              return null;
             }
           },
           formatType: (params) => {
             if (params == 1) {
-              return 'success'
+              return "success";
             } else {
-              return null
-            }
-          }
-        },
-        {
-          label: '鏍峰搧鍚嶇О',
-          prop: 'sampleName',
-          width: "160px"
-        },
-        { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
-        { label: '妫�楠屼汉', prop: 'userName' },
-        {
-          label: '鐗╂枡灞炴��',
-          prop: 'materialProp',
-          formatData: (params) => {
-            if (!params) return null
-
-            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
-              const item = this.dict.type.material_prop_type[i]
-              if (item.value == params) {
-                return item.label
-              }
-            }
-            return null
-          }
-        },
-        {
-          dataType: 'tag',
-          label: '鐗╂枡绫诲瀷',
-          prop: 'isExpire',
-          formatData: (params) => {
-            if (params == 1) {
-              return '杩囨湡鐗╂枡'
-            } else {
-              return null
+              return null;
             }
           },
-          formatType: (params) => {
-            if (params == 1) {
-              return 'info'
-            } else {
-              return null
-            }
-          }
-        },
-        { label: '鍗曚綅', prop: 'buyUnitMeas' },
-        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate',width:'160' },
-        { label: '鎶ユ鏃堕棿', prop: 'declareDate',width:'160' },
-      ],
-      insOrderPage:{
-        total: 0,
-        size: 20,
-        current: 1
-      },
-      wgInsOrderTableDataColumn:[
-        {
-          label: 'IFS鍩�',
-          prop: 'contract',
-          width: '120px',
-          dataType: 'tag',
-          formatData: (params) => {
-            return params
-          },
-          formatType: (params) => {
-            if (params === 'ZTNS') {
-              return ''
-            } else if (params === 'KJNS') {
-              return 'success'
-            }else {
-              return null
-            }
-          }
-
-        },
-        { label: '濮旀墭缂栧彿', prop: 'entrustCode', width: "160px", },
-        {
-          dataType: 'tag',
-          label: '妫�楠岀姸鎬�',
-          prop: 'inspectStatus',
-          formatData: (params) => {
-            if (params == 0) {
-              return '妫�楠屼腑'
-            } else if (params == 1) {
-              return '鍚堟牸'
-            } else if (params == 2) {
-              return '涓嶅悎鏍�'
-            } else if (params == 3) {
-              return '鏈笅鍗�'
-            } else if (params == 4) {
-              return '璁╂鏀捐'
-            } else {
-              return null
-            }
-          },
-          formatType: (params) => {
-            if (params == 0) {
-              return 'warning'
-            } else if (params == 1) {
-              return 'success'
-            } else if (params == 2) {
-              return 'danger'
-            } else if (params == 3) {
-              return 'info'
-            } else if (params == 4) {
-              return ''
-            } else {
-              return null
-            }
-          }
-        },
-        { label: '璁㈠崟鍙�', prop: 'orderNo' },
-        { label: '鎶佃揪鐨勯噰璐暟閲�', prop: 'purQtyInStore', width: '130px' },
-        { label: '涓嬪彂鏃堕棿', prop: 'sendTime', width: '130px' },
-        { label: '鎵瑰彿', prop: 'updateBatchNo', width: '130px' },
-        { label: '闆朵欢鍙�', prop: 'partNo', width: '140px' },
-        { label: '闆朵欢鎻忚堪', prop: 'partDesc' },
-        { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName' },
-        {
-          dataType: 'tag',
-          label: '鍏嶆',
-          prop: 'isExemption',
-          formatData: (params) => {
-            if (params == 1) {
-              return '鍏嶆'
-            } else {
-              return null
-            }
-          },
-          formatType: (params) => {
-            if (params == 1) {
-              return 'success'
-            } else {
-              return null
-            }
-          }
         },
         {
-          label: '鏍峰搧鍚嶇О',
-          prop: 'sampleName',
+          label: "鏍峰搧鍚嶇О",
+          prop: "sampleName",
           width: "160px",
         },
-        { label: '鏍峰搧鍨嬪彿', prop: 'sampleModel' },
-        { label: '妫�楠屼汉', prop: 'userName' },
+        { label: "鏍峰搧鍨嬪彿", prop: "sampleModel" },
+        { label: "妫�楠屼汉", prop: "userName" },
         {
-          label: '鐗╂枡灞炴��',
-          prop: 'materialProp',
+          label: "鐗╂枡灞炴��",
+          prop: "materialProp",
           formatData: (params) => {
-            if (!params) return null
+            if (!params) return null;
 
             for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
-              const item = this.dict.type.material_prop_type[i]
+              const item = this.dict.type.material_prop_type[i];
               if (item.value == params) {
-                return item.label
+                return item.label;
               }
             }
-            return null
-          }
+            return null;
+          },
         },
         {
-          dataType: 'tag',
-          label: '鐗╂枡绫诲瀷',
-          prop: 'isExpire',
+          dataType: "tag",
+          label: "鐗╂枡绫诲瀷",
+          prop: "isExpire",
           formatData: (params) => {
             if (params == 1) {
-              return '杩囨湡鐗╂枡'
+              return "杩囨湡鐗╂枡";
             } else {
-              return null
+              return null;
             }
           },
           formatType: (params) => {
             if (params == 1) {
-              return 'info'
+              return "info";
             } else {
-              return null
+              return null;
             }
-          }
+          },
         },
-        { label: '鍗曚綅', prop: 'buyUnitMeas' },
-        { label: '鎺ユ敹鏃堕棿', prop: 'receiverDate' },
-        { label: '鎶ユ鏃堕棿', prop: 'declareDate' },
+        { label: "鍗曚綅", prop: "buyUnitMeas" },
+        { label: "鎺ユ敹鏃堕棿", prop: "receiverDate", width: "160" },
+        { label: "鎶ユ鏃堕棿", prop: "declareDate", width: "160" },
       ],
-      wgInsOrderPage:{
+      insOrderPage: {
         total: 0,
         size: 20,
-        current: 1
+        current: 1,
       },
-      wgInsOrderTableLoading:false,
-      wgInsOrderDataList:[],
+      wgInsOrderTableDataColumn: [
+        {
+          label: "IFS鍩�",
+          prop: "contract",
+          width: "120px",
+          dataType: "tag",
+          formatData: (params) => {
+            return params;
+          },
+          formatType: (params) => {
+            if (params === "ZTNS") {
+              return "";
+            } else if (params === "KJNS") {
+              return "success";
+            } else {
+              return null;
+            }
+          },
+        },
+        { label: "濮旀墭缂栧彿", prop: "entrustCode", width: "160px" },
+        {
+          dataType: "tag",
+          label: "妫�楠岀姸鎬�",
+          prop: "inspectStatus",
+          formatData: (params) => {
+            if (params == 0) {
+              return "妫�楠屼腑";
+            } else if (params == 1) {
+              return "鍚堟牸";
+            } else if (params == 2) {
+              return "涓嶅悎鏍�";
+            } else if (params == 3) {
+              return "鏈笅鍗�";
+            } else if (params == 4) {
+              return "璁╂鏀捐";
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return "warning";
+            } else if (params == 1) {
+              return "success";
+            } else if (params == 2) {
+              return "danger";
+            } else if (params == 3) {
+              return "info";
+            } else if (params == 4) {
+              return "";
+            } else {
+              return null;
+            }
+          },
+        },
+        { label: "璁㈠崟鍙�", prop: "orderNo" },
+        { label: "鎶佃揪鐨勯噰璐暟閲�", prop: "purQtyInStore", width: "130px" },
+        { label: "涓嬪彂鏃堕棿", prop: "sendTime", width: "130px" },
+        { label: "鎵瑰彿", prop: "updateBatchNo", width: "130px" },
+        { label: "闆朵欢鍙�", prop: "partNo", width: "140px" },
+        { label: "闆朵欢鎻忚堪", prop: "partDesc" },
+        { label: "渚涘簲鍟嗗悕绉�", prop: "supplierName" },
+        {
+          dataType: "tag",
+          label: "鍏嶆",
+          prop: "isExemption",
+          formatData: (params) => {
+            if (params == 1) {
+              return "鍏嶆";
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return "success";
+            } else {
+              return null;
+            }
+          },
+        },
+        {
+          label: "鏍峰搧鍚嶇О",
+          prop: "sampleName",
+          width: "160px",
+        },
+        { label: "鏍峰搧鍨嬪彿", prop: "sampleModel" },
+        { label: "妫�楠屼汉", prop: "userName" },
+        {
+          label: "鐗╂枡灞炴��",
+          prop: "materialProp",
+          formatData: (params) => {
+            if (!params) return null;
+
+            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
+              const item = this.dict.type.material_prop_type[i];
+              if (item.value == params) {
+                return item.label;
+              }
+            }
+            return null;
+          },
+        },
+        {
+          dataType: "tag",
+          label: "鐗╂枡绫诲瀷",
+          prop: "isExpire",
+          formatData: (params) => {
+            if (params == 1) {
+              return "杩囨湡鐗╂枡";
+            } else {
+              return null;
+            }
+          },
+          formatType: (params) => {
+            if (params == 1) {
+              return "info";
+            } else {
+              return null;
+            }
+          },
+        },
+        { label: "鍗曚綅", prop: "buyUnitMeas" },
+        { label: "鎺ユ敹鏃堕棿", prop: "receiverDate" },
+        { label: "鎶ユ鏃堕棿", prop: "declareDate" },
+      ],
+      wgInsOrderPage: {
+        total: 0,
+        size: 20,
+        current: 1,
+      },
+      wgInsOrderTableLoading: false,
+      wgInsOrderDataList: [],
       handlerId: null,
-      contract:null,
+      contract: null,
+      groupId: null,
       entity: {
         contract: null,
         sample: null,
         specsModels: null,
         supplierName: null,
-        feedbackDateTime:[],
+        feedbackDateTime: [],
         materialProp: null,
-        operation:null
+        operation: null,
       },
       tableData: [],
       tableLoading: false,
       column: [
         {
-          label: 'IFS鍩�',
-          prop: 'contract',
-          width: '80px',
-          dataType: 'tag',
+          label: "IFS鍩�",
+          prop: "contract",
+          width: "80px",
+          dataType: "tag",
           formatData: (params) => {
-            return params
+            return params;
           },
           formatType: (params) => {
-            if (params === 'ZTNS') {
-              return ''
-            } else if (params === 'KJNS') {
-              return 'success'
-            }else {
-              return null
+            if (params === "ZTNS") {
+              return "";
+            } else if (params === "KJNS") {
+              return "success";
+            } else {
+              return null;
             }
-          }
-
+          },
         },
-        { label: '缂栧彿', prop: 'no', width: "160px", },
+        { label: "缂栧彿", prop: "no", width: "160px" },
         {
           label: "OA瀹℃牳鐘舵��",
           prop: "operation",
           width: "100px",
           dataType: "tag",
           formatData: (params) => {
-            return params
+            return params;
           },
           formatType: (params) => {
-            if(params){
-              this.dict.type.oa_workflow_state.forEach(item => {
-                if(item.value === params){
-                  params = item.raw.listClass
+            if (params) {
+              this.dict.type.oa_workflow_state.forEach((item) => {
+                if (item.value === params) {
+                  params = item.raw.listClass;
                 }
               });
             }
-            return params
+            return params;
           },
         },
-        { label: '璁㈠崟鍙�', prop: 'orderNo' },
+        { label: "璁㈠崟鍙�", prop: "orderNo" },
         {
           label: "闆朵欢鍙�",
           prop: "partNo",
@@ -511,388 +597,390 @@
           dataType: "link",
           linkMethod: "openUnPassDialog",
         },
-        { label: '闆朵欢鎻忚堪', prop: 'partDesc',width: "160px" },
+        { label: "闆朵欢鎻忚堪", prop: "partDesc", width: "160px" },
         {
-          label: '鐗╂枡灞炴��',
-          prop: 'materialProp',
+          label: "鐗╂枡灞炴��",
+          prop: "materialProp",
           formatData: (params) => {
-            if (!params) return null
+            if (!params) return null;
 
             for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
-              const item = this.dict.type.material_prop_type[i]
+              const item = this.dict.type.material_prop_type[i];
               if (item.value == params) {
-                return item.label
+                return item.label;
               }
             }
-            return null
-          }
+            return null;
+          },
         },
-        { label: '鐗╂枡鍚嶇О', prop: 'materialName',width: "160px" },
-        { label: '鐢熶骇鎵规', prop: 'productionBatch',width: "160px" },
-        { label: '鍒拌揣鏁伴噺', prop: 'cargoQuantity' },
-        { label: '瑙勬牸鍨嬪彿', prop: 'specsModels',width:'140' },
-        { label: '鎶ユ鏃ユ湡', prop: 'inspectTime',width:'120' },
-        { label: '鐘舵��', prop: 'statusDB' },
-        { label: '鍙嶉浜�', prop: 'feedbackUser' },
-        { label: '瑕佹楠岀殑閲囪喘鏁伴噺', prop: 'qtyToInspect',width: "140px" },
-        { label: '鍙嶉鏃ユ湡', prop: 'feedbackTime',width: "100px" },
+        { label: "鐗╂枡鍚嶇О", prop: "materialName", width: "160px" },
+        { label: "鐢熶骇鎵规", prop: "productionBatch", width: "160px" },
+        { label: "鍒拌揣鏁伴噺",prop: "cargoQuantity"},
+        { label: "閲囪喘鍗曚綅",prop: "buyUnitMeas"},
+        { label: "瑙勬牸鍨嬪彿", prop: "specsModels", width: "140" },
+        { label: "鎶ユ鏃ユ湡", prop: "inspectTime", width: "120" },
+        { label: "鐘舵��", prop: "statusDB" },
+        { label: "鍙嶉浜�", prop: "feedbackUser" },
+        { label: "瑕佹楠岀殑閲囪喘鏁伴噺", prop: "qtyToInspect", width: "140px" },
+        { label: "鍙嶉鏃ユ湡", prop: "feedbackTime", width: "100px" },
         {
           label: "鍒嗙被",
           prop: "classification",
           width: "100px",
           dataType: "tag",
           formatData: (params) => {
-            let label = null
-            this.dict.type.categories_no_conformities.forEach(item=>{
-              if(item.raw.dictValue==params){
-                label = item.raw.dictLabel
+            let label = null;
+            this.dict.type.categories_no_conformities.forEach((item) => {
+              if (item.raw.dictValue == params) {
+                label = item.raw.dictLabel;
               }
-            })
-            return label
+            });
+            return label;
           },
           formatType: (params) => {
-            let type = null
-            this.dict.type.categories_no_conformities.forEach(item=>{
-              if(item.raw.dictValue==params){
-                type =  item.raw.listClass
+            let type = null;
+            this.dict.type.categories_no_conformities.forEach((item) => {
+              if (item.raw.dictValue == params) {
+                type = item.raw.listClass;
               }
-            })
-            return type
+            });
+            return type;
           },
         },
-        { label: '渚涘簲鍟嗙紪鐮�', prop: 'supplierId',width:'140' },
-        { label: '渚涘簲鍟嗗悕绉�', prop: 'supplierName',width:'140' },
+        { label: "渚涘簲鍟嗙紪鐮�", prop: "supplierId", width: "140" },
+        { label: "渚涘簲鍟嗗悕绉�", prop: "supplierName", width: "140" },
         {
           label: "涓嶅悎鏍煎綊灞�",
           prop: "offGradeAscription",
           width: "120px",
           dataType: "tag",
           formatData: (params) => {
-            let label = params
-            this.dict.type.attribution_no_conformities.forEach(item=>{
-              if(item.raw.dictValue==params){
-                label = item.raw.dictLabel
+            let label = params;
+            this.dict.type.attribution_no_conformities.forEach((item) => {
+              if (item.raw.dictValue == params) {
+                label = item.raw.dictLabel;
               }
-            })
-            return label
+            });
+            return label;
           },
           formatType: (params) => {
-            let type = null
-            this.dict.type.attribution_no_conformities.forEach(item=>{
-              if(item.raw.dictValue==params){
-                type = item.raw.listClass
+            let type = null;
+            this.dict.type.attribution_no_conformities.forEach((item) => {
+              if (item.raw.dictValue == params) {
+                type = item.raw.listClass;
               }
-            })
-            return type
+            });
+            return type;
           },
         },
-        { label: '涓嶅悎鏍兼弿杩�', prop: 'unqualifiedDesc',width: "160px" },
+        { label: "涓嶅悎鏍兼弿杩�", prop: "unqualifiedDesc", width: "160px" },
         {
-          dataType: 'action',
-          fixed: 'right',
-          label: '鎿嶄綔',
-          width: '220px',
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
+          prop:'groupId',
+          mergeCol:true,
+          width: "220px",
           operation: [
             {
-              name: (row)=>{
-                return row.requestId !== null && row.operation==='閫�鍥�' ? '閲嶆柊鎻愪氦' : '鎻愪氦OA'
+              name: (row) => {
+                return row.requestId !== null && row.operation === "閫�鍥�"
+                  ? "閲嶆柊鎻愪氦"
+                  : "鎻愪氦OA";
               },
-              type: 'text',
+              type: "text",
               clickFun: (row) => {
                 this.openOA(row);
               },
               disabled: (row, index) => {
-                return row.requestId !== null && row.operation!=='閫�鍥�'  // 鏈塺equestId璇存槑宸茬粡鎻愪氦杩嘜A锛屼笉鍙啀娆℃彁浜�
-              }
+                return row.requestId !== null && row.operation !== "閫�鍥�"; // 鏈塺equestId璇存槑宸茬粡鎻愪氦杩嘜A锛屼笉鍙啀娆℃彁浜�
+              },
             },
             {
-              name: '鏌ョ湅OA娴佺▼',
-              type: 'text',
+              name: "鏌ョ湅OA娴佺▼",
+              type: "text",
               clickFun: (row) => {
                 this.OAView(row);
               },
             },
             {
-              name: '鍒犻櫎',
-              type: 'text',
+              name: "鍒犻櫎",
+              type: "text",
               clickFun: (row) => {
                 this.deleteOA(row);
               },
               disabled: (row, index) => {
-                return row.requestId !== null && row.operation!=='閫�鍥�'  // 鏈塺equestId璇存槑宸茬粡鎻愪氦杩嘜A锛屼笉鍙啀娆℃彁浜�
-              }
+                return row.requestId !== null && row.operation !== "閫�鍥�"; // 鏈塺equestId璇存槑宸茬粡鎻愪氦杩嘜A锛屼笉鍙啀娆℃彁浜�
+              },
             },
-          ]
-        }
+          ],
+        },
       ],
       page: {
         total: 0,
         size: 20,
-        current: 1
+        current: 1,
       },
       statusList: [],
       dialogVisible: false, // 纭鎻愪氦OA寮规
       unPassDialog: false, // 涓嶅悎鏍煎鐞嗗脊妗�
-      orderId: '',
+      selectOrderIds: [],
+      multipleSelection: [],
       OAProcess: false, // OA娴佺▼寮规
       submitOALoading: false, // OA娴佺▼寮规鎻愪氦鎸夐挳loading
-      deleteVisible: false, // OA娴佺▼鍒犻櫎寮规
-      cancelOALoading: false, // OA娴佺▼鍒犻櫎寮规鎻愪氦鎸夐挳loading
-      exportLoading:false,
-      isOldData: true,//鏄惁鏄棫鏁版嵁
+      exportLoading: false,
+      isOldData: true, //鏄惁鏄棫鏁版嵁
+      insOrderIds: [],
+      rowColSplitNodes: [],
     };
   },
   mounted() {
-    this.refreshTable()
+    this.refreshTable();
   },
   methods: {
-    getInsOrderRowId(row) {
-      if (!row) {
-        return ''
-      }
-      const currentId = row.enterOrderId || row.insOrderId || row.orderId || row.id
-      return currentId ? String(currentId) : ''
-    },
-    getExistingInsOrderIds() {
-      const ids = new Set()
-      this.tableData.forEach(row => {
-        ['insOrderId'].forEach(key => {
-          if (row[key] !== undefined && row[key] !== null && row[key] !== '') {
-            ids.add(String(row[key]))
-          }
-        })
+    getListData(){
+      getList().then(res => {
+        this.insOrderIds = [];
+        if(res.code === 200){
+          this.insOrderIds = res.data;
+        }
+      }).catch(err => {
+        console.error(err)
       })
-      return ids
-    },
-    isDisabledInsOrderRow(row) {
-      const currentId = this.getInsOrderRowId(row)
-      if (!currentId) {
-        return false
-      }
-      return this.getExistingInsOrderIds().has(currentId)
     },
     insOrderSelectable(row) {
-      return !this.isDisabledInsOrderRow(row)
+      const existsInMain = this.insOrderIds.some(
+        (id) => id === row.enterOrderId
+      );
+      return !existsInMain;
     },
     insOrderRowClassName({ row }) {
-      return this.isDisabledInsOrderRow(row) ? 'disabled-selection-row' : ''
+      const existsInMain = this.insOrderIds.some(
+        (id) => id === row.enterOrderId
+      );
+      return existsInMain ? "disabled-selection-row" : "";
     },
-    resetInsOrderForm(){
-      this.activeName = 'raw'
-      this.insOrderDataList = []
-      this.wgInsOrderDataList = []
-      this.lotBatchNo = null
-      this.orderId = ''
+    resetInsOrderForm() {
+      this.activeName = "raw";
+      this.insOrderDataList = [];
+      this.wgInsOrderDataList = [];
+      this.lotBatchNo = null;
+      this.multipleSelection = [];
       this.insOrderPage = {
         total: 0,
         size: 20,
         current: 1,
-      }
+      };
       this.wgInsOrderPage = {
         total: 0,
         size: 20,
         current: 1,
-      }
-      this.$nextTick(()=>{
-        this.insOrderVisible = false
-      })
+      };
+      this.$nextTick(() => {
+        this.insOrderVisible = false;
+      });
     },
-    openInsOrderDialog(){
-      this.insOrderVisible = true
+    openInsOrderDialog() {
+      this.insOrderVisible = true;
     },
-    searchInsOrderList(){
-      this.insOrderTableLoading = true
+    searchInsOrderList() {
+      this.multipleSelection = [];
+      this.insOrderTableLoading = true;
       const params = {
         updateBatchNo: this.lotBatchNo,
         isInspect: 1,
-      }
-      if(this.activeName==='raw'){
-        getIfsByAll({...params,...this.insOrderPage}).then(res => {
-          this.insOrderTableLoading = false
-          if (res.code === 200) {
-            this.insOrderDataList = res.data.records
-            this.insOrderPage.total = res.data.total
-          }
-        }).catch(err => {
-          this.insOrderTableLoading = false
-        })
-      }else if(this.activeName==='wg'){
-        getIfsByWgAll({...params,...this.wgInsOrderPage}).then(res => {
-          this.insOrderTableLoading = false
-          if (res.code === 200) {
-            this.wgInsOrderDataList = res.data.records
-            this.wgInsOrderPage.total = res.data.total
-          }
-        }).catch(err => {
-          this.insOrderTableLoading = false
-        })
+      };
+      if (this.activeName === "raw") {
+        getIfsByAll({ ...params, ...this.insOrderPage })
+          .then((res) => {
+            this.insOrderTableLoading = false;
+            if (res.code === 200) {
+              this.insOrderDataList = res.data.records;
+              this.insOrderPage.total = res.data.total;
+            }
+          })
+          .catch((err) => {
+            this.insOrderTableLoading = false;
+          });
+      } else if (this.activeName === "wg") {
+        getIfsByWgAll({ ...params, ...this.wgInsOrderPage })
+          .then((res) => {
+            this.insOrderTableLoading = false;
+            if (res.code === 200) {
+              this.wgInsOrderDataList = res.data.records;
+              this.wgInsOrderPage.total = res.data.total;
+            }
+          })
+          .catch((err) => {
+            this.insOrderTableLoading = false;
+          });
       }
     },
-    insOrderPageination(page){
-      this.insOrderPage.size = page.limit
-      this.searchInsOrderList()
+    insOrderPageination(page) {
+      this.insOrderPage.size = page.limit;
+      this.searchInsOrderList();
     },
-    wgInsOrderPageination(page){
-      this.wgInsOrderPage.size = page.limit
-      this.searchInsOrderList()
+    wgInsOrderPageination(page) {
+      this.wgInsOrderPage.size = page.limit;
+      this.searchInsOrderList();
     },
-    selectRawMethod(val){
+    handlerSelection(val) {
       if (!val || val.length === 0) {
-        this.orderId = ''
-        return
-      }
-
-      const currentRow = val[val.length - 1]
-      this.orderId = this.getInsOrderRowId(currentRow)
-
-      if (val.length > 1 && this.$refs.rawInsOrderTable && this.$refs.rawInsOrderTable.$refs.multipleTable) {
-        this.$refs.rawInsOrderTable.$refs.multipleTable.clearSelection()
-        this.$refs.rawInsOrderTable.$refs.multipleTable.toggleRowSelection(currentRow, true)
-      }
-    },
-    selectWgMethod(val){
-      if (!val || val.length === 0) {
-        this.orderId = ''
-        return
-      }
-
-      const currentRow = val[val.length - 1]
-      this.orderId = this.getInsOrderRowId(currentRow)
-
-      if (val.length > 1 && this.$refs.wgInsOrderTable && this.$refs.wgInsOrderTable.$refs.multipleTable) {
-        this.$refs.wgInsOrderTable.$refs.multipleTable.clearSelection()
-        this.$refs.wgInsOrderTable.$refs.multipleTable.toggleRowSelection(currentRow, true)
-      }
-    },
-    //鎵撳紑鏂板涓嶅悎鏍煎鐞嗗脊妗�
-    openAddUnqualifiedHandlerView(){
-      if(!this.orderId){
-        this.$message.warning("璇烽�夋嫨涓�鏉¤鍗曡褰�")
+        this.multipleSelection = [];
         return;
       }
+      this.multipleSelection = val
+    },
+    //鎵撳紑鏂板涓嶅悎鏍煎鐞嗗脊妗�
+    openAddUnqualifiedHandlerView() {
+      if (!this.multipleSelection || this.multipleSelection.length === 0) {
+        this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉¤鍗曡褰�");
+        return;
+      }
+      const contracts = [...new Set(this.multipleSelection.map(item=>{return item.contract}))]
+      if(contracts && contracts.length>1){
+        this.$message.warning("璇烽�夋嫨鐩稿悓IFS鍩熺殑璁㈠崟");
+        return;
+      }
+      const partNos = [...new Set(this.multipleSelection.map(item=>{return item.partNo}))]
+      if(partNos && partNos.length>1){
+        this.$message.warning("璇烽�夋嫨鐩稿悓闆朵欢鐨勮鍗�");
+        return;
+      }
+      this.selectOrderIds = this.multipleSelection.map(item=>{return item.enterOrderId})
       this.insOrderVisible = false
       this.unPassDialog = true;
       this.$nextTick(() => {
-        this.$refs.unPassDialog.getInsOrder('add');
+        this.$refs.unPassDialog.getInsOrder("add");
       });
     },
-    exportUnqualifiedHandler(){
-      this.exportLoading = true
-      const newEntity = { ...this.entity }
+    exportUnqualifiedHandler() {
+      this.exportLoading = true;
+      const newEntity = { ...this.entity };
       if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) {
-        newEntity.feedbackStartTime = newEntity.feedbackDateTime[0]
-        newEntity.feedbackEndTime = newEntity.feedbackDateTime[1]
+        newEntity.feedbackStartTime = newEntity.feedbackDateTime[0];
+        newEntity.feedbackEndTime = newEntity.feedbackDateTime[1];
       }
-      exportUnqualifiedHandler({...newEntity}).then(res=>{
-        transformExcel(res,'涓嶅悎鏍煎鐞嗚褰�.xlsx')
-        this.exportLoading = false
-      }).catch(error=>{
-        console.error(error)
-      })
+      exportUnqualifiedHandler({ ...newEntity })
+        .then((res) => {
+          transformExcel(res, "涓嶅悎鏍煎鐞嗚褰�.xlsx");
+          this.exportLoading = false;
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     },
     refreshTable() {
-      this.tableLoading = true
-      const newEntity = { ...this.entity }
+      this.tableLoading = true;
+      const newEntity = { ...this.entity };
       if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) {
-        newEntity.feedbackStartTime = newEntity.feedbackDateTime[0]
-        newEntity.feedbackEndTime = newEntity.feedbackDateTime[1]
+        newEntity.feedbackStartTime = newEntity.feedbackDateTime[0];
+        newEntity.feedbackEndTime = newEntity.feedbackDateTime[1];
       }
-      page({ ...this.page, ...newEntity }).then(res => {
-        this.tableLoading = false
-        this.tableData = res.data.records
-        this.page.total = res.data.total
-      }).catch(err => {
-        this.tableLoading = false
-      })
+      page({ ...this.page, ...newEntity })
+        .then((res) => {
+          this.tableLoading = false;
+          this.tableData = res.data.records;
+          this.page.total = res.data.total;
+        })
+        .catch((err) => {
+          this.tableLoading = false;
+        });
     },
     // 閲嶇疆
     refresh() {
-      this.resetForm('entity')
-      this.refreshTable()
+      this.resetForm("entity");
+      this.refreshTable();
     },
     // 鍒嗛〉鍒囨崲
     pagination(page) {
-      this.page.size = page.limit
-      this.refreshTable()
+      this.page.size = page.limit;
+      this.refreshTable();
     },
     // 鎵撳紑涓嶅悎鏍煎鐞嗗脊妗�
-    openUnPassDialog (row) {
-      this.unPassDialog = true
+    openUnPassDialog(row) {
+      this.unPassDialog = true;
       this.$nextTick(() => {
-        this.$refs.unPassDialog.getInsOrder('view', row)
-      })
-    },
-    // 鍏抽棴涓嶅悎鏍煎鐞嗗脊妗�
-    resetForm1 () {
-      this.$refs.unPassDialog.$refs['unPassForm'].resetFields();
-      this.unPassDialog = false
-      this.$nextTick(()=>{
-        this.refreshTable('page')
-      })
-    },
-    // 鎵撳紑鍒犻櫎OA纭寮规
-    deleteOA (row) {
-      this.handlerId = row.handlerId
-      this.deleteVisible = true
-    },
-    // 鎻愪氦鍒犻櫎鐢宠
-    cancelOA () {
-      this.de = true
-      deleteUnqualifiedHandler({id: this.handlerId,}).then(res => {
-        this.cancelOALoading = false
-        if (res.code === 200) {
-          this.deleteVisible = false
-          this.$message.success('鍒犻櫎鎴愬姛')
-          this.refreshTable('page')
-        }
-      }).catch(error => {
-        this.cancelOALoading = false
-        console.error(error);
+        this.$refs.unPassDialog.getInsOrder("view", row);
       });
     },
+    // 鍏抽棴涓嶅悎鏍煎鐞嗗脊妗�
+    resetForm1() {
+      this.$refs.unPassDialog.$refs["unPassForm"].resetFields();
+      this.unPassDialog = false;
+      this.$nextTick(() => {
+        this.refreshTable("page");
+      });
+    },
+    // 鍒犻櫎OA纭寮规
+    deleteOA(row) {
+      this.$confirm('鏄惁纭鍒犻櫎褰撳墠OA娴佺▼?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteUnqualifiedHandler({ groupId: row.groupId })
+          .then((res) => {
+            if (res.code === 200) {
+              this.$message.success("鍒犻櫎鎴愬姛");
+              this.refreshTable("page");
+            }
+          })
+          .catch((error) => {
+            console.error(error);
+          });
+      }).catch(() => { });
+    },
     // 鏌ョ湅鎻愪氦OA鐨勬暟鎹�
-    openOA (row) {
-      this.handlerId = row.handlerId
-      this.contract = row.contract
-      if(row && row.requestId !== null  ){
+    openOA(row) {
+      this.handlerId = row.handlerId;
+      this.contract = row.contract;
+      this.groupId = row.groupId;
+      if (row && row.requestId !== null) {
         // 閲嶆柊鎻愪氦OA,鎵撳紑缂栬緫寮规
-        this.unPassDialog = true
+        this.unPassDialog = true;
         this.$nextTick(() => {
-          this.$refs.unPassDialog.getInsOrder('resubmit', row)
-        })
-      }else{
-        this.dialogVisible = true
+          this.$refs.unPassDialog.getInsOrder("resubmit", row);
+        });
+      } else {
+        this.dialogVisible = true;
       }
     },
     // 鏌ョ湅OA娴佺▼
-    OAView (row) {
-      this.OAProcess = true
-      this.isOldData = row.isOldData
+    OAView(row) {
+      this.OAProcess = true;
+      this.isOldData = row.isOldData;
       this.$nextTick(() => {
-        this.$refs.OAProcess.getInfo(row.handlerId,row?row.unqualifiedDesc:"")
-      })
+        this.$refs.OAProcess.getInfo(
+          row.handlerId,
+          row ? row.unqualifiedDesc : "",
+          row.classification
+        );
+      });
     },
     // 鍏抽棴鏌ョ湅OA娴佺▼鐨勫脊妗�
-    closeOAProcess () {
-      this.OAProcess = false
+    closeOAProcess() {
+      this.OAProcess = false;
     },
     //鎻愪氦OA
     submitOA(row) {
       // 鎻愪氦OA
-      this.submitOALoading = true
-      pushOA({handlerId: this.handlerId,contract:this.contract}).then(res => {
-        this.submitOALoading = false
-        if (res.code === 200) {
-          this.dialogVisible = false
-          this.$message.success('鎻愪氦鎴愬姛')
-          this.refreshTable('page')
-        }
-      }).catch(error => {
-        this.submitOALoading = false
-        console.error(error);
-      });
-    }
-  }
+      this.submitOALoading = true;
+      pushOA({ handlerId: this.handlerId, contract: this.contract,groupId: this.groupId })
+        .then((res) => {
+          this.submitOALoading = false;
+          if (res.code === 200) {
+            this.dialogVisible = false;
+            this.$message.success("鎻愪氦鎴愬姛");
+            this.refreshTable("page");
+          }
+        })
+        .catch((error) => {
+          this.submitOALoading = false;
+          console.error(error);
+        });
+    },
+  },
 };
 </script>
 

--
Gitblit v1.9.3