金诚优选前端代码
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.
 
 
 
 
 

275 lines
6.1 KiB

<template>
<view>
<lf-nav :showIcon="true" :spreadOut="false" bgColor="transparent"></lf-nav>
<view class="head">
<image class="img" mode="aspectFill" src="https://picsum.photos/seed/picsum/200/300"></image>
<view class="suspension" hover-class="lf-opacity" @click="$url('/pages/coupon/index/index')">我的优惠券</view>
</view>
<view class="coupon-wrap">
<view class="coupon-box" v-for="(item,index) of coupon_list" :key="index">
<view class="coupon-card lf-m-b-30">
<view class="coupon-circle-top">
<view class="coupon-circle1"></view>
</view>
<view class="coupon-circle-bottom">
<view class="coupon-circle1"></view>
</view>
<view class="coupon-radius">
<view class="coupon-left">
<view class="lf-color-white" v-if="item.action_type.type == 'cash'">
<text class="lf-font-24">¥</text>
<text class="lf-font-70 lf-color-white lf-font-bold">{{item.action_type.value}}</text>
</view>
</view>
<view class="coupon-right">
<view class="lf-font-32 lf-font-bold lf-color-white">{{item.title}}</view>
<view class="lf-font-24 lf-color-white">有效期{{item.starts_at}}-{{item.ends_at}}</view>
</view>
</view>
</view>
<view class="coupon-receive" @click="receive(item.code)">立即领取</view>
<block v-if="item.ifpast">
<view class="coupon-opacity"></view>
<view class="coupon-end">
<view>抢光了</view>
</view>
</block>
</view>
</view>
<u-back-top :scrollTop="pageScrollTop"></u-back-top>
</view>
</template>
<script>
export default {
data(){
return {
coupon_list: []
}
},
onLoad(){
this.getCouponsList();
},
onPullDownRefresh() {
this.getCouponsList();
},
methods: {
receive(code){
this.$http.post({
api: 'api/coupon/convert',
data: {
coupon_code: code
},
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
if(res.data.code == 200) {
this.$msg('领取成功');
this.getCouponsList();
}else {
this.$msg(JSON.stringify(res.data.message));
}
}).catch(err => {
console.log("====", err);
})
},
compareDate(val) {
var nowTime = new Date(new Date().toLocaleDateString()).getTime();
let oldTime = new Date(new Date(val).toLocaleDateString()).getTime();
if(nowTime>oldTime) {
return true;
}else {
return false;
}
},
//获取优惠券列表
getCouponsList() {
this.$http.get({
api: 'api/coupons/list',
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
this.coupon_list = res.data.data;
this.coupon_list.forEach((item,index) => {
if(this.compareDate(item.ends_at)) {
this.$set(item,'ifpast',true);
}else {
this.$set(item,'ifpast',false);
}
})
uni.stopPullDownRefresh();
}).catch(err => {
console.log("====", err);
})
}
}
}
</script>
<style lang="scss" scoped="scoped">
.head{
height: 376rpx;
width: 750rpx;
position: relative;
.img{
width: 100%;
height: 100%;
}
.suspension{
position: absolute;
bottom: 30rpx;
right: 0;
width: 165rpx;
height: 54rpx;
background: #15716E;
border-radius: 100rpx 0rpx 0rpx 100rpx;
border: 2rpx solid #FFFFFF;
font-size: 24rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
}
}
.coupon-wrap {
display: flex;
justify-content: center;
margin-top: 30rpx;
flex-direction: column;
align-content: center;
align-items: center;
}
.coupon-box{
display: flex;
align-items: center;
position: relative;
}
.coupon-card {
overflow: hidden;
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 637rpx;
// display: flex;
height: 171rpx;
// opacity: 0.59;
// border: 1rpx solid #FFFFFF;
background: #15716E;
border-radius: 20rpx;
z-index: 3;
}
.coupon-radius {
width: 627rpx;
display: flex;
height: 161rpx;
border: 1rpx dashed #ccc;
// background: #15716E;
border-radius: 20rpx;
}
.coupon-circle1 {
width: 40rpx;
height: 40rpx;
background-color: white;
border-radius: 50%;
}
.coupon-circle-top {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
// background-color: red;
position: absolute;
border: 1px dashed #ccc;
left: 190rpx;
top: -20rpx;
display: flex;
align-items: center;
text-align: center;
justify-content: center;
}
.coupon-circle-bottom {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
// background-color: red;
position: absolute;
border: 1px dashed #ccc;
left: 190rpx;
bottom: -20rpx;
display: flex;
align-items: center;
text-align: center;
justify-content: center;
}
.coupon-right {
text-align: left;
justify-content: center;
align-items: flex-start;
display: flex;
flex-direction: column;
margin-left: 84rpx;
}
.coupon-left {
margin-left: 40rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.coupon-receive{
width: 45rpx;
height: 126rpx;
font-size: 24rpx;
background: #22A19F;
border-radius: 6rpx;
line-height: 1.2;
color: #FFFFFF;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
transform: translate(-16rpx, -9rpx) rotate(10deg);
transform-origin: bottom;
position: relative;
z-index: 1;
}
.coupon-opacity{
width: 102%;
height: 100%;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: rgba(255,255,255,0.5);
z-index: 5;
}
.coupon-end{
position: absolute;
z-index: 7;
width: 136rpx;
height: 136rpx;
background-color: #15716E;
border-radius: 50%;
top: calc(50% - 81rpx);
left: calc(50% - 68rpx);
display: flex;
justify-content: center;
align-items: center;
&>view{
width: 126rpx;
height: 126rpx;
border: 2rpx dashed #FFFFFF;
border-radius: 50%;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
justify-content: center;
align-items: center;
transform: rotate(-38deg);
}
}
</style>