Files
saas-mbr/abacus-static-framework/.project.agents/docs/context/UIUX.md
T

3.4 KiB
Raw Blame History

abacus-static-framework — UI/UX 设计指南

视觉与交互细节的权威(与 PRD.md 并列上游)。视觉/交互改动先改本文,再让派生实现对齐。 本文面向业务子系统开发:页面模式与标准组件是唯一推荐路径(共享规范 docs/coding-standards.md §4.4~4.7 为强制约束,此处给设计视角的说明)。

1. 设计原则(优先级递减)

  1. 复用优先:先标准组件(framework/components/standard),再 vxe-table(仅表格),再 Element Plus,最后才自研。
  2. 模式一致:查询+列表页用同一套骨架(AbQueryForm + vxe-grid),让所有子系统页面观感统一。
  3. 配置驱动:表单/查询表单用 fieldConfigs 配置式,少写模板代码。
  4. 表格是主角:业务数据以表格呈现,列字段名与后端响应字段对齐。

2. 视觉身份

  • 无独立品牌视觉;跟随公司菜单框架既有主题;不引入自定义品牌色(见 §3 语义色)。

3. 色板与字体

  • 色板:使用 Element Plus 主题变量与 framework/styles/variables.scss 中定义的语义变量(禁止在业务内散落硬编码 hex)。
  • 字体:沿用框架全局样式;字号层级用 Element Plus 默认(14px 正文 / 标题层级)。

4. 间距与栅格

  • 页面骨架固定:<Title> 页头 → .form-container(查询区,AbQueryForm)→ .table-container(vxe-grid);间距沿用框架示例(sms 示例页面)的既有值。
  • 弹窗内表单用 AbForm 的布局配置(默认 label 左对齐)。

5. 动效与触觉

  • 无自定义动效需求;使用 Element Plus 默认过渡;表格行编辑为双击进入(editConfig trigger:'dblclick', mode:'row')。

6. 状态系统

  • 空态:vxe-grid 空数据默认展示;查询无结果提示由表格空态承担。
  • 加载:loading 状态由 vxe-grid/按钮统一管理。
  • 错误:接口错误由 request.ts 统一弹窗(业务 9xx / 系统 5xx),页面不重复提示。
  • 成功:新增/保存成功用 ElMessage.success(框架既有约定)。

7. 屏幕规范

7.1 查询+列表页(标准模式)

Title 页头
AbQueryFormfieldConfigs: input/daterange/select/radio + slot 自定义)
vxe-gridgridDefaultProps + proxyConfig.ajax.queryclientPage 按数据量选)
el-dialog(新增/编辑,AbForm / el-drawer(详情/日志)

7.2 可编辑表格页

  • editConfig: { trigger: 'dblclick', mode: 'row' } + editRender: { name: 'input' } + @edit-closed 保存(参考 views/config/business/index.vue)。

7.3 容器页(List/Detail 切换)

  • 容器 index.vue:is 动态切换 list.vue / detail.vue(参考 views/document/interfacedoc/)。

8. 可访问性

  • 表单字段 label 必填;操作按钮带语义化文字;表格 seq 序号列保留。

9. 文案语气

  • 按钮:动词短语(新增/编辑/删除/导出/查询/重置)。
  • 错误提示:简短、可直接行动的句子(由后端 message 提供,前端原样展示)。

10. 性能预算

  • 列表默认服务端分页(clientPage:false),避免一次拉全量;大数据量禁客户端分页。
  • 查询表单默认收起多余条件(按需扩展)。

11. 视觉资产清单

  • 一般业务无需产出视觉资产;如确需图标,放入 src/assets/ 由构建处理(或 public/ 保持原名),命名 kebab-case。