一、功能介绍

待办审批页按「审批中、抄送我、已完成」和「合同单审批、表单审批」分类,展示提交人、组织、时间、审批链及通过/驳回操作。2026-08-09 实测「审批中-表单审批」返回 10 条,recordId 可读取详情,空意见驳回会被页面拦截。但列表只按总状态查询,没有当前审批人、抄送人、企业或根组织条件,控制器也无审批权限守卫,因此当前不具备安全生产审批的授权边界。

二、功能亮点

  1. 切换待审批、抄送和已完成分类,并识别三类查询与页面文案不完全一致的边界。
  2. 查看提交人、组织、表单名称和按层级排序的审批时间轴。
  3. 使用 recordId 查询详情,在二次确认后提交通过或驳回决定。
  4. 通过时只处理当前最早待审节点,最后节点通过才结束任务;驳回当前节点会结束整个任务。
  5. 审批决定与 workflow 推进采用失效开放策略,联动失败时保留审批结果并要求人工对账。

三、使用场景

适用于已完成审批人归属、企业数据范围和细分权限整改后,由指定审批人处理自己的待办。当前仅适合受控验证列表和详情;不适合练习点击真实审批单,也不应将「抄送我」视为已实现的个人抄送范围。

四、使用权限

  1. 页面没有查看、通过和驳回的按钮权限判断。
  2. ApprovalTaskController 没有专区或审批查看/操作细分权限守卫。
  3. 列表和详情不校验当前用户是当前审批人、提交人或抄送人;写操作也不核对节点预设审批人或角色。
  4. 实体虽有 rootShopId,但仓储查询不使用该字段或 authCorpId 限定数据范围。
  5. 控制器从当前会话取操作人,身份读取失败时拒绝写操作(401),不再以 system 兜底。
  6. 审批决定会改变业务状态,未经明确授权和原单复核不得操作。

五、前置条件

  1. 确认当前账号在业务上确实是目标节点审批人,不以看到按钮作为授权证明。
  2. 核对当前企业、根组织、申请人和审批流程;当前接口不强制这些范围。
  3. 从当前列表选择任务,不猜测 recordId,不使用 formTaskId 请求详情。
  4. 通过或驳回前核对完整业务原单;当前详情的表单内容数组固定为空。
  5. 明确审批决定与 workflow 联动失败的人工对账和恢复流程。

六、操作步骤

  1. 进入「待办任务 → 审批任务」。默认选中「审批中-表单审批」,一次最多请求 50 条,页面没有继续分页入口。
  2. 切换审批中、抄送我或已完成,再选合同单或表单。「审批中」传 status=1,「已完成」只传 status=2,不包含已驳回 status=3。
  3. 注意「抄送我」传字符串 cc,后端解析失败后当作无状态条件,因此可能返回全部任务,不是仅抄送给当前人。
  4. 合同单分类不传 approveTaskType;表单分类虽传 approveTaskType=3,但后端 list 端点没有该参数,两类列表实际不按任务类型过滤。
  5. 列表会自动选中第一条并使用 recordId 请求详情。不使用 formTaskId;实测使用 formTaskId 会返回审批任务不存在。
  6. 核对表单名称、提交人、组织和申请时间,再查看「审批结果」时间轴的审批人、层级、时间和意见。
  7. 「审批详情」的 formTaskContent 当前由后端固定返回空数组,不代表原申请没有填写内容;必须回到业务原单核对。
  8. 需要驳回时先填写明确的审批意见;空白意见会在前端被拦截。通过意见可以留空,服务端也不要求驳回意见非空。
  9. 点击通过或驳回后在二次确认框中再次核对。决定写入当前待审批节点;有后续节点时通过不会结束总任务,驳回会立即结束。
  10. 操作成功后页面重载当前列表。用 recordId、操作人、审批时间和意见复核时间轴,并到原业务单验证状态。
  11. 审批决定写入后,workflow resume/cancel 失败只记录告警且不回滚决定。如原流程未推进或未终止,立即进入人工对账,不重复点击审批。
  12. 筛选抽屉中的时间、组织、导购和排序点击应用后会传入列表请求。
  13. 左上角姓名搜索框只绑定文本,不会过滤列表或发起查询。所属导购选项支持按关键词动态搜索员工。
