From fee2f2532144fca6c81b1523aeef54165c5263b2 Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期二, 25 八月 2026 16:50:38 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_pro2.0' into fix/hsy/20260812

---
 src/views/bpm/task/done/index.vue |   53 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/src/views/bpm/task/done/index.vue b/src/views/bpm/task/done/index.vue
index 52bb882..4bf1c3a 100644
--- a/src/views/bpm/task/done/index.vue
+++ b/src/views/bpm/task/done/index.vue
@@ -2,11 +2,12 @@
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { BpmTaskApi } from '#/api/bpm/task';
 
-import { DocAlert, Page } from '../../../../packages/effects/common-ui/src';
+import { Page } from '@vben/common-ui';
 
 import { message } from 'ant-design-vue';
 
 import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
+import { reverseApprove } from '#/api/erp/purchase/order';
 import { getTaskDonePage, withdrawTask } from '#/api/bpm/task';
 import { router } from '#/router';
 
@@ -34,6 +35,28 @@
   try {
     await withdrawTask(row.id);
     message.success('鎾ゅ洖鎴愬姛');
+    await gridApi.query();
+  } finally {
+    hideLoading();
+  }
+}
+
+/** 鏄惁閲囪喘璁㈠崟瀹℃壒浠诲姟锛堢敤浜庢樉绀�"鍙嶅鎵�"銆侀殣钘忛�氱敤"鎾ゅ洖"锛� */
+function isPurchaseOrderApprove(row: BpmTaskApi.Task) {
+  return (row.processInstance?.processDefinitionId || '').startsWith(
+    'purchase_order_approve',
+  );
+}
+
+/** 鍙嶅鎵归噰璐鍗曪紙宸插鏍� -> 鏈鏍革紝鍦ㄥ崗鍚屽姙鍏凡鍔炰换鍔′腑鎿嶄綔锛� */
+async function handleReverseApprove(row: BpmTaskApi.Task) {
+  const hideLoading = message.loading({
+    content: '鍙嶅鎵逛腑...',
+    duration: 0,
+  });
+  try {
+    await reverseApprove(row.processInstance.id);
+    message.success('鍙嶅鎵规垚鍔燂紝璁㈠崟宸查噸鏂拌繘鍏ュ緟鍔炲鎵�');
     await gridApi.query();
   } finally {
     hideLoading();
@@ -72,29 +95,27 @@
 </script>
 
 <template>
-  <Page auto-content-height>
-    <template #doc>
-      <DocAlert
-        title="瀹℃壒閫氳繃銆佷笉閫氳繃銆侀┏鍥�"
-        url="https://doc.iocoder.cn/bpm/task-todo-done/"
-      />
-      <DocAlert title="瀹℃壒鍔犵銆佸噺绛�" url="https://doc.iocoder.cn/bpm/sign/" />
-      <DocAlert
-        title="瀹℃壒杞姙銆佸娲俱�佹妱閫�"
-        url="https://doc.iocoder.cn/bpm/task-delegation-and-cc/"
-      />
-      <DocAlert title="瀹℃壒鍔犵銆佸噺绛�" url="https://doc.iocoder.cn/bpm/sign/" />
-    </template>
-
-    <Grid table-title="宸插姙浠诲姟">
+  <Page auto-content-height><Grid table-title="宸插姙浠诲姟">
       <template #actions="{ row }">
         <TableAction
           :actions="[
+            {
+              label: '鍙嶅鎵�',
+              type: 'link',
+              danger: true,
+              icon: ACTION_ICON.AUDIT,
+              ifShow: () => isPurchaseOrderApprove(row),
+              popConfirm: {
+                title: '纭畾瑕佸弽瀹℃壒璇ラ噰璐鍗曞悧锛熻鍗曞皢閲嶆柊杩涘叆寰呭姙瀹℃壒',
+                confirm: handleReverseApprove.bind(null, row),
+              },
+            },
             {
               label: '鎾ゅ洖',
               type: 'link',
               danger: true,
               icon: ACTION_ICON.DELETE,
+              ifShow: () => !isPurchaseOrderApprove(row),
               popConfirm: {
                 title: '纭畾瑕佹挙鍥炶浠诲姟鍚楋紵',
                 confirm: handleWithdraw.bind(null, row),

--
Gitblit v1.9.3