228 lines
5.0 KiB
Markdown
228 lines
5.0 KiB
Markdown
# "测试中"页面为空问题诊断
|
||
|
||
## 问题描述
|
||
- 点击"测试中"按钮(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
|