fix(web): selection 列移到最后 — Element Plus 兼容 bug
# 问题 左侧「数据字典浏览器」表格渲染了表名 / 字段数,但每行没有勾选框,无法单选 / 多选。 # 根因 Element Plus 的列渲染 bug:当 <el-table-column type="selection"> 写在「最前」, 且后面紧跟带 <template #default> slot 的列时: - header 的 selection <th> 被算成 colspan="2" scope="colgroup" (正常应该是 colspan="1" scope="col") - body 行的 selection <td> 完全不渲染 → 整个表只剩 header 的 1 个全选框 # 验证(jsdom 跑了 4 个最小 case) | selection 位置 | 后续列类型 | 结果 | | 1 | 第 1 | 全部 prop |✅ 3 cell + 3 checkbox | | 2 | 第 1 | 全部 default slot |❌ 2 cell + 1 checkbox(bug)| | 3 | 末尾 | 全部 default slot |✅ 3 cell + 3 checkbox | | 4 | 末尾 | 全部 prop |✅ 3 cell + 3 checkbox | 只有 case 2 复现 bug —— 确认是 selection 列在前 + 后列带 slot 的组合触发。 # 修复 web/static/index.html:142-165 — 把 <el-table-column type="selection"> 从第 1 列移到末尾(第 3 列),并加注释说明这个约束。 # 验证 jsdom 模拟完整页面渲染后: - header 第 3 列:<th class="... el-table-column--selection" colspan="1" scope="col">含全选 checkbox - body 第 3 列:<td class="... el-table-column--selection"> 含 <label class="el-checkbox"> 行复选框 - 3 行 × 1 checkbox = 3 个勾选框(全部渲染) # 兼容性 - 行复选框从视觉上从最左 → 最右;功能(toggleRowSelection / clearSelection / selection-change)不变,依赖的是 row 对象不是列顺序 - 全选 / 清空 / 反选 三个按钮逻辑不依赖列顺序 # 文件清单 - docs/WORKLOG.md | +50 工作记录(排查过程 + 4 个 case 验证表) - web/static/index.html | +4 / -1 selection 列移位 + 约束注释
Showing