Compare commits

..

2 Commits

Author SHA1 Message Date
赵毅
47f1eaaa09 修改支付订单的逻辑 - 改为根据供应商选择自提点 2025-09-02 17:57:21 +08:00
赵毅
20b03f0f02 修改支付金额的显示问题 2025-09-02 16:09:59 +08:00
3 changed files with 101 additions and 61 deletions

View File

@ -43,7 +43,7 @@
<view class="group-price"> <view class="group-price">
<view>{{ item.commodity_goods_info.sales_price }}/{{ <view>{{ item.commodity_goods_info.sales_price }}/{{
item.commodity_goods_info.goods_unit item.commodity_goods_info.goods_unit
}}</view> }}</view>
<!-- 运费 --> <!-- 运费 -->
<view class="goods-desc" style="margin-top: 10rpx;">运费 {{ <view class="goods-desc" style="margin-top: 10rpx;">运费 {{
item.commodity_goods_info.freight }}</view> item.commodity_goods_info.freight }}</view>
@ -97,30 +97,41 @@
暂无商品数据 暂无商品数据
</view> </view>
<view v-if="activeTab === 'pickup' && orderList2.length > 0"> <view v-if="activeTab === 'pickup' && orderList2.length > 0">
<view class="goods-list" v-for="(item, index) in orderList2" :key="index"> <!-- 按供应商分组 -->
<view class="info-section"> <view v-for="(group, supplierId) in supplierGroups" :key="supplierId">
<view class="address-section"> <view class="goods-list">
<view class="section-title">自提点</view> <view class="info-section">
<view @click="editAddress(item)"> <view class="address-section">
<view v-if="defZTAddress.length > 0"> <view class="section-title">自提点</view>
<view v-for="(adItem, adIndex) in defZTAddress" :key="adIndex"> <view @click="editAddress(group[0])">
<view class="address-info" v-if="adItem.id === item.goods_id"> <view v-if="defZTAddress.length > 0">
<view class="address-main"> <view v-for="(adItem, adIndex) in defZTAddress" :key="adIndex">
<view class="address-name-phone"> <view class="address-info" v-if="adItem.id == supplierId">
<text class="name">{{ adItem.name }}</text> <view class="address-main">
<text class="phone">{{ adItem.phone }}</text> <view class="address-name-phone">
<text class="name">{{ adItem.name }}</text>
<text class="phone">{{ adItem.phone }}</text>
</view>
<view class="address-detail">
{{ adItem.address }}
<view class="copy-icon" @click.stop="copyZTAddress" />
</view>
</view> </view>
<view class="address-detail"> <view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon>
{{ adItem.address }}
<view class="copy-icon" @click.stop="copyZTAddress" />
</view> </view>
</view> </view>
<view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon> </view>
</view> <view class="address-info"
v-if="!defZTAddress.some(adItem => adItem.id == supplierId)">
<view class="address-main">
<view class="address-name-phone">
<text class="name">请选择自提点</text>
</view>
</view>
<view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon></view>
</view> </view>
</view> </view>
<view class="address-info" <view class="address-info" v-else>
v-if="!defZTAddress.some(adItem => adItem.id === item.goods_id)">
<view class="address-main"> <view class="address-main">
<view class="address-name-phone"> <view class="address-name-phone">
<text class="name">请选择自提点</text> <text class="name">请选择自提点</text>
@ -129,18 +140,11 @@
<view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon></view> <view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon></view>
</view> </view>
</view> </view>
<view class="address-info" v-else>
<view class="address-main">
<view class="address-name-phone">
<text class="name">请选择自提点</text>
</view>
</view>
<view class="address-arrow"><u-icon name="arrow-right" size="25"></u-icon></view>
</view>
</view> </view>
</view> </view>
</view> </view>
<view class="goods-item"> <!-- 该供应商下的所有商品 -->
<view class="goods-item" v-for="(item, index) in group" :key="index">
<view class="goods-image"> <view class="goods-image">
<image :src="item.commodity_goods_info.commodity_pic" mode="aspectFill"></image> <image :src="item.commodity_goods_info.commodity_pic" mode="aspectFill"></image>
</view> </view>
@ -313,6 +317,20 @@ export default {
group_buy_activity_id: 0, group_buy_activity_id: 0,
}; };
}, },
computed: {
// id
supplierGroups() {
const groups = {};
this.orderList2.forEach(item => {
const supplierId = item.commodity_goods_info.group_buy_activity_info?.supplier_id || 'default';
if (!groups[supplierId]) {
groups[supplierId] = [];
}
groups[supplierId].push(item);
});
return groups;
},
},
onLoad(options) { onLoad(options) {
this.carList = JSON.parse(options.shopCarList) this.carList = JSON.parse(options.shopCarList)
}, },
@ -386,7 +404,7 @@ export default {
} else { } else {
item.count-- item.count--
} }
// 0carList // 0carList
if (item.count === 0) { if (item.count === 0) {
const index = this.carList.findIndex(carItem => carItem.goods_id === item.goods_id); const index = this.carList.findIndex(carItem => carItem.goods_id === item.goods_id);
@ -396,7 +414,7 @@ export default {
this.getGoodsList(); this.getGoodsList();
} }
} }
this.changeCart(item) this.changeCart(item)
} }
}, },
@ -461,7 +479,7 @@ export default {
} }
}); });
// //
return total; return total.toFixed(2);
} else { } else {
let total = 0; let total = 0;
this.orderList2.forEach(goods => { this.orderList2.forEach(goods => {
@ -475,18 +493,22 @@ export default {
} }
}); });
// //
return total; return total.toFixed(2);
} }
}, },
selectPayment(payment) { selectPayment(payment) {
this.selectedPayment = payment; this.selectedPayment = payment;
}, },
submitPayment() { submitPayment() {
// //
const allHaveZTAddress = this.orderList2.every(item => { const supplierIds = [...new Set(this.orderList2.map(item =>
const ztAddress = this.defZTAddress.find(adItem => adItem.id === item.goods_id); item.commodity_goods_info.group_buy_activity_info?.supplier_id || 'default'
return ztAddress && ztAddress.id; ))];
});
const allHaveZTAddress = supplierIds.every(supplierId => {
const ztAddress = this.defZTAddress.find(adItem => adItem.id == supplierId);
return !!ztAddress;
});
if (!allHaveZTAddress) { if (!allHaveZTAddress) {
uni.showToast({ uni.showToast({
@ -498,26 +520,39 @@ export default {
const params = { const params = {
user_id: uni.getStorageSync('userId'), user_id: uni.getStorageSync('userId'),
// TODO
is_group_buy: true, is_group_buy: true,
goods_list: this.orderList2.map(item => { goods_list: Object.keys(this.supplierGroups).map(supplierId => {
const group = this.supplierGroups[supplierId];
const firstItem = group[0];
// id // id
this.group_buy_activity_id = item.commodity_goods_info.group_buy_activity_id this.group_buy_activity_id = firstItem.commodity_goods_info.group_buy_activity_id;
const ztAddress = this.defZTAddress.find(adItem => adItem.id === item.goods_id) || {};
// id
const ztAddress = this.defZTAddress.find(adItem => adItem.id == supplierId) || {};
//
const currentTime = new Date().getTime();
return { return {
supplier_id: item.commodity_goods_info.group_buy_activity_info.supplier_id, supplier_id: firstItem.commodity_goods_info.group_buy_activity_info.supplier_id,
supplier_name: item.supplier_name || '', supplier_name: firstItem.supplier_name || '',
is_same_day: item.commodity_goods_info.is_same_day, is_same_day: firstItem.commodity_goods_info.is_same_day,
receiving_name: ztAddress.name || '', receiving_name: ztAddress.name || '',
receiving_phone: ztAddress.phone || '', receiving_phone: ztAddress.phone || '',
receiving_address: ztAddress.address || '', receiving_address: ztAddress.address || '',
group_buy_activity_id: item.commodity_goods_info.group_buy_activity_id, group_buy_activity_id: firstItem.commodity_goods_info.group_buy_activity_id,
goods_and_count: [{ goods_and_count: group.map(item => {
goods_id: item.commodity_goods_info.goods_id, const startTime = new Date(item.commodity_goods_info.group_buy_activity_info?.start_time).getTime();
count: item.count, const endTime = new Date(item.commodity_goods_info.group_buy_activity_info?.end_time).getTime();
price: item.commodity_goods_info.group_buy_price const isGroupBuy = currentTime >= startTime && currentTime <= endTime;
}] return {
goods_id: item.commodity_goods_info.goods_id,
count: item.count,
price: isGroupBuy ? item.commodity_goods_info.group_buy_price : item.commodity_goods_info.sales_price,
freight: item.commodity_goods_info.freight,
}
})
} }
}) })
} }

View File

@ -493,7 +493,7 @@ export default {
}); });
}); });
this.shopMoney = total; this.shopMoney = total.toFixed(2);
}, },
// //
@ -717,6 +717,11 @@ export default {
}, },
onShow() { onShow() {
this.getShopCar(); this.getShopCar();
//
this.isAllchecked = false;
this.isDaychecked = false;
this.isParcelPostchecked = false;
this.shopMoney = 0.00;
}, },
onReachBottom() { }, onReachBottom() { },

