yyb
昨天 7a13d509f719003110de120957bdd697a2c6a62a
src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
@@ -123,19 +123,7 @@
  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;
@@ -154,18 +142,32 @@
  return roles;
}
export function buildAutoApprovalFlow(amount, expenseCategory) {
export function buildAutoApprovalFlow(amount, expenseCategory, previousNodes = []) {
  const roles = resolveApprovalRoles(amount, expenseCategory);
  return roles.map((role, i) => ({
    approverId: null,
    approverName: APPROVAL_ROLE_LABELS[role] || role,
    roleKey: role,
    sortOrder: i + 1,
    nodeOrder: i + 1,
    nodeStatus: i === 0 ? "process" : "wait",
    approveOpinion: "",
    approveTime: "",
  }));
  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 prev = prevByRole.get(role) || prevByRole.get(`__idx_${i}`);
    const hasApprover = prev?.approverId != null && prev.approverId !== "";
    return {
      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",
      approveOpinion: "",
      approveTime: "",
    };
  });
}
export function getApprovalRuleHint(amount, expenseCategory) {