From 58fc2d97304444f46b265a679008149d0761e49e Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 02 九月 2026 19:50:54 +0800
Subject: [PATCH] 过程检批量提交

---
 src/views/qualityManagement/processInspection/index.vue |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index 58d1a3a..7cecaa2 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -34,6 +34,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>
@@ -302,6 +306,7 @@
   const tableData = ref([]);
   const selectedRows = ref([]);
   const tableLoading = ref(false);
+  const batchSubmitting = ref(false);
   const dialogFormVisible = ref(false);
   const form = ref({
     checkName: "",
@@ -366,6 +371,16 @@
     selectedRows.value = selection;
   };
 
+  const canSubmit = row => {
+    // 宸叉彁浜ゅ垯绂佺敤
+    if (row.inspectState == 1) return false;
+    // 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+    if (row.checkName) {
+      return row.checkName === userStore.nickName;
+    }
+    return true;
+  };
+
   // 鎵撳紑寮规
   const openForm = (type, row) => {
     nextTick(() => {
@@ -392,6 +407,64 @@
       getList();
     }
   };
+
+  const handleBatchSubmit = () => {
+    if (selectedRows.value.length === 0) {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+
+    const submitRows = selectedRows.value.filter(item => canSubmit(item));
+    const skipCount = selectedRows.value.length - submitRows.length;
+    if (submitRows.length === 0) {
+      proxy.$modal.msgWarning("鎵�閫夋暟鎹潎涓嶅彲鎻愪氦");
+      return;
+    }
+
+    const message =
+      skipCount > 0
+        ? `宸查�夋嫨${selectedRows.value.length}鏉★紝鍏朵腑${submitRows.length}鏉″彲鎻愪氦锛�${skipCount}鏉″凡鎻愪氦鎴栨棤鏉冮檺锛屽皢鑷姩璺宠繃銆傛槸鍚︾‘璁ゆ彁浜わ紵`
+        : `閫変腑鐨�${submitRows.length}鏉″唴瀹瑰皢琚彁浜わ紝鏄惁纭鎻愪氦锛焋;
+
+    ElMessageBox.confirm(message, "鎵归噺鎻愪氦", {
+      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 (failCount === 0 && skipCount === 0) {
+          proxy.$modal.msgSuccess("鎵归噺鎻愪氦鎴愬姛");
+        } else if (failCount === 0) {
+          proxy.$modal.msgSuccess(
+            `鎴愬姛鎻愪氦${successCount}鏉★紝璺宠繃${skipCount}鏉
+          );
+        } else if (successCount > 0) {
+          proxy.$modal.msgWarning(
+            `鎴愬姛鎻愪氦${successCount}鏉★紝澶辫触${failCount}鏉★紝璺宠繃${skipCount}鏉
+          );
+        } else {
+          proxy.$modal.msgError(
+            `鎵归噺鎻愪氦澶辫触锛屽け璐�${failCount}鏉★紝璺宠繃${skipCount}鏉
+          );
+        }
+        getList();
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      })
+      .finally(() => {
+        batchSubmitting.value = false;
+      });
+  };
   const open = async row => {
     let userLists = await userListNoPage();
     userList.value = userLists.data;

--
Gitblit v1.9.3