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

OTA取号开发

parent 0e4fcbdd
<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 @@
</view>
<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">
北站
{{item.projectName}}
</view>
<view class="choose-add">
<!-- <view class="choose-add">
解放碑.新华路
</view>
</view>
<view class="choose-content">
<view class="choose-name">
南站
</view>
<view class="choose-add">
南岸区.上新街
</view>
</view> -->
</view>
</view>
</view>
<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 class="btn">
<text class="btn" @click="sure()">
确定
</text>
</view>
......@@ -51,11 +41,44 @@
export default {
data() {
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: {
//---站点选择
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>
......@@ -105,6 +128,10 @@ export default {
text-overflow: ellipsis;
white-space: nowrap;
}
.choose-content.on{
background: $blue;
color: #ffffff;
}
.choose-name{
font-size: 36rpx;
font-weight: bold;
......
......@@ -2,26 +2,24 @@
<view class="wrap">
<view>
<view class="first">
<input placeholder="请输入购票预留手机号/身份证号" />
<input placeholder="请输入购票预留手机号/身份证号" v-model="search" />
</view>
<view class="query">
<text class="button">查询订单</text>
<text class="button" @click="query()">查询订单</text>
</view>
</view>
<view class="mark-box">
<view class="mark-box" v-if="showMark">
<view style="width: 100%;">
<view class="mark-content">
<view class="mark-title"> 获取失败 </view>
<view class="mark-tip"> 查无该订单,请咨询购票渠道! </view>
<view class="mark-btn">
<view class="mark-tip"> 查无该订单,请咨询购票渠道!</view>
<!-- <view class="mark-btn">
<text class="btn">重试</text>
</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>
</view>
</view>
......@@ -34,10 +32,126 @@
export default {
data() {
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>
......
<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 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>
</template>
<script>
export default {
export default {
data() {
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: {
//---获取排号信息
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>
<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>
......@@ -118,8 +118,7 @@ export default {
if(uni.getStorageSync('enterOptions').query){
data.companyId=uni.getStorageSync('enterOptions').query.companyId||''
}
this.$request('wechat/wx/getUserInfoByCode', data)
.then(res => {
this.$request('wechat/wx/getUserInfoByCode', data).then(res => {
if (res.code == '00') {
this.openid = res.data.openid
uni.setStorageSync('openid', this.openid)
......@@ -130,8 +129,7 @@ export default {
icon: 'none'
})
}
})
.catch(err => {
}).catch(err => {
uni.showToast({
title: '登录失败',
icon: 'none'
......
......@@ -207,7 +207,7 @@ export default {
//#endif
//#ifdef MP-ALIPAY
uni.removeStorageSync('alipayQrCode') //临时解决出租车扫码之后跳转到组合票时,参数会有问题,有时间再根本解决
// uni.removeStorageSync('alipayQrCode') //临时解决出租车扫码之后跳转到组合票时,参数会有问题
this.payType = 33
//#endif
this.merchantId=this.$commonjs.getKey(option,'merchantId')
......@@ -420,6 +420,12 @@ export default {
this.showNumber=true
//默认总价为一张的价格
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
}
......@@ -524,6 +530,10 @@ export default {
]
}
}
//由于输入数量页面没有做领券逻辑,暂时传给后端直接为空数组
if(this.showNumber){
couponList=[]
}
let data = {
companyId: this.companyId,
merchantId: this.merchantId,
......@@ -640,6 +650,7 @@ export default {
},
watch: {
orderMoney(val, oldVal) {
if(this.showMoney){
if (val == '.' && oldVal == '') {
//首位数是小数点自动加上0
this.orderMoney = 0 + '.'
......@@ -669,6 +680,8 @@ export default {
this.payBackground = '#cccccc'
}
}
}
}
}
</script>
......
......@@ -60,14 +60,14 @@ export default {
this.$request('order/userOrder/getStatusById', data).then((res) => {
if (res.code == '00') {
//如果是组合票,直接跳订单列表页面
let orderType=res.data.orderType
let orderType=res.main.orderType
if(orderType=='10'){
uni.reLaunch({
url:this.afterBuyUrl+'?orderId=' + this.orderId+'&ifyukuaiCode='+this.ifyukuaiCode
})
return
}
this.status = res.data.orderStatus
this.status = res.main.orderStatus
if (this.status == '2' || this.status == '4' || this.status == '5') {
//1.跳订单列表,2.订单详情,3.停留该页面显示支付成功(ourPayment页面跳入时,无afterBuyUrl,停留在该页面)
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