From fb896c4ad235c0b4fed205440f279ee85115b81f Mon Sep 17 00:00:00 2001
From: quxin <592870522@qq.com>
Date: 星期四, 03 九月 2026 11:01:53 +0800
Subject: [PATCH] 修复: 采购管理--采购申请: 采购申请的状态显示不正确,全都显示审批中

---
 src/views/erp/purchase/request/index.vue |   14 +++++++++++---
 src/views/erp/purchase/request/data.ts   |    4 ++--
 src/api/erp/purchase/request/index.ts    |   34 ++++++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+), 5 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 {
+      // 鏌ヨ澶辫触鏃朵繚鎸佸師鏈夌姸鎬�
+    }
+  }
+}
diff --git a/src/views/erp/purchase/request/data.ts b/src/views/erp/purchase/request/data.ts
index cc4745b..ac87d16 100644
--- a/src/views/erp/purchase/request/data.ts
+++ b/src/views/erp/purchase/request/data.ts
@@ -271,8 +271,8 @@
         options: [
           { label: '鏈彁浜�', value: 0 },
           { label: '瀹℃壒涓�', value: 10 },
-          { label: '瀹℃牳閫氳繃', value: 20 },
-          { label: '瀹℃牳涓嶉�氳繃', value: 30 },
+          { label: '瀹℃壒閫氳繃', value: 20 },
+          { label: '瀹℃壒涓嶉�氳繃', value: 30 },
           { label: '宸插彇娑�', value: 40 },
         ],
         placeholder: '璇烽�夋嫨鐘舵��',
diff --git a/src/views/erp/purchase/request/index.vue b/src/views/erp/purchase/request/index.vue
index cd97ba8..26539b3 100644
--- a/src/views/erp/purchase/request/index.vue
+++ b/src/views/erp/purchase/request/index.vue
@@ -17,6 +17,7 @@
   getApproveProcessList,
   getPurchaseRequestPage,
   submitPurchaseRequest,
+  syncPurchaseRequestStatus,
 } from '#/api/erp/purchase/request';
 import { $t } from '#/locales';
 
@@ -145,11 +146,18 @@
     proxyConfig: {
       ajax: {
         query: async ({ page }, formValues) => {
-          return await getPurchaseRequestPage({
+          const result = await getPurchaseRequestPage({
             pageNo: page.currentPage,
             pageSize: page.pageSize,
             ...formValues,
           });
+          const processingItems = (result.list || []).filter(
+            (item) => item.status === 10 && item.processInstanceId,
+          );
+          if (processingItems.length > 0) {
+            await syncPurchaseRequestStatus(processingItems);
+          }
+          return result;
         },
       },
     },
@@ -210,8 +218,8 @@
       <template #status="{ row }">
         <Tag v-if="row.status === 0" color="default">鏈彁浜�</Tag>
         <Tag v-else-if="row.status === 10" color="processing">瀹℃壒涓�</Tag>
-        <Tag v-else-if="row.status === 20" color="success">瀹℃牳閫氳繃</Tag>
-        <Tag v-else-if="row.status === 30" color="error">瀹℃牳涓嶉�氳繃</Tag>
+        <Tag v-else-if="row.status === 20" color="success">瀹℃壒閫氳繃</Tag>
+        <Tag v-else-if="row.status === 30" color="error">瀹℃壒涓嶉�氳繃</Tag>
         <Tag v-else-if="row.status === 40" color="warning">宸插彇娑�</Tag>
       </template>
       <template #inStatus="{ row }">

--
Gitblit v1.9.3