Files
OneOS-V2/docs/superpowers/specs/2026-07-26-complex-ledger-column-customization-design.md
2026-07-29 16:04:39 +08:00

7.9 KiB
Raw Blame History

OneOS V2 复杂台账列个性化设计说明

日期2026-07-26
状态:已完成产品需求与设计方案确认

1. 背景与目标

车辆资产页已经具备表格列宽调整、显示列选择和显示顺序调整能力,但 OneOS V2 设计规范尚未覆盖这些交互。本次将三项能力上升为所有复杂台账页面的通用规则,并以车辆资产页作为标准示例。

目标用户包括使用 OneOS V2 复杂台账的 PC/Web 用户,以及按规范设计、开发和验收台账页面的团队。用户的核心任务是根据当前工作内容调整列宽、选择显示列、排列列顺序,并在需要时恢复默认配置。

2. 范围

2.1 包含

  • PC/Web 复杂台账表格的列宽拖拽调整。
  • 可选业务列的显示与隐藏。
  • 可选业务列的显示顺序调整。
  • 单列宽度恢复和完整配置恢复默认。
  • 按“用户 + 台账页面”保存和恢复配置。
  • 鼠标、键盘和读屏操作规则。
  • 配置加载、保存失败及表格字段变更时的兼容处理。
  • 浅色和暗色主题下的状态表现。

2.2 不包含

  • 不新增或改变车辆资产页的业务字段。
  • 不改变复杂台账的筛选、分页、导入、导出或行内操作逻辑。
  • H5 单列卡片列表不提供列宽、列显隐和列排序操作。
  • 不跨台账复用列配置,也不在不同账号之间共享配置。

3. 规范组织

采用“分章主规则 + 总览摘要 + 交叉引用”的组织方式:

  • src/resources/design-system/DESIGN.md:增加强制原则摘要,声明复杂台账必须提供列宽、列显隐、列排序和恢复默认能力。
  • src/resources/design-system/chapters/03-components.md:承载完整组件与交互规则。
  • src/resources/design-system/chapters/06-accessibility.md:承载焦点、键盘替代、读屏播报规则。
  • src/resources/design-system/chapters/02-layout.md:说明 PC/Web 表格适用范围、H5 卡片排除规则及表格横向滚动关系。
  • 车辆资产页作为标准实现示例被引用,本次不修改其业务功能。

4. 信息架构与组件关系

列个性化由两类入口组成:

  1. 表头分隔线上的列宽调节把手,负责单列宽度调整和单列宽度恢复。
  2. 台账工具栏中的“列设置”按钮,打开设置弹层,集中处理列显隐、列顺序和完整恢复默认。

列设置弹层包含标题、恢复默认入口、列项目列表、取消和确认操作。每个可选业务列包含显隐复选框、拖拽把手及键盘上移/下移操作;固定列显示固定标识和限制说明。

5. 列宽调整

  • 表头分隔线提供约 12px 的可操作命中区。默认仅显示细分隔线,悬停、聚焦或拖动时用主题主色增强。
  • 拖动过程实时预览列宽,鼠标释放时结束调整并触发保存。
  • 普通业务列宽度限制为 90480px
  • 首个核心识别列建议限制为 120360px;具体默认宽度由字段内容决定。
  • 达到最小或最大边界后停止变化,不允许列宽无限缩小或撑宽。
  • 双击调节把手只恢复当前列的默认宽度。
  • 末尾操作列不提供调节把手,宽度由设计者依据操作组件规范固定。
  • 表格容器仍遵守局部横向滚动规则,列宽个性化不得造成整页横向滚动。

6. 列显隐与列顺序

  • “列设置”位于复杂台账工具栏,使用图标按钮并提供文字提示和无障碍名称。
  • 设置弹层内,复选框控制列显隐,拖拽把手控制列顺序。
  • 设置弹层中的修改先保存在临时状态;点击“确认”后一次应用并保存,点击“取消”不改变当前列表。
  • “全选/全不选”只影响可选业务列,不影响固定列。
  • 首个核心识别列必须显示、不可换序,但允许在规定范围内调宽。
  • 末尾操作列必须显示、不可换序、不可调宽。
  • 其他业务列可以显示或隐藏、调整顺序和调整列宽。
  • 可选业务列只能在两端固定列之间排序,不能越过固定列。

