diff --git a/_self/manager_meetings.md b/_self/manager_meetings.md index 3e83701..c10d765 100644 --- a/_self/manager_meetings.md +++ b/_self/manager_meetings.md @@ -43,6 +43,23 @@ | ⚠️ 发现数据不一致 (本轮不修, 仅记录) | DB 实际 current_stage 值是: 0/已结算/已结题/待整改/待监管/监管通过 (6 种); DDL 注释写 7 种 (未执行/执行中/监管通过/待整改/待结算/已结算/已结题); 前端 select 是 4 种 (未执行/执行中/已执行/已完结) — **三者全不一致**! 用户即使 mapper 修了, 也筛不到任何 stage 因为 select 选项不在 DB 实际数据中. 待 P1#7 一并修. | | 前端不动 | `q` 的 8 项字段保持原样 (空字符串 / Long / Date 都有), Spring 默认 Converter 会把空字符串绑成 null, mapper `` 跳过, 行为正确 | +### 第五轮: 恢复会议ID + 第?期 filter (commit pending) + +> **修订**: 第四轮前后我曾误以为 `会议ID` / `第?期` 是用户新增字段不在原型, 一度删除. **用户澄清两个字段原型中都有, 必须保留**. 此轮修复: +> - `Meetings.vue:8` 恢复 `` (el-input, q.meetingId, 精确匹配 meeting_id PK) +> - `Meetings.vue:10` 恢复 `` (**el-input-number, 不是 el-input** — 跟用户原话 "应该是 el-input-number" 对齐) +> - `Meetings.vue:142-145` `q` reactive 加回 `meetingId:''` + `periodNo:''` 字段 +> - `Meetings.vue:206-209` `reset()` 加回 `meetingId:''` + `periodNo:''` +> - `BizMeetingMapper.xml:41, 43` mapper `` 块本就有, 这次没动 (第三轮已加) + +| 验证 | 结果 | +|---|---| +| `q.meetingId = '14'` → 后端 `meeting_id = 14` | ✅ 1 行 (DB 实测) | +| `q.periodNo = 1` → 后端 `period_no = 1` | ✅ 1 行 (DB 实测) | +| 留空 (q.meetingId='', q.periodNo='') → 后端 null, mapper `` 跳过 | ✅ 不影响其他筛选 | +| el-input-number `:min="0" :precision="0"` | ✅ 输入非整数会被自动纠正; 留空显示空 (Spring 收到 null) | +| §10 #2 / #11 同步更新 | #2 (删 filter) ❌ → ✅ 加回保留; #11 (改 el-input-number) ✅ 本轮同时修 | + --- ## 0. 4 跳定位 (铁律: 不按名字猜) @@ -387,7 +404,7 @@ CREATE TABLE `biz_meeting` ( | # | 问题 | 文件 | 修复建议 | 严重度 | |---|---|---|---|---| | 1 | **所有筛选不生效** (7 项) — mapper `` 空 | `BizMeetingMapper.xml:39-40` | 加 8 个 `` 条件: 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** | +| 2 | **`meetingId` 列让用户看/筛 PK** | `Meetings.vue:8, 49` | ~~删 filter~~ — **用户澄清原型中有, 保留 filter + 列** (本轮加回) | ~~**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修 | | 5 | **实体无 `remark` 字段** — 前端 3 处 silent fail | `BizMeeting.java` + `BizMeetingMapper.xml` UPDATE | 加 `private String remark` + getter/setter + mapper UPDATE 加 `remark = #{remark},` + INSERT 加 `remark,`; 或前端 3 处全删 (业务可能不需要) | **P0** | @@ -396,7 +413,7 @@ CREATE TABLE `biz_meeting` ( | 8 | **详情 dialog 缺字段** (create_time / org_name / supervision_* / labor_signed / invitation_url / schedule_url) | `Meetings.vue:91-103` | el-descriptions 加 5-8 行; URL 字段加 `` 链接 | **P1** | | 9 | **`totalPeriods` 永远 1** — MeetingNew.vue 没让填 | `MeetingNew.vue` (新建表单) | MeetingNew.vue 加"总期数"字段 (用户填, INSERT 时一起写); 列表列保留 | **P1** | | 10 | **批量提交无事务/无批量 endpoint** | `Meetings.vue:271-273` | 后端加 `PUT /business/meeting/batch?ids=...` + `@Transactional`; 前端 for 循环改成单次调用 | **P2** | -| 11 | **filter 第?期 type=el-input 应是 el-input-number** | `Meetings.vue:10` | 改 `` | **P2** | +| 11 | **filter 第?期 type=el-input 应是 el-input-number** | `Meetings.vue:10` | 改 `` | ~~**P2**~~ ✅ 第五轮同 commit 修 | | 12 | **filter 8 项挤一行** (屏幕窄乱) | `Meetings.vue:6-37` | 拆 2 行, 或 grid-template-columns: repeat(4, 1fr) | **P2** | | 13 | **状态回滚无校验** (任何 stage → "执行中") | `Meetings.vue:244-251` | 加 if (currentStage === '未执行') 才能提交, 否则 ElMessageBox 提示 | **P2** | | 14 | **数据隔离缺失** (selectList 无 lead_user_id 过滤) | `BizMeetingMapper.xml:37-42` | 加 `and project_id in (select project_id from biz_project where lead_user_id = #{params.leadUserId})` (需要后端传入当前 user_id) | **P2** (生产前必修) | @@ -450,4 +467,5 @@ CREATE TABLE `biz_meeting` ( - 第四轮 (commit a081da8): MeetingNew.vue "期数" 文案改 "请填写第几期" - 第五轮 — Meetings.vue 第一波修复 (commit 08d81e9): onCopy 改 bizAdd + 三处 __silentError - 第五轮 — Meetings.vue style-alignment (commit 6d4f1e6): 删 inline margin, batch-bar 顺序对齐, 加 .date-sep -- 第五轮 — Meetings.vue 批量按钮去 plain (commit 6774c44): disabled 顺色修 + 提示 margin-left:auto \ No newline at end of file +- 第五轮 — Meetings.vue 批量按钮去 plain (commit 6774c44): disabled 顺色修 + 提示 margin-left:auto +- 第五轮 (续) — Meetings.vue 恢复会议ID + 第?期 filter (commit pending): 误删 2 个 filter 后用户澄清加回, 第?期同步改 el-input-number \ No newline at end of file diff --git a/ry-vue3/src/views/manager/Meetings.vue b/ry-vue3/src/views/manager/Meetings.vue index cd86498..5e3222d 100644 --- a/ry-vue3/src/views/manager/Meetings.vue +++ b/ry-vue3/src/views/manager/Meetings.vue @@ -5,8 +5,9 @@ + - + @@ -136,9 +137,9 @@ import { ref, reactive, onMounted } from 'vue' import { bizList, bizUpdate, bizAdd } from '@/api/public' import { ElMessage, ElMessageBox } from 'element-plus' -// ========== 筛选 (按实际 7 项: 项目编号/会议名称/第几期/会议时间/项目形式/当前阶段/备注) ========== +// ========== 筛选 (按实际 8 项: 项目编号/会议ID/会议名称/第?期/会议时间/项目形式/当前阶段/备注) ========== const q = ref({ - projectNo: '', meetingName: '', periodNo: '', + projectNo: '', meetingId: '', meetingName: '', periodNo: '', projectForm: '', currentStage: '', remark: '', startTime: '', endTime: '' }) @@ -202,7 +203,7 @@ async function load() { } function reset() { q.value = { - projectNo:'', meetingName:'', periodNo:'', + projectNo:'', meetingId:'', meetingName:'', periodNo:'', projectForm:'', currentStage:'', remark:'', startTime:'', endTime:'' }