From 6a415a072a98d64d2f95d16eef73b6d7270b8d56 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 30 五月 2026 15:14:25 +0800
Subject: [PATCH] 新疆马铃薯 1.首页问题:挪新系统ui,需要确认一下页面数据完整。 2.协同办公:挪新系统 3.营销管理:客户往来取消回款金额字段,改为点击左侧客户时显示与该客户的所有订单信息,以及发货情况。销售可以选好对应的采购订单方便质量追溯。 4.采购管理:供应商往来同上逻辑,显示是否收货,也加上采购退货和采购报表功能。 5.采购加上设备备件选项,设备备件入库到备件库存。设备,仓储不足时做采购提醒。 6.仓储物流:得区分成品库和原料库(不存在半成品,成品只有一个产品,很好确认),原材料需要有批号,采集原料库需要做好仓库字段,让他们可以区分哪个仓库,然后把数采设备信息做一个实时的显示。总库存显示好当前存在的批次信息。 7.质量:只有不通过才需要填写对应的数据信息。在外侧做好选择通过不通过。过程,出厂检验无法对应到生产订单,那就对应到销售订单。 8.决策分析:基础数据分析和进销存分析,质量数据分析需要重新设计

---
 src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js |   50 ++++++++++++++++++++++++++------------------------
 1 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js b/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
index 2d88cd5..1736b3e 100644
--- a/src/views/officeProcessAutomation/ReimburseManage/cost-reimburse/costReimburseUtils.js
+++ b/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) {

--
Gitblit v1.9.3