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/officeProcessAutomation/ApproveManage/approve-list/index.vue |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 74 insertions(+), 3 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue b/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
index 4a9cf29..01b94a0 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
@@ -48,6 +48,13 @@
         <el-button :icon="RefreshRight" @click="resetSearch">閲嶇疆</el-button>
       </div>
       <div class="search_actions">
+        <el-button
+          type="success"
+          :icon="CircleCheck"
+          @click="openBatchApproveDialog"
+        >
+          鎵归噺瀹℃壒
+        </el-button>
         <el-button type="primary" :icon="Plus" @click="openSubmitDialog">鎻愪氦瀹℃壒</el-button>
       </div>
     </div>
@@ -58,9 +65,10 @@
         :column="tableColumn"
         :tableData="tableData"
         :page="page"
-        :isSelection="false"
+        :isSelection="true"
         :tableLoading="tableLoading"
         :total="page.total"
+        @selection-change="handleSelectionChange"
         @pagination="pagination"
       >
         <template #approveType="{ row }">
@@ -329,11 +337,53 @@
         </el-button>
       </template>
     </el-dialog>
+
+    <!-- 鎵归噺瀹℃壒鎿嶄綔 -->
+    <el-dialog
+      v-model="batchApproveDialog.visible"
+      title="鎵归噺瀹℃壒澶勭悊"
+      width="560px"
+      append-to-body
+      destroy-on-close
+      @closed="batchApproveOpinion = ''"
+    >
+      <el-form label-width="100px">
+        <el-form-item label="瀹℃壒鎰忚">
+          <el-input
+            v-model="batchApproveOpinion"
+            type="textarea"
+            :rows="4"
+            maxlength="500"
+            show-word-limit
+            placeholder="閫氳繃鍙暀绌猴紱椹冲洖璇峰~鍐欏叿浣撳師鍥�"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button
+          type="success"
+          :loading="batchApproveSubmitting"
+          @click="onBatchApprove('approved')"
+        >
+          閫� 杩�
+        </el-button>
+        <el-button
+          type="danger"
+          :loading="batchApproveSubmitting"
+          @click="onBatchApprove('rejected')"
+        >
+          椹� 鍥�
+        </el-button>
+        <el-button :disabled="batchApproveSubmitting" @click="batchApproveDialog.visible = false">
+          鍙� 娑�
+        </el-button>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
-import { Plus, RefreshRight } from "@element-plus/icons-vue";
+import { CircleCheck, Plus, RefreshRight } from "@element-plus/icons-vue";
 import { ElMessage } from "element-plus";
 import { computed, onMounted, ref } from "vue";
 import { APPROVAL_MODULE_KEYS } from "../approve-shared/approvalModuleRegistry.js";
@@ -374,6 +424,9 @@
   approveDialog,
   approveOpinion,
   approveSubmitting,
+  batchApproveDialog,
+  batchApproveOpinion,
+  batchApproveSubmitting,
   submitReimburseApprove,
   submitDialog,
   isSubmitEdit,
@@ -387,6 +440,8 @@
   handleQuery,
   resetSearch,
   pagination,
+  handleSelectionChange,
+  openBatchApproveDialog,
   resetSubmitDialogState,
   openSubmitDialog,
   openEditDialog,
@@ -394,6 +449,7 @@
   backToTemplatePick,
   submitInstanceForm,
   submitApprove,
+  submitBatchApprove,
   openDetail,
   openApprove,
 } = al;
@@ -435,6 +491,21 @@
   }
   if (ret?.ok) {
     ElMessage.success(result === "approved" ? "宸查�氳繃" : "宸查┏鍥�");
+  }
+}
+
+async function onBatchApprove(result) {
+  const ret = await submitBatchApprove(result);
+  if (ret?.needOpinion) {
+    ElMessage.warning("椹冲洖鏃惰濉啓瀹℃壒鎰忚");
+    return;
+  }
+  if (ret?.ok) {
+    if (ret.failCount > 0) {
+      ElMessage.warning(`鎴愬姛瀹℃壒${ret.successCount}鏉★紝澶辫触${ret.failCount}鏉);
+    } else {
+      ElMessage.success(result === "approved" ? "鎵归噺瀹℃壒宸查�氳繃" : "鎵归噺瀹℃壒宸查┏鍥�");
+    }
   }
 }
 
@@ -611,4 +682,4 @@
   border-left: 3px solid var(--el-color-primary);
   line-height: 1.4;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3