<template>
|
|
<view class="coupon">
|
|
<view class="position-fixed top-0 left-0 bg-white vw-100 zIndex-2">
|
|
<u-tabs font-size="34" :list="list" :is-scroll="false" :current="current" @change="change" active-color="#01AEEA" />
|
|
</view>
|
|
<view class="coupon-container" v-if="couponData.length>0">
|
|
<view class="items" v-for="item in couponData" :key="item.id">
|
|
<text class="title font-28">优惠券</text>
|
|
<text class="price font-40">{{item.name}}</text>
|
|
<text>有效期至:{{item.validTime}}</text>
|
|
<button class="btn" type="default" @click="chooseCoup(item)">立即使用</button>
|
|
|
|
<view class="position-absolute zIndex-1 coupon-invalid" v-if="item.useFlag == 1">
|
|
<view class="coupon-invalid-image position-absolute">
|
|
<image :src="IMG_URL + 'my/invalid.png'" mode="widthFix"></image>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
</view>
|
|
|
|
<view v-if="!couponData.length">
|
|
<u-empty margin-top="450" text="暂无优惠券~" mode="list" ></u-empty>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<!-- invalid -->
|
|
<script>
|
|
import { IMG_URL } from '@/env.js'
|
|
export default {
|
|
data () {
|
|
return {
|
|
IMG_URL,
|
|
list: [{
|
|
name: '待使用'
|
|
}, {
|
|
name: '已过期'
|
|
}],
|
|
options: {},
|
|
current: 0,
|
|
couponData: [],
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
total: null,
|
|
isLock: true,
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.options = options
|
|
this.getCouponPage()
|
|
},
|
|
onPullDownRefresh() {
|
|
this.couponData = [];
|
|
this.pageNo = 1;
|
|
this.total = null;
|
|
this.isLock = true;
|
|
this.getCouponPage()
|
|
},
|
|
onReachBottom() {
|
|
if(this.isLock){
|
|
this.isLock = false;
|
|
if(this.total !== null && this.pageNo * this.pageSize >= this.total){
|
|
this.$Toast('没有更多数据了哦!');
|
|
setTimeout(()=>{
|
|
this.isLock = true;
|
|
},3000)
|
|
return
|
|
}
|
|
this.pageNo+=1;
|
|
this.getCouponPage();
|
|
}
|
|
},
|
|
methods: {
|
|
getCouponPage() {
|
|
uni.showLoading();
|
|
const params = {
|
|
pageNo: this.pageNo,
|
|
pageSize: this.pageSize,
|
|
type: this.current,
|
|
id: this.options?.id || null
|
|
}
|
|
this.$api('getCouponPage',params).then(res => {
|
|
let { code, result, message} = res;
|
|
if(code == 200) {
|
|
if(this.total == null) {
|
|
this.total = result.total;
|
|
}
|
|
// 处理 图片
|
|
this.couponData = this.couponData.concat(result.records)
|
|
console.log(result);
|
|
}else {
|
|
this.$Toast(message);
|
|
}
|
|
uni.hideLoading()
|
|
uni.stopPullDownRefresh()
|
|
this.isLock = true;
|
|
}).catch(err => {
|
|
uni.hideLoading()
|
|
this.isLock = true;
|
|
uni.stopPullDownRefresh()
|
|
this.$Toast(err.message);
|
|
})
|
|
},
|
|
chooseCoup(item) {
|
|
if (this.options?.id) {
|
|
uni.$emit('coupon', item)
|
|
uni.navigateBack({
|
|
delta: 1
|
|
})
|
|
} else {
|
|
this.$tools.navigateTo({
|
|
url: '/pagesC/goodsInfo/goodsInfo?type=home&id='+ item.goodsId
|
|
})
|
|
}
|
|
},
|
|
change(index) {
|
|
this.current = index;
|
|
this.couponData = [];
|
|
this.pageNo = 1;
|
|
this.total = null;
|
|
this.isLock = true;
|
|
this.getCouponPage()
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.coupon{
|
|
&-container {
|
|
padding: 100rpx 20rpx 20rpx;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
&-invalid {
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
border-radius: 10rpx;
|
|
background: rgba(0,0,0,0.3);
|
|
&-image {
|
|
width: 200rpx;
|
|
right: 40rpx;
|
|
bottom: 20rpx;
|
|
}
|
|
}
|
|
|
|
.items{
|
|
margin-bottom: 40rpx;
|
|
background: url('https://hanhai-image-dev.oss-cn-guangzhou.aliyuncs.com/blindbox/youhuiquan.png') no-repeat;
|
|
background-size: cover;
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
padding: 40rpx 30rpx;
|
|
border-radius: 10rpx;
|
|
text{
|
|
margin-top: 20rpx;
|
|
color: #FFFFFF;
|
|
font-size: 24rpx;
|
|
}
|
|
.title{
|
|
font-size: 30rpx;
|
|
}
|
|
.price{
|
|
font-size: 36rpx;
|
|
}
|
|
.btn{
|
|
position: absolute;
|
|
right: 15rpx;
|
|
top: 100rpx;
|
|
width: 146rpx;
|
|
height: 58rpx;
|
|
padding: 0rpx;
|
|
// border: 1rpx solid #fb7b5e;
|
|
border-radius: 17rpx;
|
|
box-shadow: 0rpx 3rpx 6rpx 0rpx rgba(0,0,0,0.16);
|
|
background: #ffffff;
|
|
font-size: 24rpx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
}
|
|
}
|
|
|
|
.noCoupon {
|
|
text-align: center;
|
|
}
|
|
|
|
.giving-box {
|
|
width: 602rpx;
|
|
.giving-title {
|
|
padding:40rpx 0;
|
|
width: 100%;
|
|
font-size: 37rpx;
|
|
color: #000000;
|
|
text-align: center;
|
|
}
|
|
.giving-cont {
|
|
padding: 0 41rpx;
|
|
.input-box {
|
|
background-color: #F5F5F5;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 10rpx 21rpx;
|
|
font-size: 30rpx;
|
|
color: #000000;
|
|
margin-bottom: 24rpx;
|
|
border-radius: 10rpx;
|
|
}
|
|
}
|
|
.giving-btn {
|
|
padding-bottom: 30rpx;
|
|
margin-top: 85rpx;
|
|
.custom-style {
|
|
width: 374rpx;
|
|
height: 77rpx;
|
|
background-color: #000000;
|
|
color: #FFFfff;
|
|
}
|
|
}
|
|
}
|
|
</style>
|