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.
 
 
 
 

451 lines
15 KiB

<template>
<view class="container flex flex-col">
<block v-if="isload">
<view class="discount-detail flex1 flex-col">
<block v-if="record.id">
<view class="discount-detail__hd flex">
<view class="discount-detail__hd-left" :style="{color:t('color1')}" v-if="record.type==1">{{record.type==1?'券':(record.type==2?'礼':(record.type==3?'次':(record.type==4?'抵':(record.type==5?'餐':''))))}}</view>
<view class="discount-detail__hd-right">
<view class="discount-detail__hd-title">{{record.couponname}}</view>
<view class="discount-detail__hd-tips">到店使用时请出示核销码进行核销</view>
</view>
</view>
<view class="discount-detail__bd flex1">
<view class="discount-detail__bd-code" v-if="record.status==0 && record.hexiaoqr">
<image class="code-img" :src="record.hexiaoqr" @tap="previewImage" :data-url="record.hexiaoqr"></image>
</view>
<view class="discount-detail__bd-item flex" v-if="record.type==1">
<text class="item-hd">面额</text>
<text class="item-bd">{{record.money}}元</text>
</view>
<view class="discount-detail__bd-item flex" v-if="coupon.bid!=0">
<text class="item-hd">适用商家</text>
<text class="item-bd">{{coupon.bname}}</text>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">类型</text>
<text class="item-bd">{{record.type==1?'代金券':(record.type==2?'礼品券':(record.type==3?'计次券':(record.type==4?'运费抵扣券':(record.type==5?'餐饮券':''))))}}{{coupon.isgive == 1?'(可赠送)':''}}</text>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">使用条件</text>
<text class="item-bd">{{record.minprice > 0?'满'+record.minprice+'元可用':'无门槛'}}</text>
</view>
<block v-if="record.type==3">
<view class="discount-detail__bd-item flex">
<text class="item-hd">共计次数</text>
<text class="item-bd">{{record.limit_count}}</text>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">已使用次数</text>
<text class="item-bd">{{record.used_count}}</text>
</view>
<block v-if="record.limit_perday>0">
<view class="discount-detail__bd-item flex">
<text class="item-hd">每天限制次数</text>
<text class="item-bd">{{record.limit_perday}}</text>
</view>
</block>
</block>
<view class="discount-detail__bd-item flex">
<text class="item-hd">领取时间</text>
<text class="item-bd">{{record.createtime}}</text>
</view>
<block v-if="record.status==1">
<view class="discount-detail__bd-item flex">
<text class="item-hd">使用时间</text>
<text class="item-bd">{{record.usetime}}</text>
</view>
</block>
<view class="discount-detail__bd-item flex">
<text class="item-hd">有效期</text>
<view class="item-bd">
<view>{{record.starttime}} 至</view>
<view>{{record.endtime}}</view>
</view>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">使用说明</text>
<view class="item-bd">{{coupon.usetips || "无"}}</view>
</view>
</view>
</block>
<block v-else>
<view class="discount-detail__hd flex al-item-center">
<view class="discount-detail__hd-left" :style="{color:t('color1')}" v-if="coupon.type==1">{{coupon.type==1?'券':(coupon.type==2?'礼':(coupon.type==3?'次':(coupon.type==4?'抵':(coupon.type==5?'餐':''))))}}</view>
<view class="discount-detail__hd-right">
<view class="discount-detail__hd-title">{{coupon.name}}</view>
</view>
</view>
<view class="discount-detail__bd flex1">
<view class="discount-detail__bd-item flex" v-if="coupon.type==1">
<text class="item-hd">面额</text>
<text class="item-bd">{{coupon.money}}元</text>
</view>
<view class="discount-detail__bd-item flex" v-if="coupon.bid!=0">
<text class="item-hd">适用商家</text>
<text class="item-bd">{{coupon.bname}}</text>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">类型</text>
<text class="item-bd">{{coupon.type==1?'代金券':(coupon.type==2?'礼品券':(coupon.type==3?'计次券':(coupon.type==4?'运费抵扣券':(coupon.type==5?'餐饮券':''))))}}{{coupon.isgive == 1?'(可赠送)':''}}</text>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">使用条件</text>
<text class="item-bd">{{coupon.minprice > 0 ? '满'+coupon.minprice+'元可用' : '无门槛'}}</text>
</view>
<block v-if="coupon.type==3">
<view class="discount-detail__bd-item flex">
<text class="item-hd">共计次数</text>
<text class="item-bd">{{coupon.limit_count}}次</text>
</view>
<block v-if="coupon.limit_perday>0">
<view class="discount-detail__bd-item flex">
<text class="item-hd">每天限制使用</text>
<text class="item-bd">{{coupon.limit_perday}}次</text>
</view>
</block>
</block>
<block v-if="coupon.price>0">
<view class="discount-detail__bd-item flex">
<text class="item-hd">所需金额</text>
<text class="item-bd">¥{{coupon.price}}</text>
</view>
</block>
<block v-if="coupon.score>0">
<view class="discount-detail__bd-item flex">
<text class="item-hd">所需{{t('积分')}}</text>
<text class="item-bd">{{coupon.score}}{{t('积分')}}</text>
</view>
</block>
<view class="discount-detail__bd-item flex">
<text class="item-hd">活动时间</text>
<view class="item-bd">
<view>{{coupon.starttime}} 至</view>
<view>{{coupon.endtime}}</view>
</view>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">有效日期</text>
<block v-if="coupon.yxqtype==1">
<view class="item-bd">
<view>{{coupon.yxqtime.substring(0,coupon.yxqtime.indexOf('~'))}} 至</view>
<view>{{coupon.yxqtime.substring(coupon.yxqtime.indexOf('~')+1,coupon.yxqtime.length)}}</view>
</view>
</block>
<block v-else-if="coupon.yxqtype==2">
<text class="item-bd">领取后{{coupon.yxqdate}}天内有效</text>
</block>
<block v-else-if="coupon.yxqtype==3">
<text class="item-bd">领取后{{coupon.yxqdate}}天内有效(次日0点生效)</text>
</block>
</view>
<view class="discount-detail__bd-item flex">
<text class="item-hd">使用说明</text>
<view class="item-bd">{{coupon.usetips || '无'}}</view>
</view>
</view>
</block>
<view v-if="!record.id" class="discount-detail__ft" @tap="getcoupon" :data-id="coupon.id" :data-price="coupon.price" :data-score="coupon.score" :data-canget="coupon.canget">{{coupon.price>0?'立即购买':(coupon.score>0?'立即兑换':(coupon.canget?'立即领取':'立即使用'))}}</view>
<block v-if="mid == record.mid">
<view v-if="record.id && coupon.type==1 && record.status==0 && coupon.bid==0" class="discount-detail__ft" @tap="goto" :data-url="'/pages/maidan/pay?cprid=' + record.id">立即使用</view>
<block v-if="record.id && record.status==0 && coupon.isgive == 1">
<view class="discount-detail__ft" @tap="shareapp" v-if="getplatform() == 'app'" :data-id="record.id">转赠好友</view>
<view class="discount-detail__ft" @tap="sharemp" v-else-if="getplatform() == 'mp'" :data-id="record.id">转赠好友</view>
<view class="discount-detail__ft" @tap="sharemp" v-else-if="getplatform() == 'h5'" :data-id="record.id">转赠好友</view>
<button class="discount-detail__ft" open-type="share" v-else :data-id="record.id">转赠好友</button>
</block>
</block>
<block v-else>
<view v-if="coupon.isgive == 1 && opt.pid == record.mid && opt.pid > 0" class="discount-detail__ft" @tap="receiveCoupon" :style="{background:'linear-gradient(to bottom,'+t('color2')+' 0%,rgba('+t('color2rgb')+',0.8) 100%)'}" :data-id="record.id">立即领取</view>
</block>
</view>
<view class='return-tips' @tap="goto" data-url='/pages/index/index'><text>返回首页</text></view>
</block>
<loading v-if="loading"></loading>
<dp-tabbar :opt="opt"></dp-tabbar>
<popmsg ref="popmsg"></popmsg>
</view>
</template>
<script>
var app = getApp();
export default {
data() {
return {
opt:{},
loading:false,
isload: false,
menuindex:-1,
pre_url:app.globalData.pre_url,
textset:{},
record:{},
coupon:{},
shareTitle:'',
sharePic:'',
shareDesc:'',
shareLink:'',
mid:0
}
},
onLoad: function (opt) {
this.opt = app.getopts(opt);
this.getdata();
},
onPullDownRefresh: function () {
this.getdata();
},
onShareAppMessage:function(){
return this._sharewx({title:this.shareTitle,pic:this.sharePic,desc:this.shareDesc,link:this.shareLink});
},
onShareTimeline:function(){
var sharewxdata = this._sharewx({title:this.shareTitle,pic:this.sharePic,desc:this.shareDesc,link:this.shareLink});
var query = (sharewxdata.path).split('?')[1];
console.log(sharewxdata)
console.log(query)
return {
title: sharewxdata.title,
imageUrl: sharewxdata.imageUrl,
query: query
}
},
methods: {
getdata: function () {
var that = this;
that.loading = true;
app.get('ApiCoupon/coupondetail', {rid: that.opt.rid,id: that.opt.id}, function (res) {
that.loading = false;
that.textset = app.globalData.textset;
uni.setNavigationBarTitle({
title: that.t('优惠券') + '详情'
});
if(!res.coupon.id) {
app.alert(that.t('优惠券')+'不存在');return;
}
that.mid = app.globalData.mid;
that.record = res.record;
that.coupon = res.coupon;
that.shareTitle = '送你一张优惠券,点击领取';
that.shareDesc = that.coupon.name;
that.sharePic = app.globalData.initdata.logo;
that.shareLink = app.globalData.pre_url +'/h5/'+app.globalData.aid+'.html#/pages/coupon/coupondetail?scene=id_'+that.coupon.id+'-pid_' + app.globalData.mid+'-rid_' + that.record.id;
that.loaded({title:that.shareTitle,pic:that.sharePic,desc:that.shareDesc,link:that.shareLink});
});
},
getcoupon: function (e) {
var that = this;
var datalist = that.datalist;
var id = e.currentTarget.dataset.id;
var score = parseInt(e.currentTarget.dataset.score);
var price = e.currentTarget.dataset.price;
var canget = e.currentTarget.dataset.canget;
if (price > 0) {
app.post('ApiCoupon/buycoupon', {id: id}, function (res) {
if(res.status == 0) {
app.error(res.msg);
} else {
app.goto('/pages/pay/pay?id=' + res.payorderid);
}
})
return;
}
var key = e.currentTarget.dataset.key;
if (score > 0) {
app.confirm('确定要消耗' + score + '' + that.t('积分') + '兑换吗?', function () {
app.showLoading('兑换中');
app.post('ApiCoupon/getcoupon', {id: id}, function (data) {
app.showLoading(false);
if (data.status == 0) {
app.error(data.msg);
} else {
app.success(data.msg);
datalist[key]['haveget'] = data.haveget;
that.datalist = datalist;
}
});
});
} else if(!canget) {
uni.navigateTo({
url:'/pages/shop/prolist?cpid='+ id
})
} else {
app.showLoading('领取中');
app.post('ApiCoupon/getcoupon', {id: id}, function (data) {
app.showLoading(false);
if (data.status == 0) {
app.error(data.msg);
} else {
app.success(data.msg);
setTimeout(function(){
app.goto('mycoupon');
},1000)
}
});
}
},
receiveCoupon:function(){
var that = this;
var datalist = that.datalist;
var rid = that.record.id;
var id = that.coupon.id;
app.showLoading('领取中');
app.post('ApiCoupon/receiveCoupon', {id: id,rid:rid}, function (data) {
app.showLoading(false);
if (data.status == 0) {
app.error(data.msg);
} else {
app.success(data.msg);
that.getdata();
}
});
},
sharemp:function(){
app.error('点击右上角发送给好友或分享到朋友圈');
this.sharetypevisible = false
},
shareapp:function(){
var that = this;
that.sharetypevisible = false;
uni.showActionSheet({
itemList: ['发送给微信好友', '分享到微信朋友圈'],
success: function (res){
if(res.tapIndex >= 0){
var scene = 'WXSceneSession';
if (res.tapIndex == 1) {
scene = 'WXSenceTimeline';
}
var sharedata = {};
sharedata.provider = 'weixin';
sharedata.type = 0;
sharedata.scene = scene;
sharedata.title = '送你一张优惠券,点击领取';
sharedata.summary = that.shareDesc;
sharedata.href = that.shareLink;
sharedata.imageUrl = that.sharePic;
uni.share(sharedata);
}
}
});
},
}
};
</script>
<style lang="scss">
.container {
padding: 20rpx 40rpx;
min-height: 100vh;
box-sizing: border-box;
background: linear-gradient(180deg,#058552 0%,#096742 100%);
padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
}
.discount-detail {
border-radius:50rpx;
background: #FFF;
padding: 44rpx 40rpx;
&__hd {
padding-bottom: 40rpx;
position: relative;
&::before,&::after {
content: "";
position: absolute;
width: 30rpx;
height: 30rpx;
bottom: -15rpx;
border-radius: 50%;
background: #068150;
}
&::before {
left: -55rpx;
}
&::after {
right: -55rpx;
}
&-left {
width: 96rpx;
height: 96rpx;
border-radius: 50%;
background: linear-gradient(to right,#EAFBF4 0%,#CAF6E5 100%);
font-size: 48rpx;
font-weight: bold;
line-height: 96rpx;
text-align: center;
margin-right: 16rpx;
flex-shrink: 0;
}
&-right {
flex: 1;
}
&-title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
line-height: 44rpx;
}
&-tips {
margin-top: 10rpx;
font-size: 22rpx;
color: #999999;
line-height: 32rpx;
}
}
&__bd {
padding-top: 40rpx;
position: relative;
margin-bottom: 60rpx;
&::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 2rpx;
background-image: linear-gradient(to right, #EEEEEE 0%, #EEEEEE 50%, transparent 50%);
background-size: 20rpx 4rpx;
background-repeat: repeat-x;
}
&-code {
width: 530rpx;
height: 520rpx;
margin: 0 auto 16rpx;
.code-img {
width: 100%;
height: 100%;
}
}
&-item {
margin-top: 28rpx;
font-size: 28rpx;
line-height: 40rpx;
.item-hd {
color: #999999;
width: 140rpx;
flex-shrink: 0;
margin-right: 20rpx;
}
.item-bd {
color: #333333;
font-weight: bold;
}
}
}
&__ft {
height: 80rpx;
line-height :80rpx;
text-align: center;
color: #FFFFFF;
font-size: 32rpx;
font-weight: bold;
border-radius: 40rpx;
background: linear-gradient(to right,#00AE68 0%,#096742 100%);
}
}
.return-tips {margin-top: 60rpx;text-align: center;font-size: 28rpx;color: rgba(255,255,255,0.4);line-height: 40rpx;}
</style>