5.0 KiB
5.0 KiB
"测试中"页面为空问题诊断
问题描述
- 点击"测试中"按钮(testStep = 1)
- 页面显示空白,没有工单数据
可能的原因
1. 数据库中没有 test_step = 1 的工单 ⭐⭐⭐⭐⭐
可能性: 95%
原因:
- 新创建的工单默认
test_step = 0(待领取)或test_step = 1(测试中) - 如果所有工单都是刚创建的,可能都还在"待领取"状态
- 需要手动将工单状态改为"测试中"
验证方法:
-- 执行这个查询
SELECT test_step, COUNT(*)
FROM test_work_order
WHERE order_id IS NULL
GROUP BY test_step;
解决方案: 如果确实没有 test_step = 1 的工单,有两个选择:
- 手动更新某些工单的状态为"测试中"
- 点击"待领取"或"全部工单"按钮查看其他状态的工单
2. 新创建的工单 test_step 默认值不正确 ⭐⭐⭐
可能性: 3%
原因:
- 样品生成工单时,
test_step可能设置为 0(待领取) - 需要检查工单创建逻辑
验证方法:
-- 查看最近创建的工单的 test_step 值
SELECT id, name, test_step, create_time
FROM test_work_order
WHERE order_id IS NULL
ORDER BY id DESC
LIMIT 10;
3. 后端查询逻辑有问题 ⭐⭐
可能性: 2%
原因:
- DAO 层的 WHERE 条件可能有问题
- test_step 的比较逻辑可能不正确
验证方法: 查看 DAO 代码中的 WHERE 条件:
TestWorkOrder.test_step == query_object.test_step if query_object.test_step is not None else True
这个逻辑是正确的,只有当 test_step is not None 时才会过滤。
诊断步骤
步骤 1: 执行 SQL 诊断脚本
mysql -u root -p < check_teststep_data.sql
这个脚本会告诉你:
- 各个测试步骤有多少工单
- 是否有 test_step = 1 的工单
- 最近创建的工单的 test_step 值
步骤 2: 查看诊断结果
情况 A: 没有 test_step = 1 的工单
输出示例:
test_step | count
----------|------
0 | 10
NULL | 0
说明: 所有工单都在"待领取"状态,没有"测试中"的工单
解决方案:
- 点击"待领取"按钮查看工单
- 或者手动更新某些工单的状态:
-- 将前 5 个工单改为"测试中"
UPDATE test_work_order
SET test_step = 1
WHERE order_id IS NULL
ORDER BY id DESC
LIMIT 5;
情况 B: 有 test_step = 1 的工单,但页面不显示
输出示例:
test_step | count
----------|------
0 | 5
1 | 5
说明: 数据库中有"测试中"的工单,但前端不显示
解决方案:
- 检查浏览器开发者工具(F12)
- 查看 Network 标签的 API 请求
- 查看 Console 标签的错误信息
步骤 3: 检查浏览器开发者工具
3.1 打开开发者工具
按 F12
3.2 查看 Network 标签
- 切换到 Network 标签
- 点击"测试中"按钮
- 找到
/system/test_work_order/list请求
3.3 查看请求参数
Request Query String:
pageNum: 1
pageSize: 10
testStep: 1
确认 testStep 参数是 1
3.4 查看响应内容
正常响应(有数据):
{
"code": 200,
"data": {
"rows": [
{
"id": 821,
"testStep": 1,
"name": "SN0001-出库测试(PCBA)",
...
}
],
"total": 5
}
}
异常响应(空数据):
{
"code": 200,
"data": {
"rows": [],
"total": 0
}
}
如果是空数据,说明数据库中确实没有 test_step = 1 的工单。
快速解决方案
方案 1: 查看其他状态的工单
点击其他按钮:
- "全部工单" - 查看所有工单
- "待领取" - 查看 test_step = 0 的工单
方案 2: 手动更新工单状态
如果你想测试"测试中"页面,可以手动更新一些工单:
-- 将最近的 5 个工单改为"测试中"
UPDATE test_work_order
SET test_step = 1
WHERE order_id IS NULL
AND test_step = 0
ORDER BY id DESC
LIMIT 5;
方案 3: 修改工单创建逻辑
如果你希望新创建的工单默认就是"测试中"状态,需要修改样品生成工单的代码:
文件: warehouse_sample_service.py
找到创建工单的代码,将 test_step 设置为 1:
work_order = Test_work_orderModel(
# ... 其他字段
test_step=1, # 改为 1(测试中)而不是 0(待领取)
# ...
)
预期结果
修复后:
- 点击"待领取"应该能看到 test_step = 0 的工单
- 点击"测试中"应该能看到 test_step = 1 的工单
- 点击"全部工单"应该能看到所有工单
需要提供的信息
如果问题仍未解决,请提供:
-
SQL 诊断结果
mysql -u root -p < check_teststep_data.sql -
浏览器 Network 标签截图
- 点击"测试中"按钮
- 查看
/system/test_work_order/list的请求参数和响应
-
点击"全部工单"按钮的结果
- 是否能看到工单?
- 这些工单的 test_step 值是多少?
完成时间
2026-01-09 00:30