160 lines
6.4 KiB
Markdown
160 lines
6.4 KiB
Markdown
# OA 办理中心列表:整单进度字段展示
|
||
|
||
| 项 | 内容 |
|
||
|----|------|
|
||
| 状态 | 已定稿;实现已落地(见 `docs/superpowers/plans/2026-07-15-oa-task-list-columns.md`) |
|
||
| 日期 | 2026-07-15 |
|
||
| 范围 | 待处理 / 已处理 / 我发起的 / 抄送我的 四列表;后端 `list_tasks` 摘要 enrichment;前端四页独立实现 |
|
||
| 权威对齐 | 钉钉办理侧:列表可见申请人、申请时间、流程名、当前节点与审批人、流程状态 |
|
||
| 关联 | 前端布局仍服从 `docs/web-admin-ui-spec-fresh-mint.md`;打回终态与「复制并重新发起」语义见 `2026-07-15-oa-return-copy-new-instance-design.md` |
|
||
|
||
---
|
||
|
||
## 1. 背景
|
||
|
||
当前四列表由 `RuntimeList.vue` 共用,列过少:
|
||
|
||
- 非「我发起」:节点名、任务状态、时间
|
||
- 「我发起」:标题、实例状态、时间
|
||
|
||
缺少申请人、流程名称、整单当前节点/审批人与流程状态,不便扫一眼判断进度。另:共用组件不利于后续按列表差异化演进。
|
||
|
||
---
|
||
|
||
## 2. 目标与非目标
|
||
|
||
**目标**
|
||
|
||
- 四列表均展示整单**此刻**进度摘要(进行中:当前节点 + 正在等谁批;已结束:终态)。
|
||
- 展示申请人、申请时间、流程名称、流程状态。
|
||
- 前端 **SHALL** 四页各自独立实现,**不得**再共用 `RuntimeList`(或等价通用列表组件)作为唯一实现。
|
||
- 后端仍可共用 enrichment,一次返回多字段,各页按需取用。
|
||
|
||
**非目标**
|
||
|
||
- 本期不做筛选、分页改版、批量操作。
|
||
- 不在列表展示完整审批进度时间轴(仍进详情)。
|
||
- 不强制本期四页列配置必须永久一致(仅本期起点一致,后续可分叉)。
|
||
|
||
---
|
||
|
||
## 3. 进度语义(SHALL)
|
||
|
||
四个列表统一按**实例维度**投影「当前进度」,而非「本行任务处理时快照」:
|
||
|
||
| 实例状态 | 当前节点 | 当前审批人 |
|
||
|----------|----------|------------|
|
||
| `running` | 当前仍为 `pending` 且 `task_type=approval` 的节点名;多节点用顿号 `、` 拼接(按节点出现去重) | 上述 pending 审批任务处理人昵称,顿号拼接;无昵称则回落 userId |
|
||
| `completed` / `rejected` / `returned` / `cancelled` | 终态文案(见下) | `-` |
|
||
|
||
**终态文案(当前节点列,建议)**
|
||
|
||
| status | 文案 |
|
||
|--------|------|
|
||
| `completed` | 已完成 |
|
||
| `rejected` | 已拒绝 |
|
||
| `returned` | 已打回 |
|
||
| `cancelled` | 已撤销 |
|
||
|
||
**流程状态列**:展示实例 `status`(Tag),与上表映射一致;进行中为 `running` →「进行中」。
|
||
|
||
**SHALL NOT**:在「已处理」列表用「本人当时处理的节点/人」替代整单此刻进度。
|
||
|
||
---
|
||
|
||
## 4. 列表字段(本期统一起点)
|
||
|
||
| 列 | 字段(建议) | 说明 |
|
||
|----|--------------|------|
|
||
| 流程名称 | `appName` | 审批应用名;空则回落实例 `title` |
|
||
| 申请人 | `initiatorUserName` | 发起人昵称 |
|
||
| 申请时间 | `applyTime` | 实例创建时间 `YYYY-MM-DD HH:mm:ss` |
|
||
| 当前节点 | `currentNodeName` | §3 |
|
||
| 当前审批人 | `currentApproverNames` | §3;已结束为 `-` |
|
||
| 流程状态 | `instanceStatus` | 实例状态 Tag |
|
||
| 操作 | — | 查看;「我发起的」在终态另保留「复制并重新发起」 |
|
||
|
||
原行内任务级 `status` / `nodeName` / 任务 `createTime` **不作为**本期主列;接口可继续返回供调试或后续分叉使用。
|
||
|
||
---
|
||
|
||
## 5. 后端(`list_tasks` enrichment)
|
||
|
||
### 5.1 行为
|
||
|
||
对 `pending` / `done` / `cc` / `mine`:
|
||
|
||
1. 仍按现有规则查出任务行或「我发起」实例行。
|
||
2. 批量加载关联 `OaInstance`、`OaApp`、`SysUser`、以及这些实例上 `status=pending` + `task_type=approval` 的 `OaTask`。
|
||
3. 为**每一行**写入统一摘要字段(任务行同时带 `instanceId`)。
|
||
|
||
### 5.2 响应增量字段(SHALL)
|
||
|
||
每行至少包含:
|
||
|
||
```text
|
||
appName
|
||
initiatorUserId
|
||
initiatorUserName
|
||
applyTime
|
||
instanceStatus
|
||
currentNodeName
|
||
currentApproverNames
|
||
```
|
||
|
||
约定:
|
||
|
||
- `applyTime` = 实例 `create_time`(非任务创建时间)。
|
||
- `instanceStatus` = 实例 `status`。
|
||
- `mine` 行仍以实例为主键 `id`;其余以任务为主键,跳转详情用 `instanceId`。
|
||
- 批量查询,**禁止**按行 N+1 查用户/实例/pending 任务。
|
||
|
||
### 5.3 兼容
|
||
|
||
保留既有任务/实例字段(如 `nodeName`、`status`、`title`、`createTime`),避免破坏未改前端;新列以前缀语义清晰的 `instanceStatus` / `applyTime` 区分任务级 `status` / `createTime`。
|
||
|
||
---
|
||
|
||
## 6. 前端(四页独立)
|
||
|
||
### 6.1 页面
|
||
|
||
| 菜单 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| 待处理 | `views/oa-approval/pending/index.vue` | 自包含表格 + `fetchOaTasks('pending')` |
|
||
| 已处理 | `views/oa-approval/done/index.vue` | 同上 `done` |
|
||
| 我发起的 | `views/oa-approval/mine/index.vue` | 同上 `mine`;终态「复制并重新发起」 |
|
||
| 抄送我的 | `views/oa-approval/cc/index.vue` | 同上 `cc` |
|
||
|
||
**SHALL**:删除(或彻底不再引用)`_placeholder/RuntimeList.vue` 作为办理中心实现。
|
||
**SHALL NOT**:再抽一层「通用 Runtime 列表」组件承载四页业务(可抽纯工具函数如状态文案映射,但表格与列定义须在各页内)。
|
||
|
||
### 6.2 UI 约定
|
||
|
||
- 对齐 Fresh Mint 列表模板(`panel-top` 标题竖条、`list-table` + `stripe`、操作列 `fixed="right"` min-width ≥ 260)。
|
||
- 流程状态用 `<el-tag>` 语义色(进行中 warning、完成 success、拒绝/打回/撤销 danger)。
|
||
- 空值展示 `-`。
|
||
- `keepAlive` 下 `onActivated` 重新拉取。
|
||
|
||
### 6.3 后续分叉
|
||
|
||
允许各页增删列、加筛选;后端字段可多用少改,前端按页演进。
|
||
|
||
---
|
||
|
||
## 7. 验收
|
||
|
||
- [x] 四列表均可见:流程名称、申请人、申请时间、当前节点、当前审批人、流程状态。
|
||
- [x] 进行中单据:当前节点/审批人与详情进度中 pending 审批人一致。
|
||
- [x] 已结束单据:当前节点为终态文案,当前审批人为 `-`,流程状态为对应终态。
|
||
- [x] 「已处理」进度列展示整单此刻而非本人任务快照。
|
||
- [x] 四页无共用 `RuntimeList`;「我发起」终态仍可复制并重新发起。
|
||
- [x] `list_tasks` 无 N+1 批量加载。
|
||
|
||
---
|
||
|
||
## 8. 实现备注
|
||
|
||
- 测试:为 `list_tasks` enrichment 增加单测(running 含 current*;终态 currentNodeName/审批人)。
|
||
- 图谱:改 backend / web-admin 后执行 `./scripts/update-graph.sh` 对应侧。
|