|
|
@@ -2,6 +2,7 @@
|
|
|
import CouponItem from '../components/coupon/index.vue'
|
|
|
import router from '@/router'
|
|
|
|
|
|
+const { userMemberInfo } = storeToRefs(useUserStore())
|
|
|
definePage({
|
|
|
name: 'xsb-confirmOrder',
|
|
|
islogin: true,
|
|
|
@@ -89,9 +90,15 @@ const displayTotalPrice = computed(() => {
|
|
|
return Math.max(0, Number((goodsPrice + freight - currentCouponDiscount.value - pointsDiscount).toFixed(2)))
|
|
|
})
|
|
|
const displayDiscountTotal = computed(() => Number((currentCouponDiscount.value + offsetPoints.value / 100).toFixed(2)))
|
|
|
+const giftOriginalTotal = computed(() => {
|
|
|
+ if (!isMemberGiftOrder.value)
|
|
|
+ return 0
|
|
|
+ return Number((Number(orderInfo.value?.price || 0) + Number(orderInfo.value?.transfee || 0)).toFixed(2))
|
|
|
+})
|
|
|
|
|
|
onLoad((options: any) => {
|
|
|
orderInfo.value = JSON.parse(options.data)
|
|
|
+ console.log(orderInfo.value, '===商品数据===')
|
|
|
syncCouponState()
|
|
|
deliveryType.value = current.value === '自提' ? 2 : 3
|
|
|
// model.value1 = userInfo.value?.nickName || ''
|
|
|
@@ -99,14 +106,14 @@ onLoad((options: any) => {
|
|
|
})
|
|
|
onShow(() => {
|
|
|
useUserStore().getuserAddresslist()
|
|
|
- if (orderInfo.value && current.value === '即时配送' && isSingleSkuOrder.value) {
|
|
|
+ if (orderInfo.value && current.value === '即时配送' && (isSingleSkuOrder.value || isMemberGiftOrder.value)) {
|
|
|
getConfirmOrder()
|
|
|
}
|
|
|
})
|
|
|
|
|
|
watch(current, async (value) => {
|
|
|
deliveryType.value = value === '自提' ? 2 : 3
|
|
|
- if (orderInfo.value && isSingleSkuOrder.value) {
|
|
|
+ if (orderInfo.value && (isSingleSkuOrder.value || isMemberGiftOrder.value)) {
|
|
|
await getConfirmOrder()
|
|
|
}
|
|
|
})
|
|
|
@@ -150,15 +157,25 @@ async function getConfirmOrder() {
|
|
|
const res = await Apis.xsb.skuOrderConfirm({
|
|
|
data: params,
|
|
|
})
|
|
|
- const skuList = res.data.sku
|
|
|
- ? [{ ...res.data.sku, num: params.num, shopId: params.shopId }]
|
|
|
- : (orderInfo.value?.skuList || [])
|
|
|
- orderInfo.value = {
|
|
|
- ...orderInfo.value,
|
|
|
- ...res.data,
|
|
|
- skuList,
|
|
|
- } as ConfirmOrderInfo
|
|
|
- syncCouponState()
|
|
|
+ if (isMemberGiftOrder.value) {
|
|
|
+ // 赠品订单仅更新配送费和店铺地址信息,保留原始商品数据
|
|
|
+ orderInfo.value = {
|
|
|
+ ...orderInfo.value,
|
|
|
+ transfee: res.data.transfee ?? orderInfo.value?.transfee ?? 0,
|
|
|
+ shopAddressDTO: res.data.shopAddressDTO ?? orderInfo.value?.shopAddressDTO,
|
|
|
+ } as ConfirmOrderInfo
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ const skuList = res.data.sku
|
|
|
+ ? [{ ...res.data.sku, num: params.num, shopId: params.shopId }]
|
|
|
+ : (orderInfo.value?.skuList || [])
|
|
|
+ orderInfo.value = {
|
|
|
+ ...orderInfo.value,
|
|
|
+ ...res.data,
|
|
|
+ skuList,
|
|
|
+ } as ConfirmOrderInfo
|
|
|
+ syncCouponState()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
function openShopLocation() {
|
|
|
@@ -401,6 +418,12 @@ async function handlePay() {
|
|
|
¥{{ orderInfo?.transfee }}
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <view v-if="!isMemberGiftOrder && userMemberInfo.active" class="mb28rpx flex items-center justify-between text-28rpx">
|
|
|
+ <view>{{ orderInfo?.memberBenefitDesc }}</view>
|
|
|
+ <view class="text-#FF4D3A font-semibold">
|
|
|
+ -¥{{ orderInfo?.memberDiscountAmount }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
<view v-if="!isMemberGiftOrder" class="mb28rpx flex items-center justify-between text-28rpx" @click="openCouponPopup">
|
|
|
<view>优惠券</view>
|
|
|
<view class="flex items-center">
|
|
|
@@ -424,7 +447,15 @@ async function handlePay() {
|
|
|
<view class="font-semibold">
|
|
|
总计:
|
|
|
</view>
|
|
|
- <view class="text-#FF4D3A font-semibold">
|
|
|
+ <view v-if="isMemberGiftOrder" class="flex items-center">
|
|
|
+ <text class="mr-8rpx rounded-8rpx bg-#FF4D3A px-12rpx py-4rpx text-22rpx text-#FFF">
|
|
|
+ 赠品
|
|
|
+ </text>
|
|
|
+ <text class="text-#AAAAAA line-through">
|
|
|
+ ¥{{ giftOriginalTotal }}
|
|
|
+ </text>
|
|
|
+ </view>
|
|
|
+ <view v-else class="text-#FF4D3A font-semibold">
|
|
|
¥ {{ displayTotalPrice }}
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -521,7 +552,15 @@ async function handlePay() {
|
|
|
</Zpopup>
|
|
|
<view class="ios footer fixed bottom-0 left-0 z-1000 box-border w-full rounded-t-16rpx bg-white px24rpx">
|
|
|
<view class="box-border w-full flex items-center justify-between py20rpx">
|
|
|
- <view class="flex items-center text-#FF4D3A">
|
|
|
+ <view v-if="isMemberGiftOrder" class="flex items-center">
|
|
|
+ <text class="mr-8rpx rounded-8rpx bg-#FF4D3A px-12rpx py-4rpx text-22rpx text-#FFF">
|
|
|
+ 赠品
|
|
|
+ </text>
|
|
|
+ <text class="text-32rpx text-#AAAAAA line-through">
|
|
|
+ ¥{{ giftOriginalTotal }}
|
|
|
+ </text>
|
|
|
+ </view>
|
|
|
+ <view v-else class="flex items-center text-#FF4D3A">
|
|
|
<view class="font-semibold10 flex items-baseline text-36rpx">
|
|
|
<text class="text-24rpx">
|
|
|
¥
|