修复配送合同候选范围与失效联动
This commit is contained in:
@@ -185,6 +185,8 @@
|
||||
|
||||
合同气瓶必须属于合同用户、处于可用状态且未报废;订单只能使用有效合同中仍绑定的气瓶。
|
||||
|
||||
合同气瓶绑定页面只允许选择草稿合同;已生效、已过期或已终止合同不进入绑定候选。合同管理列表仍展示全部生命周期状态。
|
||||
|
||||
### 6.6 气体配送订单
|
||||
|
||||
| 资源 | 路径 | 模式 | 已实现能力 |
|
||||
@@ -202,6 +204,8 @@
|
||||
|
||||
创建订单页面必须先选择配送合同,收货地址下拉仅展示该合同签约用户的地址。地址选项以完整地址为主文案并标记默认地址;存在默认地址时自动选中,切换合同时清空原地址。若合同用户没有可用地址,页面应明确引导先维护用户地址并禁止提交。
|
||||
|
||||
订单合同候选必须同时满足“生效中、已到生效时间、尚未到期且到期时间有效”。草稿、未到生效时间、已到期和已终止合同不得进入订单候选;没有可履约合同时应引导管理员先启用或续签合同并禁止提交。
|
||||
|
||||
订单状态机如下:
|
||||
|
||||
```text
|
||||
|
||||
64
docs/项目文档_配送合同候选范围修复_v1.0.md
Normal file
64
docs/项目文档_配送合同候选范围修复_v1.0.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# 项目文档_配送合同候选范围修复_v1.0
|
||||
|
||||
## 1. 项目概述
|
||||
|
||||
本次修复平台总后台业务表单直接加载全部配送合同的问题。合同管理列表需要展示完整生命周期,但创建订单和绑定合同气瓶属于受状态约束的业务操作,候选范围必须与服务端最终校验一致。
|
||||
|
||||
## 2. 业务规则
|
||||
|
||||
- 创建配送订单只显示当前可履约合同:状态为“生效中”、当前时间不早于生效时间、到期时间存在且当前时间早于到期时间。
|
||||
- 草稿、未到生效时间、已过期、已终止和缺少到期时间的合同不进入订单候选。
|
||||
- 绑定合同气瓶只显示草稿合同。
|
||||
- 合同管理列表不携带候选用途参数,继续展示全部合同。
|
||||
- 没有可用候选时,页面显示对应业务引导并禁止保存。
|
||||
- 页面重新加载后,严格筛选结果中不存在的旧合同选择会被清空。
|
||||
- 服务端创建订单和绑定气瓶时继续执行最终校验,前端筛选不构成安全控制。
|
||||
|
||||
## 3. 接口兼容
|
||||
|
||||
`GET /gasorder_contract` 新增可选查询参数 `candidate`:
|
||||
|
||||
- 不传:合同管理全量列表,保持原行为。
|
||||
- `candidate=order`:仅返回当前可履约合同。
|
||||
- `candidate=binding`:仅返回草稿合同。
|
||||
|
||||
未新增数据库字段、表或迁移,也未修改合同数据。
|
||||
|
||||
## 4. 关键文件
|
||||
|
||||
```text
|
||||
backend/api/internal/logic/platform/gasorder/gasorder.go # 合同候选过滤与订单最终校验
|
||||
backend/api/internal/logic/platform/gasorder/gasorder_test.go # 五类合同状态与查询条件测试
|
||||
frontend/platform_admin/src/api/resources.ts # 两类合同候选配置与中文提示
|
||||
frontend/platform_admin/src/views/resource/use-resource-relations.ts # 字段级筛选参数
|
||||
frontend/platform_admin/src/views/resource/use-resource-relation-linkage.ts # 失效选择清理和空候选阻断
|
||||
```
|
||||
|
||||
## 5. 变更记录
|
||||
|
||||
操作时间:2026-08-13
|
||||
|
||||
操作类型:修复
|
||||
|
||||
影响模块:配送合同、配送订单、合同气瓶
|
||||
|
||||
操作前状态:订单和合同气瓶表单均展示全部合同,用户选中后才由服务端拒绝。
|
||||
|
||||
操作后状态:不同业务表单只展示当前允许操作的合同,并继续保留服务端最终校验。
|
||||
|
||||
风险评估:管理列表和既有无参数调用保持兼容;候选接口只收窄可选数据,不修改数据事实。
|
||||
|
||||
## 6. 验证方式
|
||||
|
||||
```bash
|
||||
cd backend/api
|
||||
go test ./internal/logic/platform/gasorder
|
||||
go test ./...
|
||||
go vet ./...
|
||||
|
||||
cd frontend/platform_admin
|
||||
npm run gasorder-contract-candidates:check
|
||||
npm run type:check
|
||||
npm run contract:check
|
||||
npm run build
|
||||
```
|
||||
Reference in New Issue
Block a user