从待办任务进入审批任务,查看审批中列表与左侧分类。

从待办任务进入审批任务,查看审批中列表与左侧分类。

审批中心待审批列表入口截图
在请输入姓名查询中填入演示姓名过滤待审批记录,右侧面板展示审批详情与审批结果。

在请输入姓名查询中填入演示姓名过滤待审批记录,右侧面板展示审批详情与审批结果。

按姓名筛选待审批列表截图
确认通过后页面重载当前列表,被审批记录已离开审批中列表(共 9 条)。

确认通过后页面重载当前列表,被审批记录已离开审批中列表(共 9 条)。

审批通过后列表刷新截图

七、字段与规则说明

  1. 详情、通过和驳回的主键是 recordId,不是 formTaskId。
  2. 列表默认每页 20 条;当前页面固定请求第 1 页、每页 50 条,服务端 pageSize 上限为 100。
  3. 后端只识别数字状态;cc 被视为全部状态。
  4. 后端列表不接收 approveTaskType、姓名、时间、组织、导购或排序条件。
  5. 列表按任务创建时间和数据库 ID 倒序,页面只显示当前返回数组长度,不展示接口 total 或翻页入口。
  6. 详情标题按 approveStatus 动态显示审批状态(待审批/已通过/已驳回/已撤销);底部操作区仅在 approveStatus=1 时显示。
  7. 详情的表单内容当前为空,只能查看基础信息和审批链。
  8. 服务端不校验驳回意见必填,该规则只由当前页面执行;通过和驳回意见都会随控制器 info 日志输出。
  9. 只能对总状态为待审批且存在当前待审节点的任务写入决定,但不校验登录用户是否为该节点审批人。
  10. 写入节点时不校验仍为待审批,服务未检查更新行数;并发审批没有明确冲突返回。
  11. 通过最后节点才结束任务;驳回任一节点都结束任务。
  12. workflow 联动失败不回滚已写入的审批决定。
  13. 身份读取失败会拒绝操作(不再 system 兜底);审批意见不再写入应用日志。
  14. 列表、详情和写操作当前没有企业、根组织或审批人范围。

八、风险与限制

当前列表可能暴露全局审批任务,知道 recordId 的登录用户又可能读取详情或更改状态。抄送、已完成、合同/表单、筛选和详情状态文案与真实查询不一致,会导致误选任务;表单正文缺失会造成无据决策。身份失败兜底 system、审批意见日志、无状态条件的节点更新和未检查更新行数会削弱责任归属及并发安全;workflow 失败不回滚还可造成审批结果与流程状态分叉。

注意

在审批人校验、企业/组织隔离、服务端权限、原单内容、并发控制、审计身份和筛选契约完成前,仅做受控读取验证,不对真实审批单提交通过或驳回;审批意见不得填写密码、证件号、支付信息或其他无关敏感数据。

九、常见问题

  1. 为什么审批详情没有申请内容?后端当前固定返回空的 formTaskContent。
  2. 为什么用 formTaskId 查询报不存在?详情和审批操作必须使用 recordId。
  3. 抄送我为什么可能出现其他任务?cc 不是后端可识别状态,查询会退化为全部。
  4. 已完成包含已驳回吗?当前只查 status=2 已通过,不包含 status=3。
  5. 合同单和表单分类有效吗?无效,后端列表不接收 approveTaskType。
  6. 筛选抽屉有效吗?有效,应用后的条件会进入列表请求。
  7. 列表只显示 50 条怎么办?当前没有下一页,不能由此证明总任务只有 50 条。
  8. 驳回意见真的必填吗?页面必填,但服务端不校验,不应绕过页面。
  9. 审批成功是否表示流程也成功?不一定,workflow 联动失败不回滚审批决定。
  10. 为什么组织选择为空?2026-08-09 实测组织树端点返回 404,且当前筛选本身也不传参。
  11. 为什么审批详情跟进记录时间线标题显示 null null?2026-09-12 实测存在该显示瑕疵(时间线标题字段缺失),不影响审批状态、审批人与结果核对;已登记待修复。

十、相关指南

需要处理客资流转审批时阅读《审核客资》;决定后必须同时复核业务原单和 workflow 实例状态。

说明

页面入口:/todo/approval