Commit 4fb4cde4 authored by 潘永坪's avatar 潘永坪

OTA取号开发

parent 0e4fcbdd
<template>
<view class="page-box">
<view class="order-status">
<view class="status-box">
<template v-if="channelType==1">
<view class="status-type">
携程<text style="font-size: 28rpx;margin-left: 10rpx;">{{orderInfo.merchantName}}{{orderInfo.productName}}</text>
</view>
</template>
<template v-else>
<view class="status-type" v-if="orderInfo.orderStatus==2">
<!-- <template v-if="orderInfo.orderType==1">
出票成功
</template>
<template v-else-if="orderInfo.orderType==2">
预订成功
</template>
<template v-else-if="orderInfo.orderType==3">
预订成功
</template>
<template v-else-if="orderInfo.orderType==4">
购买成功
</template> -->
{{orderInfo.orderStatus|orderStatus1}}
</view>
<!-- {{orderInfo.merchantName}}({{orderInfo.productName}}) -->
<view class="status-product" v-if="orderInfo.orderStatus==6">款项预计1-7个工作日退回原支付账户</view>
</template>
</view>
</view>
<template v-if="orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==2||orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==2">
<view class="order-certificate order-allType order-positionTop" :class="orderInfo.orderStatus==6?'order-positionTopAct':''" >
<!-- <view class="alltype-title">
<view class="title-line">
<view></view>
</view>
<view class="title-label">入园凭证</view>
</view> -->
<view class="certificate-box" v-if="ifyukuaiCode!=''&&ifyukuaiCode!='undefined'">
<view class="box-prompt2">温馨提示</view>
<!-- <view class="box-prompt2">验证码用于入园游玩时核验使用</view>
<view class="box-prompt2">注:验证码信息已自动同步至订单所有游玩人渝快码,游玩人直接使用本人渝快码即可入园核验</view> -->
<view class="box-prompt2">购票用户直接使用本人渝快码即可入园核验</view>
<view class="box-promptBtn" @click="returnMini()">我知道了</view>
</view>
<view class="certificate-box" v-else-if="orderInfo.exchangeMode==1||orderInfo.exchangeMode==4||orderInfo.exchangeMode==5">
<view class="box-verificationCode">验证码:{{ticketCode}}</view>
<canvas class="box-QRcode" canvas-id="qrcode"/>
<view class="progress-box" v-if="qrCodeType==true">
<progress :percent="percentage" activeColor="#3688FF" stroke-width="3" />
</view>
<!-- <view class="box-prompt">自动更新,截屏无效</view> -->
<view class="box-prompt2">{{qrCodeType==true?'二维码自动更新,截屏无法验证':''}}</view>
</view>
<view class="certificate-box" v-else-if="orderInfo.exchangeMode==2">
<view class="box-verificationCode">验证码:{{ticketCode}}</view>
<view class="box-verificationCode">请使用身份证过闸</view>
</view>
<view class="certificate-box" v-else-if="orderInfo.exchangeMode==3">
<view class="box-verificationCode">兑换码:{{ticketCode}}</view>
</view>
</view>
</template>
<view class="order-queueUp order-allType order-positionTop" v-if="orderInfo.isFetch==1&&sortsInfo&&sortData[0].config.sceneSortStatus==1&&orderInfo.orderStatus==4||orderInfo.isFetch==1&&sortsInfo&&sortData[0].config.sceneSortStatus==1&&orderInfo.orderStatus==2">
<view class="alltype-title">
<!-- <view class="title-line">
<view></view>
</view> -->
<view class="title-label">排队详情</view>
<!-- <u-icon name="reload"></u-icon> -->
</view>
<!-- 未过号 -->
<!-- <template v-if="sortData[0].sortFair===0">
<view class="queueUp-rowNumber" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list">
<text class="list-name">正排队号区间:</text>
<view class="list-value">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">我的排队号:</text>
<view class="list-value">{{item.sortNo}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">预计进入时间:</text>
<text class="list-value">{{item.sortNoTime}}</text>
</view>
<view class="rowNumber-list">
<text class="list-name">排号温馨提示:</text>
<text class="list-value2">{{item.config.paRowNumHint}}</text>
</view>
</view>
</template> -->
<!-- 返程排号/第一次取号 -->
<template v-if="sortData[0].sortFair===4||sortData[0].sortFair===5">
<view class="queueUp-rowNumber" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list rowNumber-list2">
<text class="list-name">正排队号区间:</text>
<view class="list-value3">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-takeNum" v-if="returnTripType==true&&item.config.paReturnTripNumEnable==1" @click="sortAgain(item)">取号</view>
<view class="rowNumber-takeTimer" v-if="returnTripType==false&&item.config.paReturnTripNumEnable==1">{{m}}{{s}}秒后可取号</view>
<view class="rowNumber-takeTimer" v-if="item.config.paReturnTripNumEnable==0">{{item.config.paReturnTripHint}}</view>
</view>
</template>
<!-- 可进入 -->
<template v-else-if="sortData[0].sortFair===1">
<view class="queueUp-rowNumber queueUp-rowNumber2" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list">
<text class="list-name">正排队号区间:</text>
<view class="list-value">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">我的排队号:</text>
<view class="list-value">{{item.sortNo}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">预计进入时间:</text>
<text class="list-value">{{item.sortNoTime}}</text>
</view>
<view class="rowNumber-list">
<text class="list-name">排号温馨提示:</text>
<text class="list-value2">{{item.config.paRowNumHint}}</text>
</view>
<view class="rowNumber-list">
<text class="list-name">&nbsp;</text>
<text class="list-value2">{{item.config.paArrivalNumHint}}</text>
</view>
</view>
</template>
<!-- 过号 -->
<template v-else-if="sortData[0].sortFair===2||sortData[0].sortFair===3">
<view class="queueUp-rowNumber queueUp-rowNumber3" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list rowNumber-list2">
<text class="list-name">正排队号区间:</text>
<view class="list-value3">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list rowNumber-list2" v-if="item.config.paPassedNumEnable==1">
<view class="rowNumber-signOver">我的排号:</view>
<view class="list-value">{{item.sortNo}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list rowNumber-list2" v-if="item.config.paPassedNumEnable==1">
<view class="rowNumber-signOver">您排队号已过</view>
<view class="rowNumber-takeNum2" v-if="item.sortFair===3" @click="signOverFun(item)">取号</view>
</view>
<view class="rowNumber-list rowNumber-list2" v-else>
<view class="rowNumber-signOver">{{item.config.paPassedNumHint}}</view>
</view>
</view>
</template>
<!-- 可进入 -->
<template v-else-if="sortData[0].sortFair===6">
<view class="queueUp-rowNumber queueUp-rowNumber2" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list">
<text class="list-name">排号温馨提示:</text>
<text class="list-value2">您已过闸</text>
</view>
</view>
</template>
<!-- 提前通知 -->
<template v-else-if="sortData[0].sortFair===7">
<view class="queueUp-rowNumber" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list" v-if="item.config.paHideNum==0||item.config.paHideNum==undefined">
<text class="list-name">正排队号区间:</text>
<view class="list-value3">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list" v-if="item.config.paHideEstimatedTime==0||item.config.paHideEstimatedTime==undefined">
<text class="list-name">预计进入时间:</text>
<text class="list-value">{{item.sortNoTime}}</text>
</view>
<view class="rowNumber-list">
<text class="list-name">我的排队号:</text>
<view class="list-value">{{item.sortNo}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list" style="margin-bottom: 0;">
<text class="list-name">排号温馨提示:</text>
<text class="list-value2">
{{item.config.paRowNumHint}}
</text>
</view>
<view class="rowNumber-list">
<text class="list-name">&nbsp;</text>
<text class="list-value2" style="color: #3688FF;" v-if="item.config.paAdvanceNoticeDisplay!=undefined">
{{item.config.paAdvanceNoticeDisplay}}
</text>
<text class="list-value2" style="color: #3688FF;" v-else>
请尽快赶到现场等候,避免错过游玩时间。
</text>
</view>
</view>
</template>
<!-- 未过号 -->
<template v-else>
<view class="queueUp-rowNumber" v-for="(item,index) in sortData" :key="index">
<view class="rowNumber-list">
<text class="list-name">正排队号区间:</text>
<view class="list-value">{{item.showStart}} ~ {{item.showEnd}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">我的排队号:</text>
<view class="list-value">{{item.sortNo}}<text style="font-size: 28rpx;margin-left: 8rpx;line-height: 56rpx;">({{item.projectName}})</text></view>
</view>
<view class="rowNumber-list">
<text class="list-name">预计进入时间:</text>
<text class="list-value">{{item.sortNoTime}}</text>
</view>
<view class="rowNumber-list">
<text class="list-name">排号温馨提示:</text>
<text class="list-value2">{{item.config.paRowNumHint}}</text>
</view>
</view>
</template>
<!-- 历史排号 未过号 -->
<view class="queueUp-historyNum">
历史排号:
<template v-for="(item,index) in sortsAll">
<text v-if="index!==0||item.sortFair==6" :key="index">{{item.sortNo}}({{item.projectName}})</text>
</template>
</view>
</view>
<view class="order-vouchers" v-if="photoType==true">
<image class="vouchers-img" src="../../../../static/img/my/bookmark.png"></image>
<view class="vouchers-title">恭喜您!获得摄影抵用券{{findCouponPhoto.couponPrice}}元</view>
<view class="vouchers-address">使用地址:长江索道南站观景台旁</view>
<view class="vouchers-btn">
<view class="btn-click" @click="immediateClaim()" v-if="claimStatus==0">立即领取</view>
<view class="btn-click" v-else>已领取</view>
<view class="btn-to" @click="toMyCoupon()">
使用规则
<u-icon name="arrow-right" color="#333333"></u-icon>
</view>
</view>
</view>
<view class="order-mes order-allType order-positionTop">
<view class="alltype-title" @click="orderTypeNumFun()">
<!-- <view class="title-line">
<view></view>
</view> -->
<view class="title-label">订单信息</view>
<u-icon name="arrow-down" v-if="orderTypeNum==0" style="color: #999999 !important;"></u-icon>
<u-icon name="arrow-up" v-if="orderTypeNum==1" style="color: #999999 !important;"></u-icon>
</view>
<view class="mes-box" v-if="orderTypeNum==1">
<view class="box-case">
<view class="case-list">
<view class="list-name">订单编号</view>
<view class="list-text list-text2">{{orderInfo.id}}</view>
<image class="list-btn" @click="copyText(orderInfo.id)" src="../../../../static/img/my/icon01.png"></image>
<!-- <view class="list-btn" @click="copyText(orderInfo.id)">复制</view> -->
</view>
<view class="case-list">
<view class="list-name">产品名称</view>
<view class="list-text">{{orderInfo.merchantName}}({{orderInfo.productName}})</view>
</view>
<view class="case-list">
<view class="list-name">购买数量</view>
<view class="list-text">{{orderInfo.orderNum}}</view>
</view>
<view class="case-list">
<view class="list-name">购买时间</view>
<view class="list-text">{{orderInfo.orderTime}}</view>
</view>
<view class="case-list">
<view class="list-name">使用日期</view>
<view class="list-text">{{orderInfo.playDate?orderInfo.playDate.substr(0,10):""}}</view>
</view>
<view class="case-list">
<view class="list-name">游玩时间</view>
<view class="list-text">{{orderInfo.startPlayTime?orderInfo.startPlayTime.substr(0,5):""}} ~ {{orderInfo.endPlayTime?orderInfo.endPlayTime.substr(0,5):""}}</view>
</view>
<view class="case-list" v-for="(item,index) in orderExtendList" :key="index">
<view class="list-name">{{item.title}}</view>
<view class="list-text">{{item.content}}</view>
</view>
</view>
<view class="box-case" v-if="touristInfo.length>0">
<view class="case-list">
<view class="list-name">联系信息</view>
<view class="list-text">
<view >
<view>{{touristInfo[0].name}} {{touristInfo[0].phone}}</view>
</view>
</view>
</view>
<view class="case-list">
<view class="list-name">用户信息</view>
<view class="list-text">
<view v-for="(list,index) in touristInfo" :key="index">
<view style="margin-right: 24rpx;">{{list.name}}</view>
</view>
</view>
</view>
</view>
<view class="box-case">
<view class="case-list">
<view class="list-name">退票规则</view>
<view class="list-text list-text3">
<template v-if="orderInfo.isRefund==0">不支持退票</template>
<template v-else-if="orderInfo.isRefund==1">
<!-- <div>
规定时间可退
</div> -->
<text v-if="orderInfo.orderRefundRuleList[0]&&orderInfo.orderRefundRuleList[0].refundDay!=0">使用日期截止前{{orderInfo.orderRefundRuleList[0].refundDay}}</text>
<text v-else>游玩当天</text>
<text v-if="orderInfo.orderRefundRuleList[0]">{{orderInfo.orderRefundRuleList[0].refundTime.substr(0,5)}}之前可退</text>
</template>
<template v-else-if="orderInfo.isRefund==2">随时可退</template>
<template v-if="ticketStatus">
<view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0&&ticketStatus==0" @click="refundJump(orderInfo.id)">退款/售后</view>
</template>
<template v-else>
<view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0" @click="refundJump(orderInfo.id)">退款/售后</view>
</template>
</view>
</view>
</view>
</view>
</view>
<!--遮罩-->
<view class="order-mask" v-if="maskType==true">
<view class="mask-case">
<view class="case-title">
温馨提示
</view>
<view class="case-body">
{{overSignedData.config.paPassedNumTakeTypeHint}}
</view>
<view class="case-btn">
<view class="btn-typeAll btn-type1" @click="sortAgain(overSignedData)">取号</view>
<view class="btn-typeAll btn-type2" @click="maskType=false">返回</view>
</view>
</view>
</view>
</view>
</template>
<script>
import uQRCode from '@/common/js/uqrcode.js'
import UMask from '@/uview-ui/components/u-mask/u-mask.vue'
export default {
components: {
UMask
},
filters:{
orderStatus1(i){//景区订单状态
switch(i){
case 0:
return '待支付'
break
case 1:
return '出票中'
break
case 2:
return '出票成功'
break
case 3:
return '出票失败'
break
case 4:
return '核销中'
break
case 5:
return '核销完成'
break
case 6:
return '退款中'
break
case 7:
return '部分退退货退款'
break
case 8:
return '全部退退货退款'
break
case 9:
return '取消'
break
case 10:
return '已完成 '
break
case 11:
return '已过期 '
break
case 12:
return '退票审核中 '
break
}
},
orderStatus2(i){//酒店订单状态
switch(i){
case 0:
return '待支付'
break
case 1:
return '确认中'
break
case 2:
return '预定成功'
break
case 3:
return '预定失败'
break
case 4:
return '核销中'
break
case 5:
return '核销完成'
break
case 6:
return '退款中'
break
case 7:
return '部分退退货退款'
break
case 8:
return '全部退退货退款'
break
case 9:
return '取消 '
break
case 10:
return '已完成 '
break
}
},
orderStatus3(i){//餐饮订单状态
switch(i){
case 0:
return '待支付'
break
case 1:
return '确认中'
break
case 2:
return '预定成功'
break
case 3:
return '预定失败'
break
case 4:
return '核销中'
break
case 5:
return '核销完成'
break
case 6:
return '退款中'
break
case 7:
return '部分退货退款'
break
case 8:
return '全部退款退货'
break
case 9:
return '取消 '
break
case 10:
return '已完成 '
break
}
},
orderStatus4(i){//特产订单状态
switch(i){
case 0:
return '待支付'
break
case 1:
return '待发货'
break
case 2:
return '待收货'
break
case 3:
return '预定失败'
break
case 4:
return '核销中'
break
case 5:
return '已收货'
break
case 6:
return '退款中'
break
case 7:
return '部分退货/退款'
break
case 8:
return '全部退款退货 '
break
case 9:
return '取消 '
break
case 10:
return '已完成 '
break
}
}
},
data() {
return {
orderDataType:false,
openId:'',//用户信息
id:'',//订单ID
companyId:'',//公司ID
orderInfo:{},//订单信息
sortsInfo:'',//取号数据
sortData:[],//排队号信息
sortsAll:[],//所有排号信息
overSignedData:{},//过号数据
ticketCode:null,//订单编码
verifyCode:null,//二维码
ticketStatus:null,//票状态 0未使用,1已核销,2退票,3过期
codeStart:'',//开始时间
codes:[],//我二维码数组
percentage:0,//进度条百分比
orderExtendList:[],//订单拓展信息
touristInfo:[],//游客信息
orderTypeNum:1,//订单是否展开
timer1:null,
timer2:null,
timer3:null,
maskType :false,
d:'',//倒计时 天
h: '',//倒计时 时
m: '',//倒计时 分
s: '',//倒计时 秒
sum_h: '',//倒计时
timerType:null,//清除标记
returnTripType:false,//返程取号设置
Brightness:'',//屏幕亮度
qrCodeType:false,//是否是多个二维码
btnRefundType:false,//是否可退款
ifyukuaiCode:'',
visitorIndex:'',//短信特殊字段
channelType:0,//渠道状态channelType==0 订单列表跳转 ==1 OTA取票跳转
photoType:false,//是否显示优惠券
claimStatus:1,//领取状态 0未领取 1已领取
findCouponPhoto:{},//相册优惠券
}
},
onShow() {
let _this=this
uni.getScreenBrightness({
success: function(res){
// 这里是把获取到的手机屏幕亮度,存储到data里面,方便给到页面生命周期隐藏和卸载方法里面用
_this.Brightness = res.value
if(res.value != 1){
uni.setScreenBrightness({
value: 1
})
}
}
})
},
onHide: function () {
uni.setScreenBrightness({// 恢复之前屏幕亮度
value: this.Brightness
})
},
onLoad(option) {
console.log(option.orderId)
console.log('-----------------------')
if(option.orderId!=undefined){
this.id = option.orderId
this.orderDataType = true
}else{
this.id = option.thirdOrderId
this.visitorIndex = option.visitorIndex
this.orderDataType = false
}
this.ifyukuaiCode = option.ifyukuaiCode||''
//this.id = "z00167956572219584dc15634b62cf75"
this.openId = uni.getStorageSync('openid') //openid oroHZ5FaUQ_SOOC_uQQP92fJpBRE oh2UV1lyYABHMZ1rMlgjhVHyyYDQ
this.channelType = option.channelType||0
//this.openId = 'oh2UV1lyYABHMZ1rMlgjhVHyyYDQ'
this.getDetail()
},
onUnload() {
if(this.timer1) {
clearTimeout(this.timer1)
this.timer1 = null
}
if(this.timer2) {
clearTimeout(this.timer2)
this.timer2 = null
}
if(this.timer3) {
clearTimeout(this.timer3)
this.timer3 = null
}
uni.setScreenBrightness({// 恢复之前屏幕亮度
value: this.Brightness
})
},
methods: {
toMyCoupon(){//跳转我的优惠券
uni.navigateTo({
url:'/pages/my/couponCenter/myCouponList/myCouponList'
})
},
immediateClaim(){//立即领取
let data={
openid:this.openId,
createSource:this.findCouponPhoto.isMerchant,
couponId:this.findCouponPhoto.couponId,
comeFrom:'相册领券',
couponType:this.findCouponPhoto.couponType,
deductPrice:this.findCouponPhoto.couponPrice,
useStartDate:this.findCouponPhoto.useStartDate,
useEndDate:this.findCouponPhoto.useEndDate,
couponRule:this.findCouponPhoto.couponRule,
couponRuleRemind:this.findCouponPhoto.couponRuleRemind,
couponName:this.findCouponPhoto.couponName,
createSource:this.findCouponPhoto.isMerchant,
slaveList:this.findCouponPhoto.slaveList
}
this.$request('wechatUser/myPage/saveCoupon',data).then((res)=>{
if(res.code=='00'){
uni.showToast({
title: '领取成功',
icon: 'none'
})
this.claimStatus=1
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
findCouponListFun(){//券查询
let data={
openid:this.openId,
useRange:11,
}
this.$request('scenic/user/product/findCouponList',data).then((res)=>{
if(res.code=='00'){
res.data.forEach((item,index)=>{
if(item.useRange==11){
this.findCouponPhoto = item
this.claimStatus = 0
if(item.alreadyReceive==undefined||item.alreadyReceive==0){
this.claimStatus=0
}else{
this.claimStatus = 1
}
this.photoType = true
}
})
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
orderTypeNumFun(){
if(this.orderTypeNum==0){
this.orderTypeNum=1
}else{
this.orderTypeNum=0
}
},
getDetail(){//*-----------------加载订单
var postHttpUrl = ''
let data = {}
if(this.orderDataType == true){//为小程序
data={
orderId:this.id,//订单ID
userId:this.openId,//用户Id
}
postHttpUrl = 'order/userOrder/findOrderDetail'
}else{//为短信
data={
thirdOrderId:this.id,//订单ID
}
postHttpUrl = 'order/userOrder/findOrderDetailByThirdOrderId'
}
this.$request(postHttpUrl,data).then((res)=>{
if(res.code=='00'){
this.orderInfo = res.data
this.orderExtendList = res.data.orderExtendList
if(this.orderInfo.orderType==1){
this.orderTypeNum =1
}
if(this.orderInfo.orderTicketDetailList&&this.orderInfo.orderTicketDetailList.length>0){
this.verifyCode = this.orderInfo.orderTicketDetailList[0].verifyCode
this.ticketStatus = this.orderInfo.orderTicketDetailList[0].ticketStatus
this.ticketCode = this.orderInfo.orderTicketDetailList[0].ticketCode
}
this.touristInfo = res.data.orderTouristList
if(this.ifyukuaiCode==''||typeof this.ifyukuaiCode=='undefined'){
if(this.orderInfo.orderType==1||this.orderInfo.orderType==3){
if(this.orderInfo.subOrderType!=4&&this.orderInfo.subOrderType!=5){
this.$nextTick(() => {
if(this.orderInfo.playDate.substr(0,10)==this.$commonjs.today()&&this.orderInfo.exchangeMode==4||this.orderInfo.playDate.substr(0,10)==this.$commonjs.today()&&this.orderInfo.exchangeMode==5){
this.dynamicCode()
this.qrCodeType=true
}else if(this.orderInfo.exchangeMode==1){
this.qecode()
this.qrCodeType=false
}
})
}
}
}
if(this.orderInfo.isFetch==1){//isFetch==1需要排队
this.getSortInfo()
this.timer2=setInterval(()=>{
this.getSortInfo()
},1000*120)
// this.$once('hook:beforeDestroy',()=>{
// clearInterval(timer)
// })
}
this.findCouponListFun()
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
.catch((err) => {
this.timer3 = setTimeout(() => {
this.getDetail()
}, 2000)
})
},
getSortInfo(){//-------------------------排号信息加载
var areaCode = this.orderInfo.areaCode
var orderNum = this.orderInfo.orderNum
var userId = this.openId
var orderId = this.orderInfo.id
var verifyCode = this.ticketCode
let data={areaCode,orderNum,userId,orderId,verifyCode,'againNumber':0}
this.$request('distribution/distribution/getNewFetchInfo',data).then((res)=>{
if(res.code=='00'){
if(res.data.length>0){
this.sortsInfo = res.data[0]
this.companyId = this.sortsInfo.pays[0].companyId
var sortArr = []
sortArr.push(this.sortsInfo.sorts[0])
this.sortsAll = this.sortsInfo.sorts
var northArr = null
var southArr = null
sortArr.forEach((item)=>{
if(item.projectId=='cjsd_project_0002'){//北站
if(northArr){
if(item.sortNo>northArr.sortNo){
northArr = item
}
}else{
northArr = item
}
}else{//南站
if(southArr){
if(item.sortNo>southArr.sortNo){
southArr = item
}
}else{
southArr = item
}
}
})
var arr = []
if(northArr){
arr.push(northArr)
}
if(southArr){
arr.push(southArr)
}
this.sortData = arr
//时间判断,当前时间是否大于可领号时间
var presentTimer = this.dateFormat()
var takeNumberTimer = this.getAfterDate(this.sortsInfo.sorts[0].createDate,this.sortsInfo.sorts[0].config.paReturnTripTime)
if(this.sortsInfo.sorts[0].sortFair==4||this.sortsInfo.sorts[0].sortFair==5){
clearTimeout(this.timerType)
if(presentTimer<takeNumberTimer){
this.countTime(takeNumberTimer)
}else{
this.returnTripType =true
}
}
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
}).catch((err)=>{
this.timer1=setTimeout(()=>{
this.getSortInfo()
},10000)
// this.$once('hook:beforeDestroy',()=>{
// clearTimeout(timer)
// })
})
},
sortAgain(item){//--------------------------------------重新排队
let data={
againNumber:1,
thirdId:this.sortsInfo.order.orderId,
areaCode:item.projectId,
userId:this.openId,
merchantCode:this.companyId,
}
this.$request('distribution/distribution/newFetchNumber',data).then((res)=>{
if(res.code=='00'){
this.getSortInfo()
this.maskType = false
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
qecode(){//生成二维码
if(this.verifyCode){
// let qrcode = new QRCode('qrcode',{
// width: 180,
// height: 180,
// text:this.verifyCode
// })
let verifyCode=''
if(this.visitorIndex!=''&&typeof this.visitorIndex!=undefined){
verifyCode=this.verifyCode+':'+this.visitorIndex
}else{
verifyCode=this.verifyCode
}
uQRCode.make({
canvasId: 'qrcode',
componentInstance: this,
text: verifyCode,
size: 180,
margin: 10,
backgroundColor: '#ffffff',
foregroundColor: '#000000',
fileType: 'jpg',
errorCorrectLevel: uQRCode.errorCorrectLevel.H
})
}
},
signOverFun(item){//过号遮罩显示
this.overSignedData = {}
this.overSignedData = item
if(item.config.paPassedNumTakeType==1){
this.maskType = true
}else{
this.sortAgain(item)
}
},
dynamicCodeRefresh(){
// 获取当前显示第几个二维码
let codes=this.codes
let now = new Date().getTime()
let nowTime = (now - this.codeStart)/1000
let code = null
// 寻找到当前时间的二维码
for(let i = 0 ; i < codes.length ; i++ ){
let item = codes[i]
nowTime -= item.timeout
if(nowTime <= 0 ){
code = item
break
}
}
// 全部遍历完成后,需要重新获取新的二维码
if(code == null){
this.dynamicCode()
} else if( code.code!=this.codeNo ){
this.codeNo = code.code
// if(document.querySelector('#qrcode img')){//移除子元素
// document.querySelector('#qrcode img').remove()
// document.querySelector('#qrcode canvas').remove()
// }
// let qrcode = new QRCode('qrcode',{//进入先获取二维码
// width: 180,
// height: 180,
// text:this.codeNo
// })
uQRCode.make({
canvasId: 'qrcode',
componentInstance: this,
text: this.codeNo,
size: 180,
margin: 10,
backgroundColor: '#ffffff',
foregroundColor: '#000000',
fileType: 'jpg',
errorCorrectLevel: uQRCode.errorCorrectLevel.H
})
}
this.percentage+=1
if(this.percentage>=100){
this.percentage=0
}
},
dynamicCode(){//动态码
let data={
codeNo:this.ticketCode,//二维码编号
orderId:this.id,//订单号
userId:this.openId//openid
}
let verifyCode=''
if(this.visitorIndex!=''&&this.visitorIndex!=undefined){
data.codeNo=this.ticketCode+':'+this.visitorIndex
}else{
data.codeNo=this.ticketCode
}
clearInterval(this.codeFlag)
this.$request('distribution/distribution/getAutoCode',data).then((res)=>{
if(res.code == '00'){
this.codes = res.data.codes
if(this.codes.length==0){
uni.showToast({
title: '网络异常,请退出重试',
icon: 'none'
})
}
this.codeStart = new Date().getTime()
this.codeFlag = setInterval(()=>{
this.dynamicCodeRefresh()
},300)
this.$once('hook:beforeDestroy', () => {
clearInterval(this.codeFlag)
})
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
}).catch((err)=>{
let timer=setTimeout(()=>{
this.dynamicCode()
},2000)
this.$once('hook:beforeDestroy', () => {
clearTimeout(timer)
})
})
},
copyText(value){//-------------------------复制内容
uni.setClipboardData({
data:value,
success:function(){
uni.showToast({
title: '复制成功',
icon: 'none'
})
}
})
},
dateFormat() {//时间格式化函数,此处仅针对yyyy-MM-dd hh:mm:ss 的格式进行格式化
var date=new Date()
var year=date.getFullYear()
/* 在日期格式中,月份是从0开始的,因此要加0
* 使用三元表达式在小于10的前面加0,以达到格式统一 如 09:11:05
* */
var month= date.getMonth()+1<10 ? '0'+(date.getMonth()+1) : date.getMonth()+1
var day=date.getDate()<10 ? '0'+date.getDate() : date.getDate()
var hours=date.getHours()<10 ? '0'+date.getHours() : date.getHours()
var minutes=date.getMinutes()<10 ? '0'+date.getMinutes() : date.getMinutes()
var seconds=date.getSeconds()<10 ? '0'+date.getSeconds() : date.getSeconds()
// 拼接
return year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds
},
getAfterDate(timer,n) {//当前时间后几分钟
var curTime = new Date(timer)
var d = new Date(curTime.setMinutes(curTime.getMinutes() + n)) //n是分钟,根据自己需求定义
var year = d.getFullYear()
var mon = d.getMonth() + 1
var day = d.getDate()
var hour = d.getHours()
var minute = d.getMinutes()
var second = d.getSeconds()
var s = year + '-' + (mon < 10 ? ('0' + mon) : mon) + '-' + (day < 10 ? ('0' + day) : day) + ' ' + (hour < 10 ? ('0' + hour) : hour) + ':' + (minute < 10 ? ('0' + minute) : minute) + ':' + (second < 10 ? ('0' + second) : second)
return s
},
countTime (timer) {//倒计时
// 获取当前时间
var date = new Date()
var now = date.getTime()
//设置截止时间
var endDate = new Date(timer)
var end = endDate.getTime()
//时间差
var leftTime = end - now
//定义变量 d,h,m,s保存倒计时的时间
if (leftTime >= 0) {
this.d = Math.floor(leftTime / 1000 / 60 / 60 / 24)
this.h = Math.floor(leftTime / 1000 / 60 / 60 % 24)
this.m = Math.floor(leftTime / 1000 / 60 % 60)
this.s = Math.floor(leftTime / 1000 % 60)
this.sum_h = this.d * 24 + this.h
}
if(this.d==0&&this.h==0&&this.m==0&&this.s==0){
this.returnTripType = true
}
//递归每秒调用countTime方法,显示动态时间效果
this.timerType = setTimeout(()=>{
this.countTime(timer)
},1000)
},
refundJump(id){//-------------------景区跳转
uni.reLaunch({
url: '/pages/my/order/afterSale/applyAfterSale/applyAfterSale?orderId='+id+'&ifyukuaiCode='+this.ifyukuaiCode
})
},
returnMini(){
//#ifdef MP-WEIXIN
wx.navigateBackMiniProgram({
extraData: {
cqQRCode:1
},
fail(res){
uni.showToast({
title:'获取失败,请退出后重新进入渝快码小程序获取验证码',
icon:'none',
duration:3000
})
}
})
//#endif
//#ifdef MP-ALIPAY
my.navigateBackMiniProgram({
extraData:{
cqQRCode:1
},
fail: (res) => {
uni.showToast({
title:'获取失败,请退出后重新进入渝快码小程序获取验证码',
icon:'none',
duration:3000
})
}
})
//#endif
},
}
}
</script>
<style scoped="scoped" lang="scss">
.page-box{
background-color: #ECF3FE;
min-height: 100vh;
padding-bottom: 80rpx;
}
.order-status {
width: 750rpx;
height: 464rpx;
background: linear-gradient(180deg, #3688FF 0%, #3688FF 37%, #ECF3FE 100%);
padding: 48rpx 32rpx 32rpx 40rpx;
box-sizing: border-box;
position: relative;
}
.order-status .status-box {
display: flex;
flex-wrap: wrap;
color: #fff;
overflow: hidden;
}
.order-status .status-type {
width: 100%;
font-size: 48rpx;
line-height: 66rpx;
font-weight: bold;
margin-bottom: 8rpx;
flex-shrink:0
}
.order-status .status-product,
.order-status .status-prompt {
font-size: 28rpx;
line-height: 65rpx;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.order-status .status-icon {
width: 106rpx;
height: 104rpx;
position: absolute;
right: 64rpx;
top: 58rpx;
}
/*排队信息*/
.order-allType {
width: 710rpx;
background-color: #fff;
box-shadow: 0rpx 0rpx 6rpx 0rpx rgba(0, 0, 0, 0.04);
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: 0 auto 16rpx auto;
overflow: hidden;
position: relative;
z-index: 10;
}
.order-allType .alltype-title {
display: flex;
justify-content: space-between;
align-items: center;
height: 92rpx;
padding: 24rpx 24rpx 24rpx 24rpx;
box-shadow: 0rpx 2rpx 0rpx 2rpx rgba(0, 0, 0, 0.04);
position: relative;
}
.order-allType .alltype-title .title-line {
width: 20rpx;
height: 44rpx;
overflow: hidden;
position: relative;
}
.order-allType .alltype-title .title-line view {
width: 4rpx;
height: 24rpx;
background-color: var(--main-color);
margin: auto;
position: absolute;
left: 0;
top: 0;
bottom: 0;
}
.order-allType .alltype-title .title-label {
font-size: 32rpx;
color: var(--title-color);
font-weight: bold;
line-height: 44rpx;
}
.order-allType .alltype-title .uicon-reload {
line-height: 44rpx !important;
color: var(--title-color) !important;
margin-left: 22rpx !important;
}
.order-allType .alltype-title .uicon-arrow-down,
.order-allType .alltype-title .uicon-arrow-up{
line-height: 44rpx !important;
color: #999999 !important;
position: absolute !important;
right: 24rpx !important;
top: 24rpx !important;
}
.order-positionTop:nth-child(2){
margin-top: -322rpx;
position: relative;
z-index: 2;
}
.order-positionTopAct{
margin-top: -262rpx;
}
/*排队详情*/
.order-queueUp {
}
.order-queueUp .queueUp-rowNumber {
padding: 24rpx 24rpx 24rpx 24rpx;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list {
display: flex;
font-size: 28rpx;
line-height: 56rpx;
margin-bottom: 24rpx;
position: relative;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list2{
justify-content:center;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-name {
width: 220rpx;
color: var(--title-color);
flex-shrink: 0;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-value {
flex: 1;
display: flex;
color: #FC771D;
font-size: 40rpx;
font-weight: bold;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-value2 {
color: #333333;
font-size: 24rpx;
line-height: 35rpx;
padding-top: 8rpx;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-value3 {
display: flex;
color: #FC771D;
font-size: 40rpx;
font-weight: bold;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list2 .list-value{
flex: 0;
}
.order-queueUp .queueUp-rowNumber2{
color: #fff;
background-color: #1EA838;
}
.order-queueUp .queueUp-rowNumber2 .rowNumber-list .list-value,
.order-queueUp .queueUp-rowNumber2 .rowNumber-list .list-value2{
color:#fff;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-right48 {
margin-right: 48rpx;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-right24 {
margin-right: 24rpx;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list .list-btnNew{
width: 140rpx;
height: 40rpx;
border-radius: 26rpx 26rpx 26rpx 26rpx;
text-align: center;
line-height: 40rpx;
color: var(--main-color);
border: 1rpx solid var(--main-color);
position: absolute;
top: 0;
right: 0;
}
.order-queueUp .queueUp-rowNumber .rowNumber-list:nth-last-child(1) {
margin-bottom: 0;
}
.order-queueUp .queueUp-rowNumber .rowNumber-takeNum{
width: 136rpx;
height: 56rpx;
background: #3688FF;
border-radius: 32rpx 32rpx 32rpx 32rpx;
font-size: 28rpx;
color: #FFFFFF;
line-height: 56rpx;
text-align: center;
margin: 0 auto;
}
.order-queueUp .queueUp-rowNumber .rowNumber-takeNum2{
width: 136rpx;
height: 56rpx;
background: #3688FF;
border-radius: 32rpx 32rpx 32rpx 32rpx;
font-size: 28rpx;
color: #FFFFFF;
line-height: 56rpx;
text-align: center;
}
.order-queueUp .queueUp-rowNumber .rowNumber-takeTimer{
font-size: 28rpx;
color: #FC771D;
line-height: 40rpx;
font-weight: bold;
margin-top: 16rpx;
text-align: center;
}
.order-queueUp .queueUp-historyNum{
font-size: 24rpx;
color: #333333;
line-height: 34rpx;
border-top: 2rpx solid #ECECEC;
padding: 24rpx 24rpx 24rpx 24rpx;
}
.order-queueUp .queueUp-rowNumber3{
color: #fff;
background-color: #DA3844;
}
.order-queueUp .queueUp-rowNumber .rowNumber-signOver{
font-size: 32rpx;
color: #fff;
line-height: 56rpx;
font-weight: bold;
margin-right: 40rpx;
}
.order-queueUp .queueUp-rowNumber3 .rowNumber-list .list-value,
.order-queueUp .queueUp-rowNumber3 .rowNumber-list .list-value2,
.order-queueUp .queueUp-rowNumber3 .rowNumber-takeTimer,
.order-queueUp .queueUp-rowNumber3 .rowNumber-list .list-value3{
color:#fff;
}
.order-queueUp .queueUp-rowNumber3 .rowNumber-takeNum,
.order-queueUp .queueUp-rowNumber3 .rowNumber-takeNum2{
background-color: #fff;
color: #3688FF;
}
/*入园凭证*/
.order-certificate .certificate-box {
padding: 16rpx 0 24rpx 0;
overflow: hidden;
}
.order-certificate .certificate-box .box-verificationCode {
margin: 8rpx 0 8rpx 0;
font-size: 24rpx;
color: #333333;
line-height: 40rpx;
text-align: center;
}
.order-certificate .certificate-box .box-QRcode {
display: block;
width: 180px;
height: 180px;
margin: 0 auto;
}
.order-certificate .certificate-box .box-QRcode2{
position: fixed;
top: -500rpx;
}
.order-certificate .certificate-box .progress-box {
width: 180px;
margin: 6rpx auto 0 auto;
}
.order-certificate .certificate-box .box-prompt {
font-size: 28rpx;
color: var(--main-color);
line-height: 40rpx;
text-align: center;
margin: 16rpx 0 8rpx 0;
}
.order-certificate .certificate-box .box-prompt2 {
font-size: 28rpx;
font-weight: bold;
color: #FC771D;
line-height: 40rpx;
text-align: center;
margin: 24rpx 0 0 0;
padding: 0 24rpx
}
.order-certificate .certificate-box .box-promptBtn{
width: 152rpx;
height: 64rpx;
border: solid 1px #ccc;
border-radius: 8rpx;
line-height: 64rpx;
color: #333333;
text-align: center;
box-sizing: content-box;
margin: 24rpx auto 0 auto;
}
/*订单信息*/
.order-mes .mes-box {
padding: 44rpx 24rpx 24rpx 24rpx;
overflow: hidden;
}
.order-mes .mes-box .box-case {
width: 638rpx;
border-bottom: 2rpx solid #ECECEC;
margin-bottom: 40rpx;
}
.order-mes .mes-box .box-case:nth-last-child(1) {
border-bottom: none;
margin-bottom: 0rpx;
}
.order-mes .mes-box .box-case .case-list {
display: flex;
width: 638rpx;
font-size: 28rpx;
line-height: 40rpx;
margin-bottom: 28rpx;
position: relative;
}
.order-mes .mes-box .box-case .case-list .list-name {
flex-shrink: 0;
width: 144rpx;
color: #AAAAAA;
}
.order-mes .mes-box .box-case .case-list .list-text {
flex: 1;
word-wrap: break-word;
color: #333333;
}
.order-mes .mes-box .box-case .case-list .list-text2 {
flex: 0;
width: 430rpx;
/* height: 40rpx;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis; */
}
.order-mes .mes-box .box-case .case-list .list-text3{
padding-right: 170rpx;
}
.order-mes .mes-box .box-case .case-list .list-btnRefund{
width: 152rpx;
height: 64rpx;
border: solid 1px #ccc;
border-radius: 8rpx;
line-height: 64rpx;
color: #333333;
text-align: center;
display: inline-block;
box-sizing: content-box;
position: absolute;
top: -12rpx;
right: 0;
}
.order-mes .mes-box .box-case .case-list .list-btn {
/* flex-shrink: 0;
width: 104rpx;
height: 40rpx;
border-radius: 26rpx 26rpx 26rpx 26rpx;
text-align: center;
line-height: 38rpx;
color: #333333;
border: 1rpx solid #999999; */
width: 32rpx;
height: 32rpx;
margin: auto;
position: absolute;
top:0;
right:0;
bottom: 0;
}
/*遮罩*/
.order-mask{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 998;
background-color: rgba(0,0,0,.3);
}
.order-mask .mask-case{
width: 654rpx;
height: 418rpx;
background-color: #fff;
box-sizing: border-box;
padding: 64rpx 24rpx 0 24rpx;
margin: auto;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.order-mask .mask-case .case-title{
font-size: 40rpx;
line-height: 56rpx;
color: #191919;
font-weight: bold;
text-align: center;
margin-bottom: 24rpx;
}
.order-mask .mask-case .case-body{
font-size: 32rpx;
line-height: 48rpx;
color: #191919;
text-align: center;
margin-bottom: 48rpx;
}
.order-mask .mask-case .case-btn{
display: flex;
justify-content: space-between;
font-size: 32rpx;
line-height: 80rpx;
}
.order-mask .mask-case .case-btn .btn-typeAll{
width: 212rpx;
height: 80rpx;
border-radius: 44rpx 44rpx 44rpx 44rpx;
text-align: center;
}
.order-mask .mask-case .case-btn .btn-type1{
background-color: #3688FF;
color: #fff;
margin-left: 56rpx;
}
.order-mask .mask-case .case-btn .btn-type2{
background-color: #ECF3FE;
color: #999999;
margin-right: 56rpx;
}
.order-vouchers{
width: 710rpx;
height: 184rpx;
margin: 0 auto 16rpx auto;
box-shadow: 0rpx 0rpx 16rpx 2rpx rgba(0,0,0,0.08);
border-radius: 16rpx 16rpx 16rpx 16rpx;
padding: 24rpx 32rpx 0 32rpx;
background-image: url("../../static/orderList/iconBackground.png");
position: relative;
overflow: hidden;
.vouchers-img{
width: 200rpx;
height: 160rpx;
position: absolute;
bottom: -15rpx;
right: 28rpx;
}
.vouchers-title{
font-size: 32rpx;
color: #EE0E0E;
font-weight: bold;
line-height: 44rpx;
margin-bottom: 8rpx;
}
.vouchers-address{
font-size: 24rpx;
color: #25434D;
line-height: 34rpx;
margin-bottom: 16rpx;
}
.vouchers-btn{
display: flex;
.btn-click{
width: 144rpx;
height: 42rpx;
background: #EE0E0E;
border-radius: 22rpx 22rpx 22rpx 22rpx;
font-size: 24rpx;
color: #FFFFFF;
text-align: center;
line-height: 42rpx;
margin-right: 24rpx;
}
.btn-to{
display: flex;
color: #333333;
font-size: 20rpx;
line-height: 42rpx;
}
}
}
</style>
<template>
<view>
<web-view :src="outUrl"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
outUrl:'',//跳出地址
enterUrl:'',//进入页面路由
}
},
onLoad(option) {
//#ifdef MP-WEIXIN
this.enterUrl=option.q
//#endif
var enterpriseWechat=''
if(this.enterUrl){
enterpriseWechat=this.getUrlKey('enterpriseWechat')||''
}else{
enterpriseWechat=option.enterpriseWechat||''
}
let pdOpenid=uni.getStorageSync('openid')//胖丁小程序openid,临时用,当公众号授权做好之后可以删除
let pdToken=uni.getStorageSync('token')
let pdCreateUserId=uni.getStorageSync('createUserId')
let pdUserId=uni.getStorageSync('userId')
let ifyukuaiCode=option.ifyukuaiCode||''//是否是渝快码跳入,渝快码跳入需要在H5端另外走流程
this.outUrl='https://wx.pangdly.com/#/ordersList1?pdOpenid='+pdOpenid+'&pdToken='+pdToken+'&pdCreateUserId='+pdCreateUserId+'&pdUserId='+pdUserId+'&ifyukuaiCode='+ifyukuaiCode+'&enterpriseWechat='+enterpriseWechat
},
methods: {
//----获取url
getUrlKey(name){
return(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(decodeURIComponent(this.enterUrl)) || [, ''])[1].replace(/\+/g, '%20') || ''
},
}
}
</script>
<style>
...@@ -14,33 +14,23 @@ ...@@ -14,33 +14,23 @@
</view> </view>
<view class="choose"> <view class="choose">
<view class="choose-content"> <view class="choose-content" v-for="(item,index) in list" :key='index' @click="areaChoose(index)" :class="{on:active==index}">
<view class="choose-name"> <view class="choose-name">
北站 {{item.projectName}}
</view> </view>
<view class="choose-add"> <!-- <view class="choose-add">
解放碑.新华路 解放碑.新华路
</view> </view> -->
</view>
<view class="choose-content">
<view class="choose-name">
南站
</view>
<view class="choose-add">
南岸区.上新街
</view>
</view> </view>
</view> </view>
</view> </view>
<view class="bottom"> <view class="bottom">
<text class="btn" style="background: #fff;color: #999;margin-right: 80rpx;"> <text class="btn" @click="cancel()" style="background: #fff;color: #999;margin-right: 80rpx;">
取消 取消
</text> </text>
<text class="btn"> <text class="btn" @click="sure()">
确定 确定
</text> </text>
</view> </view>
...@@ -51,11 +41,44 @@ ...@@ -51,11 +41,44 @@
export default { export default {
data() { data() {
return { return {
list:[],//站点列表
active:100,//下标
merchantCode:'',//商家编号
channelName:'',//渠道名称
productName:'',//产品名称
chooseArea:'',//选中的站点
} }
}, },
onLoad(option) {
this.merchantCode=option.merchantCode||''
this.list=option.list?JSON.parse(option.list):''
this.channelName=option.channelName||''
this.productName=option.productName||''
},
methods: { methods: {
//---站点选择
areaChoose(index){
this.active=index
this.chooseArea=JSON.stringify(this.list[index])
},
//---确定站点
sure(){
if(!this.chooseArea){
uni.showToast({
title: '请选择站点',
icon: 'none'
})
return
}
uni.navigateTo({
url:`/pages/my/takeNumber/rowNumber/rowNumber?chooseArea=${this.chooseArea}&merchantCode=${this.merchantCode}&productName=${this.productName}&channelName=${this.channelName}`
})
},
//---取消站点
cancel(){
this.active=100
this.chooseArea=''
}
} }
} }
</script> </script>
...@@ -105,6 +128,10 @@ export default { ...@@ -105,6 +128,10 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.choose-content.on{
background: $blue;
color: #ffffff;
}
.choose-name{ .choose-name{
font-size: 36rpx; font-size: 36rpx;
font-weight: bold; font-weight: bold;
......
...@@ -2,26 +2,24 @@ ...@@ -2,26 +2,24 @@
<view class="wrap"> <view class="wrap">
<view> <view>
<view class="first"> <view class="first">
<input placeholder="请输入购票预留手机号/身份证号" /> <input placeholder="请输入购票预留手机号/身份证号" v-model="search" />
</view> </view>
<view class="query"> <view class="query">
<text class="button">查询订单</text> <text class="button" @click="query()">查询订单</text>
</view> </view>
</view> </view>
<view class="mark-box"> <view class="mark-box" v-if="showMark">
<view style="width: 100%;"> <view style="width: 100%;">
<view class="mark-content"> <view class="mark-content">
<view class="mark-title"> 获取失败 </view> <view class="mark-title"> 获取失败 </view>
<view class="mark-tip"> 查无该订单,请咨询购票渠道! </view> <view class="mark-tip"> 查无该订单,请咨询购票渠道!</view>
<view class="mark-btn"> <!-- <view class="mark-btn">
<text class="btn">重试</text> <text class="btn">重试</text>
</view> -->
</view> </view>
</view>
<!-- <view class="mark-content"> </view> -->
<view class="mark-close"> <view class="mark-close" @click="showMark=false">
<u-icon name="close-circle" size='60' color='#ffffff'></u-icon> <u-icon name="close-circle" size='60' color='#ffffff'></u-icon>
</view> </view>
</view> </view>
...@@ -34,10 +32,126 @@ ...@@ -34,10 +32,126 @@
export default { export default {
data() { data() {
return { return {
showMark: true //是否显示遮罩层 showMark: false ,//是否显示遮罩层
search:'',//输入框的值
noNumberList:[],//未排号站点列表
merchantCode:'',//商家编号
channelName:'',//渠道名称
productName:'',//产品名称
} }
}, },
methods: {} methods: {
//---查询订单
query(){
if(!this.search){
uni.showToast({
title:'请输入手机号或者身份证号',
icon: 'none'
})
return
}
let data={
search:this.search
}
uni.showLoading({
title:'加载中'
})
this.$request('order/userOrder/findOrderPageListByCode',data).then((res)=>{
if(res.code=='00'){
let list=res.data||[]
this.merchantCode=list[0].merchantCode
this.channelName=list[0].channelName
this.productName=list[0].productName
if(list.length==0){
this.showMark=true
}else{
let thirdId=list[0].thirdOrderId||''
let merchantId=list[0].merchantId||''
this.getFetchInfo(thirdId,merchantId)
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
//---获取排号信息
getFetchInfo(thirdId,merchantId){
let data={
thirdId,
merchantId
}
this.noNumberList=[]
this.$request('distribution/distribution/getFetchInfoOta',data).then((res)=>{
if(res.code=='00'){
let list=res.data[0].timeAreas||[]
let sorts=res.data[0].sorts||[]
let uses=res.data[0].uses||[]
//获取所有站点列表
let areaList=[]
list.forEach(item=>{
if(!areaList.find(item2=>item2.projectIds==item.projectIds)){
//去重,并且为排号区的才放入数组
if(item.areaId==1){
areaList.push({
projectIds:item.projectIds,
projectName:item.projectName
})
}
}
})
//获取已使用和已排号站点信息之和
let usedList=sorts.concat(uses)
let usedNewArr=[]
usedList.forEach(item=>{
if(!usedNewArr.find(item2=>item2.projectId==item.projectId)){
usedNewArr.push({
projectId:item.projectId,
projectName:item.projectName
})
}
})
//获取未排号的站点列表
this.noNumberList=JSON.parse(JSON.stringify(areaList))
this.noNumberList.forEach((item,index)=>{
usedNewArr.forEach(item2=>{
if(item.projectIds==item2.projectId){
delete this.noNumberList[index]
}
})
})
this.noNumberList=this.noNumberList.filter(function (val) {
return val
})
if(this.noNumberList.length==0){
uni.showToast({
title: '该订单没有排号站点信息',
icon: 'none'
})
}
if(this.noNumberList.length==1){
let chooseArea=JSON.stringify(this.noNumberList[0])
uni.navigateTo({
url:`/pages/my/takeNumber/rowNumber/rowNumber?chooseArea=${chooseArea}&merchantCode=${this.merchantCode}&productName=${this.productName}&channelName=${this.channelName}`
})
}
if(this.noNumberList.length>1){
let list=JSON.stringify(this.noNumberList)
uni.navigateTo({
url:`/pages/my/takeNumber/numberChoose/numberChoose?list=${list}&merchantCode=${this.merchantCode}&productName=${this.productName}&channelName=${this.channelName}`
})
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
}
}
} }
</script> </script>
......
<template> <template>
<view class="wrap">
<view class="top">
<view class="productname">
<text style="font-size: 40rpx;font-weight: bold;margin-right: 20rpx;">
{{channelName}}
</text>
<text>
{{productName}}
</text>
</view>
<view class="numberinfo">
<view class="bigsize">
<text style="margin-right: 48rpx;">
当前排队人数
</text>
<text>
{{numberInfo.peopleNumber}}
</text>
</view>
<view class="bigsize">
<text style="margin-right: 48rpx;">
正排队区间
</text>
<text>
{{numberInfo.showStart}}~{{numberInfo.showEnd}}
</text>
</view>
<view class="waitime">
预计进入排队等候区:{{numberInfo.sortTotalTime}}
</view>
<view class="address">
当前站点:{{numberInfo.projectName}}({{numberInfo.projectRemark}})
</view>
</view>
</view>
<view class="middle">
<view class="takenumber" @click="rowNumber()">
<view> <view>
立即
</view>
<view>
取号
</view>
</view>
</view>
<view class="bottom">
<view class="bottom-title">
游客须知
</view>
<view class="bottom-tip">
<view>
1、排队区间号段包含排队号时,即可进入排队。
</view>
<view>
2、门票游玩当日内有效,过号需重排。
</view>
<view>
3、空号较多时,预计进入时间可能提前或延后。
</view>
<view>
4、请及时关注排号信息,系统30s自动刷新。
</view>
<view>
5、凡购往返票者,返程时重新取号。
</view>
<view>
6、各务守序,勿忘礼让。
详情请至游客中心或拨打官方电话023-68816888咨询。
</view>
</view>
</view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
merchantCode:'',//商家编号
chooseArea:'',//站点信息
numberInfo:'',//排号信息
channelName:'',//渠道名称
productName:'',//产品名称
} }
}, },
onLoad(option) {
this.merchantCode=option.merchantCode||''
this.chooseArea=option.chooseArea?JSON.parse(option.chooseArea):''
this.channelName=option.channelName||''
this.productName=option.productName||''
this.getNumberInfo()
},
methods: { methods: {
//---获取排号信息
getNumberInfo(){
let data={
merchantCode:this.merchantCode, //商户code
} }
uni.showLoading({
title:'加载中'
})
this.$request('distribution/distribution/findNewFetchInfoFromSceinc',data).then((res)=>{
if(res.code=='00'){
let main=res.data.main||null
let list=res.data.data||[]
for(let item in main){
//sceneSortStatus==1时排号上架
if(item==this.chooseArea.projectIds&&main[item].sceneSortStatus=='1'){
list.forEach(item2=>{
if(this.chooseArea.projectIds==item2.projectId){
this.numberInfo=item2
this.numberInfo.peopleNumber = Math.max(this.numberInfo.sortTotalCapacity-this.numberInfo.showEnd,0)
} }
})
}
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
//---立即取号
rowNumber(){
let data={
merchantCode:this.merchantCode,
userId:uni.getStorageSync('openid')||'',
areaCode:this.chooseArea.projectIds
}
uni.showLoading({
title:'加载中'
})
this.$request('distribution/distribution/newFetchNumber',data).then((res)=>{
if(res.code=='00'){
console.log(res)
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
}
}
}
</script> </script>
<style> <style scoped lang="scss">
.wrap{
height: 100%;
background: #ECF3FE;
}
.top{
background: linear-gradient(180deg, #3688FF 0%, #3688FF 37%, #ECF3FE 100%);
padding: 40rpx 24rpx 0 24rpx;
}
.productname{
color: #ffffff;
}
.numberinfo{
margin-top: 24rpx;
background: #ffffff;
border-radius: 16rpx;
padding: 40rpx 24rpx;
text-align: center;
}
.numberinfo>view:not(:first-child){
margin-top: 30rpx;
}
.bigsize{
font-size: 36rpx;
font-weight: bold;
}
.waitime{
padding-bottom: 24rpx;
border-bottom: 1px solid #ececec;
}
.address{
font-weight: bold;
color: #3688FF;
}
.middle{
display: flex;
justify-content: center;
margin: 56rpx 0;
}
.takenumber{
text-align: center;
width: 128rpx;
height: 128rpx;
background: #3688FF;
box-shadow: 0 12rpx 24rpx 2rpx rgba(54,136,255,0.5);
border-radius: 50%;
color: #ffffff;
font-size: 32rpx;
padding-top: 20rpx;
}
.bottom{
padding: 0 24rpx;
}
.bottom-title{
font-size: 32rpx;
font-weight: bold;
color: #FC771D;
}
.bottom-tip{
font-size: 24rpx;
>view{
margin-top: 20rpx;
}
}
</style> </style>
...@@ -118,8 +118,7 @@ export default { ...@@ -118,8 +118,7 @@ export default {
if(uni.getStorageSync('enterOptions').query){ if(uni.getStorageSync('enterOptions').query){
data.companyId=uni.getStorageSync('enterOptions').query.companyId||'' data.companyId=uni.getStorageSync('enterOptions').query.companyId||''
} }
this.$request('wechat/wx/getUserInfoByCode', data) this.$request('wechat/wx/getUserInfoByCode', data).then(res => {
.then(res => {
if (res.code == '00') { if (res.code == '00') {
this.openid = res.data.openid this.openid = res.data.openid
uni.setStorageSync('openid', this.openid) uni.setStorageSync('openid', this.openid)
...@@ -130,8 +129,7 @@ export default { ...@@ -130,8 +129,7 @@ export default {
icon: 'none' icon: 'none'
}) })
} }
}) }).catch(err => {
.catch(err => {
uni.showToast({ uni.showToast({
title: '登录失败', title: '登录失败',
icon: 'none' icon: 'none'
......
...@@ -207,7 +207,7 @@ export default { ...@@ -207,7 +207,7 @@ export default {
//#endif //#endif
//#ifdef MP-ALIPAY //#ifdef MP-ALIPAY
uni.removeStorageSync('alipayQrCode') //临时解决出租车扫码之后跳转到组合票时,参数会有问题,有时间再根本解决 // uni.removeStorageSync('alipayQrCode') //临时解决出租车扫码之后跳转到组合票时,参数会有问题
this.payType = 33 this.payType = 33
//#endif //#endif
this.merchantId=this.$commonjs.getKey(option,'merchantId') this.merchantId=this.$commonjs.getKey(option,'merchantId')
...@@ -420,6 +420,12 @@ export default { ...@@ -420,6 +420,12 @@ export default {
this.showNumber=true this.showNumber=true
//默认总价为一张的价格 //默认总价为一张的价格
this.orderMoney=this.tollPoint.tollPointPrice this.orderMoney=this.tollPoint.tollPointPrice
if(this.orderMoney==null){
uni.showToast({
title: '价格配置错误',
icon: 'none'
})
}
//优先取收费点名称,然后是公司名称,然后是联系人名称 //优先取收费点名称,然后是公司名称,然后是联系人名称
this.companyName=this.tollPoint.tollPointByname||res.data.companyName||res.data.contactName this.companyName=this.tollPoint.tollPointByname||res.data.companyName||res.data.contactName
} }
...@@ -524,6 +530,10 @@ export default { ...@@ -524,6 +530,10 @@ export default {
] ]
} }
} }
//由于输入数量页面没有做领券逻辑,暂时传给后端直接为空数组
if(this.showNumber){
couponList=[]
}
let data = { let data = {
companyId: this.companyId, companyId: this.companyId,
merchantId: this.merchantId, merchantId: this.merchantId,
...@@ -640,6 +650,7 @@ export default { ...@@ -640,6 +650,7 @@ export default {
}, },
watch: { watch: {
orderMoney(val, oldVal) { orderMoney(val, oldVal) {
if(this.showMoney){
if (val == '.' && oldVal == '') { if (val == '.' && oldVal == '') {
//首位数是小数点自动加上0 //首位数是小数点自动加上0
this.orderMoney = 0 + '.' this.orderMoney = 0 + '.'
...@@ -669,6 +680,8 @@ export default { ...@@ -669,6 +680,8 @@ export default {
this.payBackground = '#cccccc' this.payBackground = '#cccccc'
} }
} }
}
} }
} }
</script> </script>
......
...@@ -60,14 +60,14 @@ export default { ...@@ -60,14 +60,14 @@ export default {
this.$request('order/userOrder/getStatusById', data).then((res) => { this.$request('order/userOrder/getStatusById', data).then((res) => {
if (res.code == '00') { if (res.code == '00') {
//如果是组合票,直接跳订单列表页面 //如果是组合票,直接跳订单列表页面
let orderType=res.data.orderType let orderType=res.main.orderType
if(orderType=='10'){ if(orderType=='10'){
uni.reLaunch({ uni.reLaunch({
url:this.afterBuyUrl+'?orderId=' + this.orderId+'&ifyukuaiCode='+this.ifyukuaiCode url:this.afterBuyUrl+'?orderId=' + this.orderId+'&ifyukuaiCode='+this.ifyukuaiCode
}) })
return return
} }
this.status = res.data.orderStatus this.status = res.main.orderStatus
if (this.status == '2' || this.status == '4' || this.status == '5') { if (this.status == '2' || this.status == '4' || this.status == '5') {
//1.跳订单列表,2.订单详情,3.停留该页面显示支付成功(ourPayment页面跳入时,无afterBuyUrl,停留在该页面) //1.跳订单列表,2.订单详情,3.停留该页面显示支付成功(ourPayment页面跳入时,无afterBuyUrl,停留在该页面)
this.title='支付成功!' this.title='支付成功!'
......
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