ETest-Vue-FastAPI/测试中页面为空问题诊断.md

5.0 KiB
Raw Blame History

"测试中"页面为空问题诊断

问题描述

  • 点击"测试中"按钮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 的工单,有两个选择:

  1. 手动更新某些工单的状态为"测试中"
  2. 点击"待领取"或"全部工单"按钮查看其他状态的工单

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

说明: 所有工单都在"待领取"状态,没有"测试中"的工单

解决方案:

  1. 点击"待领取"按钮查看工单
  2. 或者手动更新某些工单的状态:
-- 将前 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 查看响应内容

正常响应(有数据):

{
  "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 的工单
  • 点击"全部工单"应该能看到所有工单

需要提供的信息

如果问题仍未解决,请提供:

  1. SQL 诊断结果

    mysql -u root -p < check_teststep_data.sql
    
  2. 浏览器 Network 标签截图

    • 点击"测试中"按钮
    • 查看 /system/test_work_order/list 的请求参数和响应
  3. 点击"全部工单"按钮的结果

    • 是否能看到工单?
    • 这些工单的 test_step 值是多少?

完成时间

2026-01-09 00:30