Files
lucky_shop/components/diy-components/diy-coupon.vue
2025-10-27 15:55:29 +08:00

1074 lines
28 KiB
Vue

<template>
<x-skeleton type="banner" :loading="loading" :configs="skeletonConfig">
<view class="coupon-wrap" :class="'coupon-box-' + value.style" :style="[
value.couponType == 'img' && { backgroundImage: 'url(' + $util.img(value.couponBgUrl) + ')' },
value.couponType == 'color' && { backgroundColor: value.couponBgColor }
]">
<template v-if="value.style == '1'">
<swiper class="coupon-style-one" circular>
<swiper-item v-for="(numItem, numIndex) in Math.ceil(computedCouponList.length / 3)" :key="numIndex" class="coupon-item-box">
<view v-for="(item, index) in computedCouponList" class="coupon-item"
v-if="index >= [numIndex * 3] && index < [(numIndex + 1) * 3]" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/style1-bg.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}" @click="couponAction(item, index)">
<view class="coupon-info">
<view class="coupon-num" :style="{ color: value.moneyColor }" v-if="!parseInt(item.discount)">
<text class="font-size-tag coupon-sign"></text>
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
</view>
<view class="coupon-num" :style="{ color: value.moneyColor }" v-else>
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-type font-size-tag" :style="{ color: value.limitColor }">
{{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
</view>
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">
{{ value.btnStyle.text }}
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用</view>
</view>
</swiper-item>
</swiper>
</template>
<template v-if="value.style == '2'">
<swiper class="coupon-style-two" circular>
<swiper-item v-for="(numItem, numIndex) in Math.ceil(computedCouponList.length / 3)" :key="numIndex" class="coupon-item-box">
<view class="coupon-item" v-for="(item, index) in computedCouponList" :key="index"
v-if="index >= [numIndex * 3] && index < [(numIndex + 1) * 3]" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/coupon_bg1.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}" @click="couponAction(item, index)">
<view class="coupon-info">
<view class="coupon-num" :style="{ color: value.moneyColor }" v-if="!parseInt(item.discount)">
<text class="font-size-tag coupon-sign"></text>
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
</view>
<view class="coupon-num" :style="{ color: value.moneyColor }" v-else>
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-type font-size-tag" :style="{ color: value.limitColor }">
{{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
</view>
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">
{{ value.btnStyle.text || '领取' }}
</view>
<view class="coupon-get use" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用
</view>
</view>
</swiper-item>
</swiper>
</template>
<template v-if="value.style == '3'">
<swiper class="coupon-style-three" circular>
<swiper-item v-for="(numItem, numIndex) in Math.ceil(computedCouponList.length / 3)" :key="numIndex" class="coupon-item-box">
<view class="coupon-item" v-for="(item, index) in computedCouponList" :key="index"
v-if="index >= [numIndex * 3] && index < [(numIndex + 1) * 3]" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/coupon_shu.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}" @click="couponAction(item, index)">
<view class="coupon-num" :style="{ color: value.moneyColor }" v-if="!parseInt(item.discount)">
<text class="font-size-tag coupon-sign"></text>
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
</view>
<view class="coupon-num" :style="{ color: value.moneyColor }" v-else>
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-type font-size-tag">
<text :style="{ color: value.limitColor }">{{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}</text>
<view class="item-text" v-if="item.goods_type == 1">所有商品可用</view>
<view class="item-text" v-else-if="item.goods_type == 2">指定商品可用</view>
<view class="item-text" v-else-if="item.goods_type == 3">指定商品不可用</view>
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">
{{ value.btnStyle.text || '领取' }}
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用</view>
</view>
</swiper-item>
</swiper>
</template>
<template v-if="value.style == '4'">
<swiper class="coupon-style-four" circular>
<swiper-item v-for="(numItem, numIndex) in Math.ceil(computedCouponList.length / 3)" :key="numIndex" class="coupon-item-box">
<view class="coupon-item" v-for="(item, index) in computedCouponList" :key="index"
v-if="index >= [numIndex * 3] && index < [(numIndex + 1) * 3]" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/style4_bg.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}" @click="couponAction(item, index)">
<view class="coupon-info">
<view class="coupon-num" :style="{ color: value.moneyColor }" v-if="!parseInt(item.discount)">
<text class="font-size-tag coupon-sign"></text>
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
</view>
<view class="coupon-num" :style="{ color: value.moneyColor }" v-else>
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-type font-size-tag" :style="{ color: value.limitColor }">
{{ item.at_least > 0 ? '满' + Number(item.at_least) + '元可用' : '无门槛优惠券' }}
</view>
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">
{{ value.btnStyle.text || '立即使用' }}
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用</view>
</view>
</swiper-item>
</swiper>
</template>
<template v-if="value.style == '5'">
<view class="coupon-style-five">
<view class="coupon-all">
<view class="coupon-box">
<view class="coupon-list" v-for="(item, index) in computedCouponList" :key="index" @click="couponAction(item, index)">
<image :src="$util.img('public/uniapp/coupon/style5_bg.png')"></image>
<view class="coupon">
<view class="coupon-info">
<view class="coupon-num" v-if="item.discount == '0.00'" :style="{ color: value.moneyColor }">
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-num" v-else :style="{ color: value.moneyColor }">
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
</view>
<view class="coupon-line"></view>
<view class="coupon-content">
<view class="coupon-type">
<view class="coupon-name" :style="{ color: value.nameColor }">{{ item.coupon_name }}</view>
<text class="coupon-least" :style="{ color: value.limitColor }" v-if="item.at_least > 0">{{ Number(item.at_least) }}元可用</text>
<text class="coupon-least" :style="{ color: value.limitColor }" v-else>无门槛优惠券</text>
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">{{ value.btnStyle.text || '立即领取' }}</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<template v-if="value.style == '6'">
<swiper class="coupon-style-six" circular>
<swiper-item class="style-six-wrap" v-for="(numItem, numIndex) in Math.ceil(computedCouponList.length / 3)" :key="numIndex">
<view class="coupon" v-for="(item, index) in computedCouponList" :key="index"
v-if="index >= [numIndex * 3] && index < [(numIndex + 1) * 3]" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/style6-bg-1.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}" @click="couponAction(item, index)">
<view class="coupon-content">
<view class="price-wrap">
<text class="price" :style="{ color: value.moneyColor }">{{ (item.discount == '0.00' ? item.money : item.discount) | moneyConduct }}</text>
<text class="unit">{{ item.discount == '0.00' ? '元' : '折' }}</text>
</view>
<text class="text">优惠券</text>
</view>
<text class="btn" v-if="item.useState == 0" :style="{
color: value.btnStyle.textColor,
backgroundColor: value.btnStyle.bgColor,
borderTopLeftRadius: value.btnStyle.aroundRadius * 2 + 'rpx',
borderBottomLeftRadius: value.btnStyle.aroundRadius * 2 + 'rpx'
}">
<text class="btn-content">{{ value.btnStyle.text }}</text>
</text>
<text class="btn" v-if="parseInt(item.useState)" :style="{
color: value.btnStyle.textColor,
backgroundColor: value.btnStyle.bgColor,
borderTopLeftRadius: value.btnStyle.aroundRadius * 2 + 'rpx',
borderBottomLeftRadius: value.btnStyle.aroundRadius * 2 + 'rpx'
}">
<text class="btn-content">去使用</text>
</text>
<text class="limit" :style="{ color: value.limitColor }" v-if="parseFloat(item.at_least) > 0">{{ item.at_least | moneyConduct }}元使用</text>
<text class="limit" :style="{ color: value.limitColor }" v-else>无门槛使用</text>
</view>
<div v-if="computedCouponList.length <= 2" @click="$util.redirectTo('/pages/goods/category')"
class="coupon coupon-null" :style="{
color: value.moneyColor,
backgroundImage: 'url(' + $util.img('public/uniapp/coupon/style6-bg-2.png') + ')',
marginRight: couponItemHeight + 'px',
marginLeft: couponItemHeight + 'px'
}">
<div class="coupon-content" :style="{ color: value.moneyColor }">
<span class="price">+</span>
<span class="text">暂无优惠券</span>
</div>
<span class="limit" :style="{ color: value.limitColor }">去逛逛</span>
</div>
</swiper-item>
</swiper>
</template>
<template v-if="value.style == '7'">
<scroll-view class="coupon-style-seven" scroll-x="true">
<view class="wrap">
<view class="coupon-list" v-for="(item, index) in computedCouponList" :key="index" @click="couponAction(item, index)">
<image :src="$util.img('public/uniapp/coupon/style7_bg.png')"></image>
<view class="coupon">
<view class="coupon-info">
<view class="coupon-num" v-if="item.discount == '0.00'" :style="{ color: value.moneyColor }">
<text class="coupon-size">{{ item.money | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
<view class="coupon-num" v-else :style="{ color: value.moneyColor }">
<text class="coupon-size">{{ item.discount | moneyConduct }}</text>
<text class="font-size-tag coupon-sign"></text>
</view>
</view>
<view class="coupon-type">
<text class="coupon-name" :style="{ color: value.limitColor }" v-if="item.at_least > 0">{{ Number(item.at_least) }}元可用</text>
<text class="coupon-name" :style="{ color: value.limitColor }" v-else>无门槛优惠券</text>
<view class="coupon-least" :style="{ color: value.limitColor }">有效期至{{ $util.timeStampTurnTime(item.end_time, 'yearmonthday') }}</view>
</view>
<view class="coupon-line"></view>
<view class="coupon-get" :style="couponBtnStyle" v-if="item.useState == 0">
{{ value.btnStyle.text || '立即领取' }}
</view>
<view class="coupon-get" :style="couponBtnStyle" v-if="parseInt(item.useState)">去使用
</view>
</view>
</view>
</view>
</scroll-view>
</template>
<ns-login ref="login"></ns-login>
</view>
</x-skeleton>
</template>
<script>
// 优惠券
export default {
name: 'diy-coupon',
props: {
value: {
type: Object,
default: () => {
return {};
}
}
},
data() {
return {
couponList: [],
isHave: true,
couponBtnSwitch: false,
isSuccess: false,
loading: true,
skeletonConfig: {
gridRows: 2,
gridRowsGap: '20rpx',
headHeight: '160rpx'
}
};
},
created() {
this.getCanReceiveCouponQuery();
},
watch: {
// 组件刷新监听
componentRefresh: function(nval) {
this.getCanReceiveCouponQuery();
}
},
computed: {
computedCouponList() {
var list = [];
this.couponList.filter(function(item) {
if (item.count != item.lead_count) list.push(item);
});
return list;
},
couponItemHeight() {
var width = '';
const screenWidth = uni.getSystemInfoSync().windowWidth;
if (this.value.style == '1') width = [screenWidth - this.rpxUpPx(210) * 3 - this.rpxUpPx(this.value.margin
.both * 2) * 2] / 6;
else if (this.value.style == '2') width = [screenWidth - this.rpxUpPx(210) * 3 - this.rpxUpPx(this.value
.margin.both * 2) * 2] / 6;
else if (this.value.style == '3') width = [screenWidth - this.rpxUpPx(24) * 2 - this.rpxUpPx(194) * 3 -
this.rpxUpPx(this.value.margin.both * 2) * 2
] / 6;
else if (this.value.style == '4') width = [screenWidth - this.rpxUpPx(206) * 3 - this.rpxUpPx(this.value
.margin.both * 2) * 2] / 6;
else if (this.value.style == '6') width = [screenWidth - this.rpxUpPx(208) * 3 - this.rpxUpPx(this.value
.margin.both * 2) * 2] / 6;
return width;
},
couponBtnStyle() {
var css = '';
css += 'color:' + this.value.btnStyle.textColor + ';';
css += 'background-color:' + this.value.btnStyle.bgColor + ';';
css += 'border-radius:' + this.value.btnStyle.aroundRadius * 2 + 'rpx;';
return css;
}
},
methods: {
rpxUpPx(res) {
const screenWidth = uni.getSystemInfoSync().windowWidth;
var data = (screenWidth * parseInt(res)) / 750;
return Math.floor(data);
},
getCanReceiveCouponQuery() {
var data = {
num: this.value.count,
can_receive: 1
};
if (this.value.sources == 'diy') {
data.coupon_type_id_arr = this.value.couponIds.toString();
}
this.$api.sendRequest({
url: '/coupon/api/coupon/typelists',
data: data,
success: res => {
let data = res.data;
if (data != null) {
this.couponList = data;
this.couponList.forEach(v => {
if (v.max_fetch != 0 && v.member_coupon_num && v.member_coupon_num >= v
.max_fetch) {
v.useState = 1;
} else {
v.useState = 0;
}
});
}
this.loading = false;
}
});
},
couponAction(item, index) {
if (item.useState == 0) {
this.receiveCoupon(item, index);
} else if (parseInt(item.useState)) {
this.couponTap(item, index);
}
},
couponTap(item, index) {
if (item.count == item.lead_count) {
this.$util.showToast({
title: '该优惠券已抢光'
});
return;
}
if (item.useState == 0) this.receiveCoupon(item, index);
else this.toGoodsList(item);
},
// 领取优惠券
receiveCoupon(item, index) {
let that = this;
if (this.couponBtnSwitch) return;
this.couponBtnSwitch = true;
if (this.storeToken) {
this.$api.sendRequest({
url: '/coupon/api/coupon/receive',
data: {
coupon_type_id: item.coupon_type_id,
get_type: 2 //获取方式:1订单2.直接领取3.活动领取
},
success: res => {
var data = res.data;
let msg = res.message;
if (res.code == 0) {
msg = '领取成功';
if (res.data.is_exist == 1) {
for (let i = 0; i < that.couponList.length; i++) {
if (that.couponList[i].coupon_type_id == item.coupon_type_id) {
that.$set(that.couponList[i], 'useState', 1);
}
}
} else {
for (let i = 0; i < that.couponList.length; i++) {
if (that.couponList[i].coupon_type_id == item.coupon_type_id) {
that.$set(that.couponList[i], 'useState', 2);
}
}
}
}
this.$util.showToast({
title: msg
});
this.$forceUpdate();
this.couponBtnSwitch = false;
},
fail: res => {
this.couponBtnSwitch = false;
}
});
} else {
this.$refs.login.open('/pages/index/index');
this.couponBtnSwitch = false;
}
},
//去使用
toGoodsList(item) {
if (item.goods_type != 1) {
this.$util.redirectTo('/pages/goods/list', {
coupon: item.coupon_type_id
});
} else {
this.$util.redirectTo('/pages/goods/list', {});
}
}
},
filters: {
moneyConduct(value) {
var arr = value.split('.');
var str = parseInt(arr[1].split('').reverse().join('')) + '';
str = str.split('').reverse().join('');
if (str == 0) return arr[0];
else return arr[0] + '.' + str;
}
}
};
</script>
<style lang="scss">
.coupon-wrap {
background-size: cover;
background-repeat: no-repeat;
}
// 风格一
/deep/.coupon-style-one {
height: 110rpx;
.coupon-item-box {
display: flex;
box-sizing: border-box;
.coupon-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 210rpx;
height: 110rpx;
background-repeat: no-repeat;
background-size: contain;
.coupon-get {
position: relative;
right: 14rpx;
font-size: 24rpx;
width: 26rpx;
line-height: 1.1;
}
.coupon-info {
width: 156rpx;
display: flex;
flex-direction: column;
align-items: center;
.coupon-type {
margin-top: 14rpx;
line-height: 1;
}
.coupon-num {
margin-top: -6rpx;
font-size: 40rpx;
line-height: 1;
}
}
}
}
}
// 风格二
/deep/.coupon-style-two {
height: 96rpx;
.coupon-item-box {
display: flex;
box-sizing: border-box;
.coupon-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 210rpx;
height: 96rpx;
background-repeat: no-repeat;
background-size: contain;
.coupon-get {
position: relative;
top: 2rpx;
right: 12rpx;
font-size: 24rpx;
letter-spacing: 16rpx;
width: 26rpx;
&.use {
top: 0;
right: 4rpx;
letter-spacing: 4rpx;
}
}
.coupon-info {
width: 156rpx;
display: flex;
flex-direction: column;
align-items: center;
margin-top: -8rpx;
.coupon-type {
margin-top: 10rpx;
line-height: 1;
}
.coupon-num {
font-size: 40rpx;
line-height: 1;
}
}
}
}
}
// 风格三
.coupon-wrap.coupon-box-3 {
background-size: 100% 100%;
}
/deep/.coupon-style-three {
height: 284rpx;
padding: 20rpx;
box-sizing: border-box;
.coupon-item-box {
height: 250rpx !important;
display: flex;
.coupon-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 206rpx;
height: 250rpx;
background-repeat: no-repeat;
background-size: contain;
.coupon-size {
font-size: 40rpx;
}
.coupon-type {
margin-top: 20rpx;
margin-bottom: 6rpx;
line-height: 1;
text-align: center;
}
.coupon-num {
margin-top: 8rpx;
line-height: 1;
}
.coupon-get {
width: 120rpx;
height: 46rpx;
line-height: 46rpx;
text-align: center;
font-size: 24rpx;
}
}
}
}
// 风格四
/deep/.coupon-style-four {
height: 108rpx;
.coupon-item-box {
display: flex;
box-sizing: border-box;
.coupon-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 206rpx;
height: 108rpx;
background-repeat: no-repeat;
background-size: contain;
.coupon-get {
position: relative;
top: 0;
right: 12rpx;
font-size: 24rpx;
width: 26rpx;
line-height: 1.1;
}
.coupon-info {
width: 156rpx;
display: flex;
flex-direction: column;
align-items: center;
.coupon-type {
margin-top: 10rpx;
line-height: 1;
}
.coupon-num {
font-size: 40rpx;
line-height: 1;
}
}
}
}
}
/* 样式一 */
.coupon-all {
width: 100%;
flex-direction: row;
white-space: nowrap;
box-sizing: border-box;
line-height: 1;
}
.coupon-list {
position: relative;
line-height: 1;
}
.coupon {
width: 254rpx;
height: 114rpx;
border-radius: $border-radius;
overflow: hidden;
display: flex;
justify-content: space-between;
position: absolute;
left: 0;
top: 0;
.coupon-info {
width: 71%;
height: 100%;
padding: 10rpx 15rpx;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
.coupon-type {
color: #ffffff;
font-size: $font-size-activity-tag;
text-align: center;
overflow: hidden;
white-space: nowrap;
}
.coupon-num {
display: flex;
align-items: flex-end;
justify-content: center;
margin-bottom: 10rpx;
.coupon-sign {
margin-bottom: 4rpx;
}
.coupon-size {
font-size: 40rpx;
}
text {
line-height: 1;
}
}
}
.coupon-get {
width: 26%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
view {
line-height: 1.2;
font-size: $font-size-tag;
}
}
}
//风格五
.coupon-style-five {
.coupon-all {
.coupon-box {
width: 100%;
display: inline-block;
position: relative;
.coupon-list {
height: 160rpx;
position: relative;
padding: 10rpx 0;
image {
width: 100%;
height: 100%;
}
.coupon {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: flex-start;
.coupon-info {
width: 25%;
min-width: 25%;
max-width: 25%;
.coupon-num {
margin: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
.coupon-size {
font-weight: bold;
}
.coupon-sign {}
}
}
.coupon-line {
border-left: 1rpx dashed #999;
height: 65%;
}
.coupon-content {
display: flex;
width: 100%;
justify-content: space-between;
padding: 0 20rpx;
align-items: center;
.coupon-type {
.coupon-name {
font-size: 32rpx;
font-weight: bold;
width: 300rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.coupon-least {
font-size: 28rpx;
color: #999;
}
}
.coupon-get {
color: #fff;
background-color: #303133;
border-radius: 6rpx;
padding: 4rpx 8rpx;
margin-right: 20rpx;
font-size: $font-size-tag;
}
}
}
}
}
}
}
//风格六
.coupon-style-six {
height: 270rpx;
box-sizing: border-box;
.style-six-wrap {
display: flex;
}
.coupon {
margin-right: 20rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 208rpx;
height: 270rpx;
background-repeat: no-repeat;
background-size: contain;
box-sizing: border-box;
position: relative;
flex-shrink: 0;
&::after {
content: '';
position: absolute;
left: 26rpx;
right: 26rpx;
bottom: 70rpx;
border-bottom: 2rpx dashed #999;
}
.btn {
position: absolute;
height: 36rpx;
min-width: 62rpx;
font-size: 24rpx;
top: 20rpx;
right: 0;
display: flex;
justify-content: center;
align-items: center;
line-height: 1;
padding: 0 4rpx 0 6rpx;
.btn-content {
display: inline-block;
line-height: 1;
transform: scale(0.8);
}
}
.coupon-content {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
font-size: 24rpx;
height: 200rpx;
.price-wrap {
margin-top: 60rpx;
}
.price {
font-size: 60rpx;
font-weight: bold;
line-height: 1;
}
.text {
position: relative;
color: #401d00;
margin-bottom: 16rpx;
&::after {
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 20rpx;
right: -26rpx;
border-bottom: 1px solid #401d00;
}
&::before {
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 20rpx;
left: -26rpx;
border-bottom: 2rpx solid #401d00;
}
}
.unit {
line-height: 1;
margin-top: 13px;
color: #222;
display: inline-block;
transform: scale(0.8);
}
}
.limit {
display: flex;
align-items: center;
justify-content: center;
height: 70rpx;
font-size: 24rpx;
font-weight: bold;
}
&.coupon-null {
.limit {
color: #333;
}
.unit {
color: #6f5640;
}
.text {
color: #6f5640;
}
.coupon-content .text::before,
.coupon-content .text::after {
border-color: #6f5640;
}
.coupon-content .price {
color: #999;
font-weight: inherit;
border: 4rpx solid #999;
border-radius: 50%;
height: 42rpx;
width: 42rpx;
line-height: 38rpx;
text-align: center;
font-size: 50rpx;
margin-top: 60rpx;
}
}
}
}
//风格七
/deep/ .coupon-style-seven {
.wrap {
display: flex;
}
.coupon-list {
margin-right: 16rpx;
flex-shrink: 0;
width: 608rpx;
height: 160rpx;
position: relative;
padding: 10rpx 0;
image {
width: 100%;
height: 100%;
}
.coupon {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.coupon-info {
min-width: 25%;
max-width: 30%;
padding: 0;
.coupon-num {
margin: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
.coupon-size {
font-size: 60rpx;
font-weight: bold;
margin-right: 4rpx;
}
}
}
.coupon-line {
border-left: 1rpx dashed #fd463e;
height: 65%;
}
.coupon-type {
.coupon-name {
display: block;
font-size: 32rpx;
font-weight: bold;
width: 280rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.coupon-least {
font-size: $font-size-tag;
color: #999;
}
}
.coupon-get {
padding: 4rpx 40rpx;
width: 130rpx;
font-size: $font-size-tag;
box-sizing: border-box;
flex-shrink: 0;
}
}
}
}
/deep/.uni-scroll-view ::-webkit-scrollbar {
/* 隐藏滚动条,但依旧具备可以滚动的功能 */
display: none;
width: 0;
height: 0;
color: transparent;
background: transparent;
}
/deep/::-webkit-scrollbar {
display: none;
width: 0;
height: 0;
color: transparent;
background: transparent;
}
</style>
<style scoped>
.coupon-all>>>.uni-scroll-view::-webkit-scrollbar {
display: none;
}
</style>