import React from 'react' import { View, Text, Image } from '@tarojs/components' import Taro from '@tarojs/taro' import type { ShopOrder } from '@/api/shop/shopOrder/model' import Price from '../Price' interface OrderCardProps { order: ShopOrder onClick?: () => void } /** 综合 payStatus + deliveryStatus + orderStatus 计算列表卡片状态文案 */ const getCardStatus = (order: ShopOrder): { text: string; color: string } => { const { payStatus, deliveryStatus, orderStatus } = order if (orderStatus === 2) return { text: '已取消', color: '#999' } if (orderStatus === 3) return { text: '取消中', color: '#ff7d00' } if (orderStatus === 6) return { text: '已退款', color: '#999' } if (orderStatus === 4 || orderStatus === 7) return { text: '退款申请中', color: '#ee0a24' } if (orderStatus === 5) return { text: '退款被拒绝', color: '#ee0a24' } if (!payStatus) return { text: '待付款', color: '#ee0a24' } if (deliveryStatus === 10) return { text: '待发货', color: '#4b9cf5' } if (deliveryStatus === 20 || deliveryStatus === 30) return { text: '待收货', color: '#4b9cf5' } if (orderStatus === 1) return { text: '已完成', color: '#0e932e' } return { text: '已付款', color: '#0e932e' } } const OrderCard: React.FC = ({ order, onClick }) => { const handleClick = () => { if (onClick) { onClick() return } Taro.navigateTo({ url: `/pages/order/detail?id=${order.orderId}` }) } const { text: statusText, color: statusColor } = getCardStatus(order) // 获取首个商品图片作为封面,或显示默认占位 const coverImage = order.orderGoods?.[0]?.image || '' const hasGoods = (order.orderGoods?.length || 0) > 0 return ( {/* 头部:订单号 + 状态 */} 订单号: {order.orderNo} {statusText} {/* 商品信息区域 */} {hasGoods ? ( {order.orderGoods?.map((item, idx) => ( {/* 商品缩略图 */} {item.image ? ( ) : ( 暂无图片 )} {/* 商品信息 */} {item.goodsName || '未知商品'} {item.spec ? ( 规格: {item.spec} ) : null} x{item.totalNum || 1} ))} ) : ( /* 无商品信息时的 fallback */ {coverImage ? ( ) : ( 暂无图片 )} {order.title || '订单商品'} 共{order.totalNum || 0}件 )} {/* 底部:日期 + 金额汇总 */} {order.createTime?.slice(0, 10)} 共{order.totalNum || order.orderGoods?.reduce((sum, g) => sum + (g.totalNum || 1), 0) || 0}件 实付 ) } export default OrderCard