changelog: 更正保险方案结束天-1说明(是约定值非BUG)

-1表示"到行程最后一天",前端需展示处理而非数据库修改。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot 2026-03-22 21:26:39 +08:00
父节点 907d947616
当前提交 3eaef6732b

查看文件

@ -1,42 +1,45 @@
# 保险方案编辑页 — 前端表单校验问题
# 保险方案编辑页 — 结束天显示为 -1 的处理
**日期**: 2026-03-22
**页面**: 保险管理 → 保险方案 → 编辑方案
**类型**: 前端 BUG
**类型**: 前端展示优化
---
## 问题描述
保险方案编辑页面,保险段配置中的数值字段缺少前端校验,允许输入负数或不合理值
保险方案编辑弹窗中,第2段的"结束天"显示为 `-1`,看起来像数据错误,但实际上 **`-1` 是后端约定的特殊值,表示"到行程最后一天"**
### 需要修复的字段
数据库中 `day_offset_end = -1` 表示该段覆盖到行程结束,后端投保时会自动用方案的 `total_days` 替换 `-1`
| 字段 | 当前问题 | 校验规则 |
|------|---------|---------|
| 起始天 | 可输入负数或0 | `>= 1`,整数 |
| 结束天 | 可输入负数(截图中出现 `-1` | `>= 起始天`,整数 |
| 排序 | 可输入负数 | `>= 0`,整数 |
## 前端需要处理
### 交叉校验
- **结束天 >= 起始天**:结束天不能小于起始天
- **段之间不能重叠**第2段的起始天应 > 第1段的结束天
### 1. 编辑表单中展示 -1 的处理
### 建议前端处理方式
**方式A推荐**:将"结束天"改为下拉或单选:
- 选项1: 输入具体天数(`<el-input-number :min="起始天"`
- 选项2: "到行程结束"(提交时传 `-1`
1. `<el-input-number>` 组件设置 `:min="1"` 防止负数输入
2. 结束天的 `:min` 动态绑定为当前段的起始天值
3. 保存前做表单级校验,提示具体哪个段有问题
**方式B简单**:在结束天输入框旁显示提示文字:
- 当值为 `-1` 时,显示"(到最后一天)"
- `<el-input-number>``:min` 设为 `-1`(允许 -1 这个特殊值)
### 后端校验(已加)
### 2. 列表中展示
如果列表展示了结束天,`-1` 应显示为"最后一天"或替换为方案的 `totalDays` 值。
后端已增加 `@Min` 校验,如果前端没拦住,后端会返回 400
```json
{
"code": 400,
"message": "参数校验失败",
"data": { "endDay": "结束天不能为负数" }
}
```
### 3. 其他表单校验仍建议加上
- 起始天:`>= 1`
- 排序:`>= 0`
- 结束天为正数时:`>= 起始天`
建议前端也加上校验,避免用户填完才发现不对。
## 数据说明
当前所有多段方案的最后一段 `day_offset_end` 都是 `-1`,这是**正常数据,不需要修改数据库**
| 方案 | 第1段结束天 | 第2段结束天 |
|------|-----------|-----------|
| 4日行程 | 2 | -1=4 |
| 5日行程 | 2 | -1=5 |
| 6日行程 | 3 | -1=6 |
| 7日行程 | 3 | -1=7 |
| 8日行程 | 4 | -1=8 |