148 lines
5.0 KiB
Markdown
148 lines
5.0 KiB
Markdown
# 接单记录显示修复说明
|
||
|
||
## 问题描述
|
||
|
||
在订单处理对话框中,接单记录流程部分显示为"暂无接单记录",但实际上后端API返回了完整的接单记录数据。通过分析图片中的接单记录表格,发现数据结构与前端显示逻辑不匹配。
|
||
|
||
## 问题分析
|
||
|
||
### 1. 数据结构不匹配
|
||
- **前端期望字段**:`status`、`workerName`、`createTime`等
|
||
- **后端实际字段**:`title`、`content`、`workerName`、`createdAt`等
|
||
- **时间字段差异**:前端使用`createTime`,后端返回`createdAt`
|
||
|
||
### 2. 状态映射错误
|
||
- **前端状态判断**:基于数字状态码(1、2、3、4、5)
|
||
- **后端实际数据**:基于文本标题("订单生成"、"开始服务"、"服务完成"等)
|
||
|
||
### 3. 字段映射问题
|
||
- **师傅姓名**:前端期望`workerName`,后端正确返回
|
||
- **处理内容**:前端期望`content`,后端正确返回
|
||
- **时间显示**:前端期望`createTime`,后端返回`createdAt`
|
||
|
||
## 修复方案
|
||
|
||
### 1. 调整字段映射
|
||
```javascript
|
||
// 修复前
|
||
:timestamp="record.createTime"
|
||
:type="getTimelineItemType(record.status)"
|
||
|
||
// 修复后
|
||
:timestamp="formatTimelineTime(record.createdAt || record.addTime || record.createTime)"
|
||
:type="getTimelineItemType(record.title)"
|
||
```
|
||
|
||
### 2. 更新状态判断逻辑
|
||
```javascript
|
||
// 修复前:基于数字状态码
|
||
getTimelineItemType(status) {
|
||
switch (status) {
|
||
case 1: return 'primary' // 接单
|
||
case 2: return 'success' // 开始服务
|
||
// ...
|
||
}
|
||
}
|
||
|
||
// 修复后:基于文本标题
|
||
getTimelineItemType(title) {
|
||
if (!title) return 'info'
|
||
if (title.includes('订单生成') || title.includes('创建')) return 'primary'
|
||
if (title.includes('支付成功') || title.includes('接单')) return 'success'
|
||
if (title.includes('出发') || title.includes('到达')) return 'warning'
|
||
if (title.includes('开始服务')) return 'info'
|
||
if (title.includes('服务完成') || title.includes('完成')) return 'danger'
|
||
return 'info'
|
||
}
|
||
```
|
||
|
||
### 3. 增强调试功能
|
||
- 添加详细的console.log输出
|
||
- 显示接单记录数量
|
||
- 添加刷新按钮便于调试
|
||
|
||
### 4. 优化用户体验
|
||
- 显示记录总数
|
||
- 添加刷新接单记录按钮
|
||
- 优化时间显示格式
|
||
|
||
## 修复后的功能特性
|
||
|
||
### 1. 正确的数据映射
|
||
- **标题显示**:使用`record.title`显示状态标题
|
||
- **内容显示**:使用`record.content`显示处理内容
|
||
- **师傅信息**:使用`record.workerName`显示师傅姓名
|
||
- **时间显示**:使用`record.createdAt`显示创建时间
|
||
|
||
### 2. 智能状态识别
|
||
- **订单生成**:蓝色标识,表示订单创建
|
||
- **支付成功**:绿色标识,表示订单确认
|
||
- **出发/到达**:橙色标识,表示师傅行动
|
||
- **开始服务**:灰色标识,表示服务进行
|
||
- **服务完成**:红色标识,表示服务结束
|
||
|
||
### 3. 调试和监控
|
||
- **API调用日志**:详细记录API请求和响应
|
||
- **数据状态监控**:显示记录数量和加载状态
|
||
- **手动刷新**:支持手动刷新接单记录
|
||
|
||
## 技术实现细节
|
||
|
||
### 1. 前端修复
|
||
- **Vue.js组件**:修复时间轴数据绑定
|
||
- **Element UI**:优化Timeline组件显示
|
||
- **数据格式化**:统一时间显示格式
|
||
- **状态映射**:基于文本内容的状态判断
|
||
|
||
### 2. 后端API
|
||
- **接口路径**:`/system/Order/receive-records/{orderId}`
|
||
- **返回数据**:`OrderLog`对象列表
|
||
- **数据字段**:`title`、`content`、`workerName`、`createdAt`
|
||
|
||
### 3. 数据流程
|
||
1. 用户点击订单处理
|
||
2. 调用`loadReceiveRecords`方法
|
||
3. 请求后端API获取接单记录
|
||
4. 解析返回的`OrderLog`数据
|
||
5. 在时间轴中显示记录
|
||
|
||
## 测试验证
|
||
|
||
### 1. 功能测试
|
||
- [x] 接单记录正确加载
|
||
- [x] 时间轴正确显示
|
||
- [x] 状态颜色正确映射
|
||
- [x] 师傅信息正确显示
|
||
|
||
### 2. 数据测试
|
||
- [x] 订单号参数正确传递
|
||
- [x] API响应正确解析
|
||
- [x] 字段映射正确
|
||
- [x] 时间格式正确
|
||
|
||
### 3. 用户体验测试
|
||
- [x] 记录数量显示正确
|
||
- [x] 刷新按钮功能正常
|
||
- [x] 空数据提示正确
|
||
- [x] 样式布局美观
|
||
|
||
## 注意事项
|
||
|
||
1. **数据一致性**:确保前端字段映射与后端数据结构一致
|
||
2. **状态映射**:状态判断基于文本内容,需要维护关键词列表
|
||
3. **时间格式**:统一使用`createdAt`字段,支持多种时间格式
|
||
4. **错误处理**:API调用失败时显示友好提示
|
||
|
||
## 扩展建议
|
||
|
||
1. **状态配置化**:将状态关键词配置化,便于维护
|
||
2. **实时更新**:添加WebSocket支持实时更新接单记录
|
||
3. **数据缓存**:实现接单记录的数据缓存机制
|
||
4. **导出功能**:支持导出接单记录为PDF或Excel
|
||
|
||
## 总结
|
||
|
||
通过修复字段映射、状态判断逻辑和增强调试功能,成功解决了接单记录显示为空的问题。现在时间轴能够正确显示完整的接单流程,包括订单生成、支付确认、师傅派单、服务执行到完成的整个过程。
|
||
|
||
修复后的功能提供了更好的用户体验和更准确的数据展示,让管理员能够清晰地了解每个订单的处理流程和状态变化。
|