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.
225 lines
5.5 KiB
225 lines
5.5 KiB
<template>
|
|
<view class="themes-coupon">
|
|
<!-- <themes-chunk-title title="优惠立减" :iconSrc="event_rul + '/static/theme/conpon-icon.svg'"></themes-chunk-title> -->
|
|
<scroll-view class="scroll-list" :scroll-x="true">
|
|
<block v-for="(item, idx) in shopCoupon1" :key="idx">
|
|
<!-- isUse 是按钮为'去使用'的优惠券 -->
|
|
<view class="scroll-list__item" v-if="!item.isOver" :class="{ 'isUse': item.isUse }" @tap.stop="getcoupon" :data-idx="idx" :data-id="item.couponid" :data-price="item.price" :data-score="item.score">
|
|
<image class="scroll-list__item-bg" :src="item.isUse ? event_rul + '/static/images/df-cunp1.png' : event_rul + '/static/images/df-cunp2.png'"></image>
|
|
<view class="conpon-price">
|
|
<view class="conpon-price-c flex j-center">
|
|
<text class="price-f">¥</text>
|
|
<text class="price-num font-w">{{ item.money }}</text>
|
|
</view>
|
|
<view class="conpon-price-h">满{{ item.minprice }}元使用</view>
|
|
</view>
|
|
<view class="conpon-btn flex al-item-center flex-colum">
|
|
<text class="" style="color: #9A521B;">{{ '优惠券' }}</text>
|
|
<text class=" text-center" style="border-radius: 6rpx;" :class="item.isUse? 'use-b': 'get-b'">{{item.isUse ? '去使用' : '点击领取' }}</text>
|
|
</view>
|
|
</view>
|
|
</block>
|
|
</scroll-view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
var app = getApp();
|
|
import { mapState } from "vuex";
|
|
import themesChunkTitle from './themes-chunk-title.vue'
|
|
export default{
|
|
components: {
|
|
themesChunkTitle
|
|
},
|
|
props:{
|
|
shopCoupon: {
|
|
type: Array,
|
|
default: function() {
|
|
return [];
|
|
},
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
shopCoupon1: this.shopCoupon,
|
|
event_rul: app.globalData.event_url,
|
|
}
|
|
},
|
|
watch: {
|
|
shopCoupon (newV, oldV) {
|
|
this.shopCoupon1 = newV;
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState(['opt'])
|
|
},
|
|
methods: {
|
|
// 点击领取
|
|
getcoupon: function (e) {
|
|
|
|
var that = this;
|
|
var idx = e.currentTarget.dataset.idx;
|
|
var id = e.currentTarget.dataset.id;
|
|
var score = parseInt(e.currentTarget.dataset.score);
|
|
var price = e.currentTarget.dataset.price;
|
|
|
|
if (price > 0) {
|
|
app.post('ApiCoupon/buycoupon', {id: id}, function (res) {
|
|
console.log(res)
|
|
if(res.status == 0) {
|
|
app.error(res.msg);
|
|
} else {
|
|
app.goto('/pages/pay/pay?id=' + res.payorderid);
|
|
}
|
|
})
|
|
return;
|
|
}
|
|
if (score > 0) {
|
|
app.confirm('确定要消耗' + score + '' + that.t('积分') + '兑换吗?', function () {
|
|
app.showLoading('兑换中');
|
|
app.post('ApiCoupon/getcoupon', {id: id}, function (data) {
|
|
app.showLoading(false);
|
|
if (data.status == 0) {
|
|
app.error(data.msg);
|
|
} else {
|
|
app.success(data.msg);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
that.shopCoupon.map((item,index) => {
|
|
if(index === idx) {
|
|
if(item.isUse) {
|
|
uni.navigateTo({
|
|
url:'/pages/shop/prolist?cpid='+ id
|
|
})
|
|
} else if(item.isOver) {
|
|
return;
|
|
} else {
|
|
app.showLoading('领取中');
|
|
app.post('ApiCoupon/getcoupon', {id: id}, function (data) {
|
|
app.showLoading(false);
|
|
if (data.status == 0) {
|
|
app.error(data.msg);
|
|
} else {
|
|
app.success(data.msg);
|
|
that.$set(item,"msg","去使用");
|
|
that.$set(item,'isUse',true);
|
|
that.$set(item,'isOver',false);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.themes-coupon {
|
|
margin-top: 30rpx;
|
|
// background: #FFF;
|
|
border-radius: 20rpx;
|
|
// padding: 0 0 24rpx 22rpx;
|
|
.scroll-list {
|
|
width: 104%;
|
|
white-space: nowrap;
|
|
& ::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.scroll-list__item {
|
|
display: inline-flex;
|
|
// flex-direction: column;
|
|
padding-bottom: 5px;
|
|
align-items: flex-end;
|
|
margin-right: 28rpx;
|
|
position: relative;
|
|
width: 232rpx;
|
|
height: 104rpx;
|
|
// padding: 14rpx;
|
|
z-index: 1;
|
|
&:last-child {
|
|
margin-right: 22rpx;
|
|
}
|
|
&.isUse {
|
|
// .conpon-price {
|
|
// color: #CE0000;
|
|
// }
|
|
// .conpon-btn {
|
|
// color: #CE0000;
|
|
// }
|
|
}
|
|
&-bg {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: -1;
|
|
}
|
|
.conpon-price {
|
|
width: 60%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
color: #7E4019;
|
|
.conpon-price-c {
|
|
// align-items: flex-start;
|
|
align-items: baseline;
|
|
.price-f {
|
|
padding: 10rpx 2rpx 0 0;
|
|
font-size: 24rpx;
|
|
// line-height: 34rpx;
|
|
}
|
|
.price-num {
|
|
font-size: 44rpx;
|
|
// line-height: 100rpx;
|
|
letter-spacing: 2rpx;
|
|
}
|
|
}
|
|
.conpon-price-h {
|
|
margin-top: -6rpx;
|
|
font-size: 20rpx;
|
|
font-weight: 500;
|
|
line-height: 28rpx;
|
|
}
|
|
}
|
|
.conpon-btn {
|
|
width: 40%;
|
|
|
|
justify-content: center;
|
|
// margin-top: 35rpx;
|
|
font-size: 24rpx;
|
|
font-weight: 500;
|
|
color: #333;
|
|
// line-height: 34rpx;
|
|
|
|
.use-b {
|
|
width: 76rpx;
|
|
height: 26rpx;
|
|
margin-top: 12rpx;
|
|
font-size: 16rpx;
|
|
line-height: 26rpx;
|
|
border: 2rpx solid #7E4019;
|
|
}
|
|
|
|
.get-b {
|
|
width: 76rpx;
|
|
height: 26rpx;
|
|
margin-top: 12rpx;
|
|
font-size: 16rpx;
|
|
line-height: 26rpx;
|
|
background-color: #151515;
|
|
color: #fff;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.top {margin-top: -70rpx;}
|
|
.top-z {margin-top: 30rpx;}
|
|
.top-m {margin-top: -40rpx;}
|
|
</style>
|