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