From 38b82b7fc6450a56027addda615efc35c5491126 Mon Sep 17 00:00:00 2001
From: wangfukang <15630117759@163.com>
Date: Mon, 26 Oct 2026 17:05:31 +0800
Subject: [PATCH] 1
---
package1/buyFood/buyFood.vue | 140 +++++++++++++++++++++++++++++++++--
1 file changed, 132 insertions(+), 8 deletions(-)
diff --git a/package1/buyFood/buyFood.vue b/package1/buyFood/buyFood.vue
index f202db1..ffdea1f 100644
--- a/package1/buyFood/buyFood.vue
+++ b/package1/buyFood/buyFood.vue
@@ -107,6 +107,42 @@
+
+
+
+ 配送方式
+
+
+ 送到宿舍由中转配送完成,送到大门由商家自配送完成
+
+
+
+
+
+
+
+
+
+ 送到宿舍
+
+
+ {{socialDormDeliveryText}}
+
+
+
+
+
+
+
+
+ 送到大门
+
+
+ {{socialGateDeliveryText}}
+
+
+
+
@@ -599,6 +635,7 @@
import addressList from '@/package1/address/addressList.vue'
import { requireLoginToCurrentPage } from '@/utils/authRedirect.js'
import { buildGroupHomeSharePath } from '@/utils/sharePath.js'
+ const TARGET_SOCIAL_DELIVERY_REGION_ID = '2110300467664916480'
export default {
data() {
return {
@@ -651,7 +688,8 @@
deliveryEnabled: 1,
deliverySwitchChecked: false,
deliverySwitchLoading: false,
- areaKind: 1
+ areaKind: 1,
+ socialDeliveryDestination: 'dorm'
}
},
components: {
@@ -709,6 +747,12 @@
isSocialArea() {
return Number(this.areaKind) === 2;
},
+ isTargetSocialDeliveryRegion() {
+ return String(this.getCurrentRegionId()) === TARGET_SOCIAL_DELIVERY_REGION_ID && this.isSocialArea;
+ },
+ useSocialDeliveryChoice() {
+ return this.isPaotui && this.isTargetSocialDeliveryRegion && !this.isStoreGroupOrder;
+ },
goodsAmountCalc() {
if (this.isGroupBuy && this.groupItem) {
if(this.groupItem.item.moreBuyData){
@@ -765,7 +809,11 @@
if (isJoiningFaceToFace)
return 0; // Front-end doesn't know exact fee, relies on backend after order creation
let commission = 0;
- if (this.selected === 'shopDelivery') {
+ if (this.useSocialDeliveryChoice) {
+ commission = this.socialDeliveryDestination === 'gate'
+ ? parseFloat(this.shopItem.orderBkge || 0)
+ : this.getMinimumCommissionAmount();
+ } else if (this.selected === 'shopDelivery') {
commission = parseFloat(this.shopItem.orderBkge || 0);
} else if (this.selected === 'zhiding') {
if (!this.assignedWorker) return 0;
@@ -810,6 +858,10 @@
const transferTime = this.shopItem.supportTransferDelivery == 1 && !isNaN(transferDuration) && transferDuration > 0 ? transferDuration : 0;
const cookingTime = Number(this.shopItem.shopTakeaway && this.shopItem.shopTakeaway.cookingTime ? this.shopItem.shopTakeaway.cookingTime : 0);
const validCookingTime = isNaN(cookingTime) || cookingTime < 0 ? 0 : cookingTime;
+ if (this.useSocialDeliveryChoice && this.socialDeliveryDestination === 'gate') {
+ const selfDeliveryDuration = Number(this.shopItem.shopDeliveryDuration);
+ return isNaN(selfDeliveryDuration) || selfDeliveryDuration <= 0 ? validCookingTime + 30 : validCookingTime + selfDeliveryDuration;
+ }
if (this.selected === 'shopDelivery') {
const selfDeliveryDuration = Number(this.shopItem.shopDeliveryDuration);
const baseTime = isNaN(selfDeliveryDuration) || selfDeliveryDuration <= 0 ? validCookingTime + 30 : validCookingTime + selfDeliveryDuration;
@@ -834,6 +886,18 @@
const workerText = this.shopItem.workerName ? ` ${this.shopItem.workerName}` : '';
return `${feeText} ${locationText}${workerText}`;
},
+ socialDormDeliveryText() {
+ const fee = this.getMinimumCommissionAmount();
+ const feeText = fee > 0 ? `¥${this.formatAmountText(fee)}` : '免配送费';
+ const transferName = this.shopItem.transferAddressName ? ` ${this.shopItem.transferAddressName}` : '';
+ return `${feeText} 中转配送${transferName}`;
+ },
+ socialGateDeliveryText() {
+ const fee = parseFloat(this.shopItem.orderBkge || 0);
+ const feeText = fee > 0 ? `¥${this.formatAmountText(fee)}` : '免配送费';
+ const workerText = this.shopItem.workerName ? ` ${this.shopItem.workerName}` : '';
+ return `${feeText} 商家自配送${workerText}`;
+ },
minimumCommissionText() {
return this.formatAmountText(this.getMinimumCommissionAmount());
},
@@ -1057,6 +1121,16 @@
applySocialDeliveryDefaults() {
if (!this.isSocialArea || !this.isPaotui) return;
this.assignedWorker = null;
+ if (this.useSocialDeliveryChoice) {
+ if (this.socialDeliveryDestination === 'gate') {
+ this.selected = 'shopDelivery';
+ } else {
+ this.selected = 'buzhiding';
+ const minFee = this.getMinimumCommissionAmount();
+ this.customCommission = this.formatCommissionValue(minFee);
+ }
+ return;
+ }
// 商家自配送:沿用商家配送费,不改成不指定
if (this.supportShopDelivery) {
this.selected = 'shopDelivery';
@@ -1198,6 +1272,7 @@
return;
}
this.isPaotui = true;
+ this.applySocialDeliveryDefaults();
this.fetchCoupons();
},
switchToStoreMode() {
@@ -1411,6 +1486,17 @@
this.applySocialDeliveryDefaults();
}
+ if (this.useSocialDeliveryChoice && !isJoiningFaceToFace) {
+ if (this.socialDeliveryDestination === 'dorm' && this.shopItem.supportTransferDelivery != 1) {
+ this.tui.toast('中转配送配置不完整,请联系商家');
+ return;
+ }
+ if (this.socialDeliveryDestination === 'gate' && !this.supportShopDelivery) {
+ this.tui.toast('商家自配送配置不完整,请联系商家');
+ return;
+ }
+ }
+
if (this.isPaotui && this.selected === 'buzhiding' && !isJoiningFaceToFace) {
let comm = parseFloat(this.customCommission);
//没有输入佣金,直接弹出输入框
@@ -1523,6 +1609,14 @@
}
this.refreshDeliveryTimeByModeChange();
},
+ checkSocialDeliveryDestination(type) {
+ if (type === this.socialDeliveryDestination) return;
+ this.socialDeliveryDestination = type;
+ this.assignedWorker = null;
+ this.applySocialDeliveryDefaults();
+ this.refreshDeliveryTimeByModeChange();
+ this.fetchCoupons();
+ },
wxPayment() {
let that = this;
if (!this.currentOrderId || !this.backendTotalAmount) {
@@ -1688,6 +1782,7 @@
}
}
+ let currentRegionId = this.getCurrentRegionId();
let deliveryType = this.isStoreGroupOrder ? 2 : (this.isPaotui ? 1 : 2);
let payload = {
userId: uni.getStorageSync('id'),
@@ -1715,7 +1810,13 @@
payload.addressId = this.formData.address ? this.formData.address.id : null;
payload.getAreaId = this.shopItem.shopArea || null;
payload.putAreaId = this.formData.address ? (this.isSocialArea ? this.formData.address.id : this.formData.address.areaId) : null;
- if (this.shopItem.supportTransferDelivery == 1) {
+ if (this.useSocialDeliveryChoice) {
+ payload.transferDelivery = this.socialDeliveryDestination === 'dorm' ? 1 : 0;
+ if (payload.transferDelivery == 1) {
+ payload.transferAddressId = this.shopItem.transferAddressId;
+ payload.transferAddressName = this.shopItem.transferAddressName;
+ }
+ } else if (this.shopItem.supportTransferDelivery == 1) {
payload.transferDelivery = 1;
payload.transferAddressId = this.shopItem.transferAddressId;
payload.transferAddressName = this.shopItem.transferAddressName;
@@ -1730,18 +1831,41 @@
if (this.groupItem.groupId) {
payload.groupId = this.groupItem.groupId;
} else {
+ let selfCommission = null;
+ if (this.useSocialDeliveryChoice) {
+ selfCommission = this.socialDeliveryDestination === 'gate'
+ ? parseFloat(this.shopItem.orderBkge || 0)
+ : this.getMinimumCommissionAmount();
+ } else {
+ selfCommission = this.selected === 'shopDelivery' ? parseFloat(this.shopItem.orderBkge || 0) : (this.selected === 'buzhiding' ? parseFloat(this.customCommission || 0) : null);
+ }
payload.groupParam = {
targetMembers: parseInt(this.groupItem.groupRule.groupCount),
isFaceToFace: this.groupItem.isFaceToFace ? 1 : 0,
- selfCommission: this.selected === 'shopDelivery' ? parseFloat(this.shopItem.orderBkge || 0) : (this.selected === 'buzhiding' ? parseFloat(this.customCommission || 0) :
- null
- )
+ selfCommission: selfCommission
};
}
}
if (this.isPaotui && !isJoiningFaceToFace) {
- if (this.selected === 'shopDelivery') {
+ if (this.useSocialDeliveryChoice) {
+ if (this.socialDeliveryDestination === 'gate') {
+ payload.shopDelivery = 1;
+ payload.transferDelivery = 0;
+ payload.workerParam = {
+ workerId: this.shopItem.workerId,
+ workerPhone: this.shopItem.workerPhone,
+ workerName: this.shopItem.workerName,
+ orderBkge: parseFloat(this.shopItem.orderBkge || 0)
+ };
+ } else {
+ payload.shopDelivery = 0;
+ payload.transferDelivery = 1;
+ payload.workerParam = {
+ orderBkge: this.getMinimumCommissionAmount()
+ };
+ }
+ } else if (this.selected === 'shopDelivery') {
payload.shopDelivery = 1;
payload.workerParam = {
workerId: this.shopItem.workerId,
@@ -1777,7 +1901,7 @@
if(this.isSeckillOrder){
payload.seckillOrder = 1
}
- payload.regionId = this.getCurrentRegionId()
+ payload.regionId = currentRegionId
this.tui.request("/mall/order/create", "POST", payload, false, false).then(res => {
uni.hideLoading();
this.isCreatingOrder = false;