View File

@ -34,10 +34,10 @@ export default {
}, },
onLoad(options) { onLoad(options) {
const item = JSON.parse(options.item) const item = JSON.parse(options.item)
this.getLocationList(item.goods_id) this.getLocationList(item.goods_id, item.supplier_id)
}, },
methods: { methods: {
async getLocationList(id) { async getLocationList(id, supplier_id) {
const params = { const params = {
goods_ids: id, goods_ids: id,
} }
@ -46,7 +46,7 @@ export default {
res.self_pickup_address_list[0].address.forEach(item => { res.self_pickup_address_list[0].address.forEach(item => {
const [address, phone, name] = item.split(' '); const [address, phone, name] = item.split(' ');
this.locationList.push({ this.locationList.push({
id: id, id: supplier_id,
name: name || '', name: name || '',
phone: phone || '', phone: phone || '',
address: address || '' address: address || ''
@ -56,13 +56,13 @@ export default {
selectLocation(item, index) { selectLocation(item, index) {
// //
this.selectedIndex = index; this.selectedIndex = index;
// //
let addressList = uni.getStorageSync('changeZTAddress') || []; let addressList = uni.getStorageSync('changeZTAddress') || [];
// id // id
const existingIndex = addressList.findIndex(addr => addr.id === item.id); const existingIndex = addressList.findIndex(addr => addr.id === item.id);
if (existingIndex > -1) { if (existingIndex > -1) {
// id // id
addressList[existingIndex] = item; addressList[existingIndex] = item;
@ -70,10 +70,10 @@ export default {
// id // id
addressList.push(item); addressList.push(item);
} }
// //
uni.setStorageSync('changeZTAddress', addressList); uni.setStorageSync('changeZTAddress', addressList);
NavgateTo("1") NavgateTo("1")
} }
} }