Files
012-kaopeilian/知识库/用户管理页面调试指南.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

222 lines
5.3 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.
# 用户管理页面调试指南
## 问题追踪
用户反馈:翻页无效,搜索不工作
## 已完成的修复
### 修复1移除前端过滤
- ✅ 删除了客户端过滤逻辑
- ✅ 改为直接显示后端返回的数据
### 修复2触发后端请求
- ✅ 搜索时重置到第1页并重新加载
- ✅ 翻页时调用loadUserList()
- ✅ 清除筛选时重新加载数据
### 修复3修正API参数
- ✅ 使用API层期望的参数格式pageSize而非page_size
- ✅ 让API层统一处理参数转换
## 最新代码版本
### loadUserList函数
```typescript
const loadUserList = async () => {
try {
loading.value = true
const params: any = {
page: currentPage.value,
pageSize: pageSize.value, // API层会转换为page_size
keyword: filterForm.username || undefined,
role: filterForm.role || undefined,
status: filterForm.status || undefined // API层会转换为is_active
}
const response = await getUserList(params)
// ...处理响应
}
}
```
### API层参数转换
`src/api/admin/user.ts` 中的 `getUserList` 函数会:
1.`pageSize` 转换为 `page_size`
2.`status` 转换为 `is_active`
3. 清理空参数
## 验证步骤
### 1. 清除浏览器缓存
```
1. 打开 https://kpl.ireborn.com.cn/admin/user-management
2. 按 Ctrl+Shift+R (Windows) 或 Cmd+Shift+R (Mac) 强制刷新
3. 或者按 F12 打开开发者工具在Network标签页勾选"Disable cache"
```
### 2. 打开浏览器控制台
```
按 F12 打开开发者工具
切换到 Console 标签页
```
### 3. 监控网络请求
```
1. 切换到 Network 标签页
2. 筛选 XHR 请求
3. 观察对 /api/v1/users/ 的请求
```
### 4. 测试翻页功能
```
操作:点击页码 "2"
预期:应该看到新的网络请求
请求URL应该包含?page=2&page_size=20
```
### 5. 测试搜索功能
```
操作:在搜索框输入"何平"
预期:应该看到新的网络请求
请求URL应该包含?page=1&page_size=20&keyword=何平
```
### 6. 测试角色筛选
```
操作:选择"管理者"
预期:应该看到新的网络请求
请求URL应该包含?page=1&page_size=20&role=manager
```
## 调试命令
### 查看前端容器日志
```bash
docker logs kpl-frontend-dev --tail 50
```
### 重启前端容器
```bash
docker restart kpl-frontend-dev
```
### 检查前端文件更新时间
```bash
docker exec kpl-frontend-dev ls -lh /app/src/views/admin/user-management.vue
```
### 测试后端API
```bash
# 获取token
TOKEN=$(curl -s -X POST "https://kpl.ireborn.com.cn/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}' | \
python3 -c "import sys, json; print(json.load(sys.stdin)['data']['token']['access_token'])")
# 测试第1页
curl -s "https://kpl.ireborn.com.cn/api/v1/users/?page=1&page_size=20" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool | head -30
# 测试第2页
curl -s "https://kpl.ireborn.com.cn/api/v1/users/?page=2&page_size=20" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool | head -30
# 测试搜索
curl -s "https://kpl.ireborn.com.cn/api/v1/users/?keyword=何平" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool
```
## 常见问题
### Q1: 修改后页面没变化
**A**: 需要强制刷新浏览器Ctrl+Shift+R清除缓存
### Q2: 看不到网络请求
**A**:
1. 检查F12开发者工具是否打开
2. 确认在Network标签页
3. 确认已勾选"Preserve log"
### Q3: API返回200但没数据
**A**:
1. 检查Console是否有JavaScript错误
2. 检查Network中的Response内容
3. 查看是否total=0说明确实没数据
### Q4: 容器状态不健康
**A**:
```bash
# 重启前端容器
docker restart kpl-frontend-dev
# 等待30秒后检查
sleep 30
docker ps --filter "name=kpl-frontend-dev"
```
## 预期结果
### 翻页
- ✅ 点击页码时发送新的HTTP请求
- ✅ URL包含正确的page参数
- ✅ 表格显示对应页的数据
- ✅ 总数显示117个用户
### 搜索
- ✅ 输入关键词时发送HTTP请求
- ✅ URL包含keyword参数
- ✅ 只显示匹配的用户
- ✅ 总数显示匹配的数量
### 筛选
- ✅ 选择筛选条件时发送HTTP请求
- ✅ URL包含对应的参数role/is_active
- ✅ 只显示符合条件的用户
- ✅ 可以组合多个筛选条件
## 浏览器控制台检查
在浏览器控制台F12 → Console输入以下命令查看当前状态
```javascript
// 查看当前页码
console.log('当前页:', currentPage.value)
// 查看每页数量
console.log('每页数量:', pageSize.value)
// 查看总数
console.log('总用户数:', total.value)
// 查看筛选条件
console.log('筛选条件:', filterForm)
// 查看用户列表
console.log('用户列表:', userList.value)
```
## 容器状态检查
```bash
# 检查所有kpl容器
docker ps --filter "name=kpl" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# 检查前端容器健康状态
docker inspect kpl-frontend-dev --format='{{.State.Health.Status}}'
# 查看前端容器最近日志
docker logs kpl-frontend-dev --tail 100 | grep -E "ERROR|WARN|编译"
```
## 联系支持
如果问题仍未解决,请提供:
1. 浏览器Console中的错误信息红色文字
2. Network标签中的请求URL和响应内容
3. 具体的操作步骤和预期/实际结果
## 更新记录
- 2025-11-11 20:10 - 修正API参数格式
- 2025-11-11 20:00 - 初次修复