Files
yusheng-admin/项目交接文档.md
2026-01-31 10:23:11 +08:00

881 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目交接文档
## 一、项目概述
### 1.1 项目基本信息
- **项目名称**: pure-admin-thin精简版后台管理系统
- **项目版本**: 5.9.0
- **技术栈**: Vue 3 + TypeScript + Vite + Element Plus + Pinia
- **开发端口**: 8848
- **Node版本要求**: ^18.18.0 || ^20.9.0 || >=22.0.0
- **包管理器**: pnpm >= 9
### 1.2 项目简介
本项目是基于 vue-pure-admin 精简版开发的后台管理系统,主要用于管理直播平台的各项业务功能。项目采用前后端分离架构,使用 Vue 3 组合式 API 开发,集成了完整的权限管理、路由管理、状态管理等功能。
### 1.3 在线地址
- **测试环境**: https://test.vespa.qxyushen.top
- **API地址**: https://test.vespa.qxyushen.top/adminapi
## 二、技术架构
### 2.1 核心技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 3.5.13 | 渐进式 JavaScript 框架 |
| TypeScript | 5.6.3 | JavaScript 的超集 |
| Vite | 6.0.3 | 新一代前端构建工具 |
| Element Plus | 2.9.0 | Vue 3 UI 组件库 |
| Pinia | 2.3.0 | Vue 状态管理库 |
| Vue Router | 4.5.0 | Vue 官方路由管理器 |
| Axios | 1.7.9 | HTTP 请求库 |
| Tailwind CSS | 3.4.16 | 原子化 CSS 框架 |
### 2.2 主要依赖库
- **@pureadmin/table**: 表格组件增强
- **@pureadmin/utils**: 工具函数库
- **@wangeditor/editor**: 富文本编辑器
- **echarts**: 数据可视化图表库
- **dayjs**: 日期处理库
- **ali-oss**: 阿里云 OSS 上传
- **agora-rtc-sdk-ng**: 声网音视频 SDK
- **xlsx**: Excel 导入导出
- **sortablejs**: 拖拽排序库
### 2.3 项目结构
```
项目根目录/
├── .husky/ # Git hooks 配置
├── build/ # 构建配置文件
├── mock/ # Mock 数据
├── public/ # 静态资源
│ ├── favicon.ico
│ ├── logo.svg
│ └── platform-config.json # 平台配置文件
├── src/ # 源代码目录
│ ├── api/ # API 接口
│ │ ├── modules/ # 接口模块
│ │ ├── routes.ts # 路由接口
│ │ └── user.ts # 用户接口
│ ├── assets/ # 静态资源
│ │ ├── iconfont/ # 图标字体
│ │ ├── login/ # 登录页资源
│ │ ├── svg/ # SVG 图标
│ │ └── user.jpg # 默认头像
│ ├── components/ # 公共组件
│ │ ├── ReAuth/ # 权限组件
│ │ ├── ReDialog/ # 对话框组件
│ │ ├── ReIcon/ # 图标组件
│ │ ├── RePureTableBar/ # 表格工具栏
│ │ ├── SearchForm/ # 搜索表单
│ │ ├── UploadImage/ # 图片上传
│ │ └── ...
│ ├── config/ # 配置文件
│ │ └── index.ts # 全局配置
│ ├── directives/ # 自定义指令
│ │ ├── auth/ # 权限指令
│ │ ├── copy/ # 复制指令
│ │ ├── longpress/ # 长按指令
│ │ └── ...
│ ├── layout/ # 布局组件
│ │ ├── components/ # 布局子组件
│ │ ├── index.vue # 主布局
│ │ └── frame.vue # 框架布局
│ ├── plugins/ # 插件配置
│ │ ├── echarts.ts # ECharts 配置
│ │ └── elementPlus.ts # Element Plus 配置
│ ├── router/ # 路由配置
│ │ ├── modules/ # 路由模块
│ │ ├── index.ts # 路由入口
│ │ └── utils.ts # 路由工具
│ ├── store/ # 状态管理
│ │ ├── modules/ # Store 模块
│ │ ├── index.ts # Store 入口
│ │ └── types.ts # 类型定义
│ ├── style/ # 全局样式
│ │ ├── index.scss # 主样式
│ │ ├── reset.scss # 重置样式
│ │ ├── tailwind.css # Tailwind 样式
│ │ └── ...
│ ├── utils/ # 工具函数
│ │ ├── http/ # HTTP 请求封装
│ │ ├── auth.ts # 认证工具
│ │ ├── ali-oss.js # OSS 上传
│ │ └── ...
│ ├── views/ # 页面视图
│ │ ├── login/ # 登录页
│ │ ├── welcome/ # 欢迎页
│ │ └── ...(详见业务模块)
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── types/ # 类型声明
├── .env # 环境变量(开发)
├── .env.production # 环境变量(生产)
├── .env.staging # 环境变量(预发布)
├── Dockerfile # Docker 配置
├── package.json # 项目依赖
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite 配置
└── README.md # 项目说明
```
## 三、业务模块
### 3.1 核心业务模块
#### 1. 用户管理模块 (Admin)
- **路径**: `src/views/Admin/`
- **功能**:
- 用户列表管理 (userList)
- 用户操作日志 (userLog)
#### 2. 房间管理模块 (room)
- **路径**: `src/views/room/`
- **功能**:
- 房间列表 (roomList)
- 房间审核 (roomExamine)
- 房间背景 (roomBackground)
- 房间标签 (roomTag)
- 房间类型 (roomType)
- 房间规则 (roomRules)
- 房间关系 (roomRelation)
- 房间补贴 (roomSubsidy)
- 房间头条 (roomHeadlines)
- 房间日志 (roomLog)
- 表情管理 (expression)
- 小时榜 (hourlyChart)
- 影院房间 (movieRoom)
- 红包管理 (RedEnvelope)
#### 3. 财务管理模块 (Financial)
- **路径**: `src/views/Financial/`
- **功能**:
- 充值管理 (Recharge)
- 后台充值 (backRecharge)
- 提现管理 (Withdrawal)
- 兑换管理 (exchange)
#### 4. 礼物管理模块 (gift)
- **路径**: `src/views/gift/`
- **功能**:
- 礼物列表 (giftList)
- 礼物分类 (giftClassif)
#### 5. 等级管理模块 (Level)
- **路径**: `src/views/Level/`
- **功能**:
- 财富等级 (wealthGrade)
- 魅力等级 (charmGrade)
- 歌手等级 (singerLevel)
- CP等级 (cpLevel)
#### 6. 贵族管理模块 (Nobility)
- **路径**: `src/views/Nobility/`
- **功能**:
- 贵族列表 (nobilityList)
- 贵族特权 (nobilityPower)
- 用户贵族特权 (userPowerByNobility)
#### 7. 活动管理模块 (Activities)
- **路径**: `src/views/Activities/`
- **功能**:
- 新人活动 (newcomer)
- 礼包活动 (giftPack)
- 好礼活动 (goodGift)
- 充值列表 (RechargeList)
#### 8. 盲盒管理模块 (BlindBox)
- **路径**: `src/views/BlindBox/`
- **功能**:
- 盲盒列表 (boxList)
- 开启记录 (openRecord)
- 转盘管理 (turntable)
#### 9. 每日任务模块 (dailyTasksBox)
- **路径**: `src/views/dailyTasksBox/`
- **功能**:
- 活动列表 (ActivitiesList)
- 发放列表 (sendList)
#### 10. 装扮管理模块 (Decorate)
- **路径**: `src/views/Decorate/`
- **功能**:
- 装扮列表 (decorateList)
- 用户装扮 (decorateUser)
#### 11. 动态管理模块 (dynamics)
- **路径**: `src/views/dynamics/`
- **功能**:
- 动态列表 (dynamicsList)
- 动态话题 (dynamicsTopic)
#### 12. 举报管理模块 (Inform)
- **路径**: `src/views/Inform/`
- **功能**:
- 举报列表 (reportLIst)
- 举报类型 (reportType)
- 用户反馈 (feedback)
- 安卓日志 (androidlog)
#### 13. 邀请管理模块 (Invited)
- **路径**: `src/views/Invited/`
- **功能**:
- 邀请列表 (inviteList)
- 收益列表 (incomeList)
#### 14. 马迎新春游戏模块 (LXlegend)
- **路径**: `src/views/LXlegend/`
- **功能**:
- 游戏列表 (gameList)
- 期数列表 (periodsList)
- 多期列表 (multipleList)
#### 15. 新用户管理模块 (newuser)
- **路径**: `src/views/newuser/`
- **功能**:
- 新用户列表 (newuserList)
- 用户标签 (newuserTag)
- 背包列表 (backpackList)
- 禁用用户 (disableUser)
- 歌手用户 (singerUser)
- 机器人列表 (robotList)
#### 16. 乐园管理模块 (paradise)
- **路径**: `src/views/paradise/`
- **功能**:
- 乐园列表 (paradiseList)
- 抽奖/锁定列表 (drawOrlockList)
#### 17. 统计分析模块 (Statistical)
- **路径**: `src/views/Statistical/`
- **功能**:
- 礼物记录 (giftRecord)
- 礼物排行 (giftRank)
- 充值排行 (rechargeRank)
- 消费排行 (consumerRank)
- 收礼排行 (acceptGiftsRank)
- 房间流水排行 (roomFlowRank)
- 幸运币排行 (luckycoinRank)
- 幸运币抽奖 (luckycoinLottery)
- 任务分配 (taskAssignment)
#### 18. 系统管理模块 (system)
- **路径**: `src/views/system/`
- **功能**:
- 帮助中心 (helpCenter)
- 幸运币管理 (luckyCoin)
- 隐私设置 (private)
- 充值规则 (rechargeRules)
- 二级密码 (secondPassword)
- 单页管理 (singlePage)
- 任务管理 (Tasks)
- 主题管理 (themeManage)
#### 19. 未成年管理模块 (Underage)
- **路径**: `src/views/Underage/`
- **功能**:
- 青少年列表 (adolescentList)
- 青少年类型 (adolescentType)
#### 20. 公会管理模块 (union)
- **路径**: `src/views/union/`
- **功能**:
- 公会列表 (unionList)
- 公会规则 (unionRule)
- 公会补贴 (unionSubsidy)
#### 21. 其他模块
- **广告管理** (advertisement): 广告位管理
- **消息管理** (message): 系统消息推送
- **版本管理** (Version): APP版本控制
- **权限管理** (permission): 角色权限配置
### 3.2 API 接口模块
所有 API 接口统一放在 `src/api/modules/` 目录下,按业务模块划分:
- `activities.ts` - 活动相关接口
- `admin.ts` - 管理员相关接口
- `adolescent.ts` - 青少年相关接口
- `advertisement.ts` - 广告相关接口
- `backpack.ts` - 背包相关接口
- `blindBox.ts` - 盲盒相关接口
- `decorate.ts` - 装扮相关接口
- `dynamics.ts` - 动态相关接口
- `expression.ts` - 表情相关接口
- `Financial.ts` - 财务相关接口
- `game.ts` - 游戏相关接口
- `gift.ts` - 礼物相关接口
- `home.ts` - 首页相关接口
- `hourlyChart.ts` - 小时榜相关接口
- `Inform.ts` - 举报相关接口
- `invite.ts` - 邀请相关接口
- `level.ts` - 等级相关接口
- `message.ts` - 消息相关接口
- `newuserList.ts` - 新用户列表接口
- `newuserTag.ts` - 用户标签接口
- `nobility.ts` - 贵族相关接口
- `permission.ts` - 权限相关接口
- `room.ts` - 房间相关接口
- `statistics.ts` - 统计相关接口
- `system.ts` - 系统相关接口
- `union.ts` - 公会相关接口
- `Version.ts` - 版本相关接口
## 四、开发指南
### 4.1 环境准备
1. **安装 Node.js**
- 版本要求: ^18.18.0 || ^20.9.0 || >=22.0.0
- 推荐使用 nvm 管理 Node 版本
2. **安装 pnpm**
```bash
npm install -g pnpm
```
3. **克隆项目**
```bash
git clone [项目地址]
cd [项目目录]
```
4. **安装依赖**
```bash
pnpm install
```
### 4.2 开发命令
```bash
# 启动开发服务器
pnpm dev
# 构建生产环境
pnpm build
# 构建预发布环境
pnpm build:staging
# 预览构建结果
pnpm preview
# 类型检查
pnpm typecheck
# 代码格式化
pnpm lint
# ESLint 检查
pnpm lint:eslint
# Prettier 格式化
pnpm lint:prettier
# Stylelint 检查
pnpm lint:stylelint
# 清理缓存
pnpm clean:cache
```
### 4.3 环境配置
项目支持三种环境配置:
1. **开发环境** (`.env`)
- 端口: 8848
- 自动代理到测试服务器
2. **预发布环境** (`.env.staging`)
- 用于预发布测试
3. **生产环境** (`.env.production`)
- 路由模式: hash
- CDN: 关闭
- 压缩: 关闭
### 4.4 代理配置
开发环境下,所有 `/adminapi` 开头的请求会被代理到测试服务器:
```typescript
// vite.config.ts
proxy: {
"/adminapi": {
target: "https://test.vespa.qxyushen.top",
changeOrigin: true
}
}
```
### 4.5 API 配置
后端接口地址配置在 `src/utils/http/config.ts`
```typescript
// 测试环境
export const URL = "https://test.vespa.qxyushen.top";
// 声网 AppId
export const appIdBySw = "02f7339ec98947deaeab173599891932";
```
### 4.6 开发规范
#### 4.6.1 代码规范
- 使用 TypeScript 开发
- 遵循 ESLint 规则
- 使用 Prettier 格式化代码
- 组件使用 Vue 3 组合式 API (setup script)
- 使用 Pinia 进行状态管理
#### 4.6.2 命名规范
- 组件文件名: PascalCase (如 `UserList.vue`)
- 工具函数: camelCase (如 `getUserInfo`)
- 常量: UPPER_SNAKE_CASE (如 `API_BASE_URL`)
- 类型/接口: PascalCase (如 `UserInfo`)
#### 4.6.3 目录规范
- 页面组件放在 `src/views/` 下,按业务模块分类
- 公共组件放在 `src/components/` 下
- API 接口放在 `src/api/modules/` 下
- 工具函数放在 `src/utils/` 下
- 类型定义放在 `types/` 或对应模块的 `types.ts` 中
#### 4.6.4 Git 提交规范
项目使用 commitlint 规范提交信息,格式如下:
```
<type>(<scope>): <subject>
```
type 类型:
- `feat`: 新功能
- `fix`: 修复 bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 重构
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 构建/工具链相关
示例:
```bash
git commit -m "feat(user): 添加用户列表导出功能"
git commit -m "fix(room): 修复房间列表分页问题"
```
## 五、核心功能说明
### 5.1 权限管理
项目采用基于角色的权限控制RBAC
1. **路由权限**
- 在路由 meta 中配置 `roles` 字段
- 用户登录后根据角色动态加载路由
2. **按钮权限**
- 使用 `<Auth>` 组件包裹需要权限控制的按钮
- 使用 `v-auth` 指令控制元素显示
3. **接口权限**
- 请求拦截器自动添加 token
- 响应拦截器统一处理权限错误
### 5.2 路由管理
#### 5.2.1 路由结构
- **静态路由**: 不需要权限的路由登录、404等
- **动态路由**: 根据用户权限动态加载的路由
#### 5.2.2 路由配置
路由配置在 `src/router/modules/` 目录下,按模块划分:
```typescript
export default {
path: "/user",
name: "User",
redirect: "/user/list",
meta: {
icon: "user",
title: "用户管理",
rank: 1
},
children: [
{
path: "/user/list",
name: "UserList",
component: () => import("@/views/Admin/userList/index.vue"),
meta: {
title: "用户列表",
roles: ["admin"]
}
}
]
};
```
#### 5.2.3 路由守卫
- **beforeEach**: 权限验证、登录状态检查
- **afterEach**: 进度条关闭、页面标题设置
### 5.3 状态管理
使用 Pinia 进行状态管理,主要模块:
- **user**: 用户信息、登录状态
- **permission**: 权限信息、动态路由
- **multiTags**: 标签页管理
- **settings**: 系统设置
### 5.4 HTTP 请求
#### 5.4.1 请求封装
基于 Axios 封装,位于 `src/utils/http/`
- 自动添加 token
- 统一错误处理
- 请求/响应拦截
- 支持取消请求
#### 5.4.2 使用示例
```typescript
import { http } from "@/utils/http";
// GET 请求
export const getUserList = (params) => {
return http.request("get", "/adminapi/user/list", { params });
};
// POST 请求
export const createUser = (data) => {
return http.request("post", "/adminapi/user/create", { data });
};
```
### 5.5 表格组件
使用 `@pureadmin/table` 增强的 Element Plus 表格:
- 支持分页
- 支持排序
- 支持筛选
- 支持导出
- 支持列配置
### 5.6 表单组件
#### 5.6.1 搜索表单
使用 `SearchForm` 组件快速构建搜索表单:
```vue
<SearchForm
:columns="searchColumns"
:model="searchForm"
@search="handleSearch"
@reset="handleReset"
/>
```
#### 5.6.2 表单验证
使用 Element Plus 表单验证:
```typescript
const rules = {
username: [
{ required: true, message: "请输入用户名", trigger: "blur" }
],
email: [
{ type: "email", message: "请输入正确的邮箱", trigger: "blur" }
]
};
```
### 5.7 文件上传
#### 5.7.1 图片上传
使用 `UploadImage` 组件:
```vue
<UploadImage
v-model="form.avatar"
:limit="1"
:size="2"
/>
```
#### 5.7.2 OSS 上传
使用阿里云 OSS 直传,配置在 `src/utils/ali-oss.js`
### 5.8 富文本编辑器
使用 wangEditor 5
```vue
<RichText v-model="form.content" />
```
### 5.9 图表组件
使用 ECharts 5配置在 `src/plugins/echarts.ts`
### 5.10 音视频功能
使用声网 SDK (agora-rtc-sdk-ng)AppId 配置在 `src/utils/http/config.ts`
## 六、部署指南
### 6.1 Docker 部署
项目包含 Dockerfile支持 Docker 部署:
```bash
# 构建镜像
docker build -t pure-admin-thin .
# 运行容器
docker run -d -p 80:80 pure-admin-thin
```
Dockerfile 说明:
- 基础镜像: node:20-alpine
- 构建工具: pnpm
- Web 服务器: nginx
- 暴露端口: 80
### 6.2 传统部署
#### 6.2.1 构建
```bash
# 生产环境构建
pnpm build
# 预发布环境构建
pnpm build:staging
```
#### 6.2.2 部署
将 `dist` 目录下的文件部署到 Web 服务器Nginx/Apache
#### 6.2.3 Nginx 配置示例
```nginx
server {
listen 80;
server_name your-domain.com;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /adminapi {
proxy_pass https://test.vespa.qxyushen.top;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
### 6.3 环境变量配置
部署前需要根据环境修改以下配置:
1. **API 地址**: `src/utils/http/config.ts`
2. **路由模式**: `.env.production` 中的 `VITE_ROUTER_HISTORY`
3. **公共路径**: `.env.production` 中的 `VITE_PUBLIC_PATH`
### 6.4 性能优化
项目已配置以下优化:
- Vite 构建优化
- 代码分割
- 静态资源压缩(可选)
- CDN 加速(可选)
- 路由懒加载
- 组件按需引入
## 七、常见问题
### 7.1 开发环境问题
**Q: 启动项目报错 "Cannot find module"**
A: 删除 `node_modules` 和 `pnpm-lock.yaml`,重新执行 `pnpm install`
**Q: 端口被占用**
A: 修改 `.env` 文件中的 `VITE_PORT` 配置
**Q: 代理不生效**
A: 检查 `vite.config.ts` 中的 proxy 配置,确保 target 地址正确
### 7.2 构建问题
**Q: 构建内存溢出**
A: 项目已配置 `NODE_OPTIONS=--max-old-space-size=8192`,如仍有问题可适当增加
**Q: 构建后白屏**
A: 检查路由模式配置hash 模式需要设置 `VITE_ROUTER_HISTORY = "hash"`
### 7.3 权限问题
**Q: 登录后看不到菜单**
A: 检查用户角色配置,确保路由 meta 中的 roles 包含用户角色
**Q: 接口返回 401**
A: Token 过期或无效,需要重新登录
### 7.4 样式问题
**Q: Element Plus 样式不生效**
A: 确保在 `main.ts` 中引入了 `element-plus/dist/index.css`
**Q: Tailwind 样式不生效**
A: 确保在 `main.ts` 中引入了 `./style/tailwind.css`
## 八、技术支持
### 8.1 相关文档
- **Vue 3 官方文档**: https://cn.vuejs.org/
- **Vite 官方文档**: https://cn.vitejs.dev/
- **Element Plus 文档**: https://element-plus.org/zh-CN/
- **Pinia 文档**: https://pinia.vuejs.org/zh/
- **vue-pure-admin 文档**: https://pure-admin.cn/
- **@pureadmin/utils 文档**: https://pure-admin-utils.netlify.app
### 8.2 常用资源
- **图标库**:
- Iconify: https://icon-sets.iconify.design/
- Element Plus Icons: https://element-plus.org/zh-CN/component/icon.html
- **UI 设计**:
- Element Plus 设计规范
- Tailwind CSS 工具类
- **工具库**:
- dayjs: 日期处理
- lodash-es: 工具函数
- @pureadmin/utils: 项目工具函数
### 8.3 问题反馈
如遇到问题,可以通过以下方式反馈:
1. 查看项目 README 和文档
2. 搜索相关 issue
3. 联系项目负责人
4. 提交新的 issue
## 九、项目特色功能
### 9.1 声网音视频集成
项目集成了声网 SDK支持音视频通话功能
- **AppId**: 配置在 `src/utils/http/config.ts`
- **SDK**: agora-rtc-sdk-ng v4.23.4
- **功能**: 支持音视频通话、屏幕共享等
### 9.2 阿里云 OSS 上传
支持文件直传到阿里云 OSS
- **配置**: `src/utils/ali-oss.js`
- **组件**: `UploadImage` 组件封装
- **功能**: 支持图片上传、进度显示、预览等
### 9.3 Excel 导入导出
使用 xlsx 库实现 Excel 功能:
- **导出**: 表格数据导出为 Excel
- **导入**: Excel 文件解析导入
- **组件**: `exportDialog` 组件封装
### 9.4 富文本编辑器
集成 wangEditor 5
- **组件**: `RichText` 组件
- **功能**: 支持图片上传、视频插入、表格等
- **配置**: 可自定义工具栏
### 9.5 ECharts 图表
集成 ECharts 5 数据可视化:
- **配置**: `src/plugins/echarts.ts`
- **按需引入**: 只引入使用的图表类型
- **响应式**: 自动适配容器大小
### 9.6 拖拽排序
使用 sortablejs 实现拖拽功能:
- **表格行拖拽**: 调整数据顺序
- **菜单拖拽**: 自定义菜单排序
- **组件拖拽**: 页面布局调整
### 9.7 多标签页
支持多标签页功能:
- **标签管理**: 打开、关闭、刷新
- **右键菜单**: 关闭其他、关闭所有
- **缓存**: 支持页面缓存
- **持久化**: 刷新后保持标签状态
### 9.8 主题切换
支持明暗主题切换:
- **配置**: `src/style/theme.scss`
- **切换**: 实时切换,无需刷新
- **持久化**: 记住用户选择
### 9.9 响应式布局
完全响应式设计:
- **移动端适配**: 支持手机、平板访问
- **侧边栏**: 可折叠、自适应
- **表格**: 响应式列显示
### 9.10 国际化支持
虽然当前是非国际化版本,但架构支持国际化:
- **切换版本**: 可切换到国际化分支
- **i18n**: 预留国际化接口
- **文档**: 提供国际化版本文档