| 项 | 内容 |
|---|---|
| 状态 | 已确认 |
| 日期 | 2026-07-23 |
| 范围 | web-admin 审批详情「审批进度」、打印 PDF「审批流程」中多人节点(signMode=or\|and) |
| Demo | docs/mockups/oa-or-and-sign-progress-display-demo.html |
| 关联 | 2026-07-15-oa-approval-progress-timeline-design.md(同节点展示修订);2026-07-15-oa-approval-print-pdf-design.md(流程行内容修订) |
流程设计器审批节点支持 或签(signMode=or)与 会签(signMode=and)。引擎侧同节点多人已合并为一张进度卡(build_progress_items → people[]),但:
commentText 拼接,未按人展开「姓名 意见 时间」。产品期望(已确认):
progress[].people[](nickName / status / commentText / timestamp),优先前端拼装;后端仅在字段缺失时补齐。done 等)。每人一行,空格分隔,无表头、无多列表格:
| 情形 | 行文案 |
|---|---|
| 已处理(同意 / 拒绝 / 打回等) | {姓名} {审批意见} {审批时间} |
| 尚未处理 | {姓名} 待处理 |
或签免处理(任务 done 等) |
{姓名} 无需处理 |
规则:
commentText。若已处理且意见非空 → 中间段用意见原文。若已处理但意见为空 → 中间段用状态文案(已同意 / 已拒绝 / 已打回),例如 甲 已同意 2026-07-23 10:05:00。禁止空意见导致 甲 2026-07-23… 双空格歧义。timestamp / 任务 updateTime);未处理、无需处理不写时间。nickName,缺省回退 userId。people[] 顺序一致(树序任务组内顺序)。示例:
甲 同意 2026-07-23 10:01:00
乙 无异议 2026-07-23 10:20:00
丙 待处理
或签一人已批:
甲 同意,材料齐全 2026-07-23 10:05:00
乙 无需处理
丙 无需处理
signMode=or)| 节点状态 | 节点卡 | 人员行 |
|---|---|---|
| 进行中(无人已操作) | 徽章「或签」+「进行中」;chip 均可为待处理高亮 | 每人 {姓名} 待处理(界面可用 chip 代替行,或 chip + 行二选一;PDF 必须出行) |
| 已有人同意/拒绝/打回 | 节点总状态按聚合;实际操作人 chip 高亮,其余 chip 灰显 | 操作人完整行;其余 {姓名} 无需处理(必须仍列出,选项 A 已确认) |
高亮定义:
approved / rejected / returned 等)。done / 文案「无需处理」),灰显。signMode=and)| 节点状态 | 节点卡 | 人员行 |
|---|---|---|
| 未批 / 部分 / 完成 | 徽章「会签」+ 聚合状态;可选「n/m 已处理」 | 始终每人一行;已批写意见+时间,未批写「待处理」 |
会签不出现「无需处理」(除非引擎另有取消语义;当前会签应等人人处理)。
people.length === 1 时仍可用同一行格式;可不强制展开,允许沿用今日 chip + 节点级意见(实现宜统一走行格式,减少分支)。
web-admin/src/components/oa-approval/OaProgressChain.vueweb-admin/src/utils/oa-approval-print.ts → buildFlowItemsOaApprovalPrintSheet.vue(或等价渲染)【节点名·或签|会签】 {节点状态}GET 实例详情 progress 中 kind=task|pending_node 的 people[]。build_progress_items 已写入每人 status / commentText / timestamp;实现时核对或签 done 映射为「无需处理」、会签 pending 映射为「待处理」。commentText(多人用「甲:意见;乙:意见」拼接)在界面有 person-lines 后可不再重复展示节点级意见块,避免双份;PDF 以行为准。| 文档 | 关系 |
|---|---|
2026-07-15-oa-approval-progress-timeline-design.md §4.1「同节点多人:一人一条、不合并」 |
对本需求废止:改为「同节点合并一张卡 + 卡内每人一行」 |
| 同文件 P0 树序、终态不挂未达 | 仍有效 |
2026-07-15-oa-approval-print-pdf-design.md |
修订审批流程多人节点内容为本文 §3–§5.2;版式/印章/页脚不变 |
formatProgressPersonLines(people, signMode) → string[],供 OaProgressChain 与 buildFlowItems 共用(可放 web-admin/src/utils/oa-progress-person-lines.ts)。personStatusHint 对齐:pending|running→待处理,done→无需处理,approved→意见优先否则「已同意」,等。formatProgressPersonLines 与 buildFlowItems 或签/会签样例做前端单元测试(若仓库已有 vitest);后端可不改则仅回归 test_or_sign_same_node_merged_into_one_card。