You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<template> <view v-if="couponList.length > 0"> <view class="coupon-window" :class="value ? 'on' : ''"> <view class="couponWinList"> <view class="item acea-row row-between-wrapper" v-for="(item, couponwindiwIndex) in couponList" :key="couponwindiwIndex"> <view class="money font-color-red"> ¥<text class="num">{{ item.coupon_price }}</text> </view> <view class="text"> <view class="name"> 购物买{{ item.use_min_price }}减{{ item.coupon_price }} </view> <view v-if="item.end_time"> {{ item.start_time }}-{{ item.end_time }} </view> </view> </view> <view style="height:120rpx"></view> </view> <view class="lid"> <view class="bnt font-color-red" @click="checked">立即领取</view> <view class="iconfont icon-guanbi3" @click="close"></view> </view> </view> <view class="mask" @touchmove.prevent :hidden="!value"></view> </view> </template> <script> import { mapGetters } from "vuex"; import {handleLoginFailure} from "@/utils"; import { couponReceiveBatch } from "@/api/user";
export default { name: "CouponWindow", props: { couponList: { type: Array, default: () => [] } }, computed: mapGetters(["isLogin"]), data: function() { return { value: true }; }, mounted: function() {}, methods: { checked() { const isLogin = this.isLogin; if (!isLogin) return handleLoginFailure();
const ids = this.couponList.reduce((initial, coupon) => { initial.push(coupon.id); return initial; }, []); couponReceiveBatch(ids) .then(() => { this.$emit("success"); uni.showToast({ title: '领取成功', icon: 'success', duration: 2000 }); }) .catch(() => { uni.showToast({ title: '已领取', icon: 'none', duration: 2000 }); }); if (isLogin) { this.value = false; this.$emit("checked"); } }, close: function() { this.value = false; this.$emit("close"); } } }; </script>
|