From 31d47f0a0baaf21bd2731c6998ba0d720583266d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 27 Feb 2026 15:49:21 +0800 Subject: [PATCH] =?UTF-8?q?```=20fix(order):=20=E4=BF=AE=E5=A4=8D=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=92=8C=E9=85=8D=E9=80=81=E8=8C=83=E5=9B=B4=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复订单状态数值转换逻辑,统一使用 toNum 函数处理状态值 - 移除基于 formId 推断订单完成状态的逻辑,改用 orderStatus 字段 - 更新订单列表中各状态的条件判断,确保标签页与状态文案同步 - 修改配送范围验证逻辑,移除GPS定位回退,仅使用地址坐标验证 - 添加地址坐标缺失的错误提示和表单验证 - 更新配送范围检查的UI状态管理和错误处理流程 - 优化按钮状态控制,增加地址坐标验证检查 ``` --- src/user/order/components/OrderList.tsx | 66 +++++++++++++--------- src/user/ticket/use.tsx | 74 ++++++++++++++----------- 2 files changed, 83 insertions(+), 57 deletions(-) diff --git a/src/user/order/components/OrderList.tsx b/src/user/order/components/OrderList.tsx index a8cb3ec..2962b65 100644 --- a/src/user/order/components/OrderList.tsx +++ b/src/user/order/components/OrderList.tsx @@ -132,61 +132,72 @@ function OrderList(props: OrderListProps) { const [orderToConfirmReceive, setOrderToConfirmReceive] = useState(null) const isReadOnly = props.readOnly || props.mode === 'store' || props.mode === 'rider' - const isOrderCompleted = (order: ShopOrder) => Number(order.orderStatus) === 1 || order.formId === 10074; + const toNum = (v: any): number | undefined => { + if (v === null || v === undefined || v === '') return undefined; + const n = Number(v); + return Number.isFinite(n) ? n : undefined; + }; + + // “已完成”应以订单状态为准;不要用商品ID等字段推断完成态,否则会造成 Tab(待发货/待收货) 与状态文案不同步 + const isOrderCompleted = (order: ShopOrder) => toNum(order.orderStatus) === 1; // 获取订单状态文本 const getOrderStatusText = (order: ShopOrder) => { + const orderStatus = toNum(order.orderStatus); + const deliveryStatus = toNum(order.deliveryStatus); // 优先检查订单状态 - if (order.orderStatus === 2) return '已取消'; - if (order.orderStatus === 4) return '退款申请中'; - if (order.orderStatus === 5) return '退款被拒绝'; - if (order.orderStatus === 6) return '退款成功'; - if (order.orderStatus === 7) return '客户端申请退款'; + if (orderStatus === 2) return '已取消'; + if (orderStatus === 4) return '退款申请中'; + if (orderStatus === 5) return '退款被拒绝'; + if (orderStatus === 6) return '退款成功'; + if (orderStatus === 7) return '客户端申请退款'; if (isOrderCompleted(order)) return '已完成'; // 检查支付状态 (payStatus为boolean类型,false/0表示未付款,true/1表示已付款) if (!order.payStatus) return '等待买家付款'; // 已付款后检查发货状态 - if (order.deliveryStatus === 10) return '待发货'; - if (order.deliveryStatus === 20) { + if (deliveryStatus === 10) return '待发货'; + if (deliveryStatus === 20) { // 若订单没有配送员,沿用原“待收货”语义 if (!order.riderId || Number(order.riderId) === 0) return '待收货'; // 配送员确认送达后(sendEndTime有值),才进入“待确认收货” if (order.sendEndTime && !isOrderCompleted(order)) return '待确认收货'; return '配送中'; } - if (order.deliveryStatus === 30) return '部分发货'; + if (deliveryStatus === 30) return '部分发货'; - if (order.orderStatus === 0) return '未使用'; + if (orderStatus === 0) return '未使用'; return '未知状态'; }; // 获取订单状态颜色 const getOrderStatusColor = (order: ShopOrder) => { + const orderStatus = toNum(order.orderStatus); + const deliveryStatus = toNum(order.deliveryStatus); // 优先检查订单状态 - if (order.orderStatus === 2) return 'text-gray-500'; // 已取消 - if (order.orderStatus === 4) return 'text-orange-500'; // 退款申请中 - if (order.orderStatus === 5) return 'text-red-500'; // 退款被拒绝 - if (order.orderStatus === 6) return 'text-green-500'; // 退款成功 - if (order.orderStatus === 7) return 'text-orange-500'; // 客户端申请退款 + if (orderStatus === 2) return 'text-gray-500'; // 已取消 + if (orderStatus === 4) return 'text-orange-500'; // 退款申请中 + if (orderStatus === 5) return 'text-red-500'; // 退款被拒绝 + if (orderStatus === 6) return 'text-green-500'; // 退款成功 + if (orderStatus === 7) return 'text-orange-500'; // 客户端申请退款 if (isOrderCompleted(order)) return 'text-green-600'; // 已完成 // 检查支付状态 if (!order.payStatus) return 'text-orange-500'; // 等待买家付款 // 已付款后检查发货状态 - if (order.deliveryStatus === 10) return 'text-blue-500'; // 待发货 - if (order.deliveryStatus === 20) { + if (deliveryStatus === 10) return 'text-blue-500'; // 待发货 + if (deliveryStatus === 20) { if (!order.riderId || Number(order.riderId) === 0) return 'text-purple-500'; // 待收货 if (order.sendEndTime && !isOrderCompleted(order)) return 'text-purple-500'; // 待确认收货 return 'text-blue-500'; // 配送中 } - if (order.deliveryStatus === 30) return 'text-blue-500'; // 部分发货 + if (deliveryStatus === 30) return 'text-blue-500'; // 部分发货 - if (order.orderStatus === 0) return 'text-gray-500'; // 未使用 + if (orderStatus === 0) return 'text-gray-500'; // 未使用 return 'text-gray-600'; // 默认颜色 }; @@ -712,17 +723,20 @@ function OrderList(props: OrderListProps) { {/* 订单列表 */} {list.length > 0 && list ?.filter((item) => { + const orderStatus = toNum(item.orderStatus); // “待收货”不展示退款中的/已退款订单,这些订单统一放到“退货/售后” - if (tapIndex === 3 && (item.orderStatus === 4 || item.orderStatus === 6)) { + if (tapIndex === 3 && (orderStatus === 4 || orderStatus === 6)) { return false; } // “退货/售后”只展示售后相关状态 if (tapIndex === 5) { - return item.orderStatus === 4 || item.orderStatus === 5 || item.orderStatus === 6 || item.orderStatus === 7; + return orderStatus === 4 || orderStatus === 5 || orderStatus === 6 || orderStatus === 7; } return true; }) ?.map((item, index) => { + const orderStatus = toNum(item.orderStatus); + const deliveryStatus = toNum(item.deliveryStatus); return ( Taro.navigateTo({url: `/shop/orderDetail/index?orderId=${item.orderId}`})}> @@ -737,7 +751,7 @@ function OrderList(props: OrderListProps) { {/* 右侧显示合并的状态和倒计时 */} - {!item.payStatus && item.orderStatus !== 2 ? ( + {!item.payStatus && orderStatus !== 2 ? ( {/* 待付款状态:显示取消订单和立即支付 */} - {(!item.payStatus) && item.orderStatus !== 2 && ( + {(!item.payStatus) && orderStatus !== 2 && ( )}