Browse Source

✨ 商品详情:优惠劵信息的接入

YunaiV 1 năm trước cách đây
mục cha
commit
275e8a278f

+ 11 - 8
pages/coupon/detail.vue

@@ -209,18 +209,21 @@
     }
   }
 
+  // 领取优惠劵
   async function getCoupon() {
-    const { error, msg } = await sheep.$api.coupon.get(state.id);
-    if (error === 0) {
-      uni.showToast({
-        title: msg,
-      });
-      setTimeout(() => {
-        getCouponContent(state.id, state.couponId);
-      }, 1000);
+    const { code } = await CouponApi.takeCoupon(state.id);
+    if (code !== 0) {
+      return;
     }
+    uni.showToast({
+      title: '领取成功',
+    });
+    setTimeout(() => {
+      getCouponContent();
+    }, 1000);
   }
 
+  // 加载优惠劵信息
   async function getCouponContent() {
     const { code, data } = state.id > 0 ? await CouponApi.getCouponTemplate(state.id)
       : await CouponApi.getCoupon(state.couponId);

+ 1 - 1
pages/coupon/list.vue

@@ -111,7 +111,7 @@
     state.currentTab = e.index;
     state.type = e.value;
     resetPagination(state.pagination)
-    if (state.currentTab == 0) {
+    if (state.currentTab === 0) {
     	getData();
     } else {
       getCoupon();

+ 19 - 19
pages/goods/index.vue

@@ -186,18 +186,16 @@
 
 	// 立即领取  TODO 芋艿:待测试
 	async function onGet(id) {
-		const {
-			error,
-			msg
-		} = await sheep.$api.coupon.get(id);
-		if (error === 0) {
-			uni.showToast({
-				title: msg,
-			});
-			setTimeout(() => {
-				getCoupon();
-			}, 1000);
-		}
+    const { code } = await CouponApi.takeCoupon(id);
+    if (code !== 0) {
+      return;
+    }
+    uni.showToast({
+      title: '领取成功',
+    });
+    setTimeout(() => {
+      getCoupon();
+    }, 1000);
 	}
 
 	//  TODO 芋艿:待测试
@@ -221,7 +219,14 @@
 		}, );
 	});
 
-	onLoad(async (options) => {
+  async function getCoupon() {
+    const { code, data } = await CouponApi.getCouponTemplateList(state.goodsId, 2, 10);
+    if (code === 0) {
+      state.couponInfo = data;
+    }
+  }
+
+	onLoad((options) => {
 		// 非法参数
 		if (!options.id) {
 			state.goodsInfo = null;
@@ -249,12 +254,7 @@
 		});
 
 		// 2. 加载优惠劵信息
-		CouponApi.getCouponTemplateList(state.goodsId, 2, 10).then((res) => {
-			if (res.code !== 0) {
-				return;
-			}
-			state.couponInfo = res.data;
-		});
+    getCoupon();
 
 		// 3. 加载营销活动信息
 		ActivityApi.getActivityListBySpuId(state.goodsId).then((res) => {

+ 10 - 9
sheep/components/s-coupon-get/s-coupon-get.vue

@@ -1,3 +1,4 @@
+<!-- 商品详情 - 优惠劵领取 -->
 <template>
   <su-popup
     :show="show"
@@ -21,13 +22,11 @@
             <template #default>
               <button
                 class="ss-reset-button card-btn ss-flex ss-row-center ss-col-center"
-                :class="
-                  item.get_status != 'can_get' && item.get_status != 'can_use' ? 'boder-btn' : ''
-                "
+                :class="!item.canTake ? 'boder-btn' : ''"
                 @click.stop="getBuy(item.id)"
-                :disabled="item.get_status != 'can_get' && item.get_status != 'can_use'"
+                :disabled="!item.canTake"
               >
-                {{ item.get_status_text }}
+                {{ item.canTake ? '立即领取' : '已领取' }}
               </button>
             </template>
           </s-coupon-list>
@@ -38,6 +37,7 @@
 </template>
 <script setup>
   import { computed, reactive } from 'vue';
+
   const props = defineProps({
     modelValue: {
       type: Object,
@@ -48,16 +48,17 @@
       default: false,
     },
   });
+
   const emits = defineEmits(['get', 'close']);
+
   const state = reactive({
-    couponInfo: computed(() => props.modelValue),
-    currentValue: -1,
-    couponId: '',
+    couponInfo: computed(() => props.modelValue)
   });
+
+  // 领取优惠劵
   const getBuy = (id) => {
     emits('get', id);
   };
-  //立即领取
 </script>
 <style lang="scss" scoped>
   .model-box {