浏览代码

【功能修复】修复没有优惠券时点击确定提示优惠券找不到的问题;现在订单结算页面切换地址或者配送方式会重新计算价格

卢越 1 年之前
父节点
当前提交
a0f85bf157
共有 2 个文件被更改,包括 14 次插入6 次删除
  1. 11 3
      pages/order/confirm.vue
  2. 3 3
      sheep/components/s-coupon-select/s-coupon-select.vue

+ 11 - 3
pages/order/confirm.vue

@@ -185,7 +185,7 @@
 </template>
 
 <script setup>
-  import { reactive, ref } from 'vue';
+  import { reactive, ref, watch } from 'vue';
   import { onLoad } from '@dcloudio/uni-app';
   import AddressSelection from '@/pages/order/addressSelection.vue';
   import sheep from '@/sheep';
@@ -208,7 +208,7 @@
 
   const addressState = ref({
     addressInfo: {}, // 选择的收货地址
-    deliveryType: 1, // 收货方式 1 - 快递配送;2 - 门店自提
+    deliveryType: 1, // 收货方式:1-快递配送,2-门店自提
     isPickUp: true, // 门店自提是否开启 TODO puhui999: 默认开启,看看后端有开关的话接入
     pickUpInfo: {}, // 选择的自提门店信息
     receiverName: '', // 收件人名称
@@ -226,7 +226,7 @@
 
   // 选择优惠券
   async function onSelectCoupon(couponId) {
-    state.orderPayload.couponId = couponId || 0;
+    state.orderPayload.couponId = couponId;
     await getOrderInfo();
     state.showCoupon = false;
   }
@@ -336,6 +336,14 @@
     await getOrderInfo();
     await getCoupons();
   });
+
+  // 使用 watch 监听地址和配送方式的变化
+  watch(addressState, async (newAddress, oldAddress) => {
+    // 如果收货地址或配送方式有变化,则重新计算价格
+    if (newAddress.addressInfo.id !== oldAddress.addressInfo.id || newAddress.deliveryType !== oldAddress.deliveryType) {
+      await getOrderInfo();
+    }
+  });
 </script>
 
 <style lang="scss" scoped>

+ 3 - 3
sheep/components/s-coupon-select/s-coupon-select.vue

@@ -6,7 +6,7 @@
       <scroll-view class="model-content" scroll-y :scroll-with-animation="false" :enable-back-to-top="true">
         <!--可使用的优惠券区域-->
         <view class="subtitle ss-m-l-20">可使用优惠券</view>
-        <view v-for="(item, index) in state.couponInfo.filter(coupon => coupon.match)" :key="index">
+        <view v-for="(item, index) in state.couponInfo" :key="index">
           <s-coupon-list :data="item" type="user" :disabled="false">
             <template v-slot:reason>
               <view class="ss-flex ss-m-t-24">
@@ -64,13 +64,13 @@
 
   const state = reactive({
     couponInfo: computed(() => props.modelValue), // 优惠劵列表
-    couponId: 0, // 选中的优惠劵编号
+    couponId: undefined, // 选中的优惠劵编号
   });
 
   // 选中优惠劵
   function radioChange(couponId) {
     if (state.couponId === couponId) {
-      state.couponId = 0;
+      state.couponId = undefined;
     } else {
       state.couponId = couponId;
     }