--- name: "vue3-admin" description: "生成并规范化一个基于 Vue3 + TypeScript 的后台管理系统工程结构与基础模块。" --- ## 📝 代码规范 完整的 TypeScript 类型定义 代码符合 ESLint + Prettier 规范 .vscode/settings.json实现保存自动格式化 ## 设计规范(与 HTML 原型一致) 管理端视觉以 **主色 `#B11E23`**、深红悬停 `**#8B1519**` 为准,与后端仓库内静态原型 `public/slake/frontend/prototype/css/prototype.css` 及《UI 原型说明》一致。Vue 工程主题集中在 `**src/assets/theme-slake.css**`(Element Plus 主色链 + `--slake-*` 变量),请勿在业务页随意引入与品牌冲突的强调色。 **全站列表页与操作区样式**(页头布局、筛选区、14px/12px 字号、状态色、操作列描边按钮等)以 **`docs/管理后台UI规范.md`** 为准;课程管理为首个落地样例(`src/views/operations/courses/index.vue`)。 ## 技术栈 Vue 3.4 + TypeScript 5 Vite 5 构建工具 Pinia 状态管理 Vue Router 4 路由 Element Plus UI Axios 请求封装 ## 功能模块 用户登录/登出(Token 认证) 角色管理(**首期仅菜单分配**;接口级 permission 二期扩展) 菜单管理(动态路由) 数据字典(每一条字典下有多个值,多用于作为下拉选项) 操作日志(列表模式,包含(操作人、操作时间、接口、操作项) 系统设置 页面结构 顶部导航栏(左侧项目名称、右侧用户信息、退出登陆) 左侧侧边栏(多级菜单、可折叠菜单) 额外要求 响应式布局,支持移动端 深色/浅色主题切换 路由权限控制(首期:按角色菜单生成侧栏与动态路由) 请求拦截和响应拦截 实现性能优化 支持本地node服务请求数据 ### 功能细则 1 路由权限控制: ``` 1.1菜单权限: 菜单权限控制,即用户登录后,只能看到自己权限范围内的菜单,不能看到其他菜单。给单个路由的meta添加roles属性,roles是一个数组,数组元素是角色名。比如[radmin','user'],菜单权限控制只对动态菜单有效。菜单由静态菜单+动态菜单组合生成最后的菜单。动态菜单根据用户角色权限进行过滤。至少有3个页面用来区分 不同角色登录后显示不同菜单效果 首期建议:已实现「角色 → 菜单」即可;以下为二期增强(接口与按钮对齐 permission code)。 1.2按钮权限: 根据用户权限,对按钮进行权限控制。采用给按钮添加权限指令的方式. 要求实现两个指令,v-permission和v-role。 1.2.1 v-permissio按权限码(permission code)控制显示, 单个权限: v-permission="'settings:edit'" 多个权限(AND 关系,必须全部满足才显示): v-permission="['user:create','user:delete']" 1.2.2 v-role按“角色”控制显示 v-role="'admin'" 或 v-role="['admin']" 1.3 理论上支持菜单无限极拓展 左侧菜单栏至少出现一个包含多级菜单的菜单(以三级菜单为例),用来模拟支持菜单无限极功能 ``` 2 http请求: 基于axios封装实现,考虑前端引入多个服务场景,支持多个服务联调。每个服务有自己的baseURL、timeout、headers等配置。 要求在vite.config.ts中proxy配置多个服务,通过请求本地node服务测试接口 3 性能优化: 打包工具与代码层面等多个组合实现高性能优化 4 本地node服务 本地生成node服务,mock数据实现本地联调,实现vite.config.ts中proxy代理和正常http请求; 需要至少生成两个node服务,提供前端进行真实请求,模拟多个服务场景,并提供mock数据 5 支持多环境打包 6 支持多语言拓展 ### 组件规范 - ✅ 使用 `