20260906214757
This commit is contained in:
1 parent
3b03eccdb5
commit
78825797e7
4 files changed
+950
-707
No files matched your search
@@ -0,0 +1,63 @@
|
||||
# 2026-09-06
|
||||
|
||||
## fms-vue dashboard 列表页布局重构:改为分层白卡 + 灰缝
|
||||
|
||||
背景:`src/views/dashboard/index.vue` 原为「单张白卡 + 内部 4 条 border-bottom 硬切分区」,
|
||||
违反 `layouts/DefaultLayout.vue` 注释里定下的约定(分层白卡 + 卡间留灰缝,不用 border 画分隔线)。
|
||||
另外 search-area / preview-bar / list-footer 三处同刷 `--fms-table-header-bg`,底色分层失效。
|
||||
|
||||
改动:
|
||||
- 页面根 `.dashboard-page` 去掉白卡样式,改为 `flex column + gap: 8px`(灰缝)承载两张卡
|
||||
- 卡片 1 `.filter-card`:筛选 / 操作区(方案 A 搜索条 + 高级搜索面板;方案 B 操作栏 + 浮层)
|
||||
- 卡片 2 `.table-card`:操作栏(仅方案 A)+ 表格 + 分页,`flex:1 + min-height:320px` 内部滚动;
|
||||
min-height 兜底,高级搜索展开挤压空间时由 `.fms-content` 纵向滚动,避免表格被压扁
|
||||
- 删除常驻 40px 的 `preview-bar` 调试条;两种布局方案改由 URL query 控制:`?layout=popover`
|
||||
(layoutMode 由 ref 改为可写 computed,读写路由 query)
|
||||
- 删除全部 `border-bottom` 分隔线与 3 处 `--fms-table-header-bg` 灰底
|
||||
- 留白改由各区块自身承担(search-bar / action-bar / advanced-panel),卡片不再设 padding,
|
||||
避免方案 B 下操作栏 padding 与卡片 padding 叠加
|
||||
- 表格区 padding 14px → 16px,与其它区块对齐
|
||||
|
||||
验证:oxlint 0 warning 0 error;用 `vue/compiler-sfc` 跑 parse + compileScript + compileTemplate 通过。
|
||||
|
||||
未处理(本次用户只要求改布局结构,已在回复中列出):
|
||||
- 分页器与表格未联动:dataSource 恒 1w 行全量渲染,切页无反应
|
||||
- `min-width: 1040px` + `overflow: hidden`,窄屏内容被裁且无法横向滚动
|
||||
- quick-search 固定 320px + space-between,中间大片留白
|
||||
- 方案 A / B 两套模板重复 quick-search 与 advanced-grid 代码块,未抽组件
|
||||
|
||||
## dashboard 列表页布局:第二轮讨论 + 清空重建
|
||||
|
||||
定位拍板:dashboard = **列表布局样板**(不是工作台),后续 `FmsModuleListPage` 跟进它的结构;
|
||||
本轮只动 dashboard,业务页下一轮再说。
|
||||
|
||||
纵向预算(1366×768,浏览器可视高约 640px,实测值:顶栏 40 / 页签 40 / 控制高 28 /
|
||||
表格行高 30 / 表头 34):扣完顶栏+页签+padding,**页面可用 544px**。其中分页 44 +
|
||||
操作栏 48 + gap 8 必须留,表格保底 8 行需 274 → **筛选区(含标签行)总预算仅 170px**。
|
||||
|
||||
关键结论(推翻了「平铺 vs grid 是主要矛盾」的第一轮判断):
|
||||
- 平铺式与 grid 式只差约 1 行(40px),是次要矛盾;真正的分水岭是
|
||||
**挤压 vs 浮层,差 140px(约 4 行表格)**
|
||||
- 用户确认填条件时**需要同时看表格** → 方案 B(popover 浮层)出局
|
||||
- 因此设计目标改为:展开态下表格仍保证 7~8 行可见、分页条不被滚走
|
||||
|
||||
三条硬约束:
|
||||
1. **列密度决定行数**——平铺式真正的价值不是「少点击」,而是同样宽度塞更多字段、
|
||||
从而同样高度少换行。现状 grid `minmax(240px,1fr)` 在 1040px 下只有 **3 列**,
|
||||
12 个条件要 4 行超预算;按字段类型给宽度(select 120 / text 160 / date-range 235)
|
||||
可排到 **5 列**、12 项压进 3 行
|
||||
2. **展开后不另起底部操作条**(demo.html 的 `.expanded-actions` 占 48px,近 1/3 预算);
|
||||
查询/重置/展开按钮贴首行右侧
|
||||
3. **溢出时滚动的是筛选区,不是整页**——现状 `.table-card` 的 `min-height:320px`
|
||||
把挤压转成 `.fms-content` 整页滚动,分页条被滚走,违背「边调边看」前提。
|
||||
原则:**筛选区可以委屈,表格和分页不能**
|
||||
|
||||
遗留待定:「常用条件」从哪来(查询字段来自 `s_field_query` 后台配置,前端写死不了),
|
||||
候选:按 `b_xh` 取前 N / 配置加常用标记 / 记住用户上次展开的条件。
|
||||
|
||||
改动:按用户要求**删除 dashboard 中除表格外的全部代码**——查询区(queryItems /
|
||||
quick-search / 高级搜索 / 已选标签)、操作栏、分页、A/B 两套布局与 `?layout=popover`
|
||||
URL 切换、相关 import 与样式全部移除,只保留 columns / dataSource / rowClassName +
|
||||
一张白卡承载 FmsTable。文件 591 → 139 行。
|
||||
验证:oxlint 0 warning 0 error;`vue/compiler-sfc` parse + compileScript +
|
||||
compileTemplate + compileStyle 均通过。
|
||||
Reference in new issue
Block a user