# 快速诊断工单显示问题 ## 当前状态 ✅ 数据库有数据(已验证) ✅ SQL 查询能返回数据(已验证) ❓ 前端页面不显示数据 ## 下一步诊断 ### 1. 检查后端服务状态 **问题**: 后端服务是否已重启? **原因**: 修改了 DO 模型后必须重启服务 **操作**: ```bash # 停止后端服务 # 启动后端服务 ``` ### 2. 检查浏览器开发者工具 #### 2.1 打开开发者工具 - 按 **F12** - 或右键 → 检查 #### 2.2 查看 Network 标签 1. 切换到 **Network** 标签 2. 刷新工单列表页面 3. 找到 `/system/test_work_order/list` 请求 #### 2.3 检查请求状态 查看 **Status Code**(状态码): **200 OK** - 请求成功 - 查看 Response 内容 - 如果 `rows` 为空,说明后端查询有问题 - 如果 `rows` 有数据,说明是前端显示问题 **401 Unauthorized** - 未授权 - 用户未登录或 token 过期 - 重新登录 **403 Forbidden** - 权限不足 - 用户没有查看工单的权限 - 检查用户角色和权限配置 **500 Internal Server Error** - 服务器错误 - 后端代码有错误 - 查看后端日志 #### 2.4 查看 Response(响应内容) **正常响应**: ```json { "code": 200, "msg": "success", "data": { "rows": [ { "id": 821, "batchId": 1767886248798, "batchName": "批次-20260108233048", "name": "SN0001-出库测试(PCBA)", "testEutName": "SN0001", "creatorName": "管理员", ... } ], "total": 10, "pageNum": 1, "pageSize": 10 } } ``` **异常响应 - 空数据**: ```json { "code": 200, "data": { "rows": [], "total": 0 } } ``` **异常响应 - 错误**: ```json { "code": 500, "msg": "错误信息" } ``` #### 2.5 查看 Console 标签 检查是否有 JavaScript 错误: - 红色错误信息 - 字段映射错误 - 类型转换错误 ### 3. 常见问题和解决方案 #### 问题 1: API 返回 500 错误 **原因**: 后端代码有错误 **解决方案**: 1. 查看后端日志 2. 检查 DO 模型是否正确 3. 确认数据库字段类型是否匹配 **可能的错误**: - `name` 字段长度不匹配 - `batch_id` 类型不匹配(应该是 BIGINT) - JOIN 的表不存在或字段不匹配 #### 问题 2: API 返回空数组 **原因**: 查询条件过滤了所有数据 **解决方案**: 检查查询参数: ```javascript // 前端发送的参数 { "pageNum": 1, "pageSize": 10, "batchId": null, // 应该是 null "testStep": null } ``` 如果 `batchId` 不是 null,说明有过滤条件。 #### 问题 3: API 返回数据但前端不显示 **原因**: 前端字段映射错误 **解决方案**: 检查前端代码中的字段名: ```vue ``` 检查后端返回的字段名: ```json { "batchId": 1767886248798, // camelCase "batchName": "批次-20260108233048", "testEutName": "SN0001" } ``` #### 问题 4: 权限问题 **原因**: 用户没有查看工单的权限 **解决方案**: 1. 检查用户角色 2. 检查权限配置 3. 尝试用管理员账号登录 ### 4. 快速修复步骤 #### 步骤 1: 重启后端服务(必须!) ```bash # 停止后端服务 # 启动后端服务 ``` #### 步骤 2: 清除浏览器缓存 - **Windows**: `Ctrl + Shift + R` - **Mac**: `Cmd + Shift + R` #### 步骤 3: 检查 API 响应 1. 打开开发者工具(F12) 2. Network 标签 3. 刷新页面 4. 查看 `/system/test_work_order/list` 的响应 #### 步骤 4: 根据 API 响应采取行动 **如果 API 返回 500 错误**: - 查看后端日志 - 检查 DO 模型 - 确认后端服务已重启 **如果 API 返回空数组**: - 检查查询参数 - 确认 `order_id` 为 NULL - 执行 SQL 验证数据 **如果 API 返回数据但前端不显示**: - 检查 Console 是否有错误 - 检查字段映射 - 检查数据格式 ### 5. 调试技巧 #### 在前端代码中添加 console.log **文件**: `test_work_order/index.vue` ```javascript getList() { this.loading = true; listTest_work_order(this.queryParams).then(response => { console.log('API 响应:', response); // 添加这行 console.log('工单数据:', response.rows); // 添加这行 this.test_work_orderList = response.rows.map(item => ({ ...item, decodedConfigJson: item.testItemConfigJson ? decodeURIComponent(escape(atob(item.testItemConfigJson))) : '' })); this.total = response.total; this.loading = false; }); } ``` #### 检查后端日志 查看后端日志文件,搜索: - 错误信息(ERROR) - 异常堆栈(Exception) - SQL 查询语句 ### 6. 最可能的原因 根据当前情况,最可能的原因是: 1. **后端服务没有重启**(80% 可能性) - DO 模型修改后必须重启 - 重启后问题可能立即解决 2. **后端代码有语法错误**(15% 可能性) - 修改 DO 模型时引入了错误 - 查看后端日志 3. **权限问题**(5% 可能性) - 用户没有查看工单的权限 - 尝试用管理员账号登录 ## 下一步操作 请提供以下信息: 1. ✅ 后端服务是否已重启? 2. ❓ 浏览器开发者工具 Network 标签的截图 3. ❓ `/system/test_work_order/list` 的 Response 内容 4. ❓ Console 标签是否有错误? ## 完成时间 2026-01-09 00:00