| | |
| | | return { ok: true, nodes, name }; |
| | | } |
| | | |
| | | export function flowNodesSummary(nodes) { |
| | | /** 节点层级中文序号:一级 / 二级 / … */ |
| | | const LEVEL_TEXT = ["一级", "二级", "三级", "四级", "五级", "六级", "七级", "八级", "九级", "十级"]; |
| | | |
| | | export function nodeLevelText(index) { |
| | | return LEVEL_TEXT[index] || `第${index + 1}级`; |
| | | } |
| | | |
| | | /** |
| | | * 审批节点名称:按「审批类型 + 层级」命名,例如「发货审批·一级」。 |
| | | * @param {string} typeName 审批类型/模板名称,如「发货审批」 |
| | | * @param {number} index 0 基节点序号 |
| | | */ |
| | | export function nodeDisplayName(typeName, index) { |
| | | const level = nodeLevelText(index); |
| | | const type = (typeName || "").trim(); |
| | | return type ? `${type}·${level}` : level; |
| | | } |
| | | |
| | | export function flowNodesSummary(nodes, typeName = "") { |
| | | const list = normalizeFlowNodes(nodes); |
| | | if (!list.length) return "—"; |
| | | return list |
| | | .map((n, i) => { |
| | | const names = n.approvers.map((a) => a.approverName || "未命名").join("、") || "未配置"; |
| | | return `节点${i + 1}(${nodeSignModeLabel(n.signMode)}:${names})`; |
| | | return `${nodeDisplayName(typeName, i)}(${nodeSignModeLabel(n.signMode)}:${names})`; |
| | | }) |
| | | .join(" → "); |
| | | } |