--- name: pc-demo description: PC端管理后台构建专家。使用 Vue 3 + Element Plus + Vite 技术栈构建企业级后台管理系统 demo。当用户提到"PC后台"、"供应链后台"、"后台页面"、"新增页面"、"添加菜单"、"PC端开发"、"后台列表"、"后台详情"、"管理后台"、"新建页面"、"开发页面"、"页面模板"等关键词时,必须使用此 skill。即使用户只是简单提到要做一个后台页面或管理界面,也应该触发此 skill。 --- # PC 端管理后台构建专家 ## 项目定位 本 skill 用于通过代码构建 PC 端管理后台 demo。项目位于 `工作空间/产研/<业务线>/<项目名称>/产品原型/pc-demo/` 目录下。这是一个前端 demo 项目,使用模拟数据,重点在于界面还原和交互体验。 * * * ## 技术栈 | 技术 | 用途 | | --- | --- | | Vue 3.5 + Composition API | 视图层 | | Vue Router 4 | 路由(createRouter + createWebHashHistory) | | Element Plus 2.10 | UI 组件库 | | @element-plus/icons-vue | 图标(main.js 全局注册,模板直接用) | | @vueup/vue-quill | 富文本编辑 | | Axios | HTTP 请求封装 | | Mock.js | 前端数据模拟 | | Vite 5 | 构建工具 | * * * ## 目录结构 ``` pc-demo/src/ ├── main.js # 入口(注册 Element Plus、图标、路由、mock) ├── App.vue # 根组件 ├── router/index.js # 路由配置 + beforeEach 登录守卫 ├── components/ │ ├── Layout.vue # 侧边栏菜单 + 面包屑 + 用户下拉 │ └── [业务组件].vue ├── views/ # 页面视图 │ ├── Login.vue │ └── [页面名].vue ├── mock/index.js # Mock.mock() 拦截器注册 ├── store/ # reactive() 状态管理(刷新重置) ├── config/ # 业务配置 ├── styles/ # 样式文件 └── utils/ ├── request.js # axios 封装(token 注入、响应拦截、401 处理) └── linkOptions.js ``` * * * ## 核心规范索引 | 规范 | 文件 | | --- | --- | | 项目初始化 | [references/pc-init.md](./references/pc-init.md) | | 菜单配置 | [references/menu-config.md](./references/menu-config.md) | | Mock 数据 | [references/mock-data.md](./references/mock-data.md) | | 页面结构(布局/菜单/导航) | [references/page-structure.md](./references/page-structure.md) | | 页面类型(列表/详情/看板) | [references/page-types.md](./references/page-types.md) | | 代码风格 | [references/code-style.md](./references/code-style.md) | | 常见问题修复记录 | [references/faq.md](./references/faq.md) | * * * ## 开发工作流 新增页面时按以下步骤执行: 1. **确认需求**:页面类型(列表/详情/看板)、所属菜单位置、核心字段 2. **创建文件**:在 `src/views/` 下创建页面 `.vue` 文件,在 `src/mock/index.js` 中添加 Mock 数据 3. **注册路由**:`src/router/index.js` 中添加路由,设置 `meta.title` 用于面包屑 4. **注册菜单**:`src/components/Layout.vue` 的 `` 中添加菜单项 * * * ## 验证 启动开发服务器检查页面是否正常渲染: ```bash cd 工作空间/产研/权益/汇丰全行/产品原型/pc-demo && npm run dev ``` * * * ## Element Plus 使用约定 - 图标:``,所有图标已全局注册,无需逐文件 import - 弹窗:`el-dialog` / `el-drawer` 用 `v-model="visible"` - 子菜单:使用 ``(非 `el-submenu`) - 插槽:`