| @@ -3,6 +3,7 @@ | |||
| "pages/index/index", | |||
| "index/index", | |||
| "index/searchbar", | |||
| "pages/store/index", | |||
| "index/passCar", | |||
| "index/user", | |||
| "pages/searchbar/searchbar", | |||
| @@ -57,6 +57,13 @@ Component({ | |||
| wx.makePhoneCall({ | |||
| phoneNumber: e.target.dataset.merchantlinkphone | |||
| }); | |||
| }, | |||
| gotoDoorLists(){ | |||
| console.log(this.properties.merchantVoList) | |||
| let merchantVoList = JSON.stringify(this.properties.merchantVoList); | |||
| wx.navigateTo({ | |||
| url: '/pages/store/index?merchantVoList=' + merchantVoList, | |||
| }) | |||
| } | |||
| }, | |||
| ready: function () { | |||
| @@ -1,4 +1,4 @@ | |||
| <view class='applyshop'>适用门店</view> | |||
| <!-- <view class='applyshop'>适用门店</view> | |||
| <view class='posi' style='overflow:{{hidden}};height:{{height}}'> | |||
| <view class='posi_logo' wx:for="{{merchantVoList}}" wx:key="index"> | |||
| <view bindtap='gotoDetail' data-id='{{item.id}}'> | |||
| @@ -16,4 +16,13 @@ | |||
| <image wx:if="{{item.linkLinePhone}}" bindtap='phone' data-merchantLinkPhone='{{item.linkLinePhone}}' class="tel" src="{{teljpgUrl}}" mode="widthFix" /> | |||
| </view> | |||
| </view> | |||
| <view class='bottom' bindtap='more' wx:if="{{showMore}}">{{more}}</view> | |||
| <view class='bottom' bindtap='more' wx:if="{{showMore}}">{{more}}</view> --> | |||
| <view class='notes'> | |||
| <view> | |||
| <text>适用门店</text> | |||
| </view> | |||
| <view> | |||
| <text bindtap='gotoDoorLists'>查看</text> | |||
| </view> | |||
| </view> | |||
| @@ -73,4 +73,47 @@ | |||
| margin: auto; | |||
| width: 50rpx; | |||
| height: 50rpx; | |||
| } | |||
| .notes view:nth-child(1) { | |||
| height: 87rpx; | |||
| line-height: 87rpx; | |||
| background: #fff; | |||
| border-top: 1px solid #f9f9f9; | |||
| } | |||
| .notes { | |||
| width:100%; | |||
| background: #FFF; | |||
| padding-bottom: 30rpx; | |||
| } | |||
| .active { | |||
| opacity: 0.6; | |||
| } | |||
| .notes view:nth-child(1) text { | |||
| color: #333; | |||
| letter-spacing: 0; | |||
| font-size: 30rpx; | |||
| height: 70rpx; | |||
| line-height: 70rpx; | |||
| } | |||
| .notes view:nth-child(1) { | |||
| width: 92%; | |||
| margin: 0 auto; | |||
| } | |||
| .notes view:nth-child(2) { | |||
| display: flex; | |||
| flex-direction: column; | |||
| width: 92%; | |||
| margin: 0 auto; | |||
| } | |||
| .notes view:nth-child(2)>text { | |||
| font-size: 24rpx; | |||
| color: #919191; | |||
| letter-spacing: 0; | |||
| line-height: 42rpx; | |||
| } | |||
| @@ -1,157 +1,5 @@ | |||
| <navbar text="停车"></navbar> | |||
| <view class='container' wx:if="{{ifHaveCarModular == 1}}" style="padding-top:{{navigationBarHeight}}"> | |||
| <view class='top'> | |||
| <view class='header'> | |||
| <image src='{{parkUrl}}' mode="widthFix"></image>{{park.addr}} | |||
| (<text style='color:#f86661;'>{{park.number}}</text>车位)</view> | |||
| </view> | |||
| <view class='borderBox'> | |||
| <view class='passNumberBox'> | |||
| <!-- 有车牌的时候显示 --> | |||
| <view class='passUp'> | |||
| <view class='addicense_active' wx:if='{{carList.length>0}}'> | |||
| <swiper current="{{current}}" bindchange='onSlideChangeEnd' class='swiper swiper-box' circular='true' indicator-dots='{{indicatorDots}}' autoplay='{{autoplay}}' interval='1500' duration='1500'> | |||
| <block wx:for='{{carList}}' wx:key="unique"> | |||
| <swiper-item class="swiper-item" data-memberKeyword='{{item.carNumber}}'> | |||
| <view class='clearfix clearfix1'> | |||
| <text class='txt01'>{{item.carNumber}}</text> | |||
| </view> | |||
| </swiper-item> | |||
| </block> | |||
| </swiper> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class='orderBox' wx:if="{{stopFees.orderId&&carList.length>0&&3>=carList.length}}"> | |||
| <view class='clearfix'> | |||
| <text class="fl">入场时间:</text> | |||
| <text class='fr time'>{{stopFees.entranceTime}}</text> | |||
| </view> | |||
| <view class='clearfix'> | |||
| <text class="fl">停车时长:</text> | |||
| <text class='fr time'>{{timecha}}</text> | |||
| </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>{{totalTicketNum}}张可用</text> | |||
| <image class='jiant' src='{{jianUrl}}' mode='widthFix'></image> | |||
| </view> | |||
| </view> | |||
| <view class="clearfix"> | |||
| <text class="fl">待缴费用:</text> | |||
| <text class='fr' style='color:#ff4949;'>{{stopFees.remainingFee}}元</text> | |||
| </view> | |||
| <!-- 停车费用大于0 --> | |||
| <view class="buy-view" wx:if="{{stopFees.orderId&&stopFees.remainingFee>0}}"> | |||
| <navigator bindfail="bindfail" path="pages/pay/order-pay-open/main" wx:if="{{canIUse}}" class='buy' target="miniProgram" open-type="navigate" app-id="{{etcpAppId}}" extra-data='{{extraData}}' version="{{etcpVersion}}"> | |||
| 立即支付 | |||
| </navigator> | |||
| <view wx:if="{{!canIUse}}" class='buy' bindtap='gotoetcp'>立即支付</view> | |||
| </view> | |||
| <!-- 停车费用为0 --> | |||
| <view wx:if="{{stopFees.remainingFee==0}}" class='buy' bindtap='paySuccess'>立即支付</view> | |||
| </view> | |||
| <!-- 没有车牌的时候显示 --> | |||
| <view class='borderUp' bindtap='jumpToAdd' wx:if="{{carList.length==0}}"> | |||
| <view class="myCars"> | |||
| <!-- <image src='{{addUrl}}' mode="widthFix"></image> --> | |||
| 添加车牌 | |||
| </view> | |||
| <text class='carNumber'>车辆入场后,才能绑车牌</text> | |||
| </view> | |||
| <view class='bottonBox'> | |||
| <view class='textStyle' bindtap='showquan'> | |||
| <image src='{{tingcheHr}}'></image> | |||
| 我的停车券 | |||
| <view class='detail'> | |||
| <image src='{{jianUrl}}'></image> | |||
| </view> | |||
| </view> | |||
| <view class='textStyle' bindtap='gotomange'> | |||
| <image src='{{guanliHr}}'></image> | |||
| 车辆管理 | |||
| <view class='detail'> | |||
| <image src='{{jianUrl}}'></image> | |||
| </view> | |||
| </view> | |||
| <view class='textStyle' bindtap='gotodetail' data-rule='{{park.stopFee}}'> | |||
| <image src='{{jiaofei}}'></image> | |||
| 缴费规则 | |||
| <view class='detail'> | |||
| <image src='{{jianUrl}}'></image> | |||
| </view> | |||
| </view> | |||
| <view class='textStyle' bindtap='passc'> | |||
| <image src='{{wentiHr}}'></image> | |||
| 常见问题 | |||
| <view class='detail'> | |||
| <image src='{{jianUrl}}'></image> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="con" wx:if="{{ifHaveCarModular == 0}}" style="padding-top:{{navigationBarHeight}}"> | |||
| <view class="con" style="padding-top:{{navigationBarHeight}}"> | |||
| <image class="img" src="{{parkUrl}}" mode="widthFix"></image> | |||
| <text class="txt1">智慧停车即将上线</text> | |||
| <text class="txt2">敬请期待</text> | |||
| </view> | |||
| <!-- --> | |||
| <view bindtap="closeTicketModal" class="gray-bg" catchtouchmove="cancelMove" 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="/index/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> | |||
| @@ -0,0 +1,66 @@ | |||
| // index/store/index.js | |||
| Page({ | |||
| /** | |||
| * 页面的初始数据 | |||
| */ | |||
| data: { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad: function (options) { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面初次渲染完成 | |||
| */ | |||
| onReady: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面显示 | |||
| */ | |||
| onShow: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面隐藏 | |||
| */ | |||
| onHide: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面卸载 | |||
| */ | |||
| onUnload: function () { | |||
| }, | |||
| /** | |||
| * 页面相关事件处理函数--监听用户下拉动作 | |||
| */ | |||
| onPullDownRefresh: function () { | |||
| }, | |||
| /** | |||
| * 页面上拉触底事件的处理函数 | |||
| */ | |||
| onReachBottom: function () { | |||
| }, | |||
| /** | |||
| * 用户点击右上角分享 | |||
| */ | |||
| onShareAppMessage: function () { | |||
| } | |||
| }) | |||
| @@ -0,0 +1,66 @@ | |||
| // index/store/index.js.js | |||
| Page({ | |||
| /** | |||
| * 页面的初始数据 | |||
| */ | |||
| data: { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad: function (options) { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面初次渲染完成 | |||
| */ | |||
| onReady: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面显示 | |||
| */ | |||
| onShow: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面隐藏 | |||
| */ | |||
| onHide: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面卸载 | |||
| */ | |||
| onUnload: function () { | |||
| }, | |||
| /** | |||
| * 页面相关事件处理函数--监听用户下拉动作 | |||
| */ | |||
| onPullDownRefresh: function () { | |||
| }, | |||
| /** | |||
| * 页面上拉触底事件的处理函数 | |||
| */ | |||
| onReachBottom: function () { | |||
| }, | |||
| /** | |||
| * 用户点击右上角分享 | |||
| */ | |||
| onShareAppMessage: function () { | |||
| } | |||
| }) | |||
| @@ -0,0 +1,3 @@ | |||
| { | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,2 @@ | |||
| <!--index/store/index.js.wxml--> | |||
| <text>index/store/index.js.wxml</text> | |||
| @@ -0,0 +1 @@ | |||
| /* index/store/index.js.wxss */ | |||
| @@ -0,0 +1,3 @@ | |||
| { | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,2 @@ | |||
| <!--index/store/index.wxml--> | |||
| <text>index/store/index.wxml</text> | |||
| @@ -0,0 +1 @@ | |||
| /* index/store/index.wxss */ | |||
| @@ -93,7 +93,7 @@ | |||
| </view> | |||
| </view> | |||
| <!-- 适用门店 --> | |||
| <store merchantVoList="{{merchantVoList}}"></store> | |||
| <store merchantVoList="{{merchantVoList}}"></store> | |||
| <view class='notes'> | |||
| <view> | |||
| <text>购买须知</text> | |||
| @@ -0,0 +1,66 @@ | |||
| // pages/index/store/index.js | |||
| Page({ | |||
| /** | |||
| * 页面的初始数据 | |||
| */ | |||
| data: { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad: function (options) { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面初次渲染完成 | |||
| */ | |||
| onReady: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面显示 | |||
| */ | |||
| onShow: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面隐藏 | |||
| */ | |||
| onHide: function () { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面卸载 | |||
| */ | |||
| onUnload: function () { | |||
| }, | |||
| /** | |||
| * 页面相关事件处理函数--监听用户下拉动作 | |||
| */ | |||
| onPullDownRefresh: function () { | |||
| }, | |||
| /** | |||
| * 页面上拉触底事件的处理函数 | |||
| */ | |||
| onReachBottom: function () { | |||
| }, | |||
| /** | |||
| * 用户点击右上角分享 | |||
| */ | |||
| onShareAppMessage: function () { | |||
| } | |||
| }) | |||
| @@ -0,0 +1,3 @@ | |||
| { | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,2 @@ | |||
| <!--pages/index/store/index.wxml--> | |||
| <text>pages/index/store/index.wxml</text> | |||
| @@ -0,0 +1 @@ | |||
| /* pages/index/store/index.wxss */ | |||
| @@ -0,0 +1,74 @@ | |||
| const imgurl = require("../../utils/imgurl"); | |||
| const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' | |||
| Page({ | |||
| /** | |||
| * 组件的初始数据 | |||
| */ | |||
| data: { | |||
| navigationBarHeight, | |||
| teljpgUrl: imgurl.teljpg.url, | |||
| showMore: true, | |||
| more: "点击查看更多", | |||
| hidden: "hidden", | |||
| height: "", | |||
| merchantVoList:[] | |||
| }, | |||
| /** | |||
| * 跳转到门店列表的详情页面 | |||
| */ | |||
| gotoDetail(e) { | |||
| wx.navigateTo({ | |||
| url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` | |||
| }) | |||
| }, | |||
| // 点击查看更多 | |||
| more: function () { | |||
| let that = this; | |||
| if (that.data.more == '点击查看更多') { | |||
| this.setData({ | |||
| hidden: "", | |||
| height: 'auto!important', | |||
| more: "点击收起", | |||
| showMore: true | |||
| }) | |||
| } else { | |||
| that.setData({ | |||
| hidden: "hidden", | |||
| height: 4 * 140 + 'rpx', | |||
| more: "点击查看更多", | |||
| showMore: true | |||
| }) | |||
| } | |||
| }, | |||
| phone: function (e) { | |||
| let that = this; | |||
| wx.makePhoneCall({ | |||
| phoneNumber: e.target.dataset.merchantlinkphone | |||
| }); | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad: function (options) { | |||
| if (options.merchantVoList){ | |||
| this.setData({ | |||
| merchantVoList: JSON.parse(options.merchantVoList) | |||
| }) | |||
| let merchantVoList = this.data.merchantVoList; | |||
| if (merchantVoList.length > 0) { | |||
| if (merchantVoList.length <= 4) { | |||
| this.setData({ | |||
| height: merchantVoList.length * 140 + 'rpx', | |||
| showMore: false, | |||
| hidden: "hidden" | |||
| }) | |||
| } else if (merchantVoList && merchantVoList.length > 4) { | |||
| this.setData({ | |||
| height: 4 * 140 + 'rpx' | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| }) | |||
| @@ -0,0 +1,8 @@ | |||
| { | |||
| "navigationBarTitleText": "", | |||
| "navigationBarBackgroundColor": "#F4F5F9", | |||
| "navigationBarTextStyle": "black", | |||
| "usingComponents": { | |||
| "navbar": "../../../../components/navbar/navbar" | |||
| } | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| <navbar back home text="适用门店"></navbar> | |||
| <view class='posi' style="padding-top:{{navigationBarHeight}};"> | |||
| <view class='posi_logo' wx:for="{{merchantVoList}}" wx:key="index"> | |||
| <view bindtap='gotoDetail' data-id='{{item.id}}'> | |||
| <image src='{{item.merchantImgUrl}}'></image> | |||
| </view> | |||
| <view bindtap='gotoDetail' data-id='{{item.id}}'> | |||
| <view class='name'>{{item.merchantName}}</view> | |||
| <view class='shopVoList'> | |||
| <view wx:for="{{item.shopVoList}}" wx:key="{{index}}" wx:for-item="itemName"> | |||
| <text>{{itemName.buildingName}}{{itemName.floorName}}--{{itemName.shopNumber}}</text> | |||
| <text class='douhao' wx:if="{{item.shopVoList.length>1}}">,</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <image wx:if="{{item.linkLinePhone}}" bindtap='phone' data-merchantLinkPhone='{{item.linkLinePhone}}' class="tel" src="{{teljpgUrl}}" mode="widthFix" /> | |||
| </view> | |||
| </view> | |||
| <view class='bottom' bindtap='more' wx:if="{{showMore}}">{{more}}</view> | |||
| @@ -0,0 +1,119 @@ | |||
| .applyshop { | |||
| font-size: 30rpx; | |||
| height: 70rpx; | |||
| line-height: 70rpx; | |||
| text-indent: 1em; | |||
| color: #333; | |||
| background: #fff; | |||
| } | |||
| .posi { | |||
| position: relative; | |||
| width: 100%; | |||
| background: #FFF; | |||
| } | |||
| .posi_logo { | |||
| position: relative; | |||
| width: 92%; | |||
| display: flex; | |||
| padding: 20rpx 0; | |||
| background: #fff; | |||
| margin: 0 auto; | |||
| } | |||
| .posi_logo view:nth-child(1) { | |||
| border-radius: 16rpx; | |||
| } | |||
| .posi_logo view:nth-child(1) image { | |||
| display: block; | |||
| width: 100rpx; | |||
| height: 100rpx; | |||
| border-radius: 16rpx; | |||
| margin-right: 16rpx; | |||
| border: 1px solid #e5e5e5; | |||
| } | |||
| .name{ | |||
| font-size: 32rpx; | |||
| color: #333; | |||
| letter-spacing: 0; | |||
| width: 500rpx; | |||
| white-space: nowrap; | |||
| text-overflow: ellipsis; | |||
| overflow: hidden; | |||
| } | |||
| .posi_logo view:nth-child(2) view { | |||
| font-size: 32rpx; | |||
| color: #333; | |||
| letter-spacing: 0; | |||
| } | |||
| .shopVoList { | |||
| display: flex !important; | |||
| padding-left: 0 !important; | |||
| flex-direction: row !important; | |||
| } | |||
| .shopVoList text { | |||
| font-size: 20rpx !important; | |||
| color: #b8b8b8 !important; | |||
| } | |||
| .bottom{ | |||
| background: #fff; | |||
| color: #666; | |||
| text-align: center; | |||
| padding: 20rpx 0; | |||
| font-size: 32rpx; | |||
| } | |||
| .tel { | |||
| position: absolute; | |||
| right: 0; | |||
| top: 0; | |||
| bottom: 0; | |||
| margin: auto; | |||
| width: 50rpx; | |||
| height: 50rpx; | |||
| } | |||
| .notes view:nth-child(1) { | |||
| height: 87rpx; | |||
| line-height: 87rpx; | |||
| background: #fff; | |||
| border-top: 1px solid #f9f9f9; | |||
| } | |||
| .notes { | |||
| width:100%; | |||
| background: #FFF; | |||
| padding-bottom: 30rpx; | |||
| } | |||
| .active { | |||
| opacity: 0.6; | |||
| } | |||
| .notes view:nth-child(1) text { | |||
| color: #333; | |||
| letter-spacing: 0; | |||
| font-size: 30rpx; | |||
| height: 70rpx; | |||
| line-height: 70rpx; | |||
| } | |||
| .notes view:nth-child(1) { | |||
| width: 92%; | |||
| margin: 0 auto; | |||
| } | |||
| .notes view:nth-child(2) { | |||
| display: flex; | |||
| flex-direction: column; | |||
| width: 92%; | |||
| margin: 0 auto; | |||
| } | |||
| .notes view:nth-child(2)>text { | |||
| font-size: 24rpx; | |||
| color: #919191; | |||
| letter-spacing: 0; | |||
| line-height: 42rpx; | |||
| } | |||