Files
toolbox/toolbox-app/README.md
Nvex fb98a84ea5 docs: 移除命令行模式,专注于Web界面
- 移除README.md中所有命令行模式相关内容
- 更新项目架构描述,专注于Web API服务
- 简化快速开始指南,只保留Web界面步骤
- 优化项目结构说明
- 提升文档的专注性和用户体验
2025-10-23 09:16:56 +08:00

278 lines
5.5 KiB
Markdown
Raw Permalink 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.

# 批量退课工具 - Web 前端应用
## 🌐 项目概述
这是批量退课工具的 Web 前端应用,基于 Vue.js 3 + Vite 构建,提供用户友好的图形界面来执行批量退课操作。
## ✨ 主要功能
- 📁 **文件上传**: 支持拖拽上传 Excel 文件
- 👀 **数据预览**: 上传后即时预览退课数据
- 🔍 **数据验证**: 自动检查数据格式和完整性
-**批量操作**: 一键执行批量退课
- 📊 **结果展示**: 详细的操作结果和统计信息
- 🎨 **响应式设计**: 适配各种屏幕尺寸
## 🛠️ 技术栈
- **Vue.js 3** - 渐进式 JavaScript 框架
- **Vite** - 下一代前端构建工具
- **Element Plus** - Vue 3 UI 组件库
- **Axios** - HTTP 客户端
- **Vue Router** - 官方路由管理器
- **Pinia** - Vue 状态管理库
## 🚀 快速开始
### 环境要求
- Node.js >= 16.0.0
- npm >= 8.0.0
### 安装依赖
```bash
npm install
```
### 开发模式
```bash
npm run dev
```
应用将在 `http://localhost:5173` 启动
### 生产构建
```bash
npm run build
```
构建文件将输出到 `dist/` 目录
### 预览生产构建
```bash
npm run preview
```
## 📁 项目结构
```
toolbox-app/
├── public/ # 静态资源
│ ├── vite.svg # 应用图标
│ └── *.xlsx # 示例 Excel 文件
├── src/
│ ├── components/ # Vue 组件
│ │ ├── CourseWithdrawal.vue # 主要的退课组件
│ │ └── ...
│ ├── views/ # 页面视图
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── store/ # 状态管理
│ │ └── index.js
│ ├── assets/ # 资源文件
│ ├── style.css # 全局样式
│ ├── App.vue # 根组件
│ └── main.js # 应用入口
├── index.html # HTML 模板
├── vite.config.js # Vite 配置
├── package.json # 项目配置
└── README.md # 项目文档
```
## 🔧 配置说明
### API 配置
前端应用通过 Axios 与后端 Flask API 通信。API 基础 URL 配置在组件中:
```javascript
// 默认后端地址
const API_BASE_URL = 'http://localhost:5000'
```
如需修改后端地址,请在相关组件中更新此配置。
### 构建配置
Vite 配置文件 `vite.config.js`
```javascript
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
server: {
port: 5173,
host: true
}
})
```
## 📋 使用指南
### 1. 准备 Excel 文件
确保 Excel 文件包含以下列:
| 学生ID | 课程班ID |
|--------|----------|
| 3831629 | 1820221, 1820210 |
| 3831630 | 1820456 |
### 2. 上传文件
- 点击上传区域选择文件,或直接拖拽文件到上传区域
- 支持 `.xlsx``.xls` 格式
- 文件大小限制10MB
### 3. 预览数据
- 上传成功后,系统会自动解析并显示数据预览
- 检查学生 ID 和课程班 ID 是否正确
- 确认数据无误后点击"执行退课"
### 4. 执行退课
- 点击"执行退课"按钮开始批量操作
- 系统会显示实时进度和结果
- 操作完成后查看详细的统计报告
### 5. 查看结果
- 成功退课的记录会显示为绿色
- 失败的记录会显示为红色,并包含错误信息
- 跳过的记录会显示为灰色
## 🎨 界面特性
### 响应式设计
- 支持桌面端、平板和移动端
- 自适应布局,优化各种屏幕尺寸的使用体验
### 用户体验
- 直观的文件上传界面
- 实时的操作反馈
- 清晰的结果展示
- 友好的错误提示
### 视觉设计
- 现代化的 UI 设计
- 一致的色彩方案
- 清晰的信息层次
- 流畅的交互动画
## 🔍 开发指南
### 组件开发
主要组件 `CourseWithdrawal.vue` 包含:
- 文件上传功能
- 数据预览表格
- 批量退课执行
- 结果展示
### 状态管理
使用 Pinia 管理应用状态:
```javascript
// store/index.js
import { defineStore } from 'pinia'
export const useAppStore = defineStore('app', {
state: () => ({
// 应用状态
}),
actions: {
// 状态操作
}
})
```
### API 集成
使用 Axios 进行 HTTP 请求:
```javascript
import axios from 'axios'
const api = axios.create({
baseURL: 'http://localhost:5000',
timeout: 30000
})
```
## 🚀 部署
### 静态部署
构建后将 `dist/` 目录部署到任何静态文件服务器:
```bash
npm run build
# 将 dist/ 目录上传到服务器
```
### Nginx 配置示例
```nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
```
### Docker 部署
```dockerfile
FROM nginx:alpine
COPY dist/ /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
## 🐛 故障排除
### 常见问题
**Q: 无法连接到后端服务?**
A: 检查后端服务是否启动,确认 API 地址配置正确。
**Q: 文件上传失败?**
A: 检查文件格式是否为 Excel文件大小是否超过限制。
**Q: 数据预览为空?**
A: 确认 Excel 文件包含"学生ID"和"课程班ID"列。
**Q: 退课操作失败?**
A: 检查后端 API 配置和网络连接,查看浏览器控制台错误信息。
### 调试模式
开启 Vue DevTools 进行调试:
```bash
# 开发模式自动启用 DevTools
npm run dev
```
## 📄 许可证
本项目采用 MIT 许可证。
---
*最后更新: 2024年12月*