Files
shanxia2.0/docs/crm-migration/plans/contract/08-verify.md
T
2026-06-01 08:21:21 +08:00

109 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 合同管理模块 — 08 验证清单
> 阶段 E 步骤 28 产出 | 日期:2026-05-31
> **代码审查 + 构建验证**已完成;**浏览器联调手测**项建议在测试环境复验。
---
## 构建与注册
- [x] `pnpm build` 通过(web-admin)
- [x] 路由注册:`crm.py` → `register_contract_routes` + `register_contract_sub_routes`
- [x] 前端 API 基路径 `/web/crm/contract`,HTTP 动词对齐 Java(GET/PUT/DELETE/POST)
- [x] DDL 已在测试库执行(步骤 14)
---
## 功能验证(代码对齐)
### 列表 Tab
- [x] 7 个 Tab:`my` / `all` / `submitted` / `approved` / `executing` / `finished` / `invalid`
- [x] `handleViewChange` 设置 `ownerUserId` / `pendingApprovalUserId` / `approvedByUserId` / `status`
- [x] 非「已作废」Tab 默认 `excludeStatus=invalid`(`getList`)
- [x] 后端 `build_query_wrapper` 支持上述筛选字段
- [x] 统计卡片由当前页列表前端聚合(`loadStatistics`)
- [ ] Tab 切换后数据与权限角色一致(手测)
### 筛选 / 分页 / 展开
- [x] 筛选区:合同编号/名称/客户、类型、状态、审批状态、签订日期
- [x] 快捷日期 + 快速搜索 OR 三字段
- [x] 查询/重置触发 `getList`,分页绑定 `pageNum` / `pageSize`
- [x] 行展开懒加载产品明细(`getContractDetail`)
- [ ] 筛选组合与导出结果一致(手测)
### 审批流
- [x] `ApprovalDialog`:提交 / 批量提交 / 通过 / 驳回 / 撤回
- [x] 前端状态校验:仅 `draft` 可提交;对话框 Fresh Mint
- [x] 后端:`submit_contract_approval` / `batch_submit` / `withdraw` + `approve_contract_by_contract_id`
- [ ] 多步审批:选下一步审批人、会签/或签(手测;当前对话框为顺序多选审批人)
- [ ] 待审批 Tab 仅见 `canApprove=true` 行(手测)
### 执行 / 完成 / 作废
- [x] `ExecuteDialog`:开始执行(`startExecute`)/ 完成(`finishContract`)
- [x] `InvalidDialog`:作废原因字典 + 二次确认 + 回款/开票风险提示
- [x] 状态机:approved→executing→finished;非 finished 可 invalid
- [ ] 执行汇总金额与详情一致(手测)
### 附件 / 导出
- [x] `UploadDialog`:分类上传、MinIO、保存 `uploadAttachments`
- [x] 列表导出 `exportContract` → `POST /export` xlsx
- [ ] 导出列与字典翻译正确(手测)
- [ ] 附件预览/下载/删除(手测)
### 跨模块
- [x] 报价转合同:`createFromQuote` + `quote.to_contract` 已恢复
- [ ] 商机转合同、续签、签约、批量分配负责人(手测)
- [ ] 回款/开票金额回写 `updateReceivedAmount` / `updateInvoiceAmount`(手测,依赖回款/开票模块)
---
## UI 合规(Fresh Mint)
- [x] 列表单 `panel-top` 标题「合同管理」
- [x] 工具栏「已选 N 项」在前;仅首个主按钮 `type="primary"`
- [x] 4 子对话框 + 列设置/详情弹窗:`align-center`、`dialog-form-layout`、`order-module-dialog-mask`
- [x] 子对话框 `label-position="top"`;footer Close/Check 图标
- [x] 状态/审批状态列与详情:`el-tag` + `dictStore.getTagType`
- [x] 操作列 `fixed="right"`,`min-width="260"`
---
## 权限
- [x] `useContractPerm` + `hasContractPerm` 替代 `v-hasPermi`(列表/详情/变更/模板/审批子页)
- [ ] 测试角色勾选 `crm:contract:*` 后按钮可见性(手测)
---
## 子模块(变更 / 模板 / 审批独立页)
- [x] 后端 `crm_contract_sub_routes.py`:change / template / approval CRUD + export + transfer
- [x] 前端页面与 API 文件齐全(Fresh Mint 适配在步骤 7–10 完成)
- [ ] 变更提交/执行、模板启停、审批转办(手测)
---
## 回归
- [ ] 报价单列表「转合同」链路(手测)
- [ ] 客户详情弹窗引用合同 types 未破坏(手测)
- [ ] 产品/客户/报价模块未受影响(手测)
---
## 手测建议顺序
1. 登录测试租户 → 合同列表 7 Tab 各点一次
2. 筛选 + 分页 + 行展开产品
3. 草稿 → 提交审批 → 待审批 Tab 通过/驳回
4. 已通过 → 开始执行 → 完成
5. 另选合同 → 作废
6. 上传扫描件 → 导出 xlsx
7. 报价单 → 转合同