Files
shanxia2.0/docs/superpowers/specs/2026-09-30-crm-contract-restore-design.md
T
2026-10-02 09:28:00 +08:00

1.5 KiB
Raw Blame History

合同管理 — 作废恢复

日期: 2026-09-30
状态: 已实现
界面模式: P01 标准列表 + 详情抽屉
参考: InvalidDialog.vue;invalid_contract;加油登记 restore 模式

目标

在「合同管理」为已作废(invalid)合同提供「作废恢复」:恢复为草稿(draft),清空作废原因/时间,需重新提交审批。

已确认规则

# 规则 决策
D1 可恢复条件 仅 status === 'invalid'
D2 恢复后状态 status=draft;清空 invalid_reason / invalid_time;approval_status=None;invalidate_all_approvals(与再编辑回草稿对齐)
D3 入口 详情抽屉 / 详情页 hero:已作废时显示「作废恢复」;列表工具栏:勾选恰好 1 条且为已作废时可点
D4 确认文案 「确定恢复该合同为草稿吗?恢复后需重新提交审批。」
D5 作废弹窗文案 去掉「无法恢复」;改为可恢复说明
D6 范围 仅 web-admin;不改库表结构

非目标

  • 恢复为已审批 / 执行中 / 作废前状态
  • 批量多选恢复
  • 小程序

API

路径 说明
PUT /web/crm/contract/restore body: { id };仅 invalid → draft;否则 400

前端行为

  • 详情:status === 'invalid' 显示「作废恢复」,隐藏「作废」
  • 列表:ids.length === 1 且选中行 status === 'invalid' 时工具栏可点
  • 成功后刷新列表 / 详情;作废记录区块随字段清空而不再展示