3.3 KiB
3.3 KiB
合同管理:审批中 / 已审批合同可再编辑并回草稿
目标
合同管理支持对「审批中」「已审批(尚未执行)」的合同再次编辑;编辑保存后合同变为草稿,可再次提交审批。
采用方案:编辑保存时回草稿(不新增独立「退回草稿」动作)。
可编辑状态
合同状态 status |
可否编辑 | 说明 |
|---|---|---|
draft |
是 | 含审批驳回后回草稿的现有行为 |
approving |
是 | 审批中;保存后作废当前审批流并回草稿 |
approved |
是 | 已审批且尚未开始执行 |
executing / finished / invalid |
否 | 不在本需求范围;走现有执行 / 变更 / 作废流程 |
前端行为
打开编辑前确认
对 approving、approved,在打开编辑弹窗 / 页面之前弹出确认;用户取消则不打开。
| 原状态 | 确认文案 |
|---|---|
approving |
编辑保存后将作废当前审批流,合同变回草稿,需重新提交审批 |
approved |
编辑保存后合同将变回草稿,需重新提交审批 |
draft(含已驳回)直接打开编辑,无需该确认。
入口
以下入口对 approving、approved 解锁编辑,并走上述确认:
- 合同列表工具栏「编辑」
- 合同详情页 / 查看弹窗「修改」
「提交审批」仍仅 draft 可用(保存回草稿后即可再提)。
未保存
仅打开编辑、未点保存时,合同状态保持不变。
后端行为(更新合同)
放宽更新接口状态校验:允许 draft / approving / approved 更新;其余状态仍拒绝(如「仅草稿 / 审批中 / 已审批(未执行)的合同才能修改」)。
保存成功时统一副作用:
status置为draftapproval_status清空(null)- 若原状态为
approving:清理待审批记录(复用现有撤回审批的清理逻辑,如delete_pending_approvals) - 若原状态为
approved:同样清空审批状态;历史审批记录可保留只读展示,不阻塞再次提审
创建与更新字段校验、产品明细等现有业务规则不变;仅放宽状态门禁并增加回草稿副作用。
不变范围
executing/finished/invalid不可通过本能力直接改合同- 运输计划等下游仍仅可关联
approved/executing;合同回草稿后暂时不可新建关联计划,属预期 - 不改审批通过 / 驳回 / 开始执行等既有流转
- 不新增独立「退回草稿」API(本方案在更新保存时完成状态回退)
改动落点(实现时)
backend/app/crud/crm/contract.py:update状态门禁;保存后回draft+ 清审批状态;审批中清理待审记录web-admin合同列表 / 详情 / 查看弹窗 / 表单入口:可编辑状态判断 + 打开编辑前确认文案
验收要点
- 审批中合同:确认 → 编辑 → 保存后为草稿,待审记录已清理,可再提交审批
- 已审批(未执行)合同:确认 → 编辑 → 保存后为草稿,可再提交审批;保存前下游仍可按原状态关联
- 执行中 / 已完成 / 已作废:仍不可编辑
- 草稿 / 已驳回:行为与现网一致,无多余确认
- 仅打开编辑未保存:状态不变