Unify effective roles via post-role bindings, remove dedicated OA role UI, and update OA assignee resolution plus related SQL/docs. Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
OA 审批应用「复制」设计
| 项 | 内容 |
|---|---|
| 状态 | 已定稿 |
| 日期 | 2026-07-31 |
| 范围 | 审批管理页复制应用(基础信息 + 表单/流程/高级设置草稿) |
| 页面 | /#/system-manage/oa-approval/apps |
1. 目标与非目标
目标
- 在审批管理卡片「更多」中提供「复制」。
- 一键生成与源流程内容一致的新应用;名称 = 原名称 +「复制」。
- 内容来源:优先当前草稿;无草稿则用最新已发布版;皆无则空草稿。
- 副本始终为未发布草稿;复制成功后留在列表并刷新。
非目标
- 不自动发布副本。
- 不复制历史版本、实例、任务。
- 不跳转设计器。
2. 行为(SHALL)
- 入口:卡片「更多」→「复制」(位于「编辑基础」与「删除」之间)。
- 点击后直接执行(无二次确认);成功 Toast;刷新列表。
- 新名称:
{appName}复制。若超过 50 字:保留后缀「复制」,前缀截断使总长 ≤ 50。 - 复制字段:
- 应用:
groupId、iconUrl、description、initiatorScope、initiatorUserIds、adminScope、adminUserIds、status、orderNum、remark - 版本草稿:
formSchemaJson、flowTreeJson、advancedSettingsJson(深拷贝 JSON)
- 应用:
- 新应用仅有
version_no=1的draft;is_latest_published=0;列表无已发布版本标签。 - 租户隔离与创建应用权限一致(admin / super_admin)。
3. API
POST /web/admin/oa-approval/apps/{app_id}/copy
- 成功:返回新应用字典(与 create 一致),message「复制成功」。
- 源不存在:400「应用不存在」。
4. 前端
fetchCopyOaApp(id)inweb-admin/src/api/oaApproval.tsapps/index.vue:下拉项 +handleCopy;图标可用CopyDocument
5. 自检
- 无未决占位符
- 与口头确认一致(草稿优先 / 未发布 / 留列表)
- 范围仅应用复制,不涉及实例复制