881 lines
22 KiB
Markdown
881 lines
22 KiB
Markdown
# 项目交接文档
|
||
|
||
## 一、项目概述
|
||
|
||
### 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**: 预留国际化接口
|
||
- **文档**: 提供国际化版本文档 |