# 中后台前端页面设计规范 > 基于 itfx-front 项目现有技术栈与实现,整理的一套通用、可直接落地的前端设计规范。 > 后续开发须遵循本规范,确保视觉与交互一致性。 --- ## 一、技术栈约定 | 类别 | 技术选型 | 版本/说明 | |------|----------|-----------| | 框架 | Vue 3 | 使用 Composition API、` ``` ### 11.3 必备 Key - `common.search`、`common.reset`、`common.add`、`common.delete`、`common.editSuccess`、`common.addSuccess`、`common.saveSuccess` - `common.selectPlaceholder`、`common.actions`、`common.viewDetail` --- ## 十二、API 与请求规范 ### 12.1 分页接口 **请求:** ```ts { pageIndex: number; pageSize: number; // 其它搜索参数 } ``` **响应:** ```ts { totalCount: number; items: T[]; // 或 data.list } ``` ### 12.2 错误处理 - 使用统一的 axios 拦截器(如 `rbac-error-handler`) - 401 自动跳转登录;其它错误统一提示 --- ## 十三、样式约定 ### 13.1 作用域 - 组件内使用 `scoped` - 覆盖第三方样式时使用 `:deep()` 或全局类 ### 13.2 容器类 - 页面根容器:`xxx-container` / `xxx-page`(如 `role-page`、`track-order-container`),**列表类页面**推荐 `padding: 16px 16px 24px`,详见 **§2.5 页面壳、白卡片与列表区尺寸** - 白卡片:`*-page-card`、`*-section` 等,与 `.list-wrap` 的 padding **勿重复叠加** - 列表区:`.list-wrap`,**四边 16px**(相对分区后的内容边缘) - 表格工具栏:`table-toolbar`、`toolbar-left`、`toolbar-right`,工具栏 **`padding: 16px 16px 0`** 与列表对齐 - Handsontable/列表分页工具栏:`.list-toolbar`(当页面没有标准 `table-toolbar` 时),与 `table-toolbar` 保持一致,使用 **`padding: 16px 16px 0`** 且 `margin-bottom: 16px`;`PaginationPro` 必须与 `toolbar-left` 同一行展示(放在 `.toolbar-right` 内,禁止分页另起行),同时 `.list-wrap` 在联用场景建议 `padding-top: 0`(例如 `padding: 0 16px 16px`),实现分页距上/右 16px、距列表 16px ### 13.3 按钮间距 - 相邻 `arco-btn` 之间:`margin-left: 8px`(全局已统一) - 使用 `a-space :size="8"` 包裹一组按钮 --- ## 十四、检查清单(新页面开发) - [ ] 使用 `xxx-container` / `xxx-page` 或等效布局结构;列表页见 **§2.5**:灰底 **`padding: 16px 16px 24px`**、`flex: 1; min-height: 0` - [ ] 白卡片与 **`.list-wrap`** 内边距勿重复叠加(推荐白卡片 `padding: 0` + 分区 padding) - [ ] **`.list-wrap`**:`padding: 16px`、`flex: 1; min-height: 0`;需测高时 `ref` 挂在本层 - [ ] 工具栏使用 `table-toolbar`、`toolbar-left`、`toolbar-right`,工具栏 **`padding: 16px 16px 0`** - [ ] 按钮、输入框符合全局样式(高度、圆角) - [ ] 使用主题色变量,不硬编码 `#2D8C8C` - [ ] 弹窗 / 抽屉使用 ModalPro / DrawerPro + useModal - [ ] 表单使用 FormPro 或统一 label/span - [ ] 表格优先 TablePro / CustomList / HandsontablePro - [ ] 分页组件置于**列表上方工具栏右侧**(列表右上角),**§7.3**;分页 10/30/50/100,默认 30 - [ ] 操作按钮按权限使用 `hasPermission` - [ ] 路由 meta 配置 `permission` - [ ] 文案通过 i18n,不写死中文 - [ ] 命名符合本规范(文件、路由、变量、i18n key) --- ## 附录:常用代码片段 ### 页面头部 + 权限按钮 ```vue