294 lines
8.2 KiB
Vue
294 lines
8.2 KiB
Vue
|
<template>
|
|||
|
<view :style="viewColor">
|
|||
|
<view class="navTabBox">
|
|||
|
<view class="longTab">
|
|||
|
<view class="tab-item" v-for="(item,index) in tabList" :key="index" :class="{'on':index == tabIndex-1}" @click="bindTab(index)"><text>{{item.title}}</text></view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class='coupon-list' v-if="couponsList.length">
|
|||
|
<view v-for='(item,index) in couponsList' :key="index">
|
|||
|
<view v-if="item.merchant && item.status==0" class="store-info acea-row row-between-wrapper">
|
|||
|
<view class="store_name acea-row row-between-wrapper">
|
|||
|
<image class="image" :src="item.merchant.mer_avatar"></image>
|
|||
|
<text class="name">{{item.merchant.mer_name}}</text>
|
|||
|
</view>
|
|||
|
<view v-if="hide_mer_status == 0 && item.status == 0" class="store" @click="goStore(item)">进店</view>
|
|||
|
</view>
|
|||
|
<view class='item acea-row row-center-wrapper'>
|
|||
|
<block v-if="item.status == 0">
|
|||
|
<view v-if="item.coupon.send_type == 5" class='money vip-coupon'>
|
|||
|
<view>¥<text class='num'>{{item.coupon_price}}</text></view>
|
|||
|
<view class="pic-num">满{{ item.use_min_price }}元可用</view>
|
|||
|
</view>
|
|||
|
<view v-else class='money' :style="{ 'background-image': `url(${domain}/static/diy/couponBg${keyColor}.png)` }">
|
|||
|
<view>¥<text class='num'>{{item.coupon_price}}</text></view>
|
|||
|
<view class="pic-num">满{{ item.use_min_price }}元可用</view>
|
|||
|
</view>
|
|||
|
</block>
|
|||
|
|
|||
|
<view v-else class='money moneyGray'>
|
|||
|
<view>¥<text class='num'>{{item.coupon_price}}</text></view>
|
|||
|
<view class="pic-num">满{{ item.use_min_price }}元可用</view>
|
|||
|
</view>
|
|||
|
<view class='text'>
|
|||
|
<view class='condition line1'>
|
|||
|
<view class="line-title" :class="item.status === 0 ? 'bg-color-huic' : 'bg-color-check'" v-if="item.coupon && item.coupon.type === 0">店铺券</view>
|
|||
|
<view class="line-title" :class="item._type === 0 ? 'bg-color-huic' : 'bg-color-check'" v-else-if="item.coupon && item.coupon.type === 1">商品券</view>
|
|||
|
<view class="line-title" :class="item._type === 0 ? 'bg-color-huic' : 'bg-color-check'" v-else-if="item.coupon && item.coupon.type === 11">品类券</view>
|
|||
|
<view class="line-title" :class="item._type === 0 ? 'bg-color-huic' : 'bg-color-check'" v-else-if="item.coupon && item.coupon.type === 10">通用券</view>
|
|||
|
<view class="line-title" :class="item._type === 0 ? 'bg-color-huic' : 'bg-color-check'" v-else-if="item.coupon && item.coupon.type === 12">跨店券</view>
|
|||
|
<view class="line-title" :class="item._type === 0 ? 'bg-color-huic' : 'bg-color-check'" v-else>商品券</view>
|
|||
|
<view>{{item.coupon_title}}</view>
|
|||
|
</view>
|
|||
|
<view class='data acea-row row-between-wrapper'>
|
|||
|
<view>{{item.start_time | timeYMD}}-{{item.end_time | timeYMD}}</view>
|
|||
|
<view v-if="item.status==0">
|
|||
|
<navigator :url="'/pages/columnGoods/goods_coupon_list/index?coupon_id='+item.coupon_id" class='bnt1 b-color' :class="item.coupon.send_type == 5 ? 'svip-btn' : ''" hover-class="none">
|
|||
|
去使用
|
|||
|
</navigator>
|
|||
|
</view>
|
|||
|
<view class='bnt1 gray' style="position: static;" v-if="item.status==1">已使用</view>
|
|||
|
<view class='bnt1 gray' style="position: static;" v-if="item.status==2">已过期</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class='noCommodity' v-if="!couponsList.length && loading==true">
|
|||
|
<view class='pictrue'>
|
|||
|
<image src='/static/images/noCoupon.png'></image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
let app = getApp();
|
|||
|
import {
|
|||
|
getUserCoupons
|
|||
|
} from '@/api/api.js';
|
|||
|
import {
|
|||
|
mapGetters
|
|||
|
} from "vuex";
|
|||
|
import authorize from '@/components/Authorize';
|
|||
|
import { configMap } from '@/utils';
|
|||
|
import { HTTP_REQUEST_URL } from '@/config/app';
|
|||
|
export default {
|
|||
|
components: {
|
|||
|
authorize
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
domain: HTTP_REQUEST_URL,
|
|||
|
tabIndex:1,
|
|||
|
couponsList: [],
|
|||
|
loading: false,
|
|||
|
isAuto: false, //没有授权的不会自动授权
|
|||
|
isShowAuth: false ,//是否隐藏授权
|
|||
|
isUsed: 0,
|
|||
|
tabList:[
|
|||
|
{
|
|||
|
title:'未使用'
|
|||
|
},
|
|||
|
{
|
|||
|
title:'已使用/已过期'
|
|||
|
}
|
|||
|
],
|
|||
|
limit:15,
|
|||
|
page:1,
|
|||
|
isScroll:true,
|
|||
|
moneyBg: '/static/images/couponBg',
|
|||
|
|
|||
|
};
|
|||
|
},
|
|||
|
computed: configMap(['hide_mer_status'], mapGetters(['isLogin','viewColor','keyColor'])),
|
|||
|
filters: {
|
|||
|
timeYMD: function (value) {
|
|||
|
if(value){
|
|||
|
var newDate=/\d{4}-\d{1,2}-\d{1,2}/g.exec(value)
|
|||
|
return newDate[0]
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad() {
|
|||
|
if (this.isLogin) {
|
|||
|
this.getUseCoupons();
|
|||
|
} else {
|
|||
|
this.isAuto = true;
|
|||
|
this.isShowAuth = true
|
|||
|
}
|
|||
|
},
|
|||
|
mounted: function() {
|
|||
|
},
|
|||
|
methods: {
|
|||
|
/**
|
|||
|
* 授权回调
|
|||
|
*/
|
|||
|
onLoadFun: function() {
|
|||
|
this.isShowAuth = false;
|
|||
|
// this.getUseCoupons();
|
|||
|
},
|
|||
|
// 授权关闭
|
|||
|
authColse: function(e) {
|
|||
|
this.isShowAuth = e
|
|||
|
},
|
|||
|
bindTab(index){
|
|||
|
this.tabIndex = index+1
|
|||
|
this.page =1
|
|||
|
this.isScroll = true
|
|||
|
this.couponsList = []
|
|||
|
this.getUseCoupons()
|
|||
|
},
|
|||
|
goStore(item){
|
|||
|
if(this.hide_mer_status != 1 && item.status==0){
|
|||
|
uni.navigateTo({
|
|||
|
url:`/pages/store/home/index?id=${item.mer_id}`
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
/**
|
|||
|
* 获取领取优惠券列表
|
|||
|
*/
|
|||
|
getUseCoupons: function() {
|
|||
|
let that = this;
|
|||
|
if(!this.isScroll) return
|
|||
|
getUserCoupons({
|
|||
|
statusTag: this.tabIndex,
|
|||
|
page:this.page,
|
|||
|
limit:this.limit
|
|||
|
}).then(res => {
|
|||
|
that.loading = true;
|
|||
|
that.couponsList = that.couponsList.concat(res.data.list)
|
|||
|
that.isScroll = that.couponsList.length<res.data.count
|
|||
|
that.page++
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
onReachBottom() {
|
|||
|
this.getUseCoupons()
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style scoped lang="scss">
|
|||
|
.navTabBox{
|
|||
|
background: #fff;
|
|||
|
height: 90rpx;
|
|||
|
}
|
|||
|
.longTab{
|
|||
|
display: flex;
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
.tab-item{
|
|||
|
width: 50%;
|
|||
|
display: inline-block;
|
|||
|
line-height: 90rpx;
|
|||
|
text{
|
|||
|
position: relative;
|
|||
|
display: inline-block;
|
|||
|
}
|
|||
|
}
|
|||
|
.tab-item.on{
|
|||
|
color: var(--view-theme);
|
|||
|
text{
|
|||
|
&:after{
|
|||
|
content: "";
|
|||
|
display: inline-block;
|
|||
|
width: 90%;
|
|||
|
height: 3rpx;
|
|||
|
background-color: var(--view-theme);
|
|||
|
position: absolute;
|
|||
|
left: 5%;
|
|||
|
bottom: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
.b-color {
|
|||
|
background-color: var(--view-theme);
|
|||
|
}
|
|||
|
.pic-num {
|
|||
|
color: #ffffff;
|
|||
|
font-size: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.coupon-list .item .text .condition {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
}
|
|||
|
|
|||
|
.condition .line-title {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
width: 90rpx;
|
|||
|
height: 40rpx !important;
|
|||
|
padding: 0 10rpx;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
background: var(--view-minorColor);
|
|||
|
border: 1px solid var(--view-theme);
|
|||
|
opacity: 1;
|
|||
|
border-radius: 22rpx;
|
|||
|
font-size: 20rpx !important;
|
|||
|
color: var(--view-theme);
|
|||
|
margin-right: 12rpx;
|
|||
|
}
|
|||
|
.store-info{
|
|||
|
background: #fff;
|
|||
|
padding: 18rpx 20rpx;
|
|||
|
position: relative;
|
|||
|
&::before,&::after{
|
|||
|
content: "";
|
|||
|
display: inline-block;
|
|||
|
width: 24rpx;
|
|||
|
height: 24rpx;
|
|||
|
background: #f5f5f5;
|
|||
|
border-radius: 100%;
|
|||
|
position: absolute;
|
|||
|
bottom: -12rpx;
|
|||
|
z-index: 10;
|
|||
|
}
|
|||
|
&::before{
|
|||
|
left: -10rpx;
|
|||
|
}
|
|||
|
&::after{
|
|||
|
right: -10rpx;
|
|||
|
}
|
|||
|
.image{
|
|||
|
width: 40rpx;
|
|||
|
height: 40rpx;
|
|||
|
border-radius: 100%;
|
|||
|
margin-right: 9rpx;
|
|||
|
}
|
|||
|
.name{
|
|||
|
color: #282828;
|
|||
|
}
|
|||
|
.store{
|
|||
|
color: var(--view-theme);
|
|||
|
font-size: 20rpx;
|
|||
|
padding: 2rpx 15rpx;
|
|||
|
border: 1px solid var(--view-theme);
|
|||
|
border-radius: 16rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
.svip-btn{
|
|||
|
background-color: #E8C077;
|
|||
|
}
|
|||
|
.noCommodity{
|
|||
|
width: 100%;
|
|||
|
.pictrue{
|
|||
|
margin: 0 auto;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|