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 && ( )}