|
| 1 | +--- |
| 2 | +name: ant-design-vue |
| 3 | +description: Use when building, refactoring, or reviewing Vue 3 interfaces with Ant Design Vue 4.x in this repository, especially for layout, spacing, radius, button consistency, forms, tables, navigation, feedback, and enterprise admin page styling decisions. |
| 4 | +--- |
| 5 | + |
| 6 | +# Ant Design Vue(GoInsight 统一版) |
| 7 | + |
| 8 | +用于当前仓库的前端 UI 规范技能。目标是输出可维护、可复用、视觉一致的企业后台界面方案,并减少一次性样式和组件漂移。 |
| 9 | + |
| 10 | +## 适用范围 |
| 11 | + |
| 12 | +- 技术栈:Vue 3 + Ant Design Vue 4.x(当前项目使用 4.2.6)。 |
| 13 | +- 语法约束:使用 `script setup`,不使用 `lang="ts"`。 |
| 14 | +- 页面范围:登录、列表、详情、编辑、仪表盘、设置等全前端页面。 |
| 15 | +- 任务类型:新页面设计、旧页面重构、组件替换、样式统一、代码评审建议。 |
| 16 | + |
| 17 | +## 触发信号(命中任一即使用本技能) |
| 18 | + |
| 19 | +- 用户提到:`Ant Design Vue`、`AntDV`、`ant-design-vue`。 |
| 20 | +- 用户要求:按钮/表单/表格/弹窗/菜单/分页等组件实现或改造。 |
| 21 | +- 用户提到:布局、间距、圆角、主题、视觉统一、组件规范。 |
| 22 | + |
| 23 | +## 输出方式(无强制门禁) |
| 24 | + |
| 25 | +默认先给“规范化 UI 方案”,再给实现建议。 |
| 26 | +方案中至少包含: |
| 27 | + |
| 28 | +1. 页面结构与布局建议 |
| 29 | +2. 组件映射建议 |
| 30 | +3. 与全局规范一致性的检查点 |
| 31 | + |
| 32 | +## 全局强制规范 |
| 33 | + |
| 34 | +以以下文件作为唯一真源: |
| 35 | + |
| 36 | +- `/Users/zongfei.fu/Downloads/CodeX/goInsight/www/src/design/tokens.js` |
| 37 | +- `/Users/zongfei.fu/Downloads/CodeX/goInsight/www/src/design/antdTheme.js` |
| 38 | + |
| 39 | +### 1) 间距规范(强制) |
| 40 | + |
| 41 | +- 仅使用:`4 / 8 / 12 / 16 / 24 / 32` |
| 42 | +- 禁止散点间距(如 10、14、18、22 等无来源值) |
| 43 | + |
| 44 | +### 2) 圆角规范(强制) |
| 45 | + |
| 46 | +- 仅使用:`6 / 8 / 10 / 12` |
| 47 | +- 禁止组件内手写临时圆角值 |
| 48 | + |
| 49 | +### 3) 按钮规范(强制) |
| 50 | + |
| 51 | +- 默认统一:`size="middle"` |
| 52 | +- 禁止手动设置按钮颜色、圆角、高度(包含 inline style) |
| 53 | +- 仅允许使用 AntDV 语义属性控制按钮表现:`type`、`danger`、`ghost`、`block`、`size` |
| 54 | +- 登录页按钮也遵守统一 `middle` |
| 55 | + |
| 56 | +## 布局规范 |
| 57 | + |
| 58 | +推荐后台壳层结构: |
| 59 | + |
| 60 | +``` |
| 61 | +Layout |
| 62 | + |- Sider (Menu) |
| 63 | + |- Header |
| 64 | + `- Content |
| 65 | +``` |
| 66 | + |
| 67 | +- 使用 `Layout` / `Layout.Sider` / `Layout.Header` / `Layout.Content` |
| 68 | +- 侧边栏宽度建议 `200px ~ 240px` |
| 69 | +- 主内容区优先用 `a-card` 承载 |
| 70 | +- 页面内边距建议 `16px ~ 24px` |
| 71 | +- 使用 24 栅格:`a-row` + `a-col` |
| 72 | +- 栅格 `gutter` 优先 `16` 或 `24` |
| 73 | + |
| 74 | +## 语义颜色规范 |
| 75 | + |
| 76 | +优先使用 Ant Design 语义色,不随意造色。基础语义: |
| 77 | + |
| 78 | +- Primary / Info:`#1677ff` |
| 79 | +- Success:`#52c41a` |
| 80 | +- Warning:`#faad14` |
| 81 | +- Error:`#ff4d4f` |
| 82 | +- Border:`#d9d9d9` |
| 83 | +- 主文本:`rgba(0,0,0,0.88)` |
| 84 | +- 次文本:`rgba(0,0,0,0.65)` |
| 85 | + |
| 86 | +规则: |
| 87 | + |
| 88 | +- 重要动作用主色 |
| 89 | +- 状态展示优先 `a-tag` 语义色 |
| 90 | +- 禁止页面内零散定义“看起来差不多”的新颜色 |
| 91 | + |
| 92 | +## 组件规范 |
| 93 | + |
| 94 | +### 按钮 |
| 95 | + |
| 96 | +- 主操作:`a-button type="primary"` |
| 97 | +- 次操作:默认 `a-button` |
| 98 | +- 危险操作:`a-button danger` |
| 99 | +- 同一视觉区域最多两个主按钮 |
| 100 | + |
| 101 | +### 表单 |
| 102 | + |
| 103 | +- 统一使用 `a-form` |
| 104 | +- 必须有 label 和基础校验规则 |
| 105 | +- 标签对齐方式同页保持一致 |
| 106 | +- 复杂表单优先纵向布局 |
| 107 | +- 输入组件优先:`a-input` / `a-select` / `a-date-picker` / `a-switch` / `a-radio-group` / `a-checkbox-group` |
| 108 | + |
| 109 | +### 表格 |
| 110 | + |
| 111 | +- 统一使用 `a-table` |
| 112 | +- 必须设置 `rowKey` |
| 113 | +- 默认启用分页 |
| 114 | +- 列信息聚焦,避免密度过高 |
| 115 | +- 排序仅在显著提升任务效率时启用 |
| 116 | + |
| 117 | +### 导航与信息组织 |
| 118 | + |
| 119 | +- 导航:`a-menu` / `a-breadcrumb` / `a-tabs` |
| 120 | +- 分组:`a-card` |
| 121 | +- 操作组:`a-dropdown` |
| 122 | +- 详情展示:`a-descriptions` |
| 123 | + |
| 124 | +### 反馈 |
| 125 | + |
| 126 | +- 轻提示:`message.success()` 等 |
| 127 | +- 显著错误:`notification.error()` |
| 128 | +- 不可逆动作:`modal.confirm()` |
| 129 | +- 加载反馈:`a-spin` |
| 130 | + |
| 131 | +## 页面蓝图 |
| 132 | + |
| 133 | +### 列表页 |
| 134 | + |
| 135 | +1. 顶部筛选区(`a-form`) |
| 136 | +2. 中部数据区(`a-table`) |
| 137 | +3. 底部分页(`a-pagination` 或表格内建) |
| 138 | + |
| 139 | +### 详情页 |
| 140 | + |
| 141 | +1. 核心信息区用 `a-descriptions` |
| 142 | +2. 自然分区内容再使用 `a-tabs` |
| 143 | + |
| 144 | +### 编辑页 |
| 145 | + |
| 146 | +1. 以表单为主结构 |
| 147 | +2. 提交与取消按钮放在清晰的操作行 |
| 148 | + |
| 149 | +### 仪表盘 |
| 150 | + |
| 151 | +1. 关键指标用 `a-statistic` |
| 152 | +2. 分模块卡片化展示 |
| 153 | + |
| 154 | +### 设置页 |
| 155 | + |
| 156 | +1. 按领域拆分 `a-tabs` |
| 157 | +2. 每个 tab 内聚焦一组表单能力 |
| 158 | + |
| 159 | +## 交互位置约定 |
| 160 | + |
| 161 | +- 全局主操作:右上或标题区右侧 |
| 162 | +- 筛选/检索:页面顶部 |
| 163 | +- 主数据区:中部连续区域 |
| 164 | +- 同类按钮:紧邻分组并有明确优先级 |
| 165 | + |
| 166 | +## 常见反模式与纠偏 |
| 167 | + |
| 168 | +| 反模式 | 纠偏方式 | |
| 169 | +| --- | --- | |
| 170 | +| 按钮写 inline style 改颜色和圆角 | 改用全局 token + AntDV 语义属性 | |
| 171 | +| 页面出现 14px/18px 这类散点间距 | 回退到 4/8/12/16/24/32 | |
| 172 | +| 组件圆角写成 5px/9px/14px | 回退到 6/8/10/12 | |
| 173 | +| 登录页按钮单独用 `large` | 统一为 `middle` | |
| 174 | +| 同页混用多个组件库 | 优先统一为 AntDV 组件 | |
| 175 | +| 使用 `<script setup lang="ts">` | 改为 JS 版 `script setup` | |
| 176 | + |
| 177 | +## 快速检查清单 |
| 178 | + |
| 179 | +- 是否仅使用项目 token 定义的间距与圆角? |
| 180 | +- 按钮是否全部 `size="middle"`? |
| 181 | +- 是否存在按钮手写视觉样式(颜色/高度/圆角/inline style)? |
| 182 | +- 页面是否使用 AntDV 语义组件而不是自造同类组件? |
| 183 | +- 是否保持布局层级清晰、操作优先级明确? |
0 commit comments