From fa7fa3b7e38e6828dbb6964e72eac8e6b87c2b6e Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 02 九月 2026 18:53:10 +0800
Subject: [PATCH] 批量提交和批量审批

---
 src/views/qualityManagement/finalInspection/index.vue |   75 +++++++++++++++++++++++++++++++++----
 1 files changed, 66 insertions(+), 9 deletions(-)

diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue
index 4a59fa4..e671ab5 100644
--- a/src/views/qualityManagement/finalInspection/index.vue
+++ b/src/views/qualityManagement/finalInspection/index.vue
@@ -59,6 +59,10 @@
         <el-button type="primary"
                    @click="openForm('add')">鏂板</el-button>
         <el-button @click="handleOut">瀵煎嚭</el-button>
+        <el-button type="primary"
+                   plain
+                   :loading="batchSubmitting"
+                   @click="handleBatchSubmit">鎵归噺鎻愪氦</el-button>
         <el-button type="danger"
                    plain
                    @click="handleDelete">鍒犻櫎</el-button>
@@ -289,15 +293,7 @@
           clickFun: row => {
             submit(row.id);
           },
-          disabled: row => {
-            // 宸叉彁浜ゅ垯绂佺敤
-            if (row.inspectState == 1) return true;
-            // 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
-            if (row.checkName) {
-              return row.checkName !== userStore.nickName;
-            }
-            return false;
-          },
+          disabled: row => !canSubmit(row),
         },
         {
           name: "鍒嗛厤妫�楠屽憳",
@@ -326,6 +322,7 @@
   const tableData = ref([]);
   const selectedRows = ref([]);
   const tableLoading = ref(false);
+  const batchSubmitting = ref(false);
   const currentRow = ref(null);
   const page = reactive({
     current: 1,
@@ -391,6 +388,16 @@
   // 琛ㄦ牸閫夋嫨鏁版嵁
   const handleSelectionChange = selection => {
     selectedRows.value = selection;
+  };
+
+  const canSubmit = row => {
+    // 宸叉彁浜ゅ垯绂佺敤
+    if (row.inspectState == 1) return false;
+    // 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+    if (row.checkName) {
+      return row.checkName === userStore.nickName;
+    }
+    return true;
   };
 
   // 鎵撳紑寮规
@@ -464,6 +471,56 @@
     }
   };
 
+  const handleBatchSubmit = () => {
+    if (selectedRows.value.length === 0) {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+
+    const submitRows = selectedRows.value.filter(item => canSubmit(item));
+    if (submitRows.length === 0) {
+      proxy.$modal.msgWarning("鎵�閫夋暟鎹笉鍙彁浜�");
+      return;
+    }
+
+    ElMessageBox.confirm(
+      `閫変腑鐨�${submitRows.length}鏉″唴瀹瑰皢琚彁浜わ紝鏄惁纭鎻愪氦锛焋,
+      "鎵归噺鎻愪氦",
+      {
+        confirmButtonText: "纭",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }
+    )
+      .then(async () => {
+        batchSubmitting.value = true;
+        const results = await Promise.allSettled(
+          submitRows.map(item => submitQualityInspect({ id: item.id }))
+        );
+        const successCount = results.filter(
+          item => item.status === "fulfilled" && item.value?.code === 200
+        ).length;
+        const failCount = submitRows.length - successCount;
+
+        if (successCount > 0 && failCount === 0) {
+          proxy.$modal.msgSuccess("鎵归噺鎻愪氦鎴愬姛");
+        } else if (successCount > 0) {
+          proxy.$modal.msgWarning(
+            `鎴愬姛鎻愪氦${successCount}鏉★紝澶辫触${failCount}鏉
+          );
+        } else {
+          proxy.$modal.msgError("鎵归噺鎻愪氦澶辫触");
+        }
+        getList();
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      })
+      .finally(() => {
+        batchSubmitting.value = false;
+      });
+  };
+
   // 鍏抽棴寮规
   const closeDia = () => {
     proxy.resetForm("formRef");

--
Gitblit v1.9.3