From a956b0ea73c9891a6e0e1325d093f6b63e3e8501 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期四, 03 九月 2026 13:52:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0

---
 src/api/erp/purchase/request/index.ts |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/src/api/erp/purchase/request/index.ts b/src/api/erp/purchase/request/index.ts
index c446da4..831cb1e 100644
--- a/src/api/erp/purchase/request/index.ts
+++ b/src/api/erp/purchase/request/index.ts
@@ -95,3 +95,37 @@
 export function getApproveProcessList(id: number) {
   return requestClient.get(`/erp/purchase-request/approve-process-list`, { params: { id } });
 }
+
+/** BPM 娴佺▼瀹炰緥鐘舵�� 鈫� 涓氬姟鐘舵�佹槧灏� */
+export const BPM_STATUS_TO_BIZ: Record<number, number> = {
+  1: 10, // RUNNING 鈫� 瀹℃壒涓�
+  2: 20, // APPROVE 鈫� 瀹℃牳閫氳繃
+  3: 30, // REJECT 鈫� 瀹℃牳涓嶉�氳繃
+  4: 40, // CANCEL 鈫� 宸插彇娑�
+};
+
+/**
+ * 鍚屾閲囪喘鐢宠鐨勪笟鍔$姸鎬侊紙鏍规嵁 BPM 娴佺▼瀹炰緥瀹為檯鐘舵�侊級
+ * 鐢ㄤ簬淇鍚庣鐩戝惉鍣ㄦ湭姝g‘鍥炲啓瀵艰嚧鐨勪笟鍔$姸鎬佷笉涓�鑷撮棶棰�
+ */
+export async function syncPurchaseRequestStatus(items: ErpPurchaseRequestApi.PurchaseRequest[]) {
+  const processingItems = items.filter(
+    (item) => item.status === 10 && item.processInstanceId,
+  );
+  if (processingItems.length === 0) return;
+
+  const { getApprovalDetail } = await import('#/api/bpm/processInstance');
+  for (const item of processingItems) {
+    try {
+      const detail = await getApprovalDetail({
+        processInstanceId: item.processInstanceId,
+      });
+      const bizStatus = BPM_STATUS_TO_BIZ[detail.processInstance?.status];
+      if (bizStatus && bizStatus !== 10) {
+        item.status = bizStatus;
+      }
+    } catch {
+      // 鏌ヨ澶辫触鏃朵繚鎸佸師鏈夌姸鎬�
+    }
+  }
+}

--
Gitblit v1.9.3