fix(meetings): 恢复会议ID filter (原型有), 第?期 改 el-input-number
This commit is contained in:
@@ -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 `<if>` 跳过, 行为正确 |
|
||||
|
||||
### 第五轮: 恢复会议ID + 第?期 filter (commit pending)
|
||||
|
||||
> **修订**: 第四轮前后我曾误以为 `会议ID` / `第?期` 是用户新增字段不在原型, 一度删除. **用户澄清两个字段原型中都有, 必须保留**. 此轮修复:
|
||||
> - `Meetings.vue:8` 恢复 `<el-form-item label="会议ID">` (el-input, q.meetingId, 精确匹配 meeting_id PK)
|
||||
> - `Meetings.vue:10` 恢复 `<el-form-item label="第?期">` (**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 `<if>` 块本就有, 这次没动 (第三轮已加)
|
||||
|
||||
| 验证 | 结果 |
|
||||
|---|---|
|
||||
| `q.meetingId = '14'` → 后端 `meeting_id = 14` | ✅ 1 行 (DB 实测) |
|
||||
| `q.periodNo = 1` → 后端 `period_no = 1` | ✅ 1 行 (DB 实测) |
|
||||
| 留空 (q.meetingId='', q.periodNo='') → 后端 null, mapper `<if>` 跳过 | ✅ 不影响其他筛选 |
|
||||
| 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 `<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** |
|
||||
| 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 加 `<if test="remark != null">remark = #{remark},</if>` + INSERT 加 `<if test="remark != null and remark != ''">remark,</if>`; 或前端 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 字段加 `<a :href>` 链接 | **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` | 改 `<el-input-number v-model="q.periodNo" :min="1" />` | **P2** |
|
||||
| 11 | **filter 第?期 type=el-input 应是 el-input-number** | `Meetings.vue:10` | 改 `<el-input-number v-model="q.periodNo" :min="0" :precision="0" />` | ~~**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` | 加 `<if test="params.leadUserId != null">and project_id in (select project_id from biz_project where lead_user_id = #{params.leadUserId})</if>` (需要后端传入当前 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
|
||||
- 第五轮 — Meetings.vue 批量按钮去 plain (commit 6774c44): disabled 顺色修 + 提示 margin-left:auto
|
||||
- 第五轮 (续) — Meetings.vue 恢复会议ID + 第?期 filter (commit pending): 误删 2 个 filter 后用户澄清加回, 第?期同步改 el-input-number
|
||||
@@ -5,8 +5,9 @@
|
||||
<!-- ========== 筛选区 (与 People.vue 风格一致) ========== -->
|
||||
<el-form inline :model="q" class="filter-form">
|
||||
<el-form-item label="项目编号"><el-input v-model="q.projectNo" placeholder="" clearable style="width:140px" /></el-form-item>
|
||||
<el-form-item label="会议ID"><el-input v-model="q.meetingId" placeholder="" clearable style="width:140px" /></el-form-item>
|
||||
<el-form-item label="会议名称"><el-input v-model="q.meetingName" placeholder="" clearable style="width:160px" /></el-form-item>
|
||||
<el-form-item label="第?期"><el-input v-model="q.periodNo" placeholder="" clearable style="width:80px" /></el-form-item>
|
||||
<el-form-item label="第?期"><el-input-number v-model="q.periodNo" :min="0" :precision="0" style="width:140px" /></el-form-item>
|
||||
<el-form-item label="会议时间">
|
||||
<el-date-picker v-model="q.startTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" style="width:170px" />
|
||||
<span class="date-sep">至</span>
|
||||
@@ -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:''
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user