3.5 KiB
前端 BUG 通知:产品行程编排 DAY 1「开始」集合地渲染缺字
类型: 前端 BUG (后端零改动)
关联: 经验 nselect-tag-mode-stringify-race.md (2026-04-20 同类) + two-render-paths-same-data-isolate-component-bug.md
日期: 2026-04-30
前端处理者: yst / mmg
复现路径: web.test.1814.love:9443/product/edit?id=2045018534152478721 → Step 2 行程编排 → DAY 1 "专车接机+自由活动"
现象
DAY 1 卡片:
- 「开始」(集合地) 输入框显示
海拉尔← 缺"区"字 - 「结束」(解散地) 输入框显示
海拉尔区← 正常
二者使用同一个 CitySelect 组件,同一份数据,两处渲染结果不一致。
后端排查 (零问题)
DB 实际值 (192.168.100.236 / hl_product_service / product_itinerary_day)
gather_place: {"name": "海拉尔区", "level": "district", "adcode": "150702", "fullPath": "内蒙古自治区/呼伦贝尔市/海拉尔区", "levelName": "区/县"}
dismissal_place: {"name": "海拉尔区", "level": "district", "adcode": "150702", "fullPath": "内蒙古自治区/呼伦贝尔市/海拉尔区", "levelName": "区/县"}
两字段值完全相同,name 都是"海拉尔区"。
后端 RespVO 结构 (ItineraryDayRespVO.java:24-26)
private Object gatherPlace; // line 24
private Object dismissalPlace; // line 26
两字段都是 Object 类型对称返回,JSON 输出格式一致。后端零嫌疑。
根因
memory 经验 experience/backend-dev/nselect-tag-mode-stringify-race.md (2026-04-20) 直接命中:
CitySelect 集合地/解散地下拉框显示 JSON 串/原 ID 而非中文。三件套触发: tag 开 + value 是 JSON 对象 + options 异步。不影响保存仅显示。
本次"海拉尔" vs "海拉尔区" 缺字也是同根: CitySelect tag 模式下 watch 异步,在 options 还没加载完时,直接对 value.name 字符串做了截断/部分匹配显示。两个字段渲染时机不同导致一处对一处错。
前端待修
复现步骤
- 进入产品
2045018534152478721编辑页 - 切到 Step 2 行程编排
- DAY 1 "专车接机+自由活动" 展开
- 看「开始」和「结束」两个输入框 → "开始" 显示
海拉尔(缺字),"结束" 显示海拉尔区(正常)
待排查方向
参考 4-20 经验文件,可能修复方向:
- CitySelect 组件
value与options加载完成的同步问题 — 等 options 都 ready 再渲染 tag - tag 模式 + JSON value 对象 + 异步 options 三件套是否其中之一可去掉
- 显示层用
fullPath兜底而不是name?或者用name时确保完整字符串不被截断 - 4-20 那次只修了部分场景(可能某个组件路径或某个父组件的 props 传递),这次新的复现说明遗漏
验证
修完后:
- 重新进入同一产品编辑页
- DAY 1 "开始" 和 "结束" 都应显示
海拉尔区 - 切换 DAY 2/3/4/5 同样验证
- 切换 Step 后再回 Step 2 验证 watch 复测
- 保存后 reload 页面再验证
后端不动
后端 RespVO 字段类型对称,DB 数据正确,gather_place 与 dismissal_place 完全等价。本次纯 UI 渲染 BUG,后端零改动。
关联经验沉淀
experience/backend-dev/nselect-tag-mode-stringify-race.md— 4-20 同根问题experience/bug-analyst/two-render-paths-same-data-isolate-component-bug.md— 同对象两处渲染不一致 = 锁定组件 BUGfeedback_frontend-bug-no-issue-changelog-only.md— 前端 BUG 不建工单只发 changelog