From 939d7b3ec2c9e9aa45f07a128c3be84b32ed9d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 24 Feb 2026 16:27:21 +0800 Subject: [PATCH] =?UTF-8?q?```=20refactor(order):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E6=B5=81=E7=A8=8B=E5=92=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除Uploader组件并隐藏上传凭证功能 - 添加getShopOrder和listShopOrderGoods API导入 - 新增toMoneyNumber和formatMoney工具函数处理金额格式 - 实现markOrderClientRefund函数标记客户端退款状态 - 使用真实订单数据替代模拟数据加载订单商品信息 - 修复订单金额显示格式化问题 - 优化订单状态判断逻辑和颜色配置 - 简化申请退款流程,移除预更新订单状态步骤 - 修复商品数量变更处理逻辑 - 更新订单状态码:退款申请中改为客户端申请退款 ``` --- src/user/order/components/OrderList.tsx | 52 ++---- src/user/order/refund/index.tsx | 205 +++++++++++++----------- 2 files changed, 125 insertions(+), 132 deletions(-) diff --git a/src/user/order/components/OrderList.tsx b/src/user/order/components/OrderList.tsx index f5f3273..a8cb3ec 100644 --- a/src/user/order/components/OrderList.tsx +++ b/src/user/order/components/OrderList.tsx @@ -132,6 +132,8 @@ 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 getOrderStatusText = (order: ShopOrder) => { @@ -141,31 +143,27 @@ function OrderList(props: OrderListProps) { if (order.orderStatus === 5) return '退款被拒绝'; if (order.orderStatus === 6) return '退款成功'; if (order.orderStatus === 7) return '客户端申请退款'; + if (isOrderCompleted(order)) return '已完成'; // 检查支付状态 (payStatus为boolean类型,false/0表示未付款,true/1表示已付款) if (!order.payStatus) return '等待买家付款'; // 已付款后检查发货状态 if (order.deliveryStatus === 10) return '待发货'; - if (order.formId === 10074) return '已完成'; if (order.deliveryStatus === 20) { // 若订单没有配送员,沿用原“待收货”语义 - if (!order.riderId) return '待收货'; + if (!order.riderId || Number(order.riderId) === 0) return '待收货'; // 配送员确认送达后(sendEndTime有值),才进入“待确认收货” - if (order.sendEndTime && order.orderStatus !== 1) return '待确认收货'; + if (order.sendEndTime && !isOrderCompleted(order)) return '待确认收货'; return '配送中'; } if (order.deliveryStatus === 30) return '部分发货'; - // 最后检查订单完成状态 - if (order.orderStatus === 1) return '已完成'; if (order.orderStatus === 0) return '未使用'; return '未知状态'; }; - const isOrderCompleted = (order: ShopOrder) => order.orderStatus === 1 || order.formId === 10074; - // 获取订单状态颜色 const getOrderStatusColor = (order: ShopOrder) => { // 优先检查订单状态 @@ -174,6 +172,7 @@ function OrderList(props: OrderListProps) { 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 (isOrderCompleted(order)) return 'text-green-600'; // 已完成 // 检查支付状态 if (!order.payStatus) return 'text-orange-500'; // 等待买家付款 @@ -181,14 +180,12 @@ function OrderList(props: OrderListProps) { // 已付款后检查发货状态 if (order.deliveryStatus === 10) return 'text-blue-500'; // 待发货 if (order.deliveryStatus === 20) { - if (!order.riderId) return 'text-purple-500'; // 待收货 - if (order.sendEndTime && order.orderStatus !== 1) return 'text-purple-500'; // 待确认收货 + 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 (order.orderStatus === 1) return 'text-green-600'; // 已完成 if (order.orderStatus === 0) return 'text-gray-500'; // 未使用 return 'text-gray-600'; // 默认颜色 @@ -329,30 +326,11 @@ function OrderList(props: OrderListProps) { }; // 申请退款 (待发货状态) - const applyRefund = async (order: ShopOrder) => { - try { - // 更新订单状态为"退款申请中" - await updateShopOrder({ - orderId: order.orderId, - orderStatus: 4 // 退款申请中 - }); - - // 更新本地状态 - setList(prev => prev.map(item => - item.orderId === order.orderId ? {...item, orderStatus: 4} : item - )); - - // 跳转到退款申请页面 - Taro.navigateTo({ - url: `/user/order/refund/index?orderId=${order.orderId}&orderNo=${order.orderNo}` - }); - } catch (error) { - console.error('更新订单状态失败:', error); - Taro.showToast({ - title: '操作失败,请重试', - icon: 'none' - }); - } + const applyRefund = (order: ShopOrder) => { + // 跳转到退款申请页面(订单状态在选择退款原因后再更新) + Taro.navigateTo({ + url: `/user/order/refund/index?orderId=${order.orderId}&orderNo=${order.orderNo}` + }); }; // 查看物流 (待收货状态) @@ -839,7 +817,7 @@ function OrderList(props: OrderListProps) { )} {/* 待发货状态:显示申请退款 */} - {item.payStatus && isWithinRefundWindow(item.payTime, 60) && item.deliveryStatus === 10 && item.orderStatus !== 2 && item.orderStatus !== 4 && !isOrderCompleted(item) && ( + {item.payStatus && isWithinRefundWindow(item.payTime, 60) && item.deliveryStatus === 10 && item.orderStatus !== 2 && item.orderStatus !== 4 && item.orderStatus !== 6 && item.orderStatus !== 7 && !isOrderCompleted(item) && ( - - - ) - } - return ( {/* 订单信息 */} 订单号:{orderNo} - 订单金额:¥{orderAmount} + 订单金额:¥{formatMoney(orderAmount)} {/* 退款类型选择 */} @@ -369,7 +381,7 @@ const RefundPage: React.FC = () => { value={refundNum} min={0} max={goods.canRefundNum} - onChange={(value) => updateGoodsRefundNum(goods.goodsId, value)} + onChange={(value) => updateGoodsRefundNum(goods.goodsId, Number(value) || 0)} /> 最多{goods.canRefundNum}件 @@ -382,7 +394,7 @@ const RefundPage: React.FC = () => { {/* 退款金额 */} - ¥{refundApp.refundAmount} + ¥{formatMoney(refundApp.refundAmount)} @@ -390,7 +402,10 @@ const RefundPage: React.FC = () => { updateRefundApp('refundReason', value)} + onChange={(value) => { + updateRefundApp('refundReason', value) + void markOrderClientRefund() + }} > {REFUND_REASONS.map(reason => ( @@ -414,18 +429,18 @@ const RefundPage: React.FC = () => { /> - {/* 凭证图片 */} - - 上传凭证(可选) - ({ url }))} - onChange={handleImageUpload} - multiple - maxCount={6} - previewType="picture" - deletable - /> - + {/* 凭证图片:当前上传链路不可用,先隐藏(保留数据结构,后续可恢复) */} + {/**/} + {/* 上传凭证(可选)*/} + {/* ({ url }))}*/} + {/* onChange={handleImageUpload}*/} + {/* multiple*/} + {/* maxCount={6}*/} + {/* previewType="picture"*/} + {/* deletable*/} + {/* />*/} + {/**/} {/* 其他选项 */} {/**/} @@ -454,4 +469,4 @@ const RefundPage: React.FC = () => { ) } -export default RefundPage \ No newline at end of file +export default RefundPage