修改支付订单的逻辑 - 改为根据供应商选择自提点
This commit is contained in:
parent
20b03f0f02
commit
47f1eaaa09
@ -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)
|
||||||
},
|
},
|
||||||
@ -482,11 +500,15 @@ export default {
|
|||||||
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({
|
||||||
@ -499,28 +521,38 @@ export default {
|
|||||||
const params = {
|
const params = {
|
||||||
user_id: uni.getStorageSync('userId'),
|
user_id: uni.getStorageSync('userId'),
|
||||||
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();
|
const currentTime = new Date().getTime();
|
||||||
const startTime = new Date(item.commodity_goods_info.group_buy_activity_info?.start_time).getTime();
|
|
||||||
const endTime = new Date(item.commodity_goods_info.group_buy_activity_info?.end_time).getTime();
|
|
||||||
const isGroupBuy = currentTime >= startTime && currentTime <= endTime;
|
|
||||||
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: isGroupBuy ? item.commodity_goods_info.group_buy_price : item.commodity_goods_info.sales_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,
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user