From 6f1e0f0b982b8c4897bfcde15472cd8dd1711b17 Mon Sep 17 00:00:00 2001 From: wx Date: Thu, 7 May 2026 14:36:59 +0800 Subject: [PATCH] =?UTF-8?q?docs(frontend-bug):=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=9A=B4=E9=9C=B2=E7=9A=84=203=20=E4=B8=AA?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=85=B1=E6=80=A7=20BUG=20(2026-05-07)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 来源:D:/work/资源/WXWork/.../测试用例汇总.xlsx 1. 列表组件重置按钮需点两次(8 处复现:JQ-016/CT-005/ZH-005/YW-003/JD-003/EW-003/DD-006/TK-004)→ hl-ui 通用列表组件,reset 后未触发 fetchList 2. 景区批量改状态下拉框 v-model 不同步(JQ-024)→ el-select 显示值滞后 3. 合同方案新增找不到填写入口(HF-001)→ 路由/菜单/表单组件缺失,跟 HT-001 后端 BUG 可能同源 @mmg 看到请修复,不需要建工单。 --- ..._bug_contract_scheme_form_entry_missing.md | 61 +++++++++++ ...list_reset_button_requires_double_click.md | 102 ++++++++++++++++++ ...resource_batch_status_select_not_synced.md | 73 +++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 changelogs/2026-05/07_frontend_bug_contract_scheme_form_entry_missing.md create mode 100644 changelogs/2026-05/07_frontend_bug_list_reset_button_requires_double_click.md create mode 100644 changelogs/2026-05/07_frontend_bug_resource_batch_status_select_not_synced.md diff --git a/changelogs/2026-05/07_frontend_bug_contract_scheme_form_entry_missing.md b/changelogs/2026-05/07_frontend_bug_contract_scheme_form_entry_missing.md new file mode 100644 index 0000000..390ae78 --- /dev/null +++ b/changelogs/2026-05/07_frontend_bug_contract_scheme_form_entry_missing.md @@ -0,0 +1,61 @@ +--- +date: 2026-05-07 +type: frontend-bug +module: contract-scheme +priority: medium +notify: ["@mmg"] +status: pending +source: 测试用例汇总.xlsx (2026-05-07) +related_cases: [HF-001] +--- + +# 合同方案新增找不到填写入口 + +## 现象 + +测试用例 HF-001 "正常新增合同方案": + +> 步骤:1. 新增 → 2. 填写名称模板内容 → 3. 保存 +> 实际结果:**没找到相关的填写** + +## 推断方向(前端) + +可能是: +1. 合同方案管理菜单/路由缺失 +2. 菜单存在但点"新增"按钮没弹出表单 dialog +3. dialog 弹出来但内容空白(template 没渲染) + +## 后端确认 + +后端 hl-contract-service 的合同方案 admin 接口 **应当存在**(不然合同生成 HT-001 也会挂),具体接口路径可能是: + +- `POST /admin/contract/scheme/save`(按项目 SaveReqVO 命名习惯) +- `GET /admin/contract/scheme/page` + +如果后端接口缺失或路径变了,前端会找不到对应 API 来对接。 + +## 排查步骤 + +1. **检查 hl-ui 路由**:搜 `contract.*scheme` / `合同方案`,确认菜单项是否在 router 配置里 +2. **检查菜单权限**:admin RBAC 是否给当前账号开放了"合同方案"菜单 +3. **检查 dialog 表单组件**:是否引用了 `` 但组件文件不存在/import 错路径 +4. **后端 API 确认**:在 hl-ui 的 api 目录搜 `contractScheme` 看有没有对接接口 + +## 关联 BUG + +跟 HT-001 "合同生成网络错误" 可能同源 — 如果合同方案根本无法新增,那合同生成也无法选择方案 → 必然失败。 + +后端排查时一并看一下。 + +## 影响 + +- 合同模板配置流程整条断 +- 阻塞 HT-001 合同生成 BUG 的修复闭环(合同生成依赖方案) + +## 验收 + +- [ ] 进入"合同配置 → 合同方案"菜单 +- [ ] 点击"新增"按钮看到弹窗 / 表单页 +- [ ] 填名称 + 模板内容 → 保存成功 +- [ ] 列表能看到新增的方案 +- [ ] HT-001 合同生成时能选到这个方案 diff --git a/changelogs/2026-05/07_frontend_bug_list_reset_button_requires_double_click.md b/changelogs/2026-05/07_frontend_bug_list_reset_button_requires_double_click.md new file mode 100644 index 0000000..cb24b31 --- /dev/null +++ b/changelogs/2026-05/07_frontend_bug_list_reset_button_requires_double_click.md @@ -0,0 +1,102 @@ +--- +date: 2026-05-07 +type: frontend-bug +module: hl-ui-list-component +priority: medium +notify: ["@mmg"] +status: pending +source: 测试用例汇总.xlsx (2026-05-07) +related_cases: [JQ-016, CT-005, ZH-005, YW-003, JD-003, EW-003, DD-006, TK-004] +--- + +# 列表组件重置按钮需点两次(多模块共性 BUG) + +## 现象 + +测试报告里多个列表页(资源全模块 / 订单 / 退款)反复出现一致描述: + +> "条件清空,但未显示全部数据,还需要再次点击重置按钮" + +复现的列表页(已确认 8 处): + +| 模块 | 用例编号 | +|------|---------| +| 景区 | JQ-016 | +| 餐厅 | CT-005 | +| 组合备品 | ZH-005 | +| 物业 | YW-003 | +| 酒店 | JD-003 | +| 额外成本 | EW-003 | +| 订单 | DD-006 | +| 退款 | TK-004 | + +8 个列表页都中招 → 共性问题,**应该在 hl-ui 通用列表组件 / 公共 reset 方法里**。 + +## 推断根因 + +**第一次点重置**: +- 清空筛选表单的 v-model(`queryParams = {}`) +- ❌ 但**没有触发 `fetchList()` 重新请求** +- 结果:表单看起来重置了,但列表展示的还是上一次筛选后的数据 + +**第二次点重置**: +- 重置(已经是空表单了) +- 触发 `fetchList()` → 拿到全量数据 → 列表更新 + +## 修复方向(前端) + +### 错误写法 ❌ + +```js +// 假设当前实现类似: +function resetQuery() { + queryParams.value = {} + // 漏了!没调 fetchList +} +``` + +或者: + +```js +// 重置和搜索分开两个按钮,重置只清空不搜索 +重置 +搜索 + +function resetForm() { + // 只 reset 表单,不调列表 + proxy.$refs.queryRef.resetFields() +} +``` + +### 正确写法 ✅ + +```js +function handleResetQuery() { + // 1. 清空表单(含 dataRange 数组) + proxy.$refs.queryRef.resetFields() + queryParams.value.pageNum = 1 + // 2. 立即触发列表刷新(不要让用户再点一次) + fetchList() +} +``` + +或者用一个公共组合式函数 `useListQuery()` 统一封装重置 + 自动刷新。 + +## 影响 + +- 不阻断业务,但是用户体验问题,所有 list 页面都有 +- 测试反复反馈 → 应作为通用列表组件 P2 修 + +## 后端配合 + +无需后端配合,纯前端逻辑问题。 + +## 验收 + +- [ ] 在任意一个列表页点重置按钮 → 一次就能看到全量数据 +- [ ] 抽测 8 个用例编号对应的列表页全部修复 +- [ ] 抽测其他列表页(产品/资源剩余模块/小程序配置)确认无遗漏 + +## 不要建工单 + +按 wx 项目规则:前端 BUG/feature 都走 changelog 通知 mmg,**不在 wx/HL 或 wx/hl-ui 建工单**。 diff --git a/changelogs/2026-05/07_frontend_bug_resource_batch_status_select_not_synced.md b/changelogs/2026-05/07_frontend_bug_resource_batch_status_select_not_synced.md new file mode 100644 index 0000000..93989c7 --- /dev/null +++ b/changelogs/2026-05/07_frontend_bug_resource_batch_status_select_not_synced.md @@ -0,0 +1,73 @@ +--- +date: 2026-05-07 +type: frontend-bug +module: resource-scenic-batch-status +priority: low +notify: ["@mmg"] +status: pending +source: 测试用例汇总.xlsx (2026-05-07) +related_cases: [JQ-024] +--- + +# 景区批量改状态下拉框 v-model 显示不同步 + +## 现象 + +测试用例 JQ-024: + +> 1. 勾选多个景区 +> 2. 点击"批量更改状态" +> 3. 在下拉框里选择"下架" +> 4. **下拉框显示的还是"上架"**(用户选的"下架"看不到) +> 5. 点确定 → 实际状态改成下架(功能本身正常) + +测试人备注:"**功能正常,但有小问题**"。 + +## 根因(推断) + +el-select / n-select 的 **v-model 异步同步问题**,跟 memory `experience/backend-dev/nselect-tag-mode-stringify-race.md` 类似但场景不同。 + +可能的代码模式: + +```vue + + + + +``` + +如果 `batchStatus` 在 `el-dialog` open 前没初始化(或 dialog 复用时没 reset),v-model 拿不到当前 option 对应的 label,下拉框就显示前一次的值。 + +或者 `batchStatus` 是从父组件 `props` 传入但没用 `v-model:`(双向绑定缺一半)。 + +## 修复方向(前端) + +### 检查点 + +```js +// 1. dialog 打开时显式重置 batchStatus +function openBatchDialog() { + batchStatus.value = '' // 或 null + dialogVisible.value = true +} + +// 2. 选项改变时确保赋值 +function handleStatusChange(val) { + batchStatus.value = val // 不要在这里做条件赋值 +} + +// 3. 检查是不是用了 v-model:value 而不是 v-model + // 正确 + // 漏了 input 事件就坏 +``` + +## 影响 + +- 不阻断业务(用户能选成功,确定后状态对) +- 仅显示层 BUG,体验问题 + +## 验收 + +- [ ] 打开批量改状态 dialog,下拉框选项默认空 +- [ ] 选"下架" → 下拉框显示"下架" +- [ ] 关掉重开 dialog → 下拉框回到空