Procházet zdrojové kódy

【功能修复】修复订单结算页没有优惠券但是提示优惠券不存在的问题

Xiao_123 před 11 měsíci
rodič
revize
82e418799e

+ 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,11 +226,19 @@
 
   // 选择优惠券
   async function onSelectCoupon(couponId) {
-    state.orderPayload.couponId = couponId || 0;
+    state.orderPayload.couponId = couponId
     await getOrderInfo();
     state.showCoupon = false;
   }
 
+  // 使用 watch 监听地址和配送方式的变化
+  watch(addressState, async (newAddress, oldAddress) => {
+    // 如果收货地址或配送方式有变化,则重新计算价格
+    if (newAddress.addressInfo.id !== oldAddress.addressInfo.id || newAddress.deliveryType !== oldAddress.deliveryType) {
+      await getOrderInfo();
+    }
+  });
+
   // 提交订单
   function onConfirm() {
     if (addressState.value.deliveryType === 1 && !addressState.value.addressInfo.id) {

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

@@ -69,13 +69,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;
     }