Commit 3c81b50e authored by 潘永坪's avatar 潘永坪

填写订单页面开发

parent 396643b7
...@@ -103,33 +103,39 @@ export default { ...@@ -103,33 +103,39 @@ export default {
} }
//小按钮 //小按钮
.btn{ .btn{
background:linear-gradient(132deg, #ED400C 0%, #FB862C 100%); background:#3688FF;
display: inline-block; display: inline-block;
color: #FFFFFF; color: #FFFFFF;
width: 135rpx;
height: 70rpx;
line-height: 70rpx;
font-size:28rpx; font-size:28rpx;
border-radius:8rpx; border-radius:16rpx;
text-align: center; text-align: center;
padding: 16rpx 32rpx;
} }
//中等按钮 //中等按钮
.middle-btn{ .middle-btn{
background:linear-gradient(132deg, #ED400C 0%, #FB862C 100%); background:linear-gradient(132deg, #ED400C 0%, #FB862C 100%);
display: inline-block; display: inline-block;
color: #FFFFFF; color: #FFFFFF;
width: 180rpx;
height: 80rpx;
line-height: 80rpx;
font-size:32rpx; font-size:32rpx;
border-radius:12rpx; border-radius:20rpx;
text-align: center; text-align: center;
padding: 18rpx 40rpx;
} }
//大按钮 //大按钮
.big-btn{ .big-btn{
background:linear-gradient(132deg, #ED400C 0%, #FB862C 100%); background:linear-gradient(132deg, #ED400C 0%, #FB862C 100%);
display: inline-block; display: inline-block;
color: #FFFFFF; color: #FFFFFF;
width: 240rpx;
height: 100rpx;
line-height:100rpx;
font-size:36rpx; font-size:36rpx;
border-radius:28rpx; border-radius:28rpx;
text-align: center; text-align: center;
padding: 20rpx 80rpx;
font-weight: bold; font-weight: bold;
} }
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
¥ <text>{{buyKnowData.sellingPrice}}</text> ¥ <text>{{buyKnowData.sellingPrice}}</text>
</text> </text>
<view class="bottom-right"> <view class="bottom-right">
<text class="btn" @click="showPop=false"> <text class="middle-btn" @click="showPop=false">
去预订 去预订
</text> </text>
</view> </view>
...@@ -158,9 +158,4 @@ export default { ...@@ -158,9 +158,4 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.btn{
padding: 16rpx 48rpx;
border-radius: 20rpx;
font-size: 32rpx;
}
</style> </style>
<template> <template>
<view class="area-box"> <view class="area-box">
<view class="top" @click="sure()"> <view class="top" @click="closeSon()">
<view class="top-left"> <view class="top-left">
选择(索道)出发站点 选择(索道)出发站点
</view> </view>
<view> <view>
<u-icon name="close"></u-icon> <u-icon name="close" bold></u-icon>
</view> </view>
</view> </view>
<!-- 没有默认站点时-->
<view v-if="defaultAreaCode" class="defaultArea"> <template v-if="!defaultAreaCode">
<view>
<text>
当前站点:
</text>
<text>
{{areaObj.areaName}}
</text>
</view>
<view>
<text>
当前排队人数:
</text>
<text>
{{sortIfo.peopleNumber}}
</text>
</view>
<view>
<text>
预计进入排队等候区时间:
</text>
<text>
{{sortIfo.sortTotalTime}}
</text>
</view>
<view>
<text>
退票规则:
</text>
<text>
不可退
</text>
</view>
<view>
<image src="../static/scenic/chooseArea.jpg" mode="widthFix"></image>
</view>
<view>
<a class="middle-btn" @click="sure()">确定</a>
</view>
</view>
<template v-else>
<view class="bottom"> <view class="bottom">
<view class="bottom1"> <view class="bottom1">
<view> <view>
...@@ -72,7 +21,7 @@ ...@@ -72,7 +21,7 @@
</view> </view>
<view class="bottom1-btn"> <view class="bottom1-btn">
<text class="btn" @click="getSort(item)" v-for="(item,index) of areaList" :key="index"> <text class="btn" @click="chooseArea(item)" v-for="(item,index) of areaList" :key="index">
{{item.areaName}} {{item.areaName}}
</text> </text>
</view> </view>
...@@ -121,7 +70,7 @@ ...@@ -121,7 +70,7 @@
</text> </text>
</view> </view>
</template> </template>
<view> <!-- <view>
<text> <text>
退票规则: 退票规则:
</text> </text>
...@@ -129,19 +78,19 @@ ...@@ -129,19 +78,19 @@
<text> <text>
不可退 不可退
</text> </text>
</view> </view> -->
<view> <view>
返程时,根据现场情况需重新取号 返程时,根据现场情况需重新取号
</view> </view>
<view v-if="!sortIfo" style="font-size:32rpx;color: #ff0000;"> <view v-if="!sortIfo" style="font-size:32rpx;color:#FC6703;">
未找到本站信息,请根据现场大屏幕信息合理购票 未找到本站信息,请根据现场大屏幕信息合理购票
</view> </view>
<view style="text-align: center;"> <view style="text-align: center;">
<text class="middle-btn" @click="hidePop()" style="color: #333;margin-right: 48rpx;"> <text class="btn" @click="hidePop()" style="color: #555;margin-right: 48rpx;">
取消 取消
</text> </text>
<text class="middle-btn" @click="sure()"> <text class="btn" @click="sure()">
确定 确定
</text> </text>
</view> </view>
...@@ -149,7 +98,56 @@ ...@@ -149,7 +98,56 @@
</view> </view>
</template> </template>
<!-- 有默认站点时 -->
<view v-else class="defaultArea">
<view>
<text>
当前站点:
</text>
<text>
{{areaObj.areaName}}
</text>
</view>
<view>
<text>
当前排队人数:
</text>
<text>
{{sortIfo.peopleNumber}}
</text>
</view>
<view>
<text>
预计进入排队等候区时间:
</text>
<text>
{{sortIfo.sortTotalTime}}
</text>
</view>
<!-- <view>
<text>
退票规则:
</text>
<text>
不可退
</text>
</view> -->
<view>
<image src="../static/scenic/chooseArea.jpg" mode="widthFix"></image>
</view>
<view>
<a class="btn" @click="closeSon()">确定</a>
</view>
</view>
</view> </view>
</template> </template>
...@@ -162,7 +160,7 @@ export default { ...@@ -162,7 +160,7 @@ export default {
showPop: false, //控制弹窗显示隐藏 showPop: false, //控制弹窗显示隐藏
distanceIndex:0, //最小距离下标 distanceIndex:0, //最小距离下标
distanceList: [], //所有距离列表 distanceList: [], //所有距离列表
sortIfo: '', //排信息 sortIfo: '', //排信息
areaObj: { areaObj: {
areaCode: '', //选中的区域编码 areaCode: '', //选中的区域编码
areaName: '', //选中的区域名字 areaName: '', //选中的区域名字
...@@ -174,18 +172,12 @@ export default { ...@@ -174,18 +172,12 @@ export default {
created() { created() {
//如果有默认站点 //如果有默认站点
if(this.defaultAreaCode&&this.sortArr.length>0){ if(this.defaultAreaCode&&this.sortArr.length>0){
this.sortArr.forEach(item=>{ this.sortArr.forEach(item=>{
if(item.projectId==this.defaultAreaCode){ if(item.projectId==this.defaultAreaCode){
this.sortIfo=item this.sortIfo=item
this.sortIfo.peopleNumber = Math.max(item.sortTotalCapacity-item.showEnd,0) this.sortIfo.peopleNumber = Math.max(item.sortTotalCapacity-item.showEnd,0)
} }
}) })
this.areaList.forEach(item=>{
if(item.areaCode==this.defaultAreaCode){
this.areaObj.areaCode=item.areaCode
this.areaObj.areaName=item.areaName
}
})
return return
} }
uni.getLocation({ uni.getLocation({
...@@ -198,27 +190,23 @@ export default { ...@@ -198,27 +190,23 @@ export default {
}) })
}, },
methods: { methods: {
//---关闭组件
closeSon(){
this.$parent.closeArea()
},
//---隐藏弹窗 //---隐藏弹窗
hidePop() { hidePop() {
this.showPop = false this.showPop = false
}, },
//---返回隐藏该组件 //---确定选择站点
returnClose() {
this.$parent.closeArea()
},
//---隐藏该组件
sure() { sure() {
this.showPop = false this.showPop = false
this.$parent.closeArea() this.$parent.closeArea()
this.$emit('areaSure', this.areaObj) this.$emit('areaSure', this.areaObj)
}, },
//---获取排号信息 //---选择站点,获取排号信息
getSort(item) { chooseArea(item) {
this.showPop = true this.showPop = true
let data = {
areaCode: item.areaCode,
merchantCode: this.merchantCode, //商户code
}
this.areaObj.areaCode = item.areaCode //获取选中的站点code,便于找到返回数据的下标 this.areaObj.areaCode = item.areaCode //获取选中的站点code,便于找到返回数据的下标
this.areaObj.areaName = item.areaName this.areaObj.areaName = item.areaName
this.sortArr.forEach((item)=>{ this.sortArr.forEach((item)=>{
...@@ -255,7 +243,7 @@ export default { ...@@ -255,7 +243,7 @@ export default {
text-align: center; text-align: center;
} }
.defaultArea view text:last-child{ .defaultArea view text:last-child{
color: #e70313; color: $red;
font-size:32rpx; font-size:32rpx;
font-weight: bold; font-weight: bold;
} }
...@@ -266,7 +254,7 @@ export default { ...@@ -266,7 +254,7 @@ export default {
right: 0; right: 0;
bottom: 0; bottom: 0;
z-index:99; z-index:99;
background: #f5f5f5; background: #ECF3FE;
} }
.top{ .top{
display: flex; display: flex;
...@@ -288,7 +276,7 @@ export default { ...@@ -288,7 +276,7 @@ export default {
} }
.bottom1-choose{ .bottom1-choose{
font-size: 32rpx; font-size: 32rpx;
color: #ff0000; color: $red;
text{ text{
font-weight: bold; font-weight: bold;
font-size: 36rpx; font-size: 36rpx;
...@@ -300,12 +288,12 @@ export default { ...@@ -300,12 +288,12 @@ export default {
.bottom2{ .bottom2{
margin-top: 60rpx; margin-top: 60rpx;
font-size: 32rpx; font-size: 32rpx;
color: #ff0000; color:$red;
text-align: center; text-align: center;
} }
// 弹窗 // 弹窗
.pop-wrap{ .pop-wrap{
background: rgba(0,0,0,0.1); background: rgba(0,0,0,0.4);
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
...@@ -328,6 +316,6 @@ export default { ...@@ -328,6 +316,6 @@ export default {
.pop-content view:not(:last-child) text:last-child{ .pop-content view:not(:last-child) text:last-child{
font-size:36rpx; font-size:36rpx;
font-weight: bolder; font-weight: bolder;
color: #f40000 color:$red;
} }
</style> </style>
<template> <template>
<u-popup :show="showPop" :round="20" @close="showPop=false" closeable> <view v-show="showPop">
<view class="son-wrap"> <view class="list-box">
<view class="top"> <view class="top">
<view class="top-num"> <view class="top-num">
需填写{{contactNum}}位联系人 <text>
需填写{{contactNum}}位联系人
</text>
<view class="top-icon" @click="showPop=false">
<u-icon name="close" bold></u-icon>
</view>
</view> </view>
<view @click="showEdit()" class="top-add"> <view @click="showEdit()" class="top-add">
<text> <text>
...@@ -16,7 +21,7 @@ ...@@ -16,7 +21,7 @@
<checkbox-group @change="chooseContactChange"> <checkbox-group @change="chooseContactChange">
<view class="bottom-list" v-for="(item,index) of listTotal" :key="item.id"> <view class="bottom-list" v-for="(item,index) of listTotal" :key="item.id">
<label> <label>
<checkbox :value="JSON.stringify(item)" :checked="item.ifChoose" color="#3688ff" /> <checkbox class="blue" :value="JSON.stringify(item)" :checked="item.ifChoose" color="#3688ff" />
<view class="bottom-content"> <view class="bottom-content">
<view> <view>
{{item.name}} {{item.name}}
...@@ -44,17 +49,19 @@ ...@@ -44,17 +49,19 @@
</view> </view>
</view> </view>
<view style="margin: 40rpx 0;text-align: center;" v-if='listTotal&&listTotal.length>0'> <view style="margin: 40rpx 0;text-align: center;" v-if='listTotal&&listTotal.length>0'>
已展示所有联系人 已展示所有联系人
</view> </view>
</checkbox-group> </checkbox-group>
<view class="bottom-sure" @click="config()"> <view class="bottom-sure" @click="config()">
确定 确定
</view> </view>
</view> </view>
</view> </view>
<u-modal :show="showModal" @confirm="confirmDele" @cancel="showModal=false" showCancelButton title="确认删除该联系人" ></u-modal> <u-modal :show="showModal" @confirm="confirmDele" @cancel="showModal=false" showCancelButton title="确认删除该联系人" ></u-modal>
</u-popup> </view>
</template> </template>
<script> <script>
...@@ -83,13 +90,11 @@ export default { ...@@ -83,13 +90,11 @@ export default {
methods: { methods: {
//---点击新增,展示编辑联系人弹窗,并传空值给编辑弹窗 //---点击新增,展示编辑联系人弹窗,并传空值给编辑弹窗
showEdit() { showEdit() {
this.showPop=false
this.$parent.showEdit() this.$parent.showEdit()
this.$emit('getEditContact', '') this.$emit('getEditContact', '')
}, },
//---展示编辑弹窗,并传值给编辑弹窗 //---展示编辑弹窗,并传值给编辑弹窗
goEdit(obj) { goEdit(obj) {
this.showPop=false
this.$parent.showEdit() this.$parent.showEdit()
this.$emit('getEditContact', obj) this.$emit('getEditContact', obj)
}, },
...@@ -165,10 +170,16 @@ export default { ...@@ -165,10 +170,16 @@ export default {
</script> </script>
<style scoped="scoped" lang="scss"> <style scoped="scoped" lang="scss">
.son-wrap{ .list-box{
height: 100vh; background: #F5F5F5;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 999;
display: flex; display: flex;
flex-direction:column; flex-direction: column;
} }
.top-num{ .top-num{
height: 100rpx; height: 100rpx;
...@@ -179,6 +190,11 @@ export default { ...@@ -179,6 +190,11 @@ export default {
justify-content: center; justify-content: center;
font-weight: bold; font-weight: bold;
font-size: 32rpx; font-size: 32rpx;
position: relative;
}
.top-icon{
position: absolute;
right: 24rpx;
} }
.top-add { .top-add {
height:150rpx; height:150rpx;
...@@ -201,7 +217,7 @@ export default { ...@@ -201,7 +217,7 @@ export default {
box-shadow:0px 0px 12px 2px rgba(0,0,0,0.08); box-shadow:0px 0px 12px 2px rgba(0,0,0,0.08);
} }
.bottom { .bottom {
padding:0 24rpx 80rpx 24rpx; padding:0 24rpx 100rpx 24rpx;
flex: 1; flex: 1;
overflow-y: scroll; overflow-y: scroll;
} }
......
<template> <template>
<view class="editBox" v-show="showEdit"> <view class="editBox" v-show="showEdit">
<view @click="close()" class="return"> <view class="return">
<u-icon name="close" bold></u-icon> <!-- 新增的时候 -->
<view v-if="!reviseContactId">
已新增{{contactTotal.length}}位联系人
</view>
<view @click="showEdit = false" class="return-icon">
<u-icon name="close" bold></u-icon>
</view>
</view> </view>
<view class="editTop"> <view class="editTop">
...@@ -39,7 +46,7 @@ ...@@ -39,7 +46,7 @@
<script> <script>
export default { export default {
props: ['editContact'], props: ['editContact','contactTotal'],
data() { data() {
return { return {
showEdit: false, //控制组件显示隐藏 showEdit: false, //控制组件显示隐藏
...@@ -52,7 +59,6 @@ export default { ...@@ -52,7 +59,6 @@ export default {
watch: { watch: {
editContact: { editContact: {
handler(newValue, oldValue) { handler(newValue, oldValue) {
console.log(111)
this.name = newValue.name||'' this.name = newValue.name||''
this.credentialNumber = newValue.credentialNumber||'' this.credentialNumber = newValue.credentialNumber||''
this.reviseContactId = newValue.id||'' this.reviseContactId = newValue.id||''
...@@ -63,10 +69,6 @@ export default { ...@@ -63,10 +69,6 @@ export default {
} }
}, },
methods: { methods: {
//---关闭弹窗
close() {
this.showEdit = false
},
//---保存 //---保存
keepSave() { keepSave() {
if (!this.$commonjs.nameReg().test(this.name)) { if (!this.$commonjs.nameReg().test(this.name)) {
...@@ -113,9 +115,17 @@ export default { ...@@ -113,9 +115,17 @@ export default {
icon:'none' icon:'none'
}) })
if(!this.reviseContactId){ if(!this.reviseContactId){
//新增的时候
this.$parent.addChoose() this.$parent.addChoose()
//成功之后清空数据,防止下次新增的时候出现之前的数据
this.name = ''
this.credentialNumber = ''
this.phone=''
}
if(this.reviseContactId){
//修改的时候
this.showEdit = false
} }
this.showEdit = false
} else { } else {
uni.showToast({ uni.showToast({
title:res.message, title:res.message,
...@@ -136,15 +146,22 @@ export default { ...@@ -136,15 +146,22 @@ export default {
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
z-index: 10000; z-index: 1000;
} }
.return { .return {
height:100rpx; height: 100rpx;
padding: 0 24rpx;
background: #FFFFFF;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content:flex-end; background: #FFF1E8;
color: #FC771D;
justify-content: center;
font-weight: bold;
font-size: 32rpx;
position: relative;
}
.return-icon{
position: absolute;
right: 24rpx;
} }
.editTop { .editTop {
height:200rpx; height:200rpx;
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</view> </view>
</view> </view>
<!--需要排队并且为一个站点--> <!--需要排队并且为一个站点-->
<view class="middle-place" v-if="productIfo.isFetch == 1 && productIfo.productAreaList.length == 1 && showOpenArea" @click="getSortInfor()"> <!-- <view class="middle-place" v-if="productIfo.isFetch == 1 && productIfo.productAreaList.length == 1 && showOpenArea" @click="getSortInfor()">
<view> 获取排队信息 </view> <view> 获取排队信息 </view>
<view> <view>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<view> <view>
<u-icon name="arrow-right" color="#3688FF"></u-icon> <u-icon name="arrow-right" color="#3688FF"></u-icon>
</view> </view>
</view> </view> -->
<view class="middle1Date"> <view class="middle1Date">
<text>游玩日期</text> <text>游玩日期</text>
<scroll-view class="date-content" scroll-x="true" :scroll-left="dateScroll" v-if="dateList.length > 0"> <scroll-view class="date-content" scroll-x="true" :scroll-left="dateScroll" v-if="dateList.length > 0">
...@@ -123,23 +123,25 @@ ...@@ -123,23 +123,25 @@
</view> </view>
</view> </view>
</view> </view>
<!------------------------------------------------------额外服务部分----------------------------------------------------> <!-- --------------------------------------------额外服务部分-------------------------------------------- -->
<!-- <view class="extraService" v-if="loadProductResVoList.length>0&&showErmai"> <view class="extraService" v-if="serviceList.length>0&&showErmai">
<view v-for="(item,index) of loadProductResVoList" :key="item.id"> <checkbox-group @change="extraChange">
<text> <view v-for="(item,index) of serviceList" :key="item.id">
<text style="font-size: 28rpx;font-weight: bold;"> <label>
{{item.name}} <view>
</text> <text>{{item.name}}</text>
<text style="font-size:20rpx;color: #666666;" v-if="item.deposit">(押金:¥{{item.deposit}})</text>
<text style="font-size:20rpx;color: #666666;" v-if="item.deposit">(押金:¥{{item.deposit}})</text> </view>
</text>
<view>
<label> <text style="font-size: 24rpx;">¥</text>
¥{{item.sellingPrice}} <text style="font-size: 32rpx;margin-right: 20rpx;">{{item.sellingPrice}}</text>
<input type="checkbox" style="margin-left: 20rpx;" :value="item" v-model="choooseService" @change="extraChange(item,index)" /> <checkbox class="blue" :value="JSON.stringify(item)" style="transform: scale(0.7);" />
</label> </view>
</view> </label>
</view> --> </view>
</checkbox-group>
</view>
<!-- ----------------------------------------------游客信息----------------------------------------- --> <!-- ----------------------------------------------游客信息----------------------------------------- -->
<view class="middle2" v-if="productIfo.tripTemplateFlag != 2"> <view class="middle2" v-if="productIfo.tripTemplateFlag != 2">
<view class="middle2Visitor"> <view class="middle2Visitor">
...@@ -150,8 +152,7 @@ ...@@ -150,8 +152,7 @@
<text class="title-bold" v-if="contactNum - chooseContact.length > 0">,还需{{ contactNum - chooseContact.length }}</text> <text class="title-bold" v-if="contactNum - chooseContact.length > 0">,还需{{ contactNum - chooseContact.length }}</text>
</text> </text>
</view> </view>
<view class="visitorPlus" v-if="contactTotal.length>0">
<view class="visitorPlus">
<!-- 这里key必须是index,如果是id会出现数据改变和样式不改变的bug --> <!-- 这里key必须是index,如果是id会出现数据改变和样式不改变的bug -->
<view <view
class="plus-list" class="plus-list"
...@@ -171,6 +172,10 @@ ...@@ -171,6 +172,10 @@
<u-icon name="arrow-right" color="#3688FF"></u-icon> <u-icon name="arrow-right" color="#3688FF"></u-icon>
</view> </view>
</view> </view>
<view class="visitorBtn" v-else @click="$refs.editContacts.showEdit = true">
<u-icon name="plus-circle" color="#3688FF" size="52"></u-icon>
<text style="margin-left:16rpx;">新增</text>
</view>
<view class="visitorEdit" v-show="chooseContact.length > 0"> <view class="visitorEdit" v-show="chooseContact.length > 0">
<view class="edit-list" v-for="(item, index) of chooseContact" :key="item.id"> <view class="edit-list" v-for="(item, index) of chooseContact" :key="item.id">
...@@ -211,51 +216,29 @@ ...@@ -211,51 +216,29 @@
<text style="color: #ff0000"> {{ productIfo.deposit }}</text> <text style="color: #ff0000"> {{ productIfo.deposit }}</text>
</view> </view>
<!-- ----------------------------------选中了额外服务之后,不再选额外服务的弹窗 ------------------------------------------------ -->
<!-- <view class="extraPop" v-show="showExtraPop">
<view>
<view>
{{extraChangeData.name}}
</view>
<view>
{{extraChangeData.details}}
</view>
<view>
<text @click="extraNo()">
不想感受
</text>
<text @click="extraYes()">
取消
</text>
</view>
</view>
</view> -->
<!-- -----------------------------------支付之后有额外服务,没有选额外服务的弹窗------------------------------------- --> <!-- -----------------------------------支付之后有额外服务,没有选额外服务的弹窗------------------------------------- -->
<!-- <view class="extraPop" v-show="showPayExtraPop"> <u-popup :show="showExtraPop" :round="20" @close="showExtraPop = false" closeable>
<view> <view class="extra-wrap">
<view> <view style="font-weight: bold;font-size: 32rpx;">
云智能导览耳机 云智能导览耳机
</view> </view>
<view style="text-align: center;"> <view style="color: #666666;margin:40rpx 0;">
深度了解索道典故由来,周边攻略推荐 深度了解索道典故由来,周边攻略推荐
</view> </view>
<view> <view>
<text @click="payExtraNo()"> <text @click="extraNo()" class="btn" style="background: #fff;color: #333;border: 1px solid #c0c0c0;">
不需要 不需要
</text> </text>
<text @click="payExtraYes()"> <text @click="extraYes()" class="btn" style="margin-left: 40rpx;">
需要 需要
</text> </text>
</view> </view>
</view> </view>
</view> -->
</u-popup>
</view> </view>
<view class="bottom"> <view class="bottom">
...@@ -271,10 +254,10 @@ ...@@ -271,10 +254,10 @@
<u-icon name="arrow-down"></u-icon> <u-icon name="arrow-down"></u-icon>
</view> </view>
<view class="btn" :style="{ background: payBackground }"> <view class="bottom-btn" :style="{ background: payBackground }">
<text v-if="productIfo.status == 1">已下架</text> <text v-if="productIfo.status == 1">已下架</text>
<text v-if="parseInt(maxBookNum) <1" style="background: #c0c0c0">暂无库存</text> <text v-if="parseInt(maxBookNum) <1" style="background: #c0c0c0">暂无库存</text>
<text v-if="productIfo.status != 1 && parseInt(maxBookNum) >= 1" @click="jugeOrder()">去支付</text> <text v-if="productIfo.status != 1 && parseInt(maxBookNum) >= 1" @click="goPay()">去支付</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -297,7 +280,7 @@ ...@@ -297,7 +280,7 @@
:defaultAreaCode="defaultAreaCode" :defaultAreaCode="defaultAreaCode"
></chooseArea> ></chooseArea>
<times ref="times" :chooseTimeList="timeList" @timeConfig="timeConfig" :chooseTimeData="chooseTimeData" :timeActive="timeActive"></times> <times ref="times" :chooseTimeList="timeList" @timeConfig="timeConfig" :chooseTimeData="chooseTimeData" :timeActive="timeActive"></times>
<editContacts ref="editContacts" :editContact="editContact"></editContacts> <editContacts ref="editContacts" :editContact="editContact" :contactTotal="contactTotal"></editContacts>
<contactList <contactList
ref="contactList" ref="contactList"
@getEditContact="getEditContact" @getEditContact="getEditContact"
...@@ -306,7 +289,7 @@ ...@@ -306,7 +289,7 @@
></contactList> ></contactList>
<!--一个站点时获取排队信息弹窗--> <!--一个站点时获取排队信息弹窗-->
<u-popup :show="sortInforPop" :round="10" closeable @close="sortInforPop = false"> <!-- <u-popup :show="sortInforPop" :round="10" closeable @close="sortInforPop = false">
<view style="padding: 40rpx 60rpx"> <view style="padding: 40rpx 60rpx">
<view> <view>
景区名称: 景区名称:
...@@ -331,7 +314,7 @@ ...@@ -331,7 +314,7 @@
<text class="middle-btn">确定</text> <text class="middle-btn">确定</text>
</view> </view>
</view> </view>
</u-popup> </u-popup> -->
</view> </view>
</template> </template>
...@@ -395,19 +378,16 @@ export default { ...@@ -395,19 +378,16 @@ export default {
templateList: [], //该产品联系人必须要填写的信息 templateList: [], //该产品联系人必须要填写的信息
flag: '', //setTimeout函数 flag: '', //setTimeout函数
savedMoney: 0, //优惠价格 savedMoney: 0, //优惠价格
loadProductResVoList: [], //所有额外服务 serviceList: [], //所有额外服务
choooseService: [], //选中的额外服务 choooseService: [], //选中的额外服务
extraPrice: 0, //额外服务总价格 extraPrice: 0, //额外服务总价格
showExtraPop: false, //控制额外服务弹窗显示隐藏 showExtraPop: false, //控制支付时有额外服务,没有选中额外服务的弹窗显示隐藏
showPayExtraPop: false, //控制支付时有额外服务,没有选中额外服务的弹窗显示隐藏
extraChangeData: '', //额外服务变化时,变化的那个额外服务值
orderProductList: [], //额外服务,儿童票等入参 orderProductList: [], //额外服务,儿童票等入参
extraextraDepositTotal: 0, //额外服务总押金 extraextraDepositTotal: 0, //额外服务总押金
productDepositTotal: 0, //产品总押金 productDepositTotal: 0, //产品总押金
orderSource: '', //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口 orderSource: '', //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
thirdOpenid: '', //第三方openid thirdOpenid: '', //第三方openid
beforeBookDays: '', //需提前预定天数 beforeBookDays: '', //需提前预定天数
afterBuyUrl: '', //支付成功后页面跳转地址
companyId: '', //公司Id companyId: '', //公司Id
docQuery: '', //元素变量 docQuery: '', //元素变量
payBackground: '', //支付按钮背景颜色 payBackground: '', //支付按钮背景颜色
...@@ -498,54 +478,13 @@ export default { ...@@ -498,54 +478,13 @@ export default {
} }
}) })
}, },
//---排号是否上下架
sortUpDown() {
let data = {
merchantCode: this.merchantCode //商户code
}
uni.showLoading({
title: '加载中',
mask:true
})
this.$request('distribution/distribution/findNewFetchInfoFromSceinc', data).then(res => {
if (res.code == '00') {
this.sortArr = res.data.data
let data = res.data
if (this.productIfo.productAreaList.length > 1) {
//有库存并且需要选择两个站点以上的票种,显示区域组件
for (let item in data.main) {
if (data.main[item].sceneSortStatus == '1') {
this.showArea = true
this.showOpenArea = true
}
}
} else if (this.productIfo.productAreaList.length == 1) {
//只有一个站点时,直接选中站点
for (let item in data.main) {
if (data.main[item].sceneSortStatus == '1') {
this.areaObj = this.productIfo.productAreaList[0]
this.showOpenArea = true
}
}
}
}
})
},
//---购买额外服务
extraYes() {
this.showExtraPop = false
this.choooseService.push(this.extraChangeData)
},
//---不购买额外服务
extraNo() {
this.showExtraPop = false
},
//---额外服务多选框变化 //---额外服务多选框变化
extraChange(item, i) { extraChange(e) {
if (!document.querySelectorAll('.extraService input')[i].checked) { this.choooseService=[]
this.showExtraPop = true let value=e.detail.value
this.extraChangeData = item value.forEach(item=>{
} this.choooseService.push(JSON.parse(item))
})
}, },
//---获取子组件的传值 //---获取子组件的传值
areaSure(data) { areaSure(data) {
...@@ -560,7 +499,6 @@ export default { ...@@ -560,7 +499,6 @@ export default {
}, },
//---展示选择站点 //---展示选择站点
openArea() { openArea() {
this.areaObj = ''
this.showArea = true this.showArea = true
}, },
//---关闭选择站点 //---关闭选择站点
...@@ -632,7 +570,6 @@ export default { ...@@ -632,7 +570,6 @@ export default {
//---获取点击的编辑联系人信息,传给编辑联系人组件 //---获取点击的编辑联系人信息,传给编辑联系人组件
getEditContact(data) { getEditContact(data) {
this.editContact = data this.editContact = data
console.log(this.editContact)
}, },
//---删除选中的联系人 //---删除选中的联系人
delChooseContact(item, index) { delChooseContact(item, index) {
...@@ -719,7 +656,7 @@ export default { ...@@ -719,7 +656,7 @@ export default {
if (res.code == '00') { if (res.code == '00') {
this.productIfo = res.data this.productIfo = res.data
this.defaultAreaCode = this.productIfo.defaultAreaCode || '' this.defaultAreaCode = this.productIfo.defaultAreaCode || ''
//找到站点默认站点数据 //通过默认站点找到站点数据
if (this.defaultAreaCode) { if (this.defaultAreaCode) {
this.productIfo.productAreaList.forEach(item => { this.productIfo.productAreaList.forEach(item => {
if (item.areaCode == this.defaultAreaCode) { if (item.areaCode == this.defaultAreaCode) {
...@@ -734,8 +671,7 @@ export default { ...@@ -734,8 +671,7 @@ export default {
this.merchantId = res.data.merchantId //重新赋值商户id this.merchantId = res.data.merchantId //重新赋值商户id
this.beforeBookDays = res.data.beforeBookDays || 0 //提前预定天数 this.beforeBookDays = res.data.beforeBookDays || 0 //提前预定天数
this.buyKnowData = res.data //购买须知,传给子组件 this.buyKnowData = res.data //购买须知,传给子组件
this.loadProductResVoList = res.data.loadProductResVoList //额外服务 this.serviceList = res.data.loadProductResVoList //额外服务
this.afterBuyUrl = res.data.afterBuyUrl || '' //支付成功后页面跳转
//this.choooseService=res.data.data.loadProductResVoList//默认全部选中 //this.choooseService=res.data.data.loadProductResVoList//默认全部选中
if (this.productIfo.status == 1) { if (this.productIfo.status == 1) {
//下架状态 //下架状态
...@@ -858,6 +794,39 @@ export default { ...@@ -858,6 +794,39 @@ export default {
} }
}) })
}, },
//---排号是否上下架
sortUpDown() {
let data = {
merchantCode: this.merchantCode //商户code
}
uni.showLoading({
title: '加载中',
mask:true
})
this.$request('distribution/distribution/findNewFetchInfoFromSceinc', data).then(res => {
if (res.code == '00') {
this.sortArr = res.data.data
let data = res.data
if (this.productIfo.productAreaList.length > 1) {
//有库存并且需要选择两个站点以上的票种,显示区域组件
for (let item in data.main) {
if (data.main[item].sceneSortStatus == '1'){
this.showArea = true
this.showOpenArea = true
}
}
} else if (this.productIfo.productAreaList.length == 1) {
//只有一个站点时,直接选中站点(现目前还没有一个站点的景区)
for (let item in data.main) {
if (data.main[item].sceneSortStatus == '1') {
this.areaObj = this.productIfo.productAreaList[0]
this.showOpenArea = true
}
}
}
}
})
},
//---获取班次票 //---获取班次票
getTimeStock() { getTimeStock() {
let data = { let data = {
...@@ -957,29 +926,29 @@ export default { ...@@ -957,29 +926,29 @@ export default {
this.$request('scenic/user/productRule/getProductRule', data).then(res => {}) this.$request('scenic/user/productRule/getProductRule', data).then(res => {})
}, },
//---不需要享受耳麦服务 //---不需要享受耳麦服务
payExtraNo() { extraNo() {
this.showPayExtraPop = false this.showExtraPop = false
this.placeOrder() this.placeOrder()
}, },
//---需要享受耳麦服务 //---需要享受耳麦服务
payExtraYes() { extraYes() {
this.showPayExtraPop = false this.showExtraPop = false
this.choooseService = this.loadProductResVoList this.choooseService = this.serviceList
this.placeOrder() this.placeOrder()
}, },
//---点击去支付判断是否直接下单 //---点击去支付
jugeOrder() { goPay() {
if (this.loadProductResVoList.length == 0) { if (this.serviceList.length == 0) {
//没有额外服务,直接支付 //没有额外服务,直接支付
this.placeOrder() this.placeOrder()
} }
if (this.loadProductResVoList.length > 0) { if (this.serviceList.length > 0) {
//有额外服务,并且选择了额外服务的,直接支付 //有额外服务,并且选择了额外服务的,直接支付
if (this.choooseService.length > 0) { if (this.choooseService.length > 0) {
this.placeOrder() this.placeOrder()
} }
} }
if (this.loadProductResVoList.length > 0) { if (this.serviceList.length > 0) {
//有额外服务,没有选中额外服务的,弹出提示框 //有额外服务,没有选中额外服务的,弹出提示框
if (this.productIfo.tripTemplateFlag != 2) { if (this.productIfo.tripTemplateFlag != 2) {
if (!this.$commonjs.phoneReg().test(this.ticketPhone)) { if (!this.$commonjs.phoneReg().test(this.ticketPhone)) {
...@@ -1032,7 +1001,7 @@ export default { ...@@ -1032,7 +1001,7 @@ export default {
} }
if (this.choooseService.length == 0 && this.showErmai) { if (this.choooseService.length == 0 && this.showErmai) {
//没有购买额外服务,并且选择的北站,跳出弹窗 //没有购买额外服务,并且选择的北站,跳出弹窗
this.showPayExtraPop = true this.showExtraPop = true
} }
if (this.choooseService.length == 0 && !this.showErmai) { if (this.choooseService.length == 0 && !this.showErmai) {
//没有购买额外服务,并且选择的南站,直接购买 //没有购买额外服务,并且选择的南站,直接购买
...@@ -1107,7 +1076,7 @@ export default { ...@@ -1107,7 +1076,7 @@ export default {
return return
} }
} }
// this.preOrder() this.preOrder()
}, },
//---预下单 //---预下单
preOrder() { preOrder() {
...@@ -1491,7 +1460,17 @@ export default { ...@@ -1491,7 +1460,17 @@ export default {
font-weight: bolder; font-weight: bolder;
font-size: 28rpx; font-size: 28rpx;
} }
.visitorBtn{
display: flex;
align-items: center;
justify-content: center;
height: 88rpx;
background:#ECF3FE;
margin-top: 40rpx;
color: $theme;
font-size: 32rpx;
border-radius:20rpx;
}
.visitorPlus { .visitorPlus {
margin-top: 30rpx; margin-top: 30rpx;
display: flex; display: flex;
...@@ -1512,7 +1491,6 @@ export default { ...@@ -1512,7 +1491,6 @@ export default {
margin-right: 15rpx; margin-right: 15rpx;
border-radius: 5rpx; border-radius: 5rpx;
position: relative; position: relative;
box-sizing: border-box;
margin-top: 20rpx; margin-top: 20rpx;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
...@@ -1522,7 +1500,7 @@ export default { ...@@ -1522,7 +1500,7 @@ export default {
.plus-list-last { .plus-list-last {
color: $theme; color: $theme;
background: #efefef; background: #efefef;
width: 160rpx; width: 170rpx;
border: none; border: none;
} }
...@@ -1593,79 +1571,19 @@ export default { ...@@ -1593,79 +1571,19 @@ export default {
border-radius: 10rpx; border-radius: 10rpx;
margin-top: 20rpx; margin-top: 20rpx;
} }
.extraService label {
.extraService view { width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
line-height: 30rpx; font-weight: bold;
color:#f45803;
} }
.extra-wrap{
.extraService view:not(:first-child) {
margin-top: 30rpx;
}
.extraService view label {
font-weight: bolder;
color: #f45803;
flex-shrink: 0;
}
.extraPop {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
display: flex;
justify-content: center;
align-items: center;
z-index: 99;
}
.extraPop view {
width: 85%;
background: #ffffff;
border-radius: 10rpx;
padding: 40rpx 30rpx;
}
.extraPop view view:first-child {
text-align: center;
font-size: 28rpx;
font-weight: bolder;
}
.extraPop view view:nth-child(2) {
margin-top: 20rpx;
color: #666666;
line-height: 30rpx;
}
.extraPop view view:nth-child(3) {
margin-top: 40rpx;
text-align: center;
}
.extraPop view view:nth-child(3) text {
display: inline-block;
width: 145rpx;
height: 60rpx;
text-align: center; text-align: center;
line-height: 60rpx; padding-top: 100rpx;
border-radius: 10rpx; height: 65vh;
} }
.extraPop view view:nth-child(3) text:nth-child(1) {
border: 1px solid #e8e8e8;
color: #666666;
margin-right: 40rpx;
}
.extraPop view view:nth-child(3) text:nth-child(2) {
background: linear-gradient(#ff5454, #ff8538);
color: #ffffff;
}
/*底部部分*/ /*底部部分*/
.bottom { .bottom {
height: 100rpx; height: 100rpx;
...@@ -1708,7 +1626,7 @@ export default { ...@@ -1708,7 +1626,7 @@ export default {
display: flex; display: flex;
} }
.btn { .bottom-btn {
position: relative; position: relative;
width: 200rpx; width: 200rpx;
height: 80rpx; height: 80rpx;
...@@ -1717,9 +1635,11 @@ export default { ...@@ -1717,9 +1635,11 @@ export default {
font-size: 32rpx; font-size: 32rpx;
font-weight: bolder; font-weight: bolder;
border-radius: 16rpx; border-radius: 16rpx;
background: $red;
text-align: center;
} }
.btn text { .bottom-btn text {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
......
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