修改过时文档,优化文档内容

This commit is contained in:
not-like-juvenile
2026-03-17 11:06:26 +08:00
parent dac730474b
commit f33efe6ec8
45 changed files with 162 additions and 236 deletions

View File

@@ -0,0 +1,81 @@
# 状态 15 行为与代码位置说明
本文档针对 `ml_delivery_tasks.status` 中 15 的状态,逐项列出在 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 / acceptOrderindex.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 状态更新为 3index.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 -> 5index.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` 并提交。
请选择一项继续。