javacodeadmin/订单处理功能实现说明.md

118 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 订单处理功能实现说明
## 功能概述
在服务订单页面(`Order/index.vue`)添加了"订单处理"功能,允许管理员通过一个完整的对话框来管理订单的整个生命周期,包括状态变更、师傅分配、时间管理等。
## 主要特性
### 1. 订单处理按钮
- 在页面顶部工具栏添加了"订单处理"按钮
- 在每行操作列中添加了订单处理按钮(圆形图标)
- 按钮只有在选中单行时才可用
### 2. 完整的订单处理对话框
- **订单基本信息**:订单号、订单状态、服务进度
- **师傅信息**:选择师傅、出发时间、到达时间
- **服务时间**:开始时间、完成时间、下次服务时间
- **暂停信息**:暂停时间、暂停原因(当服务进度为"已暂停"时显示)
- **取消信息**:取消时间、取消原因(当订单状态为"已取消"或"未服务提前结束"时显示)
- **备注信息**:备注字段
### 3. 智能状态管理
- 根据订单状态变化自动设置相关时间字段
- 状态变更时的业务逻辑验证(如选择师傅、填写原因等)
- 服务进度变更时的智能处理
### 4. 后端API支持
- 新增 `/system/Order/getWorkerList` 接口获取工人列表
- 复用现有的 `updateOrder` 接口进行订单更新
## 技术实现
### 前端实现
- **Vue.js + Element UI**:使用卡片布局和表单组件
- **响应式设计**:根据状态动态显示/隐藏相关字段
- **表单验证**:集成现有的验证规则
- **API调用**:异步获取工人列表,错误处理机制
### 后端实现
- **OrderController.java**:新增获取工人列表接口
- **权限控制**:使用 `@PreAuthorize` 注解
- **数据过滤**:按用户类型筛选工人
### 状态流转逻辑
1. **待接单 → 待服务**:需要选择师傅
2. **待服务 → 服务中**:自动设置开始时间
3. **服务中 → 已结束**:自动设置完成时间
4. **服务中 → 已暂停**:需要填写暂停原因
5. **已暂停 → 服务中**:自动设置开始时间
6. **服务中 → 已取消**:需要填写取消原因
## 使用方法
### 1. 打开订单处理
- 选择一行订单数据
- 点击"订单处理"按钮
- 或点击操作列中的订单处理图标
### 2. 修改订单状态
- 选择新的订单状态
- 系统会自动验证相关条件
- 根据状态显示相应的必填字段
### 3. 分配师傅
- 从下拉列表中选择师傅
- 设置出发时间和到达时间
### 4. 管理服务时间
- 设置服务开始和完成时间
- 安排下次服务时间(如需要)
### 5. 处理特殊情况
- **暂停服务**:填写暂停原因
- **取消订单**:填写取消原因
- **添加备注**:记录重要信息
### 6. 提交更改
- 点击"确定"按钮保存更改
- 系统会调用后端API更新订单
- 成功后自动刷新订单列表
## 文件修改清单
### 前端文件
- `ruoyi-ui/src/views/system/Order/index.vue`
- 添加订单处理按钮
- 实现订单处理对话框
- 添加相关方法和数据
- 集成CSS样式
### 后端文件
- `ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java`
- 新增 `getWorkerList` 接口
## 注意事项
1. **权限要求**:需要 `system:Order:edit` 权限
2. **数据完整性**:状态变更时会自动验证必填字段
3. **时间管理**:系统会自动设置相关时间戳
4. **错误处理**API调用失败时有友好的错误提示
5. **响应式设计**:对话框会根据内容动态调整显示
## 扩展建议
1. **工作流引擎**:可以集成更复杂的状态机
2. **通知系统**:状态变更时自动通知相关人员
3. **日志记录**:记录所有状态变更的详细日志
4. **批量处理**:支持批量订单状态变更
5. **移动端适配**:优化移动设备的使用体验
## 测试建议
1. **功能测试**:测试各种状态变更场景
2. **权限测试**:验证不同权限用户的访问控制
3. **数据验证**:测试必填字段的验证逻辑
4. **API测试**:验证后端接口的响应
5. **UI测试**:测试对话框的显示和交互