diff --git a/apps/h5-partner/src/pages/ProxyOrderPage.tsx b/apps/h5-partner/src/pages/ProxyOrderPage.tsx index fc32b5c..b522b1e 100644 --- a/apps/h5-partner/src/pages/ProxyOrderPage.tsx +++ b/apps/h5-partner/src/pages/ProxyOrderPage.tsx @@ -31,7 +31,6 @@ export default function ProxyOrderPage() { const [quantity, setQuantity] = useState(2); const [promoCodeId, setPromoCodeId] = useState(''); const [deliveryMode, setDeliveryMode] = useState('ADDRESS'); - const [storeId, setStoreId] = useState(''); const [autoReceive, setAutoReceive] = useState(false); const [confirmStep, setConfirmStep] = useState(false); const [preview, setPreview] = useState(null); @@ -57,7 +56,6 @@ export default function ProxyOrderPage() { } else if (data.products[0] && !productId) { setProductId(data.products[0].id); } - if (data.stores?.[0] && !storeId) setStoreId(data.stores[0].id); }) .catch((e) => toastError(e instanceof Error ? e.message : '加载失败')) .finally(() => setLoadingOptions(false)); @@ -82,7 +80,6 @@ export default function ProxyOrderPage() { productId, quantity, deliveryMode, - storeId: deliveryMode === 'ON_SITE_PICKUP' ? storeId || undefined : undefined, receiverCity: deliveryMode === 'ADDRESS' ? region?.city || undefined : undefined, receiverDistrict: deliveryMode === 'ADDRESS' ? region?.district || undefined : undefined, }), @@ -93,7 +90,7 @@ export default function ProxyOrderPage() { .finally(() => setPreviewLoading(false)); }, 300); return () => clearTimeout(timer); - }, [productId, quantity, deliveryMode, storeId, region?.city, region?.district]); + }, [productId, quantity, deliveryMode, region?.city, region?.district]); function startCooldown(setter: (n: number | ((s: number) => number)) => void) { setter(60); @@ -150,8 +147,8 @@ export default function ProxyOrderPage() { if (!/^1\d{10}$/.test(phone.trim())) return '请输入有效手机号'; if (!customerSmsCode.trim()) return '请输入客户验证码'; if (!productId) return '请选择商品'; - if (deliveryMode === 'ON_SITE_PICKUP') { - if (!storeId) return '请选择提货门店'; + if (deliveryMode !== 'ADDRESS') { + // 现场提货不需要地址与门店 } else { if (!region?.province || !region?.city || !region?.district) return '请选择省市区'; if (!addressDetail.trim()) return '请填写详细地址'; @@ -191,7 +188,6 @@ export default function ProxyOrderPage() { partnerSmsCode: partnerSmsCode.trim(), deliveryMode, autoReceive: deliveryMode === 'ADDRESS' ? true : undefined, - storeId: deliveryMode === 'ON_SITE_PICKUP' ? storeId : undefined, receiverName: receiverName.trim() || undefined, province: deliveryMode === 'ADDRESS' ? region?.province : undefined, city: deliveryMode === 'ADDRESS' ? region?.city : undefined, @@ -232,7 +228,7 @@ export default function ProxyOrderPage() {
{loadingOptions ? ( -

加载商品与门店…

+

加载商品…

) : ( <>
@@ -307,6 +303,30 @@ export default function ProxyOrderPage() {
+ {(options?.promoCodes.length ?? 0) > 0 && ( +
+ + +
+ )} +
@@ -327,33 +347,7 @@ export default function ProxyOrderPage() {
- {deliveryMode === 'ON_SITE_PICKUP' ? ( -
- - {(options?.stores.length ?? 0) === 0 ? ( -

暂无名下门店,请先录入门店

- ) : ( - - )} -
- ) : ( + {deliveryMode === 'ADDRESS' ? ( <>
@@ -398,31 +392,7 @@ export default function ProxyOrderPage() { 同意自动收货(线下代下单提交后视为已送达并发放权益) - )} - - {(options?.promoCodes.length ?? 0) > 0 && ( -
- - -
- )} + ) : null}

费用明细

diff --git a/server/dukang-api/src/modules/trade/dto/partner-proxy-order.dto.ts b/server/dukang-api/src/modules/trade/dto/partner-proxy-order.dto.ts index 2daeb5e..6272e85 100644 --- a/server/dukang-api/src/modules/trade/dto/partner-proxy-order.dto.ts +++ b/server/dukang-api/src/modules/trade/dto/partner-proxy-order.dto.ts @@ -65,9 +65,8 @@ export class PartnerProxyOrderCreateDto { @IsBoolean() autoReceive?: boolean; - @ValidateIf((o: PartnerProxyOrderCreateDto) => o.deliveryMode === 'ON_SITE_PICKUP') + @IsOptional() @IsString() - @IsNotEmpty() storeId?: string; @IsOptional() diff --git a/server/dukang-api/src/modules/trade/trade.service.ts b/server/dukang-api/src/modules/trade/trade.service.ts index dca6c0d..2a869fb 100644 --- a/server/dukang-api/src/modules/trade/trade.service.ts +++ b/server/dukang-api/src/modules/trade/trade.service.ts @@ -1228,17 +1228,12 @@ export class TradeService { let commissionDistrict = receiverDistrict; if (body.deliveryMode === 'ON_SITE_PICKUP') { - if (!body.storeId?.trim()) throw new BadRequestException('请选择提货门店'); - const store = await this.prisma.store.findFirst({ - where: { id: BigInt(body.storeId.trim()), partnerAccountId: primary.id }, - }); - if (!store) throw new BadRequestException('门店不存在或不属于当前合伙人'); - receiverName = store.name; - receiverProvince = store.province; - receiverCity = store.cityName; - receiverDistrict = store.district; - receiverAddress = `现场提货·${store.name}·${store.province}${store.cityName}${store.district}${store.address}`; - commissionDistrict = store.district; + receiverName = body.receiverName?.trim() || `用户${normalizedPhone.slice(-4)}`; + receiverProvince = '现场'; + receiverCity = '现场'; + receiverDistrict = '取货'; + receiverAddress = '现场提货'; + commissionDistrict = ''; } else { if (!receiverProvince || !receiverCity || !receiverDistrict) { throw new BadRequestException('请选择省市区');