多租户商城-商户小程序端
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.
 
 
 

375 lines
9.3 KiB

<template>
<div class="couponBox warp" :class="['terminal' + terminal,'arrange'+(componentContent.arrangeActiveIndex+1),'color'+(componentContent.colorActiveIndex+1)]">
<div class="couponListBox" v-if="componentContent.selectedCoupon">
<div class="listItemBox" v-for="(item,index) in couponsData" :key="index" :class="item.state && item.state !== 3 && 'isReceive'">
<div class="listItemBoxInner">
<div class="itemInfo">
<i class="flag" :class="'flag'+item.couponType"></i>
<div class="amount">
<b v-if="item.couponType !== 2">¥</b>
<span v-if="typeId !== 1">
{{item.couponContent}}
</span>
<span v-else>
{{item.reduceMoney}}
</span>
<b v-if="item.couponType == 2">折</b>
</div>
<div class="couponInfo">
<p>{{item.content}}</p>
</div>
</div>
<!-- <div class="itemInfo" v-else>-->
<!-- <div class="amount">-->
<!-- <b>¥</b><span>{{item.reduceMoney}}<i>满减券</i></span>-->
<!-- </div>-->
<!-- <div class="couponInfo">-->
<!-- <p>{{item.content}}</p>-->
<!-- </div>-->
<!-- </div>-->
<div v-if="item.state === 0" class="receiveBtn">
<span>己领取</span>
</div>
<div v-else-if="item.state === 1" class="receiveBtn">
<span>已使用</span>
</div>
<div v-else-if="item.state === 2" class="receiveBtn">
<span>已过期</span>
</div>
<div v-else class="receiveBtn" @click="receiveCoupon(item)">
<span>立即领取</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {commonMixin} from '../mixin'
export default {
mixins: [commonMixin]
}
</script>
<style lang="scss" scoped>
.couponBox {
min-height: 177px;
margin: 0 auto;
padding: 20px 0;
.couponListBox {
flex-wrap: wrap;
/**默认**/
.listItemBox {
//background-image:url('../../../static/images/coupon/border_L1.png'), url('../../../static/images/coupon/border_R1.png');
//background-repeat: no-repeat, no-repeat;
//background-position: left top, right top;
box-sizing: border-box;
margin-bottom: 20px;
.listItemBoxInner {
width: 100%;
height: 150px;
display: flex;
background-color: #FAFAFA;
align-items: center;
justify-content: space-between;
position: relative;
.flag{
display: block;
width: 71px;
height: 71px;
background-repeat: no-repeat;
position: absolute;
top: 0;
left: 0;
&.flag1{
background-image: url("../../../static/images/coupon/flag-coupon.png");
}
&.flag2{
background-image: url("../../../static/images/coupon/flag-coupon2.png");
}
}
.itemInfo {
flex: 1;
}
.amount {
max-width: 90%;
margin: 0 auto;
display: flex;
align-items: baseline;
justify-content: center;
line-height: 60px;
b {
font-size: 30px;
}
span {
font-size: 60px;
font-weight: bold;
}
i {
font-style: normal;
font-size: 18px;
margin-left: 5px;
}
}
.couponInfo {
text-align: center;
p {
display: inline-block;
padding: 0 42px;
text-align: center;
font-size: 18px;
line-height: 40px;
color: #C83732;
background: #F5E5E5;
}
}
}
.receiveBtn {
width: 72px;
margin-right: 5px;
background: #C5AA7B;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
position: relative;
&:before,&:after{
content: '';
display: block;
width: 25px;
height: 25px;
background-color: #fff;
position: absolute;
left: -12.5px;
border-radius: 50%;
}
&:before{
top: -12.5px;
}
&:after{
bottom: -12.5px;
}
span {
color: #FFFFFF !important;
writing-mode: vertical-lr;
font-size: 19px;
}
}
&.isReceive {
//background-image:url('../../../static/images/coupon/border_L4.png'), url('../../../static/images/coupon/border_R4.png');
.listItemBoxInner {
.flag{
&.flag1{
background-image: url("../../../static/images/coupon/flag-coupon-r.png");
}
&.flag2{
background-image: url("../../../static/images/coupon/flag-coupon2-r.png");
}
}
.itemInfo {
color: #999;
.couponInfo {
p {
color: #999;
background: #F1F1F1;
}
}
}
.receiveBtn {
cursor: auto;
background: #999;
}
}
}
}
}
@mixin cardColor($bgColor: #FF3737,$fontColor: #fff) {
.couponListBox {
.listItemBox {
.listItemBoxInner{
background: $bgColor;
}
.itemInfo {
.amount {
b {
color: #EC4B42;
}
span {
color: #EC4B42;
i {
color: #EC4B42;
}
}
}
.couponInfo {
color:#EC4B42;
}
}
.receiveBtn {
span {
color: #EC4B42;
}
}
&.cardStyle3{
.itemInfo {
.amount {
span {
color: $bgColor;
i {
color: $bgColor;
}
}
}
.couponInfo {
color:$bgColor;
}
}
}
&.cardStyle4{
border: 2px solid $bgColor;
padding: 5px;
.listItemBoxInner{
padding: 20px 15px;
height: 85px;
border: 1px solid $bgColor;
}
.itemInfo {
.amount {
span {
color: $bgColor;
i {
color: $bgColor;
}
}
}
.couponInfo {
color:$bgColor;
}
}
.receiveBtn {
border-left: 1px $bgColor dashed;
span {
color: $bgColor;
}
}
}
}
}
}
&.arrange1{
}
&.arrange2{
max-width: 100%;
.couponListBox{
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.listItemBox{
width: 48%;
}
}
}
&.arrange3{
max-width: 100%;
.couponListBox{
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.listItemBox{
width: 32%;
}
}
}
&.arrange4{
max-width: 100%;
.couponListBox{
display: flex;
overflow: hidden;
.listItemBox{
width: 268px;
flex: 0 0 268px;
margin:0 25px 25px 0;
&:nth-child(4n){
margin-right: 0;
}
}
}
}
//&.color1{
// .listItemBox {
// background-image:url('../../../static/images/coupon/border_L1.png'), url('../../../static/images/coupon/border_R1.png');
// .listItemBoxInner {
// border-top: 1px solid #EC4B42;
// border-bottom: 1px solid #EC4B42;
// .itemInfo {
// color: #EC4B42;
// .amount {
// border-bottom: 1px solid #EC4B42;
// }
// .couponInfo {
// p {
// color: #EC4B42;
// }
// }
// }
// .receiveBtn {
// background: #EC4B42;
// }
// }
// }
//}
&.color2{
.listItemBox {
background-image:url('../../../static/images/coupon/border_L2.png'), url('../../../static/images/coupon/border_R2.png');
.listItemBoxInner {
border-top: 1px solid #FF7800;
border-bottom: 1px solid #FF7800;
.itemInfo {
color: #FF7800;
.amount {
border-bottom: 1px solid #FF7800;
}
.couponInfo {
p {
color: #FF7800;
}
}
}
.receiveBtn {
background: #FF7800;
}
}
}
}
&.color3{
.listItemBox {
background-image:url('../../../static/images/coupon/border_L3.png'), url('../../../static/images/coupon/border_R3.png');
.listItemBoxInner {
border-top: 1px solid #86A7FF;
border-bottom: 1px solid #86A7FF;
.itemInfo {
color: #86A7FF;
.amount {
border-bottom: 1px solid #86A7FF;
}
.couponInfo {
p {
color: #86A7FF;
}
}
}
.receiveBtn {
background: #86A7FF;
}
}
}
}
}
</style>