93 lines
2.5 KiB
Markdown
93 lines
2.5 KiB
Markdown
# 调试记录
|
||
|
||
## 数据管理页面问题
|
||
|
||
### 问题描述
|
||
|
||
在数据管理页面中,火箭炮列表点击详情按钮时,请求了错误的设备 ID,导致显示了巡飞弹的数据。
|
||
|
||
### 问题分析
|
||
|
||
1. 日志记录:
|
||
```
|
||
INFO:src.routes:Getting details for equipment ID: 4
|
||
INFO:src.routes:Equipment type: 巡飞弹
|
||
INFO:src.routes:Found equipment details: Hero-30
|
||
INFO:src.routes:Custom params: {...}
|
||
```
|
||
|
||
2. 问题原因:
|
||
- 后端返回的数据中,火箭炮和巡飞弹的 ID 范围重叠
|
||
- 火箭炮的 ID 应该从 1001 开始
|
||
- 巡飞弹的 ID 从 1 开始
|
||
- 前端没有正确处理设备 ID 的映射
|
||
|
||
3. 数据流分析:
|
||
- 前端发送请求:`GET /api/data/details/4`
|
||
- 后端查询数据库:`SELECT * FROM equipment WHERE id = 4`
|
||
- 返回了 ID=4 的巡飞弹数据
|
||
- 前端显示了错误的装备类型数据
|
||
|
||
### 新增问题:数据显示不完整
|
||
|
||
1. 问题描述:
|
||
- 在数据管理页面,火箭炮和巡飞弹的表格中,除了长度和重量,其他参数列都没有数据显示
|
||
- 详情页面能正确显示所有数据
|
||
|
||
2. 问题原因:
|
||
- 后端返回的数据中,特有参数以逗号分隔的字符串形式存储在 `specific_params` 字段中
|
||
- 前端需要解析这个字符串,将其转换为对象格式才能正确显示
|
||
|
||
3. 解决方案:
|
||
- 在前端添加特有参数字符串的解析函数
|
||
- 将解析后的参数合并到数据对象中
|
||
- 确保表格和详情页面使用相同的数据格式
|
||
|
||
4. 代码修改:
|
||
```javascript
|
||
// 解析特有参数字符串
|
||
const parseSpecificParams = (paramsStr, type) => {
|
||
if (!paramsStr) return {}
|
||
|
||
const values = paramsStr.split(',')
|
||
|
||
if (type === '火箭炮') {
|
||
return {
|
||
firing_angle_horizontal: values[0],
|
||
firing_angle_vertical: values[1],
|
||
// ... 其他火箭炮特有参数
|
||
}
|
||
} else if (type === '巡飞弹') {
|
||
return {
|
||
wingspan_m: values[0],
|
||
warhead_weight_kg: values[1],
|
||
// ... 其他巡飞弹特有参数
|
||
}
|
||
}
|
||
return {}
|
||
}
|
||
```
|
||
|
||
5. 验证方法:
|
||
- 检查原始数据格式
|
||
- 验证参数解析结果
|
||
- 确认表格显示完整
|
||
- 对比详情页面数据
|
||
|
||
### 最佳实践
|
||
|
||
1. 数据处理:
|
||
- 在数据加载时进行参数解析
|
||
- 保持数据格式的一致性
|
||
- 添加数据验证和错误处理
|
||
|
||
2. 错误处理:
|
||
- 添加详细的日志记录
|
||
- 提供清晰的错误提示
|
||
- 实现优雅的错误恢复
|
||
|
||
3. 调试方法:
|
||
- 使用日志跟踪数据流
|
||
- 验证数据一致性
|
||
- 检查类型匹配
|