@@ -1,5 +1,6 @@ | |||
const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} | |||
let app = getApp(); | |||
const format = require("../../utils/util.js"); | |||
let config = require("../../config/config.js"); | |||
let Http = require("../../utils/HttpBasics"); | |||
let Util = require("../../utils/util"); | |||
@@ -31,7 +32,127 @@ Page({ | |||
stopFees: {}, | |||
scroll: true, | |||
ifHaveCarModular: "", | |||
canIUse: wx.canIUse("navigator") | |||
canIUse: wx.canIUse("navigator"), | |||
showTicketModal: false, | |||
ticketList: [], | |||
noCoupon:imgurl.noCoupon.url, | |||
loadingUrl: imgurl.loading.url, | |||
allow_load: true, | |||
curPageNum: 1, | |||
curPageSize: 4, | |||
curTotalpageNum: 0, | |||
quantitle: '', | |||
quanid: '', | |||
gouHr: imgurl.gouHr.url, | |||
totalTicketNum: 0, | |||
}, | |||
getMoreList(e) { | |||
let totalNum = this.data.ticketList.length; | |||
if (this.data.curPageNum < this.data.curTotalpageNum) { | |||
this.setData({ | |||
curPageNum: this.data.curPageNum+1 | |||
}) | |||
this.getTicketList(0 ,this.data.curPageNum); | |||
} | |||
}, | |||
/** | |||
* 选择使用的优惠券 | |||
*/ | |||
choicecoupon: function(e) { | |||
/* wx.navigateBack(); | |||
var pages = getCurrentPages(); | |||
var prevPage = pages[pages.length - 2] //上一个页面 */ | |||
var that = this; | |||
var quantitle = e.currentTarget.dataset.title; | |||
var quanid = e.currentTarget.dataset.id; | |||
this.setData({ | |||
quantitle: quantitle, | |||
quanid: quanid, | |||
showTicketModal: false, | |||
}); | |||
wx.setStorage({ | |||
key: 'chosed', | |||
data: 'chosed', | |||
}) | |||
}, | |||
/* | |||
*/ | |||
getTicketList(key, pageNum) { | |||
var that = this; | |||
if (that.data.allow_load) { | |||
wx.showLoading({ | |||
title: "加载中" | |||
}); | |||
Http.get({ | |||
url: config.api.couponOrderCarList, | |||
data: { | |||
pageNum: pageNum, | |||
pageSize: 20, | |||
couponOrderStatus: key | |||
} | |||
}).then(res => { | |||
that.setData({ | |||
curTotalpageNum: res.data.pages, | |||
curPageNum: res.data.pageNum, | |||
totalTicketNum: res.data.total | |||
}) | |||
res.data.list.map(file => { | |||
file.expiredTime = format.formatTime( | |||
file.expiredTime, | |||
"yyyy-MM-dd hh:mm:ss" | |||
); | |||
}); | |||
setTimeout(function () { | |||
wx.hideLoading(); | |||
}, 1200); | |||
if (pageNum >= res.data.pages) { | |||
that.setData({ | |||
allow_load: false | |||
}); | |||
} | |||
/** | |||
* 先赋值后渲染页面 | |||
* concat 不会改变原数组值 | |||
* push 会改变原数组值,但不会一条一条插入,而是整个数组插入 | |||
*/ | |||
that.data.ticketList = that.data.ticketList.concat(res.data.list); | |||
that.setData({ | |||
ticketList: that.data.ticketList | |||
}); | |||
this.hideLoading(); | |||
}) | |||
.catch(err => { | |||
setTimeout(function () { | |||
wx.hideLoading(); | |||
}, 1200); | |||
wx.showToast({ | |||
title: err.errMsg, | |||
icon: 'none', | |||
duration: 2000, | |||
mask: false | |||
}); | |||
}) | |||
} else { | |||
} | |||
}, | |||
//点击跳转到券详情页面 | |||
gotouse: function (e) { | |||
wx.navigateTo({ | |||
url: `/pages/passCar/couponDetail/couponDetail?quancode=${ | |||
e.currentTarget.dataset.quancode | |||
}`, | |||
success: function (res) { | |||
// success | |||
}, | |||
fail: function () { | |||
// fail | |||
}, | |||
complete: function () { | |||
// complete | |||
} | |||
}); | |||
}, | |||
/** | |||
* 车牌轮播滑动 | |||
@@ -135,6 +256,13 @@ Page({ | |||
addCar: null | |||
}); | |||
} | |||
this.setData({ | |||
ticketList: [], | |||
curPageNum: 1 | |||
}) | |||
this.getTicketList(0, 1); | |||
}, | |||
onLoad: function (options) { | |||
@@ -169,6 +297,7 @@ Page({ | |||
// app.getLocation(); | |||
that.userLogin() | |||
} | |||
}, | |||
/** | |||
* 用户登录 | |||
@@ -300,7 +429,8 @@ Page({ | |||
.catch(err => { | |||
console.log(err) | |||
wx.showToast({ | |||
title: err.message, | |||
// title: err.message, | |||
title: '未查到', | |||
icon: 'none', | |||
duration: 2000, | |||
mask: false | |||
@@ -322,6 +452,25 @@ Page({ | |||
}) | |||
} | |||
}, | |||
closeTicketModal: function () { | |||
this.setData({ | |||
showTicketModal: false | |||
}) | |||
}, | |||
/** | |||
* 停车券 弹框 | |||
*/ | |||
openTicketModal: function () { | |||
this.setData({ | |||
showTicketModal: true, | |||
allow_load: true, | |||
}) | |||
if (!this.data.ticketList.length){ | |||
this.getTicketList(0, 1); | |||
} | |||
}, | |||
//获取名下停车券列表 | |||
@@ -331,7 +480,7 @@ Page({ | |||
url: config.api.couponOrderCarList + "?type=5&couponOrderStatus=0", | |||
data: { | |||
pageNum: 1, | |||
pageSize: 8, | |||
pageSize: 20, | |||
couponOrderStatus: 0 | |||
} | |||
}).then(res => { | |||
@@ -38,10 +38,11 @@ | |||
</view> | |||
<view class='coupon clearfix' bindtap='gotoquan' wx:if="{{couponList.length>0}}"> | |||
<!-- <view class='coupon clearfix' bindtap='openTicketModal' wx:if="{{couponList.length>0}}"> --> | |||
<text class='fl'><text class='jians'>券</text>优惠券:</text> | |||
<view class="fr"> | |||
<text wx:if="{{quantitle}}">{{quantitle}}</text> | |||
<text wx:else>{{couponList.length}}张可用</text> | |||
<text wx:else>{{totalTicketNum}}张可用</text> | |||
<image class='jiant' src='{{jianUrl}}' mode='widthFix'></image> | |||
</view> | |||
</view> | |||
@@ -109,4 +110,52 @@ | |||
<image class="img" src="{{qidaiUrl}}" mode="widthFix"></image> | |||
<text class="txt1">智慧停车即将上线</text> | |||
<text class="txt2">敬请期待</text> | |||
</view> | |||
<!-- --> | |||
<view bindtap="closeTicketModal" class="gray-bg" wx:if="{{showTicketModal}}"></view> | |||
<view class="ticket-modal" wx:if="{{showTicketModal}}"> | |||
<view style='padding-top:0;'> | |||
<view class="nocoupon" wx:if="{{ticketList.length==0}}" style="margin-top:100rpx;"> | |||
<image src="{{noCoupon}}" mode="widthFix" /> | |||
<text class="txt001">请您敬请期待</text> | |||
<text class='txt002'>我们正在筹备一大波优惠活动</text> | |||
<navigator class='nav' url="/pages/main/index" open-type="switchTab" hover-class="other-navigator-hover"> | |||
<button hover-class='active'>前往首页看看</button> | |||
</navigator> | |||
</view> | |||
<view wx:if="{{ticketList.length>0}}" class="ticket-title-tip"> | |||
<text>停车券</text> | |||
<icon bindtap="closeTicketModal" class="close-icon" type="cancel"></icon> | |||
</view> | |||
<scroll-view bindscrolltolower="getMoreList" scroll-y style="height:800rpx;"> | |||
<view class='section' wx:for='{{ticketList}}' wx:key='{{index}}' bindtap="choicecoupon" data-title="{{item.title}}" data-id="{{item.id}}"> | |||
<view class='mms'> | |||
<!-- <text>{{index}}</text> --> | |||
<image class='gou' wx:if="{{item.id==quanid}}" mode='widthFix' src='{{gouHr}}'></image> | |||
<view class='detail_msg'> | |||
<view class='info'> | |||
<view class='title'> | |||
<text>{{item.title}}</text> | |||
</view> | |||
<view class='subtitle'> | |||
<text>{{item.subTitle}}</text> | |||
</view> | |||
<view class="btns"> | |||
<text class='yuan' style='margin-right:10rpx;'>售价:{{item.salePrice/100}}元</text><text class='yuan' style='text-decoration:line-through' wx:if="{{item.unit==0}}">{{item.price/100}}元</text> | |||
<text class='yuan' style='text-decoration:line-through' wx:if="{{item.unit==1}}">{{item.price/100}}小时</text> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- <image class="liness" src='{{linessUrl}}' mode="widthFix"></image> --> | |||
<view class='expiretime'> | |||
<text class="txt1">有效期至:</text> | |||
<text class="txt1">{{item.expiredTime}}</text> | |||
</view> | |||
</view> | |||
</view> | |||
</scroll-view> | |||
<view class="loading" wx:if="{{loading}}"> | |||
<image src="{{loadingUrl}}" mode="widthFix"></image>{{content}} | |||
</view> | |||
</view> | |||
</view> |
@@ -69,11 +69,7 @@ page { | |||
font-size: 28rpx; | |||
} | |||
.yuan { | |||
display: inline-block; | |||
margin-left: 6rpx; | |||
color: #333; | |||
} | |||
.price { | |||
width: 690rpx; | |||
@@ -632,19 +628,229 @@ button::after { | |||
} | |||
.txt1 { | |||
font-size: 22rpx; | |||
color: #A6A6A6; | |||
letter-spacing: 0; | |||
} | |||
.txt2 { | |||
display: block; | |||
font-size: 28rpx; | |||
color: #999; | |||
letter-spacing: 0; | |||
text-align: center; | |||
line-height: 40rpx; | |||
margin-top: 10rpx; | |||
} | |||
.gray-bg { | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
width: 100%; | |||
height: 100%; | |||
z-index: 1000; | |||
background: rgba(0,0,0,.2); | |||
} | |||
.ticket-modal { | |||
position: fixed; | |||
left: 50%; | |||
top: 50%; | |||
width: 80%; | |||
height: 880rpx; | |||
z-index: 10000; | |||
transform: translate(-50%, -50%); | |||
background: #fff; | |||
} | |||
.nocoupon image { | |||
width: 300rpx; | |||
display: block; | |||
margin: 3% auto 0; | |||
} | |||
.txt001 { | |||
display: block; | |||
line-height: 48rpx; | |||
font-size: 34rpx; | |||
color: #333; | |||
letter-spacing: 0; | |||
text-align: center; | |||
} | |||
.txt2 { | |||
.txt002 { | |||
display: block; | |||
margin-top: 1%; | |||
font-size: 28rpx; | |||
color: #999; | |||
letter-spacing: 0; | |||
text-align: center; | |||
line-height: 40rpx; | |||
margin-top: 10rpx; | |||
text-align: center; | |||
} | |||
.nocoupon button { | |||
background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); | |||
color: #fff; | |||
font-size: 30rpx; | |||
width: 74%; | |||
border-radius: 60rpx; | |||
height: 78rpx; | |||
line-height: 78rpx; | |||
margin-top: 100rpx; | |||
} | |||
.loading { | |||
text-align: center; | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
font-size: 26rpx; | |||
color: #999; | |||
} | |||
.loading image { | |||
width: 60rpx; | |||
height: 60rpx; | |||
vertical-align: middle; | |||
margin-right: 10rpx; | |||
} | |||
.section { | |||
position: relative; | |||
width: 90%; | |||
margin-left: 5%; | |||
} | |||
.mms { | |||
width: 100%; | |||
height: 180rpx !important; | |||
background: #fff; | |||
/* padding: 30rpx 0 0; */ | |||
margin: 0 auto 40rpx; | |||
/* border-radius: 16rpx; */ | |||
/* border-top: 8rpx solid #02b7ff; */ | |||
box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.10); | |||
} | |||
.detail_msg { | |||
display: flex; | |||
padding-top: 16rpx; | |||
padding-bottom: 16rpx; | |||
background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); | |||
} | |||
.logo { | |||
width: 60rpx; | |||
height: 60rpx; | |||
/* border: 1px solid #f8f8f8; */ | |||
border-radius: 50rpx; | |||
display: block; | |||
margin: 15rpx 20rpx 0 20rpx; | |||
} | |||
.logo image { | |||
width: 60rpx; | |||
height: 60rpx; | |||
border-radius: 50%; | |||
} | |||
.info view:nth-child(1) { | |||
display: flex; | |||
justify-content: space-between; | |||
padding: 0 4%; | |||
margin-top: 15rpx; | |||
} | |||
.info { | |||
width: 100%; | |||
border-left: 1rpx #FFF dashed; | |||
} | |||
.info view:nth-child(1) text { | |||
font-size: 32rpx; | |||
line-height: 32rpx; | |||
height: 32rpx; | |||
color: #FFFFFF; | |||
letter-spacing: 0; | |||
width: 400rpx; | |||
display: inline-block; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
overflow: hidden; | |||
} | |||
.info view:nth-child(2) { | |||
padding-left: 4%; | |||
font-size: 22rpx; | |||
color: #FFFFFF; | |||
letter-spacing: 0; | |||
margin-top: 6rpx; | |||
display: inline-block; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
overflow: hidden; | |||
width: 400rpx; | |||
} | |||
.info view:nth-child(3) { | |||
margin-left: 20rpx; | |||
} | |||
.active { | |||
color: #fff; | |||
opacity: 0.6; | |||
/* background: #02c0ff; */ | |||
} | |||
.expiretime { | |||
display: block; | |||
width: 100%; | |||
text-align: left; | |||
text-indent: 1em; | |||
height: 50rpx; | |||
line-height: 50rpx; | |||
font-size: 22rpx; | |||
color: #A6A6A6; | |||
letter-spacing: 0; | |||
} | |||
.ticket-title-tip { | |||
position: relative; | |||
width: 100%; | |||
height: 76rpx; | |||
line-height: 76rpx; | |||
text-align: center; | |||
color: #353535; | |||
font-size: 34rpx; | |||
} | |||
.close-icon { | |||
position: absolute; | |||
right: 10rpx; | |||
transform: translateY(16rpx); | |||
} | |||
.btns { | |||
position: absolute; | |||
right: 120rpx; | |||
top: 50rpx; | |||
height: 48rpx; | |||
line-height: 48rpx; | |||
text-align: right; | |||
color: #FFF; | |||
font-size: 40rpx; | |||
} | |||
.yuan { | |||
color: #FFF; | |||
font-size: 26rpx; | |||
} | |||
.gou { | |||
position: absolute; | |||
top:45rpx; | |||
right: 30rpx; | |||
width: 60rpx; | |||
} |