refactor(order): 优化退款流程和订单状态管理

- 移除Uploader组件并隐藏上传凭证功能
- 添加getShopOrder和listShopOrderGoods API导入
- 新增toMoneyNumber和formatMoney工具函数处理金额格式
- 实现markOrderClientRefund函数标记客户端退款状态
- 使用真实订单数据替代模拟数据加载订单商品信息
- 修复订单金额显示格式化问题
- 优化订单状态判断逻辑和颜色配置
- 简化申请退款流程,移除预更新订单状态步骤
- 修复商品数量变更处理逻辑
- 更新订单状态码:退款申请中改为客户端申请退款
```
This commit is contained in:
2026-02-24 16:27:21 +08:00
parent 694b5e1e7a
commit 939d7b3ec2
2 changed files with 125 additions and 132 deletions

View File

@@ -132,6 +132,8 @@ function OrderList(props: OrderListProps) {
const [orderToConfirmReceive, setOrderToConfirmReceive] = useState<ShopOrder | null>(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) && (
<Button size={'small'} onClick={(e) => {
e.stopPropagation();
applyRefund(item);
@@ -847,7 +825,7 @@ function OrderList(props: OrderListProps) {
)}
{/* 待收货状态:显示查看物流和确认收货 */}
{item.deliveryStatus === 20 && (!item.riderId || !!item.sendEndTime) && item.orderStatus !== 2 && item.orderStatus !== 6 && !isOrderCompleted(item) && (
{item.deliveryStatus === 20 && (!item.riderId || Number(item.riderId) === 0 || !!item.sendEndTime) && item.orderStatus !== 2 && item.orderStatus !== 6 && !isOrderCompleted(item) && (
<Space>
{/*<Button size={'small'} onClick={(e) => {*/}
{/* e.stopPropagation();*/}