7. 恢复默认

  • 双击表头调节把手恢复当前列的默认宽度。
  • 列设置弹层中的“恢复默认”同时恢复列宽、显隐和顺序。
  • 完整恢复不使用危险确认弹窗。用户触发后先在弹层中预览默认布局,点击“确认”后应用并保存;点击“取消”保留原配置。

8. 保存、加载与兼容

  • 保存范围为“用户 + 台账页面”,建议存储键包含 userId + ledgerId + schemaVersion
  • 配置至少包含 columnWidthsvisibleColumnscolumnOrder
  • 列宽在拖动结束后保存;列显隐和列顺序在弹层确认后保存。
  • 保存过程不得阻塞台账浏览和操作。
  • 再次进入同一台账时自动恢复该用户的配置。
  • 初始化时先建立规范默认配置,再合并已保存配置,降低加载期间的布局跳动。
  • 新增字段按设计者定义的默认显隐状态和默认位置插入。
  • 已删除字段自动忽略,不能导致整份用户配置失效。
  • 配置损坏、版本不兼容或加载失败时回退默认配置并轻提示,不阻塞台账数据加载。
  • 保存失败时保留当前会话内的配置,并提示“当前设置暂未同步,下次进入可能恢复默认”。
  • H5 卡片列表忽略 PC 列配置,但不得删除已经保存的 PC 配置。

9. 无障碍与键盘

  • “列设置”按钮提供明确的 aria-label、展开状态和弹层关联。
  • 打开弹层后焦点进入弹层,关闭后回到触发按钮;按 Esc 可关闭。
  • 列宽调节把手可聚焦。方向键每次调整 8pxShift + 方向键 每次调整 24pxHome 恢复当前列默认宽度。
  • 读屏实时播报列名和当前宽度。
  • 列排序除拖拽外,必须提供“上移/下移”按钮;到达边界或属于固定列时禁用并说明原因。
  • 显隐复选框必须与列名关联。固定列控件禁用,并以文字说明不可隐藏。
  • 拖动、排序、恢复默认、保存成功和保存失败均通过 aria-live="polite" 播报,不能只依赖颜色传达状态。
  • 所有可聚焦控件使用主题 Focus Token视觉分隔线可以为 23px,但操作命中区不得随之缩小。

10. 视觉与主题

  • 列宽把手、焦点、选中和拖拽目标状态全部消费 OneOS V2 主题 Token不使用硬编码品牌色。
  • 浅色和暗色主题均需保持表头分隔线、焦点和拖拽状态的可辨识度。
  • 固定列通过文字或图标加文字说明,不只使用灰色或禁用色表达限制。
  • 列设置弹层沿用 OneOS V2 Web 浮层、复选框、按钮和间距规范,不新增独立视觉体系。

11. 验收标准

  • 鼠标可在边界内实时调整所有允许调宽的列。
  • 键盘可完成等价调宽,并能恢复单列默认宽度。
  • 用户可显示或隐藏所有可选业务列。
  • 用户可通过拖拽以及上移/下移按钮调整所有可选业务列顺序。
  • 两类固定列始终遵守显示、换序和调宽限制。
  • 取消设置不改变当前列表;确认后一次应用并保存。
  • 双击把手只恢复当前列;“恢复默认”恢复列宽、显隐和顺序。
  • 同一用户重新进入同一台账时恢复配置,不同用户或不同台账之间互不影响。
  • 新增或删除字段后,历史配置仍可正常合并和使用。
  • 配置加载或保存失败时台账仍可操作,并给出符合规范的轻提示。
  • H5 卡片列表不出现任何列控制入口,且不会清除 PC 配置。
  • 浅色、暗色主题以及键盘焦点、读屏播报均通过验收。

12. 标准示例

src/prototypes/vehicle-management/components/ListView.tsx 中的车辆资产台账作为交互参考,已经展示表头调宽把手、双击恢复、列设置入口、列显隐和列拖拽排序。规范落地时以本文确认的通用边界为准,尤其需要补足持久化、键盘替代、最大宽度和保存失败处理等通用要求。