fix delivery fee

This commit is contained in:
Kroytz committed 2026-07-15 23:49:28 +08:00
1 parent 88563423fa
commit be9601ff91
7 files changed
+33 -51

No files matched your search

@@ -41,14 +41,13 @@ import {
import { useMainStore } from '@/store/store'
import { storeToRefs } from 'pinia'
import { onLoad,onShow } from '@dcloudio/uni-app'
import { formatDateTime,prePage } from '@/utils/util'
import {
addressAll,
addressDelete,
shopGetDistanceFromLocation
} from '@/api/address'
import { formatDateTime,prePage } from '@/utils/util'
import {
addressAll,
addressDelete
} from '@/api/address'
const main = useMainStore()
const { isLogin,addresses,store } = storeToRefs(main)
const { isLogin,addresses } = storeToRefs(main)
const title = ref('我的地址')
const scene = ref('menu')
@@ -118,36 +117,16 @@ const chooseAddress = async(address) => {
return;
}
console.log('scene.value:',scene.value)
if (scene.value == 'menu' || scene.value == 'pay') {
let data = await shopGetDistanceFromLocation({
lat: address.latitude,
lng: address.longitude,
lat2: main.store.lat,
lng2: main.store.lng
});
if (!data) {
return;
}
if (parseFloat(data) > store.value.distance) {
uni.showToast({
title: '不在配送范围!',
icon: 'error'
})
return;
}
main.SET_ADDRESS(address)
main.SET_ORDER_TYPE('takeout')
main.store.far = data
main.store.far_text = data + 'km'
main.SET_STORE(main.store)
main.SET_LOCATION({
latitude: address.lat,
longitude: address.lng
});
console.log('scene.value:',scene.value)
if (scene.value == 'menu' || scene.value == 'pay') {
main.SET_ADDRESS(address)
main.SET_ORDER_TYPE('takeout')
main.SET_LOCATION({
latitude: address.latitude,
longitude: address.longitude
});
if (scene.value == 'menu') {
uni.switchTab({
url: '/pages/menu/menu'
@@ -84,6 +84,8 @@ const { orderType,address, store,location,isLogin,member,mycoupon } = storeToRef
const active = ref(false)
const deliveryFee = ref(0)
const outOfRange = ref(false)
const deliveryDistance = ref(0)
const maxDistance = ref(0)
const title = ref('确认订单')
const jsStr = ref('')
const cart = ref([])
@@ -165,12 +167,16 @@ watch([address, store, orderType], async () => {
if (orderType.value !== 'takeout' || !store.value.id) {
deliveryFee.value = 0
outOfRange.value = false
deliveryDistance.value = 0
maxDistance.value = 0
return
}
// 未选地址时显示默认配送费
if (!address.value || !address.value.longitude) {
deliveryFee.value = parseFloat(store.value.deliveryPrice) || 0
outOfRange.value = false
deliveryDistance.value = 0
maxDistance.value = parseFloat(store.value.distance) || 0
return
}
try {
@@ -181,9 +187,13 @@ watch([address, store, orderType], async () => {
})
outOfRange.value = !!res.outOfRange
deliveryFee.value = parseFloat(res.deliveryPrice) || 0
deliveryDistance.value = parseFloat(res.distanceKm) || 0
maxDistance.value = parseFloat(res.maxDistanceKm) || 0
} catch (e) {
deliveryFee.value = parseFloat(store.value.deliveryPrice) || 0
outOfRange.value = false
deliveryDistance.value = 0
maxDistance.value = parseFloat(store.value.distance) || 0
}
}, { immediate: true })
@@ -366,7 +376,7 @@ const submit = () => {
const pay = async() => {
// 外卖时校验收货地址是否在配送范围
if (orderType.value == 'takeout' && outOfRange.value) {
uToast.value.show({message:'当前收货地址不在配送范围内',type: 'error'});
uToast.value.show({message:`当前地址距门店${deliveryDistance.value}km,配送范围${maxDistance.value}km`,type: 'error'});
return;
}
let that = this;