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

4.1 KiB
Raw Blame History

订单处理功能实现说明

功能概述

在服务订单页面(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测试:测试对话框的显示和交互