fix(shopExpressTemplateDetail): 修正配送区域多选字段对接后端机制
- model中省市多选字段由provinceIds/cityIds改为regionMode/regionIds - RegionMultiSelect组件去除update:provinceIds事件,改仅emit update:value - 编辑弹窗中城市选择变化同步更新form.regionIds和form.regionMode字段 - 回显数据时从regionIds拆分赋值,不再使用provinceIds/cityIds - 列表页customRender展示使用record.regionIds反查城市名 - 解决前端提交字段与后端实体不匹配导致数据未保存问题 - 确保本次改动完全兼容后端现有regionMode/regionIds机制,无需后端改动
This commit is contained in:
@@ -23,6 +23,20 @@
|
||||
- 新增 `h` 函数 import。
|
||||
|
||||
### 待办 / 风险
|
||||
- **后端需同步改造**:表加 `province_ids` / `city_ids`(varchar 逗号分隔),接口 add/update 接收这两个字段。前端已按此约定提交,后端未改则数据落不了库。
|
||||
- antd 为 v4,`var(--ant-color-border)` 在暗色下可能回退浅灰(边框略浅,不影响功能);如要完美暗色适配可后续改 less 变量。
|
||||
- 构建验证(vite build)已触发,待结果确认无编译错误。
|
||||
- 构建验证(vite build)已通过。
|
||||
|
||||
## ⚠️ 重大修订(同日):前端字段名与后端不匹配,导致"没存进库"
|
||||
|
||||
### 根因
|
||||
- 后端 `ShopExpressTemplateDetail` 实体**已有**配送区域多选机制:`regionMode`(0=全国 / 1=指定配送白名单 / 2=不发货黑名单)+ `regionIds`(逗号分隔的 6 位城市编码串)。
|
||||
- 旧代码 `provinceId`/`cityId` 是单值历史字段,已被迁移脚本 `sql/shop_express_template_detail_region.sql` 迁成 `regionMode=1, regionIds=城市编码`。
|
||||
- 我第一版前端提交的是 `provinceIds`/`cityIds`,后端实体无此字段 → MyBatis-Plus 自动忽略未知字段 → 看起来"没存没变化"。
|
||||
- ORM 是 MyBatis-Plus,add/update 用 `save()`/`updateById()` 自动生成 SQL,接收的是实体类本身(非 Param);新增字段只需在**实体加属性 + 表加列**,无需改 Mapper XML。
|
||||
|
||||
### 修复(对接后端已有的 regionMode/regionIds,无需后端改动)
|
||||
1. model:`provinceIds`/`cityIds` → 改为 `regionMode?`、`regionIds?`。
|
||||
2. `RegionMultiSelect` 组件:去掉 `update:provinceIds` emit,只 emit `update:value`(城市编码数组)。
|
||||
3. 编辑弹窗:城市选择变化 → `form.regionIds = 逗号串`、`form.regionMode = 1`(有选)或 `0`(全国);回显从 `form.regionIds` 拆出。
|
||||
4. 列表页:customRender 读 `record.regionIds` 反查城市名。
|
||||
- 结论:**本需求纯前端即可闭环,后端无需改**。城市编码(`regions-data.json` 的 city value,6位)与 `regionIds` 完全一致,下单校验 `DeliveryRegionChecker` 读 `regionIds` 直接生效。
|
||||
|
||||
Reference in New Issue
Block a user