2.5 KiB
2.5 KiB
order-detail.uvue — 订单详情
概要
展示单笔订单全部信息并提供状态流转(接单、确认取货、确认送达、拒单等)。页面会联合查询 ml_orders、ml_order_items、ml_shops 与 ml_delivery_tasks。
数据结构(常用字段)
-
Orderid: string | numberorder_no: stringcid?: number(兼容旧字段)shipping_address | pickup_address: object/stringshipping_fee,total_amount,status
-
OrderItemid,order_id,product_name,qty,price
-
DeliveryTaskid,order_id,driver_id,status,accepted_at,picked_at,delivered_at
关键方法
-
onLoad(options)- 解析
options.id与options.status,调用loadOrderDetail(id)。
- 解析
-
loadOrderDetail(id)- 加载保护:对
supaReady采用 1.5s 超时策略包装,防止会话刷新阻塞页面加载。 - 智能 ID 回查:优先从
ml_orders(UUID/cid/order_no) 查找。若未找到,则尝试从未分配任务表ml_delivery_tasks中根据 ID 查找,再反查关联订单。 - 降级机制(Fallback):当
ml_orders行缺失时,自动回退到从ml_delivery_tasks提取地址、手机号、配送费及距离等基础信息进行展示,并在 UI 上显示回退加载提示。 - 清理加载状态:在
finally块中统一切除加载动画 (uni.hideLoading),防止界面挂起。
- 加载保护:对
交互与样式优化(2026-02-03 更新)
- 联系人信息解析:地址栏(取货/送货)现在仅在“联系人姓名”存在时显示分隔点
·。若无姓名,则仅显示手机号,避免显示为. 手机号。 - 联系方式布局优化:为了防止手机号在不同屏幕宽度下被图标遮挡,联系人区域采用垂直居中布局(图标在上,姓名电话在下),显著拉高了边框高度 (
min-height: 180rpx) 并增加了垂直间距。 - 文本显示优化:
- 商品区域的“订单号”增加了加粗显示 (
bold),提升核对便利性。 - 展示给配送员的联系手机号调大了字号并加粗,确保清晰可见。
- 修复了在 Uni-app x 下由于类型推断导致的手机号无法通过点语法访问的问题(改用索引访问)。
- 商品区域的“订单号”增加了加粗显示 (
示例:地址兼容解析逻辑
// 兼容 JSON 字符串及对象格式的地址字段
let shipping = {}
if (typeof raw == 'string') {
try { shipping = JSON.parse(raw) } catch (e) { shipping = { detail: raw } }
} else { shipping = raw || {} }
// 访问方式:(address as UTSJSONObject)['phone']