123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <template>
- <!-- 首页优惠券卡片 -->
- <view class="coupon-box u-m-b-10 u-p-20" v-if="detail.ids && couponList.length">
- <view class="head-box u-flex u-row-between u-m-b-20">
- <view class="head-title u-ellipsis-1">领券专区</view>
- <view class="head-more u-flex u-col-center" @tap="$Router.push('/pages/app/coupon/list')">
- <text class="more-text u-m-r-10">查看更多</text>
- <text class="iconfont icon-youjiantou-tianchong more-icon"></text>
- </view>
- </view>
- <scroll-view class="groupon-scroll" enable-flex scroll-anchoring scroll-x scroll-with-animation>
- <view class="groupon-card-wrap u-flex ">
- <view :class="{ 'gray-wrap': item.status_code === 'cannot_get' }" v-for="(item, index) in couponList" :key="item.id">
- <!-- mini -->
- <view class="coupon-card u-flex u-row-between u-m-r-16" v-if="couponType === 2" :style="{ background: `linear-gradient(to right, ${bgColor1}, ${bgColor2})` }">
- <view class="card-left u-flex-col u-row-center u-p-l-30">
- <view class="price u-m-b-10" :style="{ color: priceColor }">{{ item.amount }}</view>
- <view class="notice" :style="{ color: color }">满{{ item.enough }}元可用</view>
- <view class="notice u-m-b-10" :style="{ color: color }">仅剩{{ item.stock }}张</view>
- </view>
- <view class="card-right u-p-y-20 u-p-r-10 u-flex-col u-row-center u-col-center">
- <button class="u-reset-button get-btn u-m-b-10" :style="{ color: color }" @tap="getCoupon(item.id, index)">
- {{ item.status_code === 'cannot_get' ? '不可领取' : '领券购买' }}
- </button>
- </view>
- </view>
- <!-- big -->
- <view v-if="couponType === 1" class="u-p-r-16">
- <view class="coupon-wrap " :style="{ background: `linear-gradient(to right, ${bgColor1}, ${bgColor2})` }">
- <view class="coupon-item u-flex u-row-between">
- <view class="coupon-left u-flex-col ">
- <view class="sum-box">
- <text class="unit " :style="{ color: priceColor }">¥</text>
- <text class="sum " :style="{ color: priceColor }">{{ item.amount }}</text>
- <text class="sub " :style="{ color: priceColor }">{{ item.name }}</text>
- </view>
- <view class="notice " :style="{ color: color }">满{{ item.enough }}元可用</view>
- <view class="notice" :style="{ color: color }">
- 有效期:{{ $u.timeFormat(item.usetime.start, 'yyyy-mm-dd') }} 至 {{ $u.timeFormat(item.usetime.end, 'yyyy-mm-dd') }}
- </view>
- </view>
- <view class="coupon-right u-flex-col">
- <button class="get-btn" :style="{ color: bgColor1 }" @tap.stop="getCoupon(item.id, index)">
- {{ item.status_code === 'cannot_get' ? '不可领取' : '立即领取' }}
- </button>
- <view class="surplus-num" :style="{ color: color }">仅剩{{ item.stock }}张</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
- </scroll-view>
- </view>
- </template>
- <script>
- /**
- * 自定义之优惠券卡片
- * @property {Object} detail - 优惠券信息
- */
- export default {
- components: {},
- data() {
- return {
- currentIndex: 0,
- couponList: [],
- couponType: this.detail.style,
- priceColor: this.detail.pricecolor,
- color: this.detail.color,
- bgColor1: this.detail.bgcolor1,
- bgColor2: this.detail.bgcolor2
- };
- },
- props: {
- detail: {}
- },
- computed: {},
- created() {
- this.detail.ids && this.getCouponsList();
- },
- methods: {
- jump(path, parmas) {
- this.$Router.push({
- path: path,
- query: parmas
- });
- },
- // 优惠券列表
- getCouponsList() {
- let that = this;
- that.$http('coupons.templateList', {
- ids: that.detail.ids
- }).then(res => {
- if (res.code === 1) {
- that.couponList = res.data;
- }
- });
- },
- // 领取
- getCoupon(id, index) {
- let that = this;
- uni.showLoading({
- title: '领取中'
- });
- that.$http('coupons.get', {
- id: id
- }).then(res => {
- uni.hideLoading();
- if (res.code === 1) {
- that.couponList[index].stock -= 1;
- this.$u.toast('领取成功');
- }
- });
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- // 失效
- .gray-wrap {
- filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1) !important;
- -webkit-filter: grayscale(100%) !important;
- -moz-filter: grayscale(100%) !important;
- -ms-filter: grayscale(100%) !important;
- -o-filter: grayscale(100%) !important;
- filter: grayscale(100%) !important;
- filter: gray !important;
- }
- .groupon-scroll {
- height: 170rpx;
- width: 730rpx;
- .groupon-card-wrap {
- height: 170rpx;
- width: 730rpx;
- }
- }
- .coupon-box {
- background-color: #fff;
- .head-box {
- .head-title {
- width: 300rpx;
- font-size: 32rpx;
- font-weight: bold;
- color: #333333;
- }
- .head-more {
- .more-text {
- font-size: 22rpx;
- font-weight: 500;
- color: #333333;
- }
- .more-icon {
- color: #333333;
- font-size: 24rpx;
- }
- }
- }
- .coupon-card {
- width: 343rpx;
- height: 170rpx;
- background: linear-gradient(90deg, #f8dca5, #efc480);
- border-radius: 10rpx;
- mask: url($IMG_URL+'/imgs/coupon_mini_bg.png');
- -webkit-mask-box-image: url($IMG_URL+'/imgs/coupon_mini_bg.png');
- mask-size: 100% 100%;
- .card-left {
- height: 100%;
- width: 260rpx;
- .price {
- color: #4f3a1e;
- font-size: 30rpx;
- font-weight: bold;
- &::before {
- content: '¥';
- font-size: 20rpx;
- }
- }
- .notice {
- font-size: 22rpx;
- font-weight: 500;
- color: #a8700d;
- }
- }
- .card-right {
- height: 100%;
- width: 60rpx;
- .get-btn {
- font-size: 24rpx;
- font-weight: 500;
- text-align: right;
- color: #a8700d;
- writing-mode: vertical-lr; /*从左向右 从右向左是 writing-mode: vertical-rl;*/
- writing-mode: tb-lr; /*IE浏览器的从左向右 从右向左是 writing-mode: tb-rl;*/
- }
- }
- }
- }
- // 未领取,已领取
- .coupon-wrap {
- mask: url($IMG_URL+'/imgs/coupon_bg1.png');
- -webkit-mask-box-image: url($IMG_URL+'/imgs/coupon_bg1.png');
- mask-size: 100% 100%;
- position: relative;
- border-radius: 10rpx;
- width: 710rpx;
- height: 170rpx;
- background: linear-gradient(to right, $u-type-warning-disabled, $u-type-warning);
- .coupon-item {
- width: 100%;
- height: 168rpx;
- border-radius: 10rpx;
- .coupon-left {
- height: 100%;
- justify-content: center;
- padding-left: 40rpx;
- .unit {
- font-size: 24rpx;
- color: #fff;
- }
- .sum {
- font-size: 55rpx;
- font-weight: bold;
- color: #fff;
- line-height: 55rpx;
- padding-right: 10rpx;
- }
- .sub {
- font-size: 26rpx;
- color: #fff;
- }
- .notice {
- font-size: 22rpx;
- color: rgba(#fff, 0.7);
- margin-top: 6rpx;
- }
- }
- .coupon-right {
- height: 100%;
- width: 220rpx;
- justify-content: center;
- align-items: center;
- .get-btn {
- width: 142rpx;
- height: 54rpx;
- background: #ffffff;
- border-radius: 27rpx;
- padding: 0;
- font-size: 24rpx;
- font-weight: 500;
- color: $u-type-warning;
- }
- .surplus-num {
- font-size: 22rpx;
- font-weight: 500;
- color: #fff;
- margin-top: 14rpx;
- }
- }
- }
- }
- </style>
|