Commit 70668ca0 authored by 潘永坪's avatar 潘永坪

联票电子门票增加取号功能

parent 96e086e4
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
<!-- 联票电子门票 --> <!-- 联票电子门票 -->
<view class="top"> <view class="top">
<text> <text>
{{orderInfo.productName}}X{{orderInfo.orderNum}} {{orderInfo.productName||''}}X{{orderInfo.orderNum||''}}
</text> </text>
<text> <text>
¥{{orderInfo.totalMoney}} ¥{{orderInfo.totalMoney||''}}
</text> </text>
</view> </view>
...@@ -47,158 +47,168 @@ ...@@ -47,158 +47,168 @@
</view> </view>
<template v-else> <template v-else>
<!-- 等于1为需要排号的景区 --> <!-- 未排号显示排号按钮 -->
<view class="product-number" v-if="item.showSortInfo==true" v-for="(item2,a) in item.sorts" :key='a'> <template v-if="item.showNumberBtn">
<!-- 1可进入等候区 --> <view style="text-align: center;padding-top: 30rpx;">
<view v-if="item2.sortFair==1" style="background: #31AA6B;color: #ffffff;border: none;"> <text class="btn" @click="sortAgain(item)">取号</text>
<view class="my-number" > </view>
<view>
<view>我的排队号</view> </template>
<view> <!-- 已排号显示排号信息 -->
{{item2.sortNo}} <template v-else>
<text class="my-number-name">({{item2.projectName}})</text> <view class="product-number" v-if="item.showSortInfo==true" v-for="(item2,a) in item.sorts" :key='a'>
<!-- 1可进入等候区 -->
<view v-if="item2.sortFair==1" style="background: #31AA6B;color: #ffffff;border: none;">
<view class="my-number" >
<view>
<view>我的排队号</view>
<view>
{{item2.sortNo}}
<text class="my-number-name">({{item2.projectName}})</text>
</view>
</view>
<view>
<view>预计进入时间</view>
<view>{{item2.sortNoTime}}</view>
</view>
</view>
<view class="current-number">
当前排队区间
<text>{{item2.showStart}}-{{item2.showEnd}}</text>
<text>({{item2.projectName}})</text>
</view>
<view class="number-notice" style="color: #9ed9ba;">
<view>
温馨提示:{{item2.config.paRowNumHint}}
</view>
<!-- 可以进入排队区提示 -->
<view>
{{item2.config.paArrivalNumHint}}
</view>
</view> </view>
</view> </view>
<view> <!-- 2已过号不可重排,3已过号可重排 -->
<view>预计进入时间</view> <view v-else-if="item2.sortFair==2||item2.sortFair==3" style="background: #F53F3F;color: #ffffff;">
<view>{{item2.sortNoTime}}</view> <!-- 等于1为过号允许再次排号 -->
</view> <view class="my-number" v-if="item2.config.paPassedNumEnable==1">
</view> <view >
<view class="current-number"> <view>我的排队号</view>
当前排队区间 <view>
<text>{{item2.showStart}}-{{item2.showEnd}}</text> {{item2.sortNo}}
<text>({{item2.projectName}})</text> <text class="my-number-name">({{item2.projectName}})</text>
</view> </view>
<view class="number-notice" style="color: #9ed9ba;"> </view>
<view> <view>
温馨提示:{{item2.config.paRowNumHint}} <view>您排队号已过</view>
</view> <view v-show="item2.sortFair==3">
<!-- 可以进入排队区提示 --> <!-- 1为过号提示确定后重新排号 -->
<view> <text class="number-btn" v-if="item2.config.paPassedNumTakeType==1" @click="clickSortAgain(item)">
{{item2.config.paArrivalNumHint}} 重新取号
</view> </text>
</view> <!-- 0为过号直接重新排号 -->
</view> <text class="number-btn" v-else @click="sortAgain(item)">重新取号</text>
<!-- 2已过号不可重排,3已过号可重排 --> </view>
<view v-else-if="item2.sortFair==2||item2.sortFair==3" style="background: #F53F3F;color: #ffffff;"> </view>
<!-- 等于1为过号允许再次排号 --> </view>
<view class="my-number" v-if="item2.config.paPassedNumEnable==1"> <!-- 等于0过号不允许再次排号,只进行提示 -->
<view > <view v-if="item2.config.paPassedNumEnable==0">
<view>我的排队号</view> <view>{{item2.config.paPassedNumHint}}</view>
<view> </view>
{{item2.sortNo}} <view class="current-number">
<text class="my-number-name">({{item2.projectName}})</text> 当前排队区间
<text>{{item2.showStart}}-{{item2.showEnd}}</text>
<text>({{item2.projectName}})</text>
</view> </view>
</view> </view>
<view> <!-- 4-可返程取号(仅胖丁显示),5-第一次取号(仅胖丁显示)-->
<view>您排队号已过</view> <view v-else-if="item2.sortFair==4||item2.sortFair==5" style="padding-top: 16rpx;">
<view v-show="item2.sortFair==3"> <view class="current-number">
<!-- 1为过号提示确定后重新排号 --> 当前排队区间
<text class="number-btn" v-if="item2.config.paPassedNumTakeType==1" @click="clickSortAgain(item)"> <text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text>
重新取号 <text style="color: #FE6600;">({{item2.projectName}})</text>
</view>
<!-- 1购票返程允许取号 -->
<view v-if="item2.config.paReturnTripNumEnable==1" style="margin-top: 30rpx;" >
<text v-if="canTakeNumber" @click="sortAgain(item)" class="number-btn2">取号</text>
<text v-else>
<text style="color: #FE6600;font-weight: bold;">{{minute}}</text>
<text style="color: #FE6600;font-weight: bold;">{{second}}</text>秒后可取号
</text> </text>
<!-- 0为过号直接重新排号 -->
<text class="number-btn" v-else @click="sortAgain(item)">重新取号</text>
</view> </view>
</view> <!-- 1购票返程不允许取号,仅提示 -->
</view> <view v-if="item2.config.paReturnTripNumEnable==0" style="margin-top: 30rpx;">
<!-- 等于0过号不允许再次排号,只进行提示 --> {{item.config.paReturnTripHint}}
<view v-if="item2.config.paPassedNumEnable==0">
<view>{{item2.config.paPassedNumHint}}</view>
</view>
<view class="current-number">
当前排队区间
<text>{{item2.showStart}}-{{item2.showEnd}}</text>
<text>({{item2.projectName}})</text>
</view>
</view>
<!-- 4-可返程取号(仅胖丁显示),5-第一次取号(仅胖丁显示)-->
<view v-else-if="item2.sortFair==4||item2.sortFair==5" style="padding-top: 16rpx;">
<view class="current-number">
当前排队区间
<text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text>
<text style="color: #FE6600;">({{item2.projectName}})</text>
</view>
<!-- 1购票返程允许取号 -->
<view v-if="item2.config.paReturnTripNumEnable==1" style="margin-top: 30rpx;" >
<text v-if="canTakeNumber" @click="sortAgain(item)" class="number-btn2">取号</text>
<text v-else>
<text style="color: #FE6600;font-weight: bold;">{{minute}}</text>
<text style="color: #FE6600;font-weight: bold;">{{second}}</text>秒后可取号
</text>
</view>
<!-- 1购票返程不允许取号,仅提示 -->
<view v-if="item2.config.paReturnTripNumEnable==0" style="margin-top: 30rpx;">
{{item.config.paReturnTripHint}}
</view>
</view>
<!-- 6已过闸 -->
<view v-else-if="item2.sortFair==6" style="color: #FE6600;">
温馨提示:您已过闸
</view>
<!-- 7提前通知-->
<view v-else-if="item2.sortFair==7">
<view class="my-number" >
<!-- 0显示排队号,1隐藏排队号 -->
<view v-if="item2.config.paHideNum!=1">
<view>我的排队号</view>
<view style="color: #FE6600;">
{{item2.sortNo}}
<text class="my-number-name">({{item2.projectName}})</text>
</view> </view>
</view> </view>
<!-- 0显示预计时间,1隐藏预计时间 --> <!-- 6已过闸 -->
<view v-if="item2.config.paHideEstimatedTime!=1"> <view v-else-if="item2.sortFair==6" style="color: #FE6600;">
<view >预计进入时间</view> 温馨提示:您已过闸
<view style="color: #FE6600;">{{item2.sortNoTime}}</view>
</view> </view>
</view> <!-- 7提前通知-->
<view class="current-number"> <view v-else-if="item2.sortFair==7">
当前排队区间 <view class="my-number" >
<text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text> <!-- 0显示排队号,1隐藏排队号 -->
<text style="color: #FE6600;">({{item2.projectName}})</text> <view v-if="item2.config.paHideNum!=1">
</view> <view>我的排队号</view>
<view class="number-notice"> <view style="color: #FE6600;">
<view style="color: #666666;"> {{item2.sortNo}}
温馨提示:{{item2.config.paRowNumHint}} <text class="my-number-name">({{item2.projectName}})</text>
</view> </view>
<view style="color: #FE6600;"> </view>
<text v-if="item2.config.paAdvanceNoticeDisplay"> <!-- 0显示预计时间,1隐藏预计时间 -->
{{item2.config.paAdvanceNoticeDisplay}} <view v-if="item2.config.paHideEstimatedTime!=1">
</text> <view >预计进入时间</view>
<text v-else> <view style="color: #FE6600;">{{item2.sortNoTime}}</view>
请尽快赶到现场等候,避免错过游玩时间。 </view>
</text> </view>
</view> <view class="current-number">
</view> 当前排队区间
</view> <text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text>
<!-- 未到号 --> <text style="color: #FE6600;">({{item2.projectName}})</text>
<view v-else> </view>
<view class="my-number" > <view class="number-notice">
<view> <view style="color: #666666;">
<view>我的排队号</view> 温馨提示:{{item2.config.paRowNumHint}}
<view style="color: #FE6600;"> </view>
{{item2.sortNo}} <view style="color: #FE6600;">
<text class="my-number-name">({{item2.projectName}})</text> <text v-if="item2.config.paAdvanceNoticeDisplay">
{{item2.config.paAdvanceNoticeDisplay}}
</text>
<text v-else>
请尽快赶到现场等候,避免错过游玩时间。
</text>
</view>
</view> </view>
</view> </view>
<view> <!-- 未到号 -->
<view>预计进入时间</view> <view v-else>
<view style="color: #FE6600;">{{item2.sortNoTime}}</view> <view class="my-number" >
<view>
<view>我的排队号</view>
<view style="color: #FE6600;">
{{item2.sortNo}}
<text class="my-number-name">({{item2.projectName}})</text>
</view>
</view>
<view>
<view>预计进入时间</view>
<view style="color: #FE6600;">{{item2.sortNoTime}}</view>
</view>
</view>
<view class="current-number">
当前排队区间
<text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text>
<text style="color: #FE6600;">({{item2.projectName}})</text>
</view>
<view class="number-notice" style="color: #666666;">
温馨提示:{{item2.config.paRowNumHint}}
</view>
</view> </view>
</view>
<view class="current-number">
当前排队区间
<text style="color: #FE6600;">{{item2.showStart}}-{{item2.showEnd}}</text>
<text style="color: #FE6600;">({{item2.projectName}})</text>
</view>
<view class="number-notice" style="color: #666666;">
温馨提示:{{item2.config.paRowNumHint}}
</view>
</view> </view>
</view> </template>
<!-- 后端返回了二维码才显示下面内容 --> <!-- 后端返回了二维码并且不显示取号按钮时才显示二维码-->
<view class="product-code" v-if="item.orderTicketDetailList.length>0&&item.orderTicketDetailList[0].ticketCode"> <view class="product-code" v-if="item.orderTicketDetailList.length>0&&item.orderTicketDetailList[0].ticketCode&&!item.showNumberBtn">
<view class="code-title"> <view class="code-title">
凭「入园码」直接入园 凭「入园码」直接入园
</view> </view>
...@@ -489,7 +499,7 @@ export default { ...@@ -489,7 +499,7 @@ export default {
} }
//清除排号信息函数2 //清除排号信息函数2
if(this.numberFlag) { if(this.numberFlag) {
clearInterval(this.numberFlag) clearTimeout(this.numberFlag)
this.numberFlag = null this.numberFlag = null
} }
//清除倒计时函数 //清除倒计时函数
...@@ -526,7 +536,7 @@ export default { ...@@ -526,7 +536,7 @@ export default {
} }
//清除排号信息函数2 //清除排号信息函数2
if(this.numberFlag) { if(this.numberFlag) {
clearInterval(this.numberFlag) clearTimeout(this.numberFlag)
this.numberFlag = null this.numberFlag = null
} }
//清除倒计时函数 //清除倒计时函数
...@@ -563,15 +573,16 @@ export default { ...@@ -563,15 +573,16 @@ export default {
item.showRefundDetail=false item.showRefundDetail=false
if(item.orderStatus==2||item.orderStatus==4||item.orderStatus==5||item.orderStatus==7){ if(item.orderStatus==2||item.orderStatus==4||item.orderStatus==5||item.orderStatus==7){
//订单状态为2、4、5、7时才获取排号信息 //订单状态为2、4、5、7时才获取排号信息
if(item.isFetch=='1'){ if(item.isFetch==1){
//为了提高性能,游玩时间等于今天才获取排号信息 //为了提高性能,游玩时间等于今天才获取排号信息
if(item.playDate.substr(0,10)==this.$commonjs.today()){ if(item.playDate.substr(0,10)==this.$commonjs.today()){
//获取排号信息 if(item.fetchNumberVoList&&item.fetchNumberVoList.length>0){
this.getSortInfo(item) //购买的当天票已经取号
//每两分钟刷新一次 this.getSortInfo(item)
this.numberFlag=setInterval(()=>{ }else{
this.getSortInfo(item) //还未取号的,显示取号按钮
},120*1000) item.showNumberBtn=true
}
} }
} }
} }
...@@ -579,10 +590,10 @@ export default { ...@@ -579,10 +590,10 @@ export default {
//subOrderType 子订单类型(0-胖丁分销,1-扫码购,2-自助机,3-组合,4-扫码牌,5-预订,6-反扫,7-收银机,8-码同步,9-押金,94-公众号,96-胖丁分销,99-酒店自营) //subOrderType 子订单类型(0-胖丁分销,1-扫码购,2-自助机,3-组合,4-扫码牌,5-预订,6-反扫,7-收银机,8-码同步,9-押金,94-公众号,96-胖丁分销,99-酒店自营)
//exchangeMode 验证方式:1胖丁二维码,2第三方二维码,3短信,4身份证 //exchangeMode 验证方式:1胖丁二维码,2第三方二维码,3短信,4身份证
if(item.subOrderType!=4&&item.subOrderType!=5){ if(item.subOrderType!=4&&item.subOrderType!=5){
//为了提高性能,游玩时间等于今天才获取排号信息 if(item.exchangeMode==4||item.exchangeMode==5){
if(item.playDate.substr(0,10)==this.$commonjs.today()){
if(item.exchangeMode==4||item.exchangeMode==5){
//多个二维码 //多个二维码
//为了提高性能,游玩时间等于今天才获取排号信息
if(item.playDate.substr(0,10)==this.$commonjs.today()){
if(item.orderStatus==2||item.orderStatus==4||item.orderStatus==5||item.orderStatus==7){ if(item.orderStatus==2||item.orderStatus==4||item.orderStatus==5||item.orderStatus==7){
//订单状态为2、4、5、7时才获取动态二维码 //订单状态为2、4、5、7时才获取动态二维码
this.getCodeList(item) this.getCodeList(item)
...@@ -881,68 +892,73 @@ export default { ...@@ -881,68 +892,73 @@ export default {
againNumber:0//首次排号 againNumber:0//首次排号
} }
this.$request('distribution/distribution/getNewFetchInfo',data).then((res)=>{ this.$request('distribution/distribution/getNewFetchInfo',data).then((res)=>{
if(res.code=='00'){ //防止代码bug进入catch里面,一直请求接口影响性能
if(res.data.length>0){ try{
//防止代码bug进入catch里面,一直请求接口影响性能 if(res.code=='00'){
try{ if(res.data.length>0){
let dataObj=res.data[0] let dataObj=res.data[0]
//由于页面不显示历史排号,所以只取第一个最新的排号信息 //由于页面不显示历史排号,所以只取第一个最新的排号信息
item.sorts=dataObj.sorts.slice(0,1)||[] item.sorts=dataObj.sorts.slice(0,1)||[]
item.sorts.forEach(item2=>{ item.sorts.forEach(item2=>{
//sceneSortStatus,1上架 //sceneSortStatus,1上架
if(item2.config.sceneSortStatus==1){ if(item2.config.sceneSortStatus==1){
//显示排号信息 //显示排号信息
item.showSortInfo=true item.showSortInfo=true
} }
if(item2.sortFair==4||item2.sortFair==5){ if(item2.sortFair==4||item2.sortFair==5){
//时间判断,用于返程或第一次取号时,是否可以显示取号按钮 //时间判断,用于返程或第一次取号时,是否可以显示取号按钮
let presentTime = new Date().getTime() let presentTime = new Date().getTime()
let time1=new Date((item2.createDate).replace(/-/g, '/')).getTime() let time1=new Date((item2.createDate).replace(/-/g, '/')).getTime()
let time2=parseInt((item2.config.paReturnTripTime)*60*1000) let time2=parseInt((item2.config.paReturnTripTime)*60*1000)
let takeNumberTime=time1+time2 let takeNumberTime=time1+time2
if(presentTime>takeNumberTime){ if(presentTime>takeNumberTime){
this.canTakeNumber =true this.canTakeNumber =true
}else{ }else{
//倒计时 //倒计时
//1.先计算时间差多少秒 //1.先计算时间差多少秒
let number=parseInt((takeNumberTime-presentTime)/1000) let number=parseInt((takeNumberTime-presentTime)/1000)
this.countFlag=setInterval(()=>{ this.countFlag=setInterval(()=>{
number-=1 number-=1
if(number<0){ if(number<0){
this.canTakeNumber =true this.canTakeNumber =true
clearInterval(this.countFlag) clearInterval(this.countFlag)
return return
} }
this.minute=parseInt(number/60) this.minute=parseInt(number/60)
this.second=parseInt(number-this.minute*60) this.second=parseInt(number-this.minute*60)
},1000) },1000)
} }
} }
}) })
//子产品获取公司Id,用于重排号传参 // //子产品获取公司Id,用于重排号传参
if(dataObj.pays.length>0){ // if(dataObj.pays.length>0){
item.merchantCodeCopy = dataObj.pays[0].companyId // item.merchantCodeCopy = dataObj.pays[0].companyId
} // }
//子产品获取三方Id,用于重排号传参 //子产品获取三方Id,用于重排号传参
item.thirdIdCopy=dataObj.order.orderId item.thirdIdCopy=dataObj.order.orderId
//子产品获取站点编码,用于重排号传参 //子产品获取站点编码,用于重排号传参
if(item.sorts.length>0){ // if(item.sorts.length>0){
item.areaCodeCopy=item.sorts[0].projectId // item.areaCodeCopy=item.sorts[0].projectId
} // }
this.$forceUpdate() this.$forceUpdate()
}catch(e){ //每两分钟刷新一次
uni.showToast({ this.numberFlag=setTimeout(()=>{
title: e, this.getSortInfo(item)
icon: 'none' },120*1000)
})
} }
} }else{
}else{ uni.showToast({
uni.showToast({ title: res.message,
title: res.message, icon: 'none'
icon: 'none' })
}) }
} }catch(e){
uni.showToast({
title: e,
icon: 'none'
})
}
}).catch((err)=>{ }).catch((err)=>{
this.numberTimer=setTimeout(()=>{ this.numberTimer=setTimeout(()=>{
this.getSortInfo(item) this.getSortInfo(item)
...@@ -959,13 +975,16 @@ export default { ...@@ -959,13 +975,16 @@ export default {
let data={ let data={
againNumber:1, againNumber:1,
thirdId:item.thirdIdCopy,//三方订单id thirdId:item.thirdIdCopy,//三方订单id
areaCode:item.areaCodeCopy,//站点 areaCode:item.areaCode,//站点
userId:this.openid, userId:this.openid,
merchantCode:item.merchantCodeCopy, merchantCode:item.merchantCode,
} }
this.$request('distribution/distribution/newFetchNumber',data).then((res)=>{ this.$request('distribution/distribution/newFetchNumber',data).then((res)=>{
if(res.code=='00'){ if(res.code=='00'){
//隐藏弹窗
this.showModal=false this.showModal=false
//隐藏取号按钮
item.showNumberBtn=false
this.getSortInfo(item) this.getSortInfo(item)
}else{ }else{
uni.showToast({ uni.showToast({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment