修改过时文档,优化文档内容
This commit is contained in:
81
pages/mall/delivery/doc/old(弃用)/STATE_1-5_LOGIC.md
Normal file
81
pages/mall/delivery/doc/old(弃用)/STATE_1-5_LOGIC.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 状态 1–5 行为与代码位置说明
|
||||
|
||||
本文档针对 `ml_delivery_tasks.status` 中 1–5 的状态,逐项列出在 delivery 页面中涉及的展示、查询、更新位置、按钮/动作与已发现的不一致点与建议。
|
||||
|
||||
## 状态 1 — 待接取
|
||||
- 映射文本/样式
|
||||
- `index.uvue`: `getTaskStatusClass` -> `task-pending`(见 index.uvue getTaskStatusClass)
|
||||
- `index.uvue`: `getTaskStatusText` case 1 -> '待接取'(index.uvue#L571)
|
||||
- `order-history.uvue`: 同样映射(order-history.uvue#L230, #L242)
|
||||
- 查询/展示
|
||||
- `loadAvailableOrders` 查询:`supa.from('ml_delivery_tasks').is('driver_id','null').eq('status', 1)`(index.uvue loadAvailableOrders)
|
||||
- 在可接订单列表与当前任务区显示“接受任务/接受订单”按钮(index.uvue#L81、order card accept button)
|
||||
- 更新/操作
|
||||
- 接单时更新为 `status = 2`:`supa.from('ml_delivery_tasks').update({ driver_id: driverId, status: 2 }).eq('id', ...)`(index.uvue acceptTask / acceptOrder,index.uvue#L602,#L756)
|
||||
- 建议/注意
|
||||
- 接单使用条件更新或后端 RPC 避免抢单竞态(目前无 WHERE driver_id IS NULL 条件)。
|
||||
|
||||
## 状态 2 — 已接取
|
||||
- 映射文本/样式
|
||||
- `index.uvue` 文本 '已接取'(index.uvue#L572),样式 `task-accepted`(index.uvue#L560)
|
||||
- `order-history.uvue` 相应映射(order-history.uvue#L243)
|
||||
- 查询/展示
|
||||
- 当前任务区显示“开始取货”按钮(index.uvue#L82)
|
||||
- `order-detail.uvue` 若 `order.status === 2` 显示“前往取货/正在取货”(order-detail.uvue#L169-L170)
|
||||
- 更新/操作
|
||||
- `startPickup()` 会将 task 状态更新为 3(index.uvue startPickup)
|
||||
- 接单后代码尝试同步 `ml_orders.order_status = 2`(index.uvue#L766)
|
||||
- 建议/注意
|
||||
- 同步 ml_orders 的操作应做失败回退处理或在服务端做原子事务。
|
||||
|
||||
## 状态 3 — 取货中
|
||||
- 映射文本/样式
|
||||
- `index.uvue` 文本 '取货中'(index.uvue#L573),样式 `task-picking`(index.uvue#L561)
|
||||
- `order-history.uvue` 同步映射(order-history.uvue#L244)
|
||||
- 查询/展示
|
||||
- 当前任务区显示“确认取货”按钮(index.uvue#L83)
|
||||
- `order-detail.uvue` 在 route 区显示“确认取货”按钮(order-detail.uvue#L55,#L173)
|
||||
- 更新/操作
|
||||
- `confirmPickup()` 将 status -> 4 并写入 `pickup_time`,同时尝试把 `ml_orders.order_status = 4`(index.uvue & order-detail)
|
||||
- 建议/注意
|
||||
- 确认取货应当原子更新任务与订单状态,或由后端封装接口完成。
|
||||
|
||||
## 状态 4 — 已取货
|
||||
- 映射文本/样式
|
||||
- `index.uvue` 文本 '已取货'(index.uvue#L574),样式 `task-picked`(index.uvue#L562)
|
||||
- `order-history.uvue` 文本 '已取货'(order-history.uvue#L245)
|
||||
- 查询/展示
|
||||
- 当前任务区显示“开始配送”按钮(index.uvue#L84)
|
||||
- `order-detail.uvue` 显示“确认送达”按钮(order-detail.uvue#L68,#L176)
|
||||
- 更新/操作
|
||||
- `startDelivery()` 将 status -> 5(index.uvue startDelivery)
|
||||
- 建议/注意
|
||||
- 明确 4 与 5 的边界并在统计/历史中统一口径(是否将 5 视作已完成)。
|
||||
|
||||
## 状态 5 — 配送中
|
||||
- 映射文本/样式
|
||||
- `index.uvue` 文本 '配送中'(index.uvue#L575),样式 `task-delivering`(index.uvue#L563)
|
||||
- `order-history.uvue` 在样式处标为 `status-delivered`(order-history.uvue#L234)且文本处 `case 5: return '已完成'`(order-history.uvue#L246)——存在不一致。
|
||||
- 查询/展示
|
||||
- 当前任务区显示“确认送达”入口(index.uvue#L85 -> showConfirmDeliveryDialog)
|
||||
- `order-detail.uvue` 在状态 >=5 时进度条显示为已送达(getStatusDesc)
|
||||
- 更新/操作
|
||||
- `confirmDelivery()` 将 task.status -> 6 并写入 `delivered_time`,再尝试同步 `ml_orders.order_status = 5`(index.uvue#L679-691)
|
||||
- 建议/注意
|
||||
- 目前统计(如 todayStats)将 `status >= 5` 视作“已完成”计数,而 UI 有时把 5 显示为“配送中”,建议统一规则(推荐:把 6 视作真正完成,5 为配送中)。
|
||||
|
||||
## 跨页不一致与改进建议(摘要)
|
||||
- 不一致点:`status = 5` 在不同页面既被视作“配送中”,又被视作“已完成”;`confirmDelivery` 设置 task=6,但统计使用 `>=5` 判断完成,导致计数或展示差异。
|
||||
- 建议:
|
||||
1. 明确“完成”阈值(推荐:status === 6 为已完成,status === 5 为配送中),并在所有统计、过滤、UI 映射处统一实现。
|
||||
2. 将状态映射抽到共享工具文件 `utils/deliveryStatus.uts` 并替换硬编码。
|
||||
3. 接单、确认取货、确认送达等关键操作应使用后端事务或条件更新避免竞态与不一致。
|
||||
|
||||
---
|
||||
|
||||
文档已生成于 `pages/mall/delivery/STATE_1-5_LOGIC.md`。要我现在:
|
||||
- A) 将 `getTaskStatusText` / `getOrderStatusText` 抽到 `utils/deliveryStatus.uts` 并替换页面中的映射,或
|
||||
- B) 实现接单的条件更新补丁(修改 `acceptTask` / `acceptOrder`),或
|
||||
- C) 仅把“5 是否计作完成”的规范改写回 `DELIVERY_LOGIC.md` 并提交。
|
||||
|
||||
请选择一项继续。
|
||||
Reference in New Issue
Block a user