بنقرة واحدة
project
后台管理模板的项目总览与前端强制规范。涵盖 Vue 3 + Arco Design + Gi 组件库、目录结构、自动导入、CRUD/API 约定与代码风格。在当前仓库内开发、新增页面、查阅架构或不确定项目规范时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
后台管理模板的项目总览与前端强制规范。涵盖 Vue 3 + Arco Design + Gi 组件库、目录结构、自动导入、CRUD/API 约定与代码风格。在当前仓库内开发、新增页面、查阅架构或不确定项目规范时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | project |
| description | 后台管理模板的项目总览与前端强制规范。涵盖 Vue 3 + Arco Design + Gi 组件库、目录结构、自动导入、CRUD/API 约定与代码风格。在当前仓库内开发、新增页面、查阅架构或不确定项目规范时使用。 |
适用范围:本仓库
src/**、mock/**
规范来源:.agents/rules/(常驻)与本 skill(任务细节)
详见 .agents/rules/agent-behavior.md;本项目补充见下文「本项目 Agent 约定」。
Gi*、hooks、getBaseApi、现有 mock 工具;新增页面/接口对齐参考页与 getBaseApi 约定。src/apis、mock 与类型定义为准,不要猜测路径。.agents/skills/ 对应 skill。pnpm typecheck、pnpm lint、pnpm lint:style。| 类别 | 选型 |
|---|---|
| 框架 | Vue 3.5 + TypeScript + <script setup lang="ts"> |
| 构建 | Vite 7 |
| UI | Arco Design Vue(按需自动导入)+ 本地 Gi* 组件 |
| 状态 | Pinia + pinia-plugin-persistedstate |
| 路由 | Vue Router 4(Hash 模式) |
| HTTP | @/utils/http,统一响应类型 ApiRes<T>、PageRes<T> |
| 工具 | @vueuse/core、lodash-es、dayjs、xe-utils |
| Mock | vite-plugin-mock + mockjs(开发默认启用) |
每个 SFC 必须 defineOptions({ name: 'XxxYyy' });通用 Vue 规范见 .agents/rules/vue.md,本项目约定见下文「本项目 Vue 约定」。
@ → src/~ → 项目根目录src/
├── apis/ # 接口(按业务模块分文件,标准 CRUD 用 getBaseApi)
├── components/ # Gi* 业务组件 + 部分通用组件
├── hooks/ # 组合式函数(useTable、useDict 等)
├── hooks/app/ # 业务域 hooks(useDept、useRole)
├── stores/ # Pinia
├── views/ # 页面(按模块分子目录)
├── router/ # 路由与守卫
├── utils/ # http、auth、regexp、deepClone 等
├── types/ # 全局类型(global.d.ts、api.d.ts)
mock/ # vite-plugin-mock 模拟数据
页面文件命名:
src/views/{module}/index.vue # 列表页
src/views/{module}/XxxFormModal.vue # 新增/编辑弹窗(有表单时必建)
src/apis/{module}/{name}.ts # 类型定义 + CRUD API(或 apis/system/user.ts)
mock/{module}/{name}.ts # 与 API 路径一致的 Mock
src/types/)Status:'0' | '1'(禁用/启用,与字典 STATUS 一致)Gender:'1' | '2' | '3'Pagination:{ page, size }ApiRes<T>、PageRes<T>:统一接口响应(分页 data 为 { records, total })新建/修改表格页时,必须参考并遵循:
src/views/system/user/index.vue、UserFormModal.vue@/hooks/useTablesrc/apis/system/user.ts + getBaseApi核心结构:
GiPageLayout 布局(可选 #left 树/分类)queryParams(reactive)+ 搜索区 + GiButton(search/reset)tableColumns(TableColumnData[],复杂列用 lang="tsx" + render)useTable 绑定 listAPI 与 deleteAPIXxxFormModal ref,defineExpose({ add, edit }),@save-success="search"分页类型:PageRes<T>(records + total)。Mock 与接口详见 api-mock。
import { getBaseApi } from '@/apis/base'
import http from '@/utils/http'
export interface ListItem {
id: string
name: string
status: Status
}
/** 标准 CRUD */
export const baseAPI = getBaseApi<ListItem>({ baseUrl: '/system/xxx' })
/** 非标准接口 */
export function customAction(params: Pagination) {
return http.get<PageRes<Item[]>>('/system/xxx/customAction', params)
}
VITE_API_PREFIX = '/mock'(.env.development)@/utils/http 裸用 axios@antfu/eslint-config(eslint.config.js):箭头参数括号、1TBS、无尾随逗号;Vue block 顺序 [['script', 'template'], 'style'];宏顺序 defineOptions/defineModel/defineProps/defineEmits/defineSlots,defineExpose 最后。src/layout/,Gi 组件放 src/components/Gi*,业务 Hook 放 hooks/ 或 hooks/app/。undefined。.agents/rules/coding-standards.md、vue.md、css.md;本项目补充见下文。@ → src/,~ → 项目根;禁止 ../../../ 穿越。Gi 仅用于 src/components/Gi* 全局组件。src/views 页面、src/components 组件、src/apis/<domain>/ + type.ts 接口类型、src/types 公共类型、src/hooks composables。@/utils/http;状态 Pinia + pinia-plugin-persistedstate。@iconify/vue;样式从 scss/less 导入,避免内联。pnpm lint、pnpm lint:style、pnpm typecheck。defineOptions({ name: 'XxxYyy' }),名称与路由/模块对应,并与路由表 name 一致以支持缓存。vite.config.ts,勿重复 import):
ref、reactive、computed、watch、useTemplateRef 等src/components/Gi*(如 GiPageLayout、GiButton、GiForm)a-table、a-modal、a-select 等icon-*(Iconify icon-park-outline)a-* 前缀;禁止手动 import Gi/Arco(类型除外)。lang="tsx" + TableColumnData[] 的 render;字典字段用 useDict(['STATUS']) 等。dayjs 默认导入变量名必须为 Dayjs(大写),禁止小写 dayjs。@/utils 的 deepClone,禁止 JSON.parse(JSON.stringify())。src/views/system/user/index.vue、UserFormModal.vue、src/views/table/custom3/index.vuesrc/styles/index.scss(变量 var.scss、混入 mixin.scss、Arco 主题 arco-ui/)pnpm lint:styleg-row-tool(工具栏行)、g-table(表格)、g-full-column(左栏撑满)、g-mb(下边距)src/views/login/LoginLeft.vue| 场景 | 技能 |
|---|---|
| 新建 CRUD 列表页、表格、弹窗表单 | crud-page |
| 新增接口、Mock、baseAPI | api-mock |
src/views/system/user/index.vuesrc/views/system/dict/index.vuesrc/views/table/custom3/index.vuesrc/views/system/user/UserFormModal.vue通用 Agent / 编码规范见 .agents/rules/;本项目参考页见上文。
pnpm dev # 开发(Mock 已启用)
pnpm build # 构建
pnpm typecheck # 类型检查
pnpm lint # ESLint
pnpm lint:style # Stylelint
@/utils/http 直接裸用 axiosuseTablesystem/user 与 crud-page 约定