mirror of
https://github.com/Cccc-owo/CheckInApp.git
synced 2026-06-17 05:56:29 +00:00
fdc725b893
backend & frontend
231 lines
5.5 KiB
Markdown
231 lines
5.5 KiB
Markdown
# 接龙自动打卡系统 - 前端
|
|
|
|
基于 Vue 3 + Vite + Element Plus 的现代化前端应用。
|
|
|
|
## 技术栈
|
|
|
|
- **框架**: Vue 3 (Composition API)
|
|
- **构建工具**: Vite
|
|
- **UI 库**: Element Plus
|
|
- **路由**: Vue Router 4
|
|
- **状态管理**: Pinia
|
|
- **HTTP 客户端**: Axios
|
|
- **图标**: @element-plus/icons-vue
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
frontend/
|
|
├── src/
|
|
│ ├── api/ # API 接口
|
|
│ │ ├── client.js # Axios 客户端配置
|
|
│ │ └── index.js # API 方法封装
|
|
│ ├── assets/ # 静态资源
|
|
│ ├── components/ # 公共组件
|
|
│ │ ├── Layout.vue # 布局组件
|
|
│ │ ├── Navbar.vue # 导航栏
|
|
│ │ └── QRCodeModal.vue # QR 码扫码组件
|
|
│ ├── router/ # 路由配置
|
|
│ │ └── index.js
|
|
│ ├── stores/ # Pinia 状态管理
|
|
│ │ ├── auth.js # 认证状态
|
|
│ │ ├── user.js # 用户状态
|
|
│ │ ├── checkIn.js # 打卡状态
|
|
│ │ └── admin.js # 管理员状态
|
|
│ ├── utils/ # 工具函数
|
|
│ │ └── helpers.js # 通用辅助函数
|
|
│ ├── views/ # 页面组件
|
|
│ │ ├── LoginView.vue # 登录页
|
|
│ │ ├── DashboardView.vue # 用户仪表盘
|
|
│ │ ├── RecordsView.vue # 打卡记录
|
|
│ │ ├── NotFoundView.vue # 404 页面
|
|
│ │ └── admin/ # 管理员页面
|
|
│ │ ├── UsersView.vue # 用户管理
|
|
│ │ ├── RecordsView.vue # 所有打卡记录
|
|
│ │ ├── StatsView.vue # 统计信息
|
|
│ │ └── LogsView.vue # 系统日志
|
|
│ ├── App.vue # 根组件
|
|
│ ├── main.js # 入口文件
|
|
│ └── style.css # 全局样式
|
|
├── .env # 环境变量
|
|
├── .env.development # 开发环境变量
|
|
├── .env.production # 生产环境变量
|
|
├── vite.config.js # Vite 配置
|
|
├── package.json # 依赖配置
|
|
└── README.md # 本文件
|
|
```
|
|
|
|
## 快速开始
|
|
|
|
### 安装依赖
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 开发模式
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
访问 http://localhost:3000
|
|
|
|
### 生产构建
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
构建产物在 `dist/` 目录。
|
|
|
|
### 预览生产构建
|
|
|
|
```bash
|
|
npm run preview
|
|
```
|
|
|
|
## 功能特性
|
|
|
|
### 用户功能
|
|
|
|
- **QQ 扫码登录**: 支持 QQ 扫码认证
|
|
- **个人仪表盘**: 查看 Token 状态、手动打卡
|
|
- **打卡记录**: 查看个人打卡历史和统计
|
|
- **Token 管理**: 实时监控 Token 过期状态
|
|
|
|
### 管理员功能
|
|
|
|
- **用户管理**: CRUD 操作、批量启用/禁用、批量打卡
|
|
- **打卡记录**: 查看所有用户的打卡记录
|
|
- **统计信息**: 系统整体运行数据统计
|
|
- **系统日志**: 实时查看系统运行日志
|
|
|
|
## API 代理配置
|
|
|
|
开发环境下,Vite 会自动代理 `/api` 请求到后端服务器:
|
|
|
|
```javascript
|
|
// vite.config.js
|
|
server: {
|
|
port: 3000,
|
|
proxy: {
|
|
'/api': {
|
|
target: 'http://localhost:8000',
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
## 环境变量
|
|
|
|
创建 `.env.local` 文件自定义配置:
|
|
|
|
```env
|
|
VITE_API_BASE_URL=http://localhost:8000
|
|
```
|
|
|
|
## 路由结构
|
|
|
|
- `/login` - 登录页面
|
|
- `/dashboard` - 用户仪表盘(需登录)
|
|
- `/records` - 打卡记录(需登录)
|
|
- `/admin/users` - 用户管理(需管理员权限)
|
|
- `/admin/records` - 所有打卡记录(需管理员权限)
|
|
- `/admin/stats` - 统计信息(需管理员权限)
|
|
- `/admin/logs` - 系统日志(需管理员权限)
|
|
|
|
## 状态管理
|
|
|
|
使用 Pinia 进行全局状态管理:
|
|
|
|
- **authStore**: 认证状态(Token、用户信息)
|
|
- **userStore**: 用户管理相关
|
|
- **checkInStore**: 打卡记录相关
|
|
- **adminStore**: 管理员功能相关
|
|
|
|
## 组件说明
|
|
|
|
### QRCodeModal
|
|
|
|
QQ 扫码登录组件,支持:
|
|
- 自动获取二维码
|
|
- 轮询扫码状态
|
|
- 倒计时和进度显示
|
|
- 二维码过期提示和刷新
|
|
|
|
### Navbar
|
|
|
|
导航栏组件,支持:
|
|
- 基于角色的菜单显示
|
|
- 当前路由高亮
|
|
- 用户信息显示
|
|
- 退出登录
|
|
|
|
### Layout
|
|
|
|
页面布局组件,包含:
|
|
- 顶部导航栏
|
|
- 主内容区域
|
|
- 响应式布局
|
|
|
|
## 开发规范
|
|
|
|
1. **组件命名**: 使用 PascalCase
|
|
2. **文件命名**: 组件文件使用 PascalCase,工具文件使用 camelCase
|
|
3. **API 调用**: 统一通过 stores 调用,不直接在组件中调用
|
|
4. **错误处理**: 使用 try-catch 并显示友好的错误提示
|
|
5. **Loading 状态**: 异步操作需显示加载状态
|
|
|
|
## 浏览器支持
|
|
|
|
- Chrome >= 87
|
|
- Firefox >= 78
|
|
- Safari >= 14
|
|
- Edge >= 88
|
|
|
|
## 常见问题
|
|
|
|
### 启动时端口被占用
|
|
|
|
修改 `vite.config.js` 中的 `server.port` 配置。
|
|
|
|
### API 请求失败
|
|
|
|
检查后端服务是否启动,默认应在 http://localhost:8000 运行。
|
|
|
|
### 构建产物过大
|
|
|
|
Element Plus 已配置按需加载,如需进一步优化,可以:
|
|
- 使用动态导入 (dynamic import)
|
|
- 配置 CDN 引入
|
|
- 启用 gzip 压缩
|
|
|
|
## 部署
|
|
|
|
### Nginx 配置示例
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name your-domain.com;
|
|
root /var/www/checkin/frontend/dist;
|
|
index index.html;
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
location /api {
|
|
proxy_pass http://localhost:8000;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
}
|
|
}
|
|
```
|
|
|
|
## 许可证
|
|
|
|
MIT
|