From 4ab0be7d4441f378add1f242b168d80fb27e65fe Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 22 五月 2026 17:57:44 +0800
Subject: [PATCH] OA部分查询条件变更

---
 src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js |   54 +++++++++++++++++++++++++++++-------------------------
 1 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js b/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
index 8cb8fa0..1736b3e 100644
--- a/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
+++ b/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
@@ -65,12 +65,12 @@
   },
 };
 
-/** 瀹℃壒瑙掕壊涓庢ā鎷熷鎵逛汉 */
-export const MOCK_APPROVERS_BY_ROLE = {
-  direct_supervisor: { approverId: "mock_supervisor", approverName: "鐩村睘涓婄骇" },
-  dept_manager: { approverId: "mock_manager", approverName: "閮ㄩ棬缁忕悊" },
-  cfo: { approverId: "mock_cfo", approverName: "璐㈠姟鎬荤洃" },
-  compliance: { approverId: "mock_compliance", approverName: "鍚堣瀹℃牳" },
+/** 瀹℃壒瑙掕壊灞曠ず鍚嶏紙鑺傜偣瀹℃壒浜洪』鍦ㄥ墠绔�夋嫨锛� */
+export const APPROVAL_ROLE_LABELS = {
+  direct_supervisor: "鐩村睘涓婄骇",
+  dept_manager: "閮ㄩ棬缁忕悊",
+  cfo: "璐㈠姟鎬荤洃",
+  compliance: "鍚堣瀹℃牳",
 };
 
 /** 鎸夐噾棰濋璁惧鎵归摼 */
@@ -107,30 +107,23 @@
 }
 
 export function statusLabel(v) {
+  if (v === "draft") return "鑽夌";
   if (v === "approved") return "宸查�氳繃";
+  if (v === "paid") return "宸蹭粯娆�";
   if (v === "rejected") return "宸查┏鍥�";
+  if (v === "cancelled") return "宸叉挙鍥�";
   return "瀹℃牳涓�";
 }
 
 export function statusTagType(v) {
-  if (v === "approved") return "success";
+  if (v === "draft") return "info";
+  if (v === "approved" || v === "paid") return "success";
   if (v === "rejected") return "danger";
+  if (v === "cancelled") return "info";
   return "warning";
 }
 
-export function formatApprovalFlowSummary(row) {
-  const nodes = row?.approvalFlowNodes || [];
-  if (!nodes.length) return "鈥�";
-  return nodes
-    .map((n, i) => {
-      const name = (n.approverName || "").trim() || `鑺傜偣${i + 1}`;
-      if (n.nodeStatus === "finish") return `${name}鉁揱;
-      if (n.nodeStatus === "error") return `${name}鉁梎;
-      if (n.nodeStatus === "process") return `${name}鈥;
-      return name;
-    })
-    .join(" 鈫� ");
-}
+export { formatApprovalFlowSummary } from "../shared/finReimbursementMappers.js";
 
 export function resolveApprovalRoles(amount, expenseCategory) {
   const amt = Number(amount) || 0;
@@ -149,14 +142,25 @@
   return roles;
 }
 
-export function buildAutoApprovalFlow(amount, expenseCategory) {
+export function buildAutoApprovalFlow(amount, expenseCategory, previousNodes = []) {
   const roles = resolveApprovalRoles(amount, expenseCategory);
+  const prevByRole = new Map();
+  (previousNodes || []).forEach((n, idx) => {
+    if (n?.roleKey) prevByRole.set(n.roleKey, n);
+    else if (n?.approverId != null && n.approverId !== "") {
+      prevByRole.set(`__idx_${idx}`, n);
+    }
+  });
   return roles.map((role, i) => {
-    const mock = MOCK_APPROVERS_BY_ROLE[role] || { approverId: `mock_${role}`, approverName: role };
+    const prev = prevByRole.get(role) || prevByRole.get(`__idx_${i}`);
+    const hasApprover = prev?.approverId != null && prev.approverId !== "";
     return {
-      approverId: mock.approverId,
-      approverName: mock.approverName,
+      approverId: hasApprover ? prev.approverId : null,
+      approverName: hasApprover
+        ? prev.approverName || ""
+        : APPROVAL_ROLE_LABELS[role] || role,
       roleKey: role,
+      signMode: prev?.signMode || "countersign",
       sortOrder: i + 1,
       nodeOrder: i + 1,
       nodeStatus: i === 0 ? "process" : "wait",
@@ -171,7 +175,7 @@
   const rule = APPROVAL_AMOUNT_RULES.find((r) => amt <= r.maxAmount) || APPROVAL_AMOUNT_RULES[APPROVAL_AMOUNT_RULES.length - 1];
   const extra = CATEGORY_EXTRA_APPROVAL[expenseCategory] || [];
   const extraText = extra.length
-    ? `锛�${expenseCategoryLabel(expenseCategory)}绫诲彟闇�锛�${extra.map((r) => MOCK_APPROVERS_BY_ROLE[r]?.approverName || r).join("銆�")}`
+    ? `锛�${expenseCategoryLabel(expenseCategory)}绫诲彟闇�锛�${extra.map((r) => APPROVAL_ROLE_LABELS[r] || r).join("銆�")}`
     : "";
   return `${rule.description}${extraText}`;
 }

--
Gitblit v1.9.3