Product flag, ON_SITE_PICKUP delivery, mini confirm/receive pages; pay skips warehouse auto-advance. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -56,16 +56,6 @@ const STATUS_LABELS: Record<string, string> = {
|
||||
REFUNDED: '已退款',
|
||||
};
|
||||
|
||||
/** 已付款未完成:可选现场取货并确认收货 */
|
||||
const ON_SITE_PICKUP_STATUSES = new Set([
|
||||
'PENDING_SHIP',
|
||||
'OUT_WAREHOUSE',
|
||||
'SHIPPING',
|
||||
'SHIPPED',
|
||||
'PENDING_RECEIVE',
|
||||
'DELIVERED',
|
||||
]);
|
||||
|
||||
function fullReceiverAddress(order: OrderDetail) {
|
||||
const detail = (order.receiverAddress || '').trim();
|
||||
const region = [order.receiverProvince, order.receiverCity, order.receiverDistrict]
|
||||
@@ -80,7 +70,6 @@ export default function OrderDetailPage() {
|
||||
const router = useRouter();
|
||||
const orderId = router.params.id ?? '';
|
||||
const [order, setOrder] = useState<OrderDetail | null>(null);
|
||||
const [onSitePickup, setOnSitePickup] = useState(false);
|
||||
const [confirming, setConfirming] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -92,13 +81,8 @@ export default function OrderDetailPage() {
|
||||
|
||||
const isReship = !!order?.originOrderId;
|
||||
const canPay = !!order && order.status === 'PENDING_PAY' && !isReship;
|
||||
const canOnSitePickup =
|
||||
!!order && !isReship && ON_SITE_PICKUP_STATUSES.has(order.status || '');
|
||||
const canConfirmReceive =
|
||||
!!order &&
|
||||
!isReship &&
|
||||
(['PENDING_RECEIVE', 'DELIVERED'].includes(order.status || '') ||
|
||||
(onSitePickup && canOnSitePickup));
|
||||
!!order && !isReship && ['PENDING_RECEIVE', 'DELIVERED'].includes(order.status || '');
|
||||
|
||||
const item = order?.items?.[0];
|
||||
const productName = item?.productName || order?.productName || '杜康商品';
|
||||
@@ -137,13 +121,9 @@ export default function OrderDetailPage() {
|
||||
async function confirmReceive() {
|
||||
if (!order || !canConfirmReceive || confirming) return;
|
||||
|
||||
const useOnSite =
|
||||
onSitePickup || !['PENDING_RECEIVE', 'DELIVERED'].includes(order.status || '');
|
||||
const { confirm } = await Taro.showModal({
|
||||
title: useOnSite ? '确认现场取货?' : '确认收货?',
|
||||
content: useOnSite
|
||||
? '请确认您已在现场拿到商品。确认后订单将完成,好客权益即时可用,无法再安排配送。若尚未取到酒,请勿确认。'
|
||||
: '请确认已收到商品。确认后订单将完成,好客权益可正常使用。',
|
||||
title: '确认收货?',
|
||||
content: '请确认已收到商品。确认后订单将完成,好客权益可正常使用。',
|
||||
confirmText: '确认收货',
|
||||
cancelText: '再想想',
|
||||
});
|
||||
@@ -153,11 +133,10 @@ export default function OrderDetailPage() {
|
||||
try {
|
||||
const updated = await request<OrderDetail>(`/trade/orders/${order.id}/confirm-receive`, {
|
||||
method: 'POST',
|
||||
data: { onSitePickup: useOnSite },
|
||||
data: {},
|
||||
});
|
||||
setOrder(updated);
|
||||
setOnSitePickup(false);
|
||||
toast(useOnSite ? '现场取货已确认,订单完成' : '已确认收货');
|
||||
toast('已确认收货');
|
||||
} catch (e) {
|
||||
toast(e instanceof Error ? e.message : '确认收货失败');
|
||||
} finally {
|
||||
@@ -225,27 +204,6 @@ export default function OrderDetailPage() {
|
||||
<Text className="u-muted">地址信息待完善</Text>
|
||||
)}
|
||||
</View>
|
||||
{canOnSitePickup ? (
|
||||
<View className="order-card">
|
||||
<Text className="order-card-title">取货方式</Text>
|
||||
<View
|
||||
className="order-pickup-option"
|
||||
onClick={() => setOnSitePickup((v) => !v)}
|
||||
>
|
||||
<View
|
||||
className={`order-pickup-check${onSitePickup ? ' order-pickup-check--on' : ''}`}
|
||||
>
|
||||
{onSitePickup ? <Text className="order-pickup-check-mark">✓</Text> : null}
|
||||
</View>
|
||||
<View className="order-pickup-copy">
|
||||
<Text className="order-pickup-title">现场取货</Text>
|
||||
<Text className="order-pickup-desc">
|
||||
已在活动现场或门店拿到商品时勾选,确认后订单直接完成
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
) : null}
|
||||
<View className="order-card">
|
||||
<Text className="order-card-title">订单信息</Text>
|
||||
<View className="order-row">
|
||||
@@ -303,7 +261,7 @@ export default function OrderDetailPage() {
|
||||
className={`order-confirm-submit${confirming ? ' order-confirm-submit--disabled' : ''}`}
|
||||
onClick={confirming ? undefined : () => void confirmReceive()}
|
||||
>
|
||||
{confirming ? '提交中…' : onSitePickup ? '确认现场取货' : '确认收货'}
|
||||
{confirming ? '提交中…' : '确认收货'}
|
||||
</View>
|
||||
) : null}
|
||||
</View>
|
||||
|
||||
Reference in New Issue
Block a user