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

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

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