# Admin Agent — Sport Era 管理后台 Vue 3 + Vite + Element Plus 管理后台 SPA。**消费 `server/app/adminapi/controller/` 的接口。** ## 技术栈 - **Vue** 3 + **TypeScript** - **Vite** - **Element Plus** - **Pinia** 状态管理 - **Vue Router** 路由 - **Axios** HTTP 请求 ## 项目结构 ```text src/ ├── main.ts # 应用入口 ├── App.vue # 根组件 ├── permission.ts # 路由权限守卫 ├── api/ # 接口请求模块(→ 后端 /adminapi/*) ├── views/ # 页面组件 ├── layout/ # 布局组件 ├── components/ # 公共组件 ├── stores/ # Pinia Store ├── router/ # 路由配置 ├── hooks/ # 组合式函数 ├── utils/ # 工具函数 ├── enums/ # 枚举常量 ├── config/ # 应用配置 ├── styles/ # 全局样式 └── assets/ # 静态资源 ``` ## 运行命令 ```bash npm install npm run dev npm run build ``` --- ## 并行协作协议 ### 新功能开发时 #### Step 1: 等待或查阅后端 API 契约 查看 `server/app/adminapi/controller/` 下对应 controller,并结合 validate、logic、model 获取: - 接口路径和方法 - 请求参数类型和必填项 - 响应数据结构 - 字段、状态、字典或配置来源 #### Step 2: 并行实现 ```text 1. src/api/ 下新增或复用接口请求模块 2. src/views/ 下新增页面组件 3. 按现有路由/菜单机制配置页面入口 4. 如需菜单,配合后端菜单和权限节点 ``` #### Step 3: 构建联调 ```bash npm run build ``` ## 从后端 Agent 获取信息的方式 | 需要了解 | 查看位置 | | ------------------ | ------------------------------------------------- | | 接口路径/参数/响应 | `server/app/adminapi/controller/` 对应 controller | | 参数校验 | `server/app/adminapi/validate/` 对应 validate | | 业务字段 | `server/app/common/model/` 对应 model | | 枚举/字典 | `server/app/common/enum/`、字典表、配置表 | | Token 机制 | `server/app/common/cache/AdminTokenCache.php` | ## 代码约定 - API 请求统一通过 `src/api/` 模块,沿用现有请求封装。 - 列表页复用现有搜索表单、表格、分页和批量操作风格。 - 表单页复用 `el-form`、`el-dialog`、上传组件等现有封装。 - 状态管理用 Pinia,Store 放在 `src/stores/`。 - 新增视图先参考同业务目录的已有页面风格。 - **禁止前端硬编码业务枚举**:优先从字典接口、配置接口或后端返回字段读取。 - 顶级菜单需配 icon,二级及以下菜单 icon 留空。 ## 近期踩坑 - 后台表单新增字段时,不能只改页面输入项;要同时核对后端接口字段白名单、数据库列和保存逻辑,否则会出现“能填但存不进去”的假象。