Files
medical-mall/pages/mall/delivery/doc/order-history.md
2026-02-02 18:20:22 +08:00

1.5 KiB
Raw Blame History

order-history.uvue — 历史订单

概要

显示配送员历史订单(已完成/已取消等),并支持按时间范围过滤、分页和插入刚完成订单以做到“即时显示”。

数据结构

  • HistoryOrder
    • order_no, id, status, delivered_at, total_amount, shop_name

关键方法

  • loadOrderHistory({start,end,page,size})

    • 优先按 ml_delivery_tasks 中与 driver_id 相关的 order_id 拉取任务记录,再批量查询 ml_orders 获取详情。
    • 若后端支持直接按 driver_id 返回已完成订单则调用后端聚合接口更高效。
  • checkForNewCompletedOrder()

    • uni.getStorageSync('completed_order_for_history') 读取并合并到 orderHistory 顶部,随后清除本地缓存键。

DB 查询示例(伪 SQL / supa

const tasks = await supa.from('ml_delivery_tasks').select('order_id,delivered_at').eq('driver_id', driverId).eq('status', 4).order('delivered_at', { ascending: false }).limit(100).execute()
const orders = await supa.from('ml_orders').select('*').in('id', tasks.map(t=>t.order_id)).execute()

分页与筛选

  • 使用后端分页(page/size),前端仅负责渲染和“加载更多”。
  • 支持按日期区间和商家名模糊搜索。

注意事项

  • 当从本地合并刚完成订单时,去重逻辑必不可少(按 order_noid)。
  • 对于大量历史数据,应依赖后端支持归档与按需加载。错误/异常应有兜底 UI空状态/重试按钮)。