3.4 KiB
3.4 KiB
abacus-static-framework — UI/UX 设计指南
视觉与交互细节的权威(与
PRD.md并列上游)。视觉/交互改动先改本文,再让派生实现对齐。 本文面向业务子系统开发:页面模式与标准组件是唯一推荐路径(共享规范docs/coding-standards.md §4.4~4.7为强制约束,此处给设计视角的说明)。
1. 设计原则(优先级递减)
- 复用优先:先标准组件(
framework/components/standard),再 vxe-table(仅表格),再 Element Plus,最后才自研。 - 模式一致:查询+列表页用同一套骨架(AbQueryForm + vxe-grid),让所有子系统页面观感统一。
- 配置驱动:表单/查询表单用 fieldConfigs 配置式,少写模板代码。
- 表格是主角:业务数据以表格呈现,列字段名与后端响应字段对齐。
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 页头
AbQueryForm(fieldConfigs: input/daterange/select/radio + slot 自定义)
vxe-grid(gridDefaultProps + proxyConfig.ajax.query;clientPage 按数据量选)
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。