4.1 KiB
4.1 KiB
订单处理功能实现说明
功能概述
在服务订单页面(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. 提交更改
- 点击"确定"按钮保存更改
- 系统会调用后端API更新订单
- 成功后自动刷新订单列表
文件修改清单
前端文件
ruoyi-ui/src/views/system/Order/index.vue- 添加订单处理按钮
- 实现订单处理对话框
- 添加相关方法和数据
- 集成CSS样式
后端文件
ruoyi-system/src/main/java/com/ruoyi/system/controller/OrderController.java- 新增
getWorkerList接口
- 新增
注意事项
- 权限要求:需要
system:Order:edit权限 - 数据完整性:状态变更时会自动验证必填字段
- 时间管理:系统会自动设置相关时间戳
- 错误处理:API调用失败时有友好的错误提示
- 响应式设计:对话框会根据内容动态调整显示
扩展建议
- 工作流引擎:可以集成更复杂的状态机
- 通知系统:状态变更时自动通知相关人员
- 日志记录:记录所有状态变更的详细日志
- 批量处理:支持批量订单状态变更
- 移动端适配:优化移动设备的使用体验
测试建议
- 功能测试:测试各种状态变更场景
- 权限测试:验证不同权限用户的访问控制
- 数据验证:测试必填字段的验证逻辑
- API测试:验证后端接口的响应
- UI测试:测试对话框的显示和交互