Commit 3160b78f714e46cbb495c85cfe73f8391698835b

Authored by pengye
1 parent 384f643d

邀请函2-17付费券、免费券

Too many changes to show.

To preserve performance only 21 of 21+ files are displayed.

... ... @@ -96,7 +96,8 @@
"pack/examineCertificate",
"pack/subscribeDrawback",
"pack/vipRecharge",
"pack/seeRecharge"
"pack/seeRecharge",
"pack/receiveCoupon"
]
},
{
... ...
... ... @@ -66,6 +66,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -75,6 +76,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -102,6 +104,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -111,6 +114,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -456,9 +463,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -579,7 +587,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, themeSixteen, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, themeSixteen, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -598,29 +606,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -742,13 +744,16 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
},
// 再次预订
secondbook() {
... ... @@ -902,34 +907,172 @@ Page({
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -11,6 +11,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -83,29 +84,49 @@
</view>
</view>
</block>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可使用:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -326,4 +347,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -271,13 +271,103 @@
flex-shrink: 0;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialCoupon .btns text {
color: #0B0805 !important;
}
.preferentialCoupon .bottom {
color: #C36607 !important;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
display: flex;
background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
background-size: 100% 100%;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
... ... @@ -290,6 +380,7 @@
height: auto;
padding: 12rpx 0;
margin: 0 20rpx;
border: none;
}
.rechargeItems .orderingFood {
... ... @@ -331,6 +422,20 @@
top: 12rpx;
}
.discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.famousChefBox .labelBox,
.stopBox .labelBox {
border-bottom: none;
... ... @@ -424,9 +529,7 @@
}
.priceText .icons {
font-family: 'Abel';
color: #FD4D59;
font-size: 40rpx;
}
.itemRight {
... ... @@ -440,6 +543,7 @@
display: flex;
justify-content: space-between;
align-items: baseline;
flex-direction: column;
}
.btns text {
... ... @@ -696,6 +800,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
/* 深中国红 */
.crimson,
.crimson .positioningBox {
... ... @@ -987,14 +1230,6 @@
color: #578C69;
}
.pearlWhite .preferentialItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj1.png) no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
}
.pearlWhite .rechargeItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj2.png) no-repeat;
background-size: 100% 100%;
... ... @@ -1053,12 +1288,6 @@
color: #578C69;
}
.pearlWhite .discountText {
background: transparent;
border: 2rpx solid #FD4D59;
color: #FD4D59;
}
.toastBox {
width: fit-content;
position: fixed;
... ...
... ... @@ -66,6 +66,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -75,6 +76,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -102,6 +104,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -111,6 +114,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -456,9 +463,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -579,7 +587,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -598,29 +606,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -697,13 +699,16 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
},
// 再次预订
secondbook() {
... ... @@ -857,34 +862,172 @@ Page({
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -11,6 +11,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -89,29 +90,49 @@
</button>
</view>
</view>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -331,4 +352,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -298,13 +298,104 @@
flex-shrink: 0;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialCoupon .btns text {
color: #0B0805 !important;
}
.preferentialCoupon .bottom {
color: #C36607 !important;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
display: flex;
background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
background-size: 100% 100%;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
... ... @@ -317,6 +408,7 @@
height: auto;
padding: 12rpx 0;
margin: 0 20rpx;
border: none;
}
.rechargeItems .orderingFood {
... ... @@ -358,6 +450,20 @@
top: 12rpx;
}
.discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.famousChefBox .labelBox,
.stopBox .labelBox {
border-bottom: none;
... ... @@ -451,9 +557,7 @@
}
.priceText .icons {
font-family: 'Abel';
color: #FD4D59;
font-size: 40rpx;
}
.itemRight {
... ... @@ -467,6 +571,7 @@
display: flex;
justify-content: space-between;
align-items: baseline;
flex-direction: column;
}
.btns text {
... ... @@ -727,6 +832,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
/* 深中国红 */
.crimson,
.crimson .positioningBox {
... ... @@ -1017,14 +1261,6 @@
color: #578C69;
}
.pearlWhite .preferentialItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj1.png) no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
}
.pearlWhite .rechargeItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj2.png) no-repeat;
background-size: 100% 100%;
... ... @@ -1080,12 +1316,6 @@
border: none;
}
.pearlWhite .discountText {
background: transparent;
border: 2rpx solid #FD4D59;
color: #FD4D59;
}
.toastBox {
width: fit-content;
position: fixed;
... ...
... ... @@ -66,6 +66,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -75,6 +76,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -102,6 +104,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -111,6 +114,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -456,9 +463,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -579,7 +587,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -598,29 +606,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -697,13 +699,16 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
},
// 再次预订
secondbook() {
... ... @@ -857,34 +862,172 @@ Page({
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -10,6 +10,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -72,29 +73,49 @@
导航到店
</button>
</view>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -314,4 +335,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -288,13 +288,104 @@
flex-shrink: 0;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialCoupon .btns text {
color: #0B0805 !important;
}
.preferentialCoupon .bottom {
color: #C36607 !important;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
display: flex;
background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
background-size: 100% 100%;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
... ... @@ -307,6 +398,7 @@
height: auto;
padding: 12rpx 0;
margin: 0 20rpx;
border: none;
}
.rechargeItems .orderingFood {
... ... @@ -348,6 +440,20 @@
top: 12rpx;
}
.discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.famousChefBox .labelBox,
.stopBox .labelBox {
border-bottom: none;
... ... @@ -441,9 +547,7 @@
}
.priceText .icons {
font-family: 'Abel';
color: #FD4D59;
font-size: 40rpx;
}
.itemRight {
... ... @@ -457,6 +561,7 @@
display: flex;
justify-content: space-between;
align-items: baseline;
flex-direction: column;
}
.btns text {
... ... @@ -717,6 +822,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
/* 深中国红 */
.crimson,
.crimson .positioningBox {
... ... @@ -1050,14 +1294,6 @@
color: #578C69;
}
.pearlWhite .preferentialItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj1.png) no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
}
.pearlWhite .rechargeItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj2.png) no-repeat;
background-size: 100% 100%;
... ... @@ -1125,12 +1361,6 @@
border: none;
}
.pearlWhite .discountText {
background: transparent;
border: 2rpx solid #FD4D59;
color: #FD4D59;
}
.toastBox {
width: fit-content;
position: fixed;
... ...
... ... @@ -65,6 +65,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -74,6 +75,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -101,6 +103,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -110,6 +113,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -455,9 +462,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -578,7 +586,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -597,29 +605,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -696,13 +698,16 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
})
},
// 再次预订
secondbook() {
... ... @@ -856,34 +861,172 @@ Page({
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -10,6 +10,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -70,29 +71,49 @@
</button>
</view>
</view>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -313,4 +334,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -287,13 +287,104 @@
flex-shrink: 0;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialCoupon .btns text {
color: #0B0805 !important;
}
.preferentialCoupon .bottom {
color: #C36607 !important;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
display: flex;
background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
background-size: 100% 100%;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
... ... @@ -306,6 +397,7 @@
height: auto;
padding: 12rpx 0;
margin: 0 20rpx;
border: none;
}
.rechargeItems .orderingFood {
... ... @@ -347,6 +439,20 @@
top: 12rpx;
}
.discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.famousChefBox .labelBox,
.stopBox .labelBox {
border-bottom: none;
... ... @@ -440,9 +546,7 @@
}
.priceText .icons {
font-family: 'Abel';
color: #FD4D59;
font-size: 40rpx;
}
.itemRight {
... ... @@ -456,6 +560,7 @@
display: flex;
justify-content: space-between;
align-items: baseline;
flex-direction: column;
}
.btns text {
... ... @@ -716,6 +821,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
/* 深中国红 */
.crimson,
.crimson .positioningBox {
... ... @@ -1047,14 +1291,6 @@
color: #578C69;
}
.pearlWhite .preferentialItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj1.png) no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
}
.pearlWhite .rechargeItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj2.png) no-repeat;
background-size: 100% 100%;
... ... @@ -1122,12 +1358,6 @@
border: none;
}
.pearlWhite .discountText {
background: transparent;
border: 2rpx solid #FD4D59;
color: #FD4D59;
}
.toastBox {
width: fit-content;
position: fixed;
... ...
... ... @@ -67,6 +67,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
screenHeight: '',
attentionAnim: {},
... ... @@ -74,6 +75,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -101,6 +103,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -110,6 +113,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -409,9 +416,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -529,7 +537,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, whiteBj, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, whiteBj, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -548,29 +556,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -654,8 +656,11 @@ Page({
},
// 点击商家有礼
gotoSellerGift(){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
... ... @@ -812,35 +817,173 @@ Page({
}
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
// 根据券ID获取券详情
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -11,6 +11,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -92,29 +93,50 @@
</view>
</view>
</view>
<view class="preferential" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="left">
<view class="top">
<text class="font28r">{{item.aname}}</text>
<view class="price font24r" wx:if="{{item.price}}">
<view class="icons font24r">¥</view>{{item.price}}
</view>
<!-- is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示 -->
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discount font24r">{{item.discount}}折</text>
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r oneBottom">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
<view class="font24r orderingFood">
去抢购
</view>
</view>
</navigator>
... ... @@ -241,7 +263,7 @@
特别优惠
</view>
<navigator url="/pack-activity/pack/vipRecharge?id={{recharge_data.id}}&name={{seller.name}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="rechargeItems">
<view class="left">
<view class="top">
<text class="font28r">{{recharge_data.rname}}</text>
... ... @@ -300,4 +322,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -22,8 +22,16 @@
font-family: PingFang SC;
font-size: 72rpx;
color: #FFD200;
position: relative;
top: -50rpx;
position: absolute;
top: 40rpx;
left: 0;
right: 0;
overflow: hidden;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
... ... @@ -455,14 +463,172 @@
flex-shrink: 0;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
padding: 16rpx 16rpx 16rpx 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
margin: 0 20rpx 20rpx 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
background: url('https://qn.colorcun.com/certificateBj.png') no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
display: flex;
justify-content: space-between;
align-items: center;
height: auto;
padding: 12rpx 20rpx 12rpx 32rpx;
margin: 0 20rpx;
border: none;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialItems .priceText .icons {
color: #FD4D59;
}
.preferentialItems .btns {
margin: 24rpx 20rpx 0 0;
display: flex;
justify-content: space-between;
align-items: baseline;
flex-direction: column;
}
.preferentialItems .bottom {
color: #C36607;
}
.preferentialItems .priceText {
display: flex;
align-items: center;
justify-content: center;
}
.preferentialItems .discountText {
text-align: center;
color: #FFEFC5;
border-radius: 6rpx;
font-family: PingFang SC;
background: #FD4D59;
width: max-content;
padding: 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.preferentialItems .discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.preferentialItems .itemRight {
width: 70%;
padding-right: 10rpx;
margin-left: 18rpx;
}
.preferentialItems .itemLeft {
width: 30%;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
}
.rubric1 {
... ... @@ -806,6 +972,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
.arrivalBox{
display: flex;
width: 100%;
... ...
... ... @@ -66,6 +66,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -75,6 +76,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -102,6 +104,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -111,6 +114,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -456,9 +463,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -579,7 +587,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -598,29 +606,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -697,9 +699,12 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
... ... @@ -856,35 +861,173 @@ Page({
}
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
// 根据券ID获取券详情
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -11,6 +11,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -85,29 +86,49 @@
</button>
</view>
</view>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -326,4 +347,24 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...
... ... @@ -264,7 +264,7 @@
/* 优惠券开始 */
.preferentialCoupon {
padding: 60rpx 40rpx 0 40rpx;
padding: 40rpx 40rpx 0 40rpx;
}
.orderingFood {
... ... @@ -281,13 +281,114 @@
flex-shrink: 0;
}
.preferentialCoupon .itemRight {
width: 74%;
display: flex;
align-items: center;
}
.preferentialCoupon .itemLeft {
width: 26%;
}
.preferentialCoupon .couponLine{
margin: 24rpx 0;
border-right: 2rpx dashed #f6231b;
}
.preferentialCoupon .orderingFood {
padding: 0 20rpx;
color: #fff !important;
border: none !important;
text-align: center;
border-radius: 20rpx;
line-height: 44rpx;
height: 44rpx;
width: max-content;
flex-shrink: 0;
background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
}
.preferentialCoupon .icons {
color: #F6231B;
text-align: center;
}
.preferentialCoupon .priceText {
display: flex;
align-items: baseline;
justify-content: center;
font-family: PingFang SC;
color: #F6231B;
font-weight: 600;
font-size: 48rpx;
margin-top: 6rpx;
}
.preferentialCoupon .priceText text {
font-size: 48rpx;
}
.preferentialCoupon .btns {
flex: 1;
}
.preferentialCoupon .btnBox {
display: flex;
flex-direction: column;
}
.preferentialCoupon .grantNum {
display: flex;
flex-direction: column;
align-items: center;
color: #C36607;
margin-top: 10rpx;
}
.preferentialCoupon .grantNum text {
color: #F6231B;
margin-right: 10rpx;
}
.preferentialCoupon .btns text {
font-weight: 600;
}
.preferentialCoupon .orderingFood1 {
border: 2rpx solid #fa4b20 !important;
background: transparent !important;
color: #fa4b20 !important;
}
.preferentialCoupon .btns text {
color: #0B0805 !important;
}
.preferentialCoupon .bottom {
margin-top: 4rpx;
width: 100%;
color: #C36607 !important;
font-family: PingFang SC;
font-weight: 500;
display: -webkit-box;
word-break: break-all;
word-wrap: break-word;
overflow: hidden;
text-align: left;
}
.preferentialCoupon .nodate{
margin-left: 20rpx;
}
.preferentialItems {
display: flex;
background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
}
.rechargeItems {
... ... @@ -300,6 +401,7 @@
height: auto;
padding: 12rpx 0;
margin: 0 20rpx;
border: none;
}
.rechargeItems .orderingFood {
... ... @@ -341,6 +443,20 @@
top: 12rpx;
}
.discountText1{
text-align: center;
color: #FD4D59;
border: 2rpx solid #FD4D59;
border-radius: 6rpx;
font-family: PingFang SC;
background: transparent;
width: max-content;
padding: 0 6rpx;
position: absolute;
left: 16rpx;
top: 12rpx;
}
.famousChefBox .labelBox,
.stopBox .labelBox {
border-bottom: none;
... ... @@ -433,9 +549,7 @@
}
.priceText .icons {
font-family: 'Abel';
color: #FD4D59;
font-size: 40rpx;
}
.itemRight {
... ... @@ -449,10 +563,7 @@
display: flex;
justify-content: space-between;
align-items: baseline;
}
.btns text {
color: #0B0805;
flex-direction: column;
}
.priceText {
... ... @@ -709,6 +820,145 @@
box-sizing: border-box;
}
#couponModal .titleModal {
margin-top: 30%;
position: relative;
}
#couponModal .titleModal2 {
margin-top: 80%;
}
#couponModal .titleModal3 {
margin-top: 60%;
}
#couponModal .titleModal4 {
margin-top: 30%;
}
#couponModal .mymodal {
background: rgba(0, 0, 0, 0.8);
width: 100% !important;
top: 0 !important;
height: auto !important;
z-index: 300;
}
.nameInfo {
font-family: PingFang SC;
font-weight: 400;
font-size: 52rpx;
line-height: 56rpx;
color: #fff;
margin-bottom: 40rpx;
padding-top: 60rpx;
}
.couponTotal {
color: #dfdfdf;
font-family: PingFang SC;
font-weight: 400;
font-size: 40rpx;
line-height: 48rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.couponTotal text {
color: #ffc806;
font-weight: 600;
font-size: 80rpx;
margin: 0 14rpx;
}
.couponBox {
width: 80%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}
.couponItems {
width: 46%;
margin-bottom: 24rpx;
padding-bottom: 52rpx;
border-radius: 20rpx;
border: 2rpx solid #ff7e06;
background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
}
.couponNum {
background: #727272;
border-radius: 50%;
color: #fff;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 8rpx 0 0 8rpx;
}
.couponPrice {
display: flex;
align-items: center;
justify-content: center;
color: #F6231B;
font-weight: 500;
}
.couponLines{
width: 80%;
margin: 0 auto;
height: 2rpx;
border-bottom: 2rpx dashed #F6231B;
}
.couponPrice text {
margin-left: 4rpx;
font-size: 76rpx;
font-weight: 700;
}
.couponCondition {
color: #C36607;
display: flex;
align-items: center;
justify-content: center;
padding-top: 24rpx;
}
.couponBtn {
width: 80%;
margin: 0 auto;
border-radius: 42rpx;
background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%);
font-weight: 400;
color: #fff;
text-align: center;
border: 4rpx solid #fff;
padding: 12rpx 0;
margin: 16rpx auto 20rpx auto;
}
.couponText {
color: #fff;
text-decoration: underline;
text-align: center;
}
.closeImg {
width: 60rpx;
height: 60rpx;
position: absolute;
right: 0;
top: 0;
}
/* 深中国红 */
.crimson,
.crimson .positioningBox {
... ... @@ -1041,14 +1291,6 @@
color: #578C69;
}
.pearlWhite .preferentialItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj1.png) no-repeat;
background-size: 100% 100%;
margin-bottom: 20rpx;
min-height: 160rpx;
padding-bottom: 10rpx;
}
.pearlWhite .rechargeItems {
background: url(https://nosqn.colorcun.com/certificateWhiteBj2.png) no-repeat;
background-size: 100% 100%;
... ... @@ -1117,12 +1359,6 @@
border: none;
}
.pearlWhite .discountText {
background: transparent;
border: 2rpx solid #FD4D59;
color: #FD4D59;
}
.toastBox {
width: fit-content;
position: fixed;
... ...
... ... @@ -66,6 +66,7 @@ Page({
isMoreBtn:'',//再次预订按钮
isPaymenBtn:'',//支付定金按钮
isShareItem:'',//转发客人按钮
couponArr: [],//待领取的优惠券列表
},
tablestr: '',
urlsValue: [],
... ... @@ -75,6 +76,7 @@ Page({
timers: null, // 动画定时器
n: 0,
modal:'',
couponModal: '',
/**
* 生命周期函数--监听页面加载
*/
... ... @@ -102,6 +104,7 @@ Page({
wx.onUserCaptureScreen((res)=> {
this.showModal()
})
this.couponModal = this.selectComponent("#couponModal");
},
// 打开截屏弹框
showModal() {
... ... @@ -111,6 +114,10 @@ Page({
closeModal() {
this.modal.closeModal()
},
// 关闭优惠券弹框
closeCouponModal() {
this.couponModal.closeModal()
},
// 页面滚动事件
onPageScroll: function (event) {
const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
... ... @@ -455,9 +462,10 @@ Page({
uid
}).then((json) => {
if (json.ret == 200) {
console.log('staffinfostaffinfostaffinfo', json.data)
console.log('客户经理获取基本信息------', json.data)
this.setData({
staffinfo: json.data
staffinfo: json.data,
couponArr:[],
})
this.getSellerTemplateConfFun(sid);
}
... ... @@ -578,7 +586,7 @@ Page({
let data = res.data
console.log('data', data);
let couponList = []
let themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
chef = util.determine(data.chef);
reserve = util.determine(data.reserve);
marketing = util.determine(data.marketing);
... ... @@ -597,29 +605,23 @@ Page({
if (marketing) {
marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
is_comments = marketing.is_comments ? marketing.is_comments : '';
coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
marketing.coupon_data_payList = coupon_data_pay
coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
marketing.coupon_data_freeList = coupon_data_free
let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
let couponDataId = info && info.length > 0 ? info[0].id : {}
// 根据券ID获取评价赠送的券详情
if(couponDataId) this.getEvaluateFun(couponDataId)
}
// is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
if (coupon && util.getType(coupon) == 'object') {
couponList.push({
id: coupon.id
});
}
if (coupon && util.getType(coupon) == 'array') {
if (coupon.length > 0) {
coupon.forEach(item => {
couponList.push({
id: item.id
})
})
}
}
// 获取全部的优惠券(商家券、个人券、免费券、付费券)
couponList = this.addCoupons(coupon,couponList);
couponList = this.addCoupons(coupon_data_pay,couponList);
couponList = this.addCoupons(coupon_data_free,couponList);
// 根据券ID获取券详情
this.getActivityByIdFun(couponList, couponList.length)
this.getActivityByIdFun(couponList)
// 根据充值ID获取充值详情
if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
this.getRechargeDetail(marketing.recharge_data.id)
... ... @@ -696,9 +698,12 @@ Page({
})
},
// 点击商家有礼
gotoSellerGift(){
let url = util.http_build_query({
gotoSellerGift(e){
this.couponModal.closeModal()
const form = e.currentTarget.dataset['form'];
let url = util.http_build_query({
id: this.data.detail.id,
form
}, '/pages/reserve/sellerGift')
wx.navigateTo({
url
... ... @@ -855,35 +860,173 @@ Page({
}
})
},
// 根据券ID获取券详情
getActivityByIdFun(ids, length) {
let coupon_dataList = [];
ids.forEach(i => {
App.Activity.GetActivityById({
id: i.id
}).then(res => {
if (res.data.length > 0) {
let detail = res.data[0];
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
coupon_dataList.push(detail);
if (length === coupon_dataList.length) {
coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
console.log('邀请函--------------------优惠券',coupon_dataList);
this.setData({
coupon_dataList,
})
}
}
})
})
},
// 根据券ID获取券详情
getActivityByIdFun(obj) {
App.Activity.GetActivityById({
id: obj.map(item => item.id).join(','),
}).then(res => {
if (res.data.length > 0) {
let list = res.data.filter(item => {
return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
})
list.forEach(detail => {
detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
detail.arule = detail.arule ? util.determine(detail.arule) : '';
detail.use = detail.use ? util.determine(detail.use) : '';
if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
let cash = detail.use.cash * 1;
let price = detail.price * 1;
detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
}
let num = detail.receiveNum;
if (num > 0) {
detail.receiveNumText = ''
if (num >= 0 && num <= 100) {
detail.receiveNumText = num.toString();
} else if (num >= 101 && num <= 199) {
detail.receiveNumText = '100+';
} else if (num >= 200 && num <= 299) {
detail.receiveNumText = '200+';
} else {
detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
}
}
if (detail.exp_date && detail.exp_date.week_data) {
let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
if (noon) noon = '午餐:' + noon
if (nig) nig = '晚餐:' + nig
detail.noonText = noon;
detail.nigText = nig;
}
})
let freeCoupons = list.filter(item => {
return item.is_type == '3'
})
// 免费券判断是否领取,弹框领取
if (freeCoupons.length > 0) {
let length = freeCoupons.length - 1
freeCoupons.forEach(i => {
this.getCoupon(i, freeCoupons[length].id, obj)
})
}
console.log('邀请函--------------------优惠券', list);
this.setData({
coupon_dataList: list,
})
}
})
},
// 获取所有的券并且展示
addCoupons(coupons, couponList) {
if (coupons && util.getType(coupons) == 'object') {
couponList.push({
id: coupon.id,
number: coupon.number
});
}
if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
coupons.forEach(item => {
couponList.push({
id: item.id,
number: item.number
});
});
}
return couponList
},
// 弹框领取免费券
setcouponFun(arr) {
let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
console.log('弹框领取免费券id', str);
App.Activity.SetActivityAsReserve({
aid: str,
rid: this.id,
}).then((json) => {
if (json.ret != 200) {
wx.showToast({
title: res.msg,
duration: 2000,
mask: true
})
}
})
},
// 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
getCoupon(item, id, obj) {
let couponArr = this.data.couponArr;
let totalPrice = this.data.totalPrice;
App.Activity.ActivityListByOpenid({
aid: item.id
}).then(res => {
if (res.ret == 200) {
if (res.data.length == 0) {
couponArr.push(item)
}
if (item.id == id && couponArr.length > 0) {
couponArr.forEach(item => {
let match = obj.find(b => b.id === item.id);
if (match) {
item.number = match.number;
}
});
totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
this.setcouponFun(couponArr)
this.couponModal.showModal()
}
console.log('未领取的券列表-----------', couponArr);
this.setData({
couponArr,
totalPrice
})
}
})
},
// 处理优惠券不可用日期数据
hasConsecutiveSelect(arr, type) {
let firstTitle = null;
let lastTitle = null;
let rArr = []
let num = 0
for (let i = 0; i < arr.length; i++) {
let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
if (str) {
rArr.push(arr[i].title)
num++
if (num == 1) {
firstTitle = arr[i].title
}
if (num >= 5) {
lastTitle = arr[i].title
}
if (num >= 5 && i >= (arr.length - 1)) {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
} else {
if (num < 5) {
num = 0
firstTitle = null;
lastTitle = null;
} else {
let fi = rArr.findIndex((item) => {
return item == firstTitle
})
rArr.splice(fi, num, firstTitle + '至' + lastTitle)
num = 0
}
}
}
return {
rArr,
lastTitle,
firstTitle
};
},
/**
* 生命周期函数--监听页面隐藏
*/
... ...
... ... @@ -11,6 +11,7 @@
/>
<image class="giftImg"
bindtap="gotoSellerGift"
data-form="1"
wx:if="{{(hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
src="https://nosqn.colorcun.com/sellerGift.png" mode=""/>
<image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
... ... @@ -82,29 +83,49 @@
</button>
</view>
</view>
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
<view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
<block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
<navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<navigator url="/pack-activity/pack/{{item.is_type == '3'?'receiveCoupon':'buyCoupon'}}?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
<view class="preferentialItems">
<view class="itemLeft">
<text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
<view class="discountText1 font20r" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
<view class="priceText" wx:if="{{item.price}}">
<view class="icons font40r">¥</view>{{item.price}}
<view class="icons font24r">¥</view><text class="font40r">{{item.price}}</text>
</view>
<view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
</view>
<view class="couponLine"></view>
<view class="itemRight">
<view class="btns">
<text class="font40r">{{item.aname}}</text>
<view class="font24r orderingFood">
抢购
</view>
<block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
<view wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</view>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
</view>
</block>
<block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
<view wx:if="{{item.is_type == '3' && item.aexpiration}}" class="bottom font24r">领取后{{item.aexpiration}}天有效</view>
<view wx:if="{{item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
<view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
<view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
<view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
<view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
</block>
</view>
<text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
<view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
无限制{{item.desc?','+item.desc+'。':'。'}}
<view class="btnBox" wx:if="{{item.is_type == '3'}}" >
<view class="font24r orderingFood orderingFood1">已领取</view>
<view class="grantNum" wx:if="{{item.receiveNumText}}">
<view class="font24r">已被领取</view>
<view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
</view>
</view>
<view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
<view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
立即抢购
</view>
</view>
</view>
... ... @@ -324,4 +345,25 @@
<button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
</view>
</view>
</my-modal>
<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
<view slot="modalName" class="titleModal {{(couponArr.length == '2' || couponArr.length < '2') ? 'titleModal2 ' : (couponArr.length == '4' || couponArr.length < '4') ? 'titleModal3 ' : (couponArr.length > '4') ? 'titleModal4' : '' }}">
<image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline.png" mode=""/>
<view class="nameInfo">{{seller.name||reserve.seller_name}}</view>
<view class="couponTotal">赠送给您<text>{{totalPrice}}元</text>代金券</view>
</view>
<view slot="modalContent">
<view class="couponBox">
<view wx:for="{{couponArr}}" class="couponItems">
<view class="couponNum font20r">×{{item.number}}</view>
<view class="font36r couponPrice">¥<text>{{item.price}}</text></view>
<view class="couponLines"></view>
<view class="font28r couponCondition" wx:if="{{item.desc!='0'}}">消费满{{item.desc}}元可用</view>
<view class="font28r couponCondition" wx:else>无门槛</view>
</view>
</view>
<view bindtap="closeCouponModal" class="couponBtn font36r">我知道了</view>
<view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
</view>
</my-modal>
\ No newline at end of file
... ...