diff --git a/apps/h5-user/src/pages/OrderConfirmPage.tsx b/apps/h5-user/src/pages/OrderConfirmPage.tsx
index 115b797..aa9a650 100644
--- a/apps/h5-user/src/pages/OrderConfirmPage.tsx
+++ b/apps/h5-user/src/pages/OrderConfirmPage.tsx
@@ -70,6 +70,7 @@ export default function OrderConfirmPage() {
const [addresses, setAddresses] = useState
([]);
const [addressId, setAddressId] = useState(params.get('addressId') || '');
const [preview, setPreview] = useState(null);
+ const [previewLoading, setPreviewLoading] = useState(false);
const [loading, setLoading] = useState(false);
const [msg, setMsg] = useState('');
@@ -104,13 +105,35 @@ export default function OrderConfirmPage() {
}, [refreshProfile]);
useEffect(() => {
- if (!productId || !addressId) return;
+ if (!productId) return;
+ let cancelled = false;
+ setPreviewLoading(true);
+ const body: { productId: string; quantity: number; addressId?: string } = {
+ productId,
+ quantity,
+ };
+ if (addressId) body.addressId = addressId;
+
request('USER_H5', '/trade/orders/preview', {
method: 'POST',
- body: JSON.stringify({ productId, quantity, addressId }),
+ body: JSON.stringify(body),
})
- .then(setPreview)
- .catch((e) => setMsg(e instanceof Error ? e.message : String(e)));
+ .then((data) => {
+ if (!cancelled) setPreview(data);
+ })
+ .catch((e) => {
+ if (!cancelled) {
+ setPreview(null);
+ setMsg(e instanceof Error ? e.message : String(e));
+ }
+ })
+ .finally(() => {
+ if (!cancelled) setPreviewLoading(false);
+ });
+
+ return () => {
+ cancelled = true;
+ };
}, [productId, quantity, addressId]);
function updateQuantity(next: number) {
@@ -331,9 +354,13 @@ export default function OrderConfirmPage() {
配送方式
- {isCross ? '物流配送' : '小飞侠配送'}
+ {!addressId
+ ? '选择地址后确认'
+ : isCross
+ ? '物流配送'
+ : '小飞侠配送'}
- {!isCross && (
+ {addressId && !isCross && (
预计24小时内送达
)}
@@ -358,10 +385,14 @@ export default function OrderConfirmPage() {
>
)}
- {!preview && productId && addressId && (
+ {previewLoading && !preview && productId && (
加载订单信息...
)}
+ {!previewLoading && !preview && productId && (
+ 无法加载商品信息
+ )}
+
{msg && {msg}
}
@@ -376,10 +407,10 @@ export default function OrderConfirmPage() {