docs(manager_meetings): 第四轮修复记录 (P0#1 mapper 筛选), 待修复表 #1, 记 DB stage 数据不一致

This commit is contained in:
郭庆泰
2026-08-18 23:21:21 +08:00
parent 14757f359b
commit af4373b2dd
+11 -1
View File
@@ -33,6 +33,16 @@
| `.batch-bar` 属性顺序跟 People.vue 不一致 | `Meetings.vue:323` 改成 `margin-bottom: 12px; display: flex; gap: 8px; align-items: center;` (margin 提前) |
| 自查 (style-alignment 验证清单) | ✅ 1 层 page-card / ✅ breadcrumb / ✅ 无 desc / ✅ 无 h2 page-title / ✅ filter-form/batch-bar/pager 三 class / ✅ 蓝色全用 `var(--brand-primary)`#1890ff / ✅ 边框全 #f0f0f0#ebeef5 / ✅ 无 `:deep(.el-button--primary)` 大段覆盖 / ✅ el-pagination 在 .pager / ✅ el-form-item label 无冒号 / ✅ `<script>` 业务逻辑 100% 保留 (load/reset/view/edit/sub/copy/submit/batch 全在) |
### 第四轮: P0#1 selectList 加 7 个筛选 if (commit `14757f3`)
| 问题 | 修复 |
|---|---|
| **P0#1 mapper selectList `<where>` 空** — 8 项筛选全部不接 SQL, 用户选了筛选 + 点查找 = 返回全表 | `BizMeetingMapper.xml:37-50` 加 7 个 `<if>` 条件: project_no LIKE, meeting_id =, meeting_name LIKE, period_no =, project_form =, current_stage =, start_time >=, end_time <= (remark 字段跳过, 因为 biz_meeting 表无此列, 等 #5 一起修) |
| **Date 字段 Spring 绑定问题**`q.startTime = "2026-08-18 10:00:00"` 通过 axios GET 传到后端, Spring 默认 Converter 只支持 ISO-8601 (`2026-08-18T10:00:00`), 用空格分隔会 binding 失败 → 字段变 null → mapper `<if>` 跳过 → 实际筛选不生效 | `BizMeeting.java:30-33``@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")` 到 startTime/endTime (跟已有 @JsonFormat 并存, JSON 序列化 / Spring 绑定都支持); supervisionTime/createTime/updateTime 不加 (本次 filter 不涉及, 暂不扩大范围) |
| 实测 (DB 查询) | `LIKE %ZH-2026-6%` → 5 行; `current_stage = 已结算` → 1 行; `start_time >= 2026-03-01` → 4 行; `period_no = 1` → 1 行; 全部条件 `AND` 组合也工作 ✅ |
| ⚠️ 发现数据不一致 (本轮不修, 仅记录) | DB 实际 current_stage 值是: 0/已结算/已结题/待整改/待监管/监管通过 (6 种); DDL 注释写 7 种 (未执行/执行中/监管通过/待整改/待结算/已结算/已结题); 前端 select 是 4 种 (未执行/执行中/已执行/已完结) — **三者全不一致**! 用户即使 mapper 修了, 也筛不到任何 stage 因为 select 选项不在 DB 实际数据中. 待 P1#7 一并修. |
| 前端不动 | `q` 的 8 项字段保持原样 (空字符串 / Long / Date 都有), Spring 默认 Converter 会把空字符串绑成 null, mapper `<if>` 跳过, 行为正确 |
---
## 0. 4 跳定位 (铁律: 不按名字猜)
@@ -376,7 +386,7 @@ CREATE TABLE `biz_meeting` (
| # | 问题 | 文件 | 修复建议 | 严重度 |
|---|---|---|---|---|
| 1 | **所有筛选不生效** (7 项) — mapper `<where>` 空 | `BizMeetingMapper.xml:39-40` | 加 8 个 `<if>` 条件: project_no LIKE, meeting_name LIKE, period_no =, project_form =, current_stage =, start_time >=, end_time <=, business_id = (如果还用 meetingId filter, 应改成业务字段) | **P0** |
| 1 | **所有筛选不生效** (7 项) — mapper `<where>` 空 | `BizMeetingMapper.xml:39-40` | 加 8 个 `<if>` 条件: project_no LIKE, meeting_name LIKE, period_no =, project_form =, current_stage =, start_time >=, end_time <=, business_id = (如果还用 meetingId filter, 应改成业务字段) | ~~**P0**~~ ✅ 第六轮修 (commit 14757f3) |
| 2 | **`meetingId` 列让用户看/筛 PK** | `Meetings.vue:8, 49` | 删 filter (q.meetingId + 字段) + 删 el-table-column | **P0** |
| 3 | **`onCopy` bug** — PUT 0 行 + 误报成功 | `Meetings.vue:254-263` + `submitEdit()` | `onCopy` 改走 `bizAdd('meeting', { ...不带 meetingId })`; submitEdit 改成 `if (editForm.meetingId) bizUpdate else bizAdd`, 或拆成两个 dialog | **P0** ✅ 第二轮修 |
| 4 | **3 处缺 `__silentError`** (双 toast) | `Meetings.vue:235, 247, 272` | bizUpdate 调用加 `{ __silentError: true }`, catch 里手动 `ElMessage.error(e?.msg \|\| '...')` | **P0** ✅ 第二轮同commit修 |