Commit 803fa637 authored by 潘永坪's avatar 潘永坪

组合订单开发

parent 2fc01097
...@@ -309,6 +309,14 @@ ...@@ -309,6 +309,14 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},
{
"path" : "scenicCombiOrder/scenicCombiOrder",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
}
} }
] ]
}, },
......
...@@ -312,6 +312,8 @@ export default { ...@@ -312,6 +312,8 @@ export default {
this.companyId=this.$commonjs.getCompanyId(option) this.companyId=this.$commonjs.getCompanyId(option)
this.channelType = option.channelType || 0 this.channelType = option.channelType || 0
this.merchantId = option.merchantId || '' this.merchantId = option.merchantId || ''
},
onShow() {
let token = uni.getStorageSync('token') let token = uni.getStorageSync('token')
if (token) { if (token) {
uni.getLocation({ uni.getLocation({
...@@ -580,7 +582,7 @@ export default { ...@@ -580,7 +582,7 @@ export default {
}) })
let query ='?productIdList=' + JSON.stringify(productIdList) + '&groupId=' + this.groupId + '&groupChannelId=' + this.groupChannelId + '&orderSource=3' let query ='?productIdList=' + JSON.stringify(productIdList) + '&groupId=' + this.groupId + '&groupChannelId=' + this.groupChannelId + '&orderSource=3'
uni.navigateTo({ uni.navigateTo({
url: '/pages/scenic/scenicOrder/scenicOrder' + query url: '/pages/scenic/scenicCombiOrder/scenicCombiOrder' + query
}) })
} }
}, },
......
<template> <template>
<view class="orderBox"> <view class="orderBox">
<view class="head"> </view> <view class="head"> </view>
<view class="middle"> <view class="middle" v-for="(item,Index) in productList" :key='item.id'>
<view class="middle-top"> <view class="middle-top">
<!-- --------------------------------------------产品信息部分------------------------------------- --> <!-- --------------------------------------------产品信息部分------------------------------------- -->
<view class="middle-Product"> <view class="middle-Product">
<view class="merchantName"> <view class="merchantName">
<text class="title-text"> <text class="title-text">
{{ productIfo.merchantName || '' }} {{ item.merchantName || '' }}
</text> </text>
<text> <text>
{{ productIfo.name || '' }} {{ item.name || '' }}
</text> </text>
</view> </view>
<view @click="showBuyKnow()" class="buyKnow"> <view @click="showBuyKnow(index)" class="buyKnow">
<view> <view>
<text v-if="productIfo.backChangeRule == 0">不可退换</text> <text v-if="item.backChangeRule == 0">不可退换</text>
<text v-if="productIfo.backChangeRule == 1">可退</text> <text v-if="item.backChangeRule == 1">可退</text>
<text v-if="productIfo.backChangeRule == 2">随时可退</text> <text v-if="item.backChangeRule == 2">随时可退</text>
<text v-if="productIfo.isFetch == 1">无需取号</text> <text v-if="item.isFetch == 1">无需取号</text>
</view> </view>
<view> <view>
购买须知 购买须知
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
</view> </view>
</view> </view>
<!--需要排队并且站点数大于1--> <!--需要排队并且站点数大于1-->
<view class="middle-place" @click="openArea()" v-if="productIfo.isFetch == 1 && productIfo.productAreaList.length > 1 && showOpenArea"> <view class="middle-place" @click="openArea(index)" v-if="item.isFetch ==1&& item.productAreaList.length >1&&item.areaUp">
<view> 出发站点 </view> <view> 出发站点 </view>
<view> <view>
{{ areaObj.areaName || '请选择站点' }} {{ item.areaObj.areaName || '请选择站点' }}
</view> </view>
<view> <view>
...@@ -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="item.isFetch == 1 && item.productAreaList.length == 1 &&item.areaUp" @click="getSortInfor()">
<view> 获取排队信息 </view> <view> 获取排队信息 </view>
<view> <view>
...@@ -55,17 +55,17 @@ ...@@ -55,17 +55,17 @@
<view class="middle-Date"> <view class="middle-Date">
<view class="title-text">游玩日期</view> <view class="title-text">游玩日期</view>
<view class="middle-Datelist"> <view class="middle-Datelist">
<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="item.priceStockList&&item.priceStockList.length > 0">
<view class="date-list" v-for="(item, index) of dateList" :class="{ on: active == index }" @click="dateChoose(index)" :key="index"> <view class="date-list" v-for="(item2,index2) of item.priceStockList" :class="{ on: active == index2 }" @click="dateChoose(item,item2,index2)" :key="index2">
<view v-if="item.week"> <view v-if="item2.week">
<text v-if="item.week != '今天' && item.week != '明天' && item.week != '后天'"></text> <text v-if="item2.week != '今天' && item2.week != '明天' && item2.week != '后天'"></text>
{{ item.week }} {{ item2.week }}
</view> </view>
<view> <view>
{{ item.startTime ? item.startTime.substr(5, 5) : '' }} {{ item2.startTime ? item2.startTime.substr(5, 5) : '' }}
</view> </view>
<view class="date-price"> <view class="date-price">
¥<text style="font-weight: bold;">{{ item.sellingPrice }}</text> ¥<text style="font-weight: bold;">{{ item2.sellingPrice }}</text>
</view> </view>
<view v-if="active == index" class="date-icon"> <view v-if="active == index" class="date-icon">
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</view> </view>
</scroll-view> </scroll-view>
<text v-else class="no-date"> 不可购买 </text> <text v-else class="no-date"> 不可购买 </text>
<view class="dateMore" @click="showCalendar()"> <view class="dateMore" @click="showCalendar(index)">
<view class="date-more-content"> <view class="date-more-content">
<view>更多</view> <view>更多</view>
<view>日期</view> <view>日期</view>
...@@ -84,29 +84,25 @@ ...@@ -84,29 +84,25 @@
</view> </view>
</view> </view>
<view class="middle-time" v-if="productIfo.productType == 3"> <view class="middle-time" v-if="item.productType == 3">
<view class="title-text"> 场次 </view> <view class="title-text"> 场次 </view>
<view class="middle-timelist"> <view class="middle-timelist">
<scroll-view class="time-content" scroll-x="true" :scroll-left="timeScroll" v-if="timeList.length> 0"> <scroll-view class="time-content" scroll-x="true" :scroll-left="timeScroll" v-if="item.timeList.length> 0">
<view class="time-list" v-for="(item, index) of timeList" @click="chooseTime(index)" :class="{ on: timeActive == index }" :key="index"> <view class="time-list" v-for="(item2,index2) of item.timeList" @click="chooseTime(item,item2,index2)" :class="{ on:item.timeActive == index2 }" :key="index2">
<view> <view>
{{ item.startPlanTime ? item.startPlanTime.substr(0, 5) : '' }} {{ item2.startPlanTime ? item2.startPlanTime.substr(0, 5) : '' }}
<text v-if="item.endPlanTime&&!item.saleOnlyShowFromDate"> <text v-if="item2.endPlanTime">-</text>
-{{ item.endPlanTime ? item.endPlanTime.substr(0, 5) : '' }} {{ item2.endPlanTime ? item2.endPlanTime.substr(0, 5) : '' }}
</text>
</view>
<view>
<text v-if="item.copyLast!='余票充足'&&item.copyLast!='售罄'">剩余:</text>
{{ item.last }}
</view> </view>
<view v-if="timeActive == index" class="date-icon"> <view> 剩余:{{ item2.last }} </view>
<view v-if="item.timeActive == index" class="date-icon">
<u-icon name="checkmark" color="#ffffff"></u-icon> <u-icon name="checkmark" color="#ffffff"></u-icon>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<text class="no-time" v-if="startDate && endDate && timeList.length == 0"> 该日票种已售罄,请选择其他日期 </text> <text class="no-time" v-if="item.timeList&&item.timeList.length==0"> 该日票种已售罄,请选择其他日期 </text>
<text class="no-time" v-if="!startDate || !endDate"> 请先选游玩日期 </text> <text class="no-time" v-if="!item.startDate || !item.endDate"> 请先选游玩日期 </text>
<view class="timeMore" @click="showTime()"> <view class="timeMore" @click="showTime(item,index)">
<view class="time-more-content"> <view class="time-more-content">
<view>更多</view> <view>更多</view>
<view>场次</view> <view>场次</view>
...@@ -122,11 +118,11 @@ ...@@ -122,11 +118,11 @@
<view class="middle-Number"> <view class="middle-Number">
<view class="title-text"> 购买数量 </view> <view class="title-text"> 购买数量 </view>
<view> <view>
<u-number-box v-model="buyNum" @change='buyNumChange'> <u-number-box v-model="item.buyNum" @change='buyNumChange'>
<view slot="minus" class="number-minus" > <view slot="minus" class="number-minus" >
<u-icon name="minus" color="#FFFFFF" size="32"></u-icon> <u-icon name="minus" color="#FFFFFF" size="32"></u-icon>
</view> </view>
<text slot="input" class="number-input">{{buyNum}}</text> <text slot="input" class="number-input">{{item.buyNum}}</text>
<view slot="plus" class="number-plus"> <view slot="plus" class="number-plus">
<u-icon name="plus" color="#FFFFFF" size="32"></u-icon> <u-icon name="plus" color="#FFFFFF" size="32"></u-icon>
</view> </view>
...@@ -138,91 +134,48 @@ ...@@ -138,91 +134,48 @@
</view> </view>
<!-- 有可用优惠券,并且未选中 --> <!-- 有可用优惠券,并且未选中 -->
<template v-if="couponData.masterSlaveCouponList&&couponData.masterSlaveCouponList.length>0&&!chooseCouponObj"> <template v-if="item.couponData.masterSlaveCouponList&&item.couponData.masterSlaveCouponList.length>0&&!item.chooseCouponObj">
<view> <view>
{{couponData.masterSlaveCouponList[0].couponName}} {{item.couponData.masterSlaveCouponList[0].couponName}}
</view> </view>
<view > <view >
未使用优惠券 未使用优惠券
</view> </view>
</template> </template>
<!-- 有可用优惠券 --> <!-- 有可用优惠券 -->
<template v-if="chooseCouponObj&&savedMoney>0"> <template v-if="item.chooseCouponObj&&item.savedMoney>0">
<view> <view>
{{chooseCouponObj.couponName}} {{item.chooseCouponObj.couponName}}
</view> </view>
<view style="font-size: 32rpx;"> <view style="font-size: 32rpx;">
<text style="font-size: 24rpx;position: relative;top: 6rpx;">¥</text> <text style="font-size: 24rpx;position: relative;top: 6rpx;">¥</text>
{{parseFloat(savedMoney.toFixed(2))}} {{parseFloat(item.savedMoney.toFixed(2))}}
</view> </view>
</template> </template>
<!-- 可用优惠券条件--> <!-- 可用优惠券条件-->
<template v-if="ableConpon"> <template v-if="item.ableConpon">
<view> <view>
{{ableConpon.couponName}} {{item.ableConpon.couponName}}
</view> </view>
<view> <view>
{{ableConpon.couponRule}} {{item.ableConpon.couponRule}}
</view> </view>
</template> </template>
<u-icon name="arrow-right" color="#3688FF"></u-icon> <u-icon name="arrow-right" color="#3688FF"></u-icon>
</view> </view>
<!-- --------------------------------------------额外服务部分-------------------------------------------- -->
<view class="extraService" v-if="serviceList.length>0&&showErmai">
<checkbox-group @change="extraChange">
<view v-for="(item,index) of serviceList" :key="item.id">
<label>
<view>
<text>{{item.name}}</text>
<text style="font-size:20rpx;color: #666666;" v-if="item.deposit">(押金:¥{{item.deposit}})</text>
</view>
<view>
<text style="font-size: 24rpx;">¥</text>
<text style="font-size: 32rpx;font-weight: bold;">{{item.sellingPrice}}</text>
<checkbox class="blue" :value="JSON.stringify(item)" style="transform: scale(0.7);position: relative;left: 10rpx;" :checked="item.ifChoose" />
</view>
</label>
</view>
</checkbox-group>
</view>
<!-- -----------------------------------支付之后有额外服务,没有选额外服务的弹窗------------------------- -->
<u-popup :show="showExtraPop" :round="20" @close="showExtraPop = false" closeable>
<view class="extra-wrap">
<view style="font-weight: bold;font-size: 32rpx;">
云智能导览耳机
</view>
<view style="color: #666666;margin:40rpx 0;">
深度了解索道典故由来,周边攻略推荐
</view>
<view>
<text @click="extraNo()" class="btn" style="background: #fff;color: #333;border: 1px solid #c0c0c0;">
不需要
</text>
<text @click="extraYes()" class="btn" style="margin-left: 40rpx;">
需要
</text>
</view>
</view>
</u-popup>
</view> </view>
<view class="middle-divider"> <view class="middle-divider">
</view> </view>
<!-- ---------------------------------------------游客信息-------------------------------------------- --> <!-- ---------------------------------------------游客信息-------------------------------------------- -->
<view class="middle-bottom" v-if="productIfo.tripTemplateFlag != 2"> <view class="middle-bottom" v-if="item.tripTemplateFlag != 2">
<view class="middle-visitor"> <view class="middle-visitor">
<view class="visitorTitle"> <view class="visitorTitle">
<text class="title-text"> 用户信息 </text> <text class="title-text"> 用户信息 </text>
<text> <text>
需填<text class="title-bold">{{ contactNum }}</text>位出行人 需填<text class="title-bold">{{item.contactNum }}</text>位出行人
<!-- <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>
...@@ -251,40 +204,40 @@ ...@@ -251,40 +204,40 @@
<text style="margin-left:16rpx;">新增</text> <text style="margin-left:16rpx;">新增</text>
</view> </view>
<view class="visitorEdit" v-show="chooseContact.length > 0"> <view class="visitorEdit" v-show="item.chooseContact&&item.chooseContact.length > 0">
<view class="edit-list" v-for="(item, index) of chooseContact" :key="item.id"> <view class="edit-list" v-for="(item2, index2) of item.chooseContact" :key="item2.id">
<view @click="delChooseContact(item, index)"> <view @click="delChooseContact(item2, index2)">
<u-icon name="close-circle" color="#3688ff" size="40"></u-icon> <u-icon name="close-circle" color="#3688ff" size="40"></u-icon>
</view> </view>
<view> <view>
{{ item.name }} {{ item2.name }}
</view> </view>
<view> <view>
{{ item.credentialNumber ? item.credentialNumber.substr(0, 3) + '****' + item.credentialNumber.substr(14, 4) : '' }} {{ item2.credentialNumber ? item2.credentialNumber.substr(0, 3) + '****' + item2.credentialNumber.substr(14, 4) : '' }}
</view> </view>
<view @click="showEdit(item)"> <view @click="showEdit(item2)">
<u-icon name="edit-pen-fill" color="#3688ff" size="48"></u-icon> <u-icon name="edit-pen-fill" color="#3688ff" size="48"></u-icon>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="middle-phone" v-if="productIfo.tripTemplateFlag != 2"> <view class="middle-phone" v-if="showTelephone">
<text> 联系电话: </text> <text> 联系电话: </text>
<input type="number" maxlength="11" placeholder="请输入联系电话" v-model.trim="ticketPhone" /> <input type="number" maxlength="11" placeholder="请输入联系电话" v-model.trim="ticketPhone" />
</view> </view>
</view> </view>
<!-- ---------------------------------------------产品押金部分---------------------------------------- --> <!-- ---------------------------------------------产品押金部分---------------------------------------- -->
<view class="productDeposit" v-if="productIfo.deposit"> <view class="productDeposit" v-if="item.deposit">
<view> <view>
{{ productIfo.name }} {{ item.name }}
<text style="color: #FC6703;margin-left: 10rpx;">押金</text> <text style="color: #FC6703;margin-left: 10rpx;">押金</text>
</view> </view>
<view style="color: #FC6703"> {{ productIfo.deposit }}元 </view> <view style="color: #FC6703"> {{ item.deposit }}元 </view>
</view> </view>
</view> </view>
...@@ -303,9 +256,8 @@ ...@@ -303,9 +256,8 @@
</view> </view>
<view class="bottom-btn" :style="{ background: payBackground }"> <view class="bottom-btn" :style="{ background: payBackground }">
<text v-if="productIfo.status == 1">已下架</text> <text v-if="orderStatus == 1">已下架</text>
<text v-if="parseInt(maxBookNum) <1" style="background: #c0c0c0">暂无库存</text> <text v-if="orderStatus!= 1" @click="goPay()">去支付</text>
<text v-if="productIfo.status != 1 && parseInt(maxBookNum) >= 1" @click="goPay()">去支付</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -323,7 +275,7 @@ ...@@ -323,7 +275,7 @@
:chooseCouponObj="chooseCouponObj" :chooseCouponObj="chooseCouponObj"
></detail> ></detail>
<chooseArea <chooseArea
v-if="showArea" v-if="showChooseArea"
:areaList="productIfo.productAreaList" :areaList="productIfo.productAreaList"
@areaSure="areaSure" @areaSure="areaSure"
:sortArr="sortArr" :sortArr="sortArr"
...@@ -391,55 +343,26 @@ export default { ...@@ -391,55 +343,26 @@ export default {
}, },
data() { data() {
return { return {
defaultAreaCode: '', //默认站点 groupId:'',//组合Id
groupChannelId:'',//组合渠道Id
orderSource: '', //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
thirdOpenid: '', //第三方openid
companyId: '', //公司Id
productList:[],//初始化产品数据
productIdList:[],//产品id列表入参
sortArr: [], //多个站点排号信息列表 sortArr: [], //多个站点排号信息列表
sortIfo: '', //单个站点排号信息 sortIfo: '', //单个站点排号信息
sortInforPop: false, //一个站点时获取排队信息弹窗 sortInforPop: false, //一个站点时获取排队信息弹窗
showErmai: true, //临时的,选择了南站不显示耳麦 showChooseArea: false, //控制选择站点弹窗显示隐藏
showArea: false, //控制选择站点显示隐藏
showOpenArea: false, //是否可以显示选择站点
chooseDate: '', //选择的日期
active: 10000, //日期下标
timeActive: 10000, //时间下标,默认不选中 timeActive: 10000, //时间下标,默认不选中
buyNum: 1, //订单数量
maxBookNum: 999, //最大预订数量
dateList: [], //日期列表
timeList: [], //时间列表
buyKnowData: '', //购买须知数据 buyKnowData: '', //购买须知数据
editContact: '', //编辑联系人传值对象 editContact: '', //编辑联系人传值对象
productId: '', //产品Id
merchantId: '', //商户Id
ticketPhone: '', //联系电话 ticketPhone: '', //联系电话
productIfo: '', //初始化产品基本信息
originalPrice: 0, //原价单价
sellingPrice: 0, //卖价单价
interfaceCode: '', //接口编号
merchantCode: '', //商户code
productCode: '', //产品code
contactTotal: [], //所有联系人列表
chooseContact: [], //选中的游客信息列表 chooseContact: [], //选中的游客信息列表
contactNum: 1, //需要选择几位联系人数量
cruisePlanId: '', //班次Id
chooseTimeData: '', //选中的时间传给子组件
timeNumber: '', //当前时间转化为数字 timeNumber: '', //当前时间转化为数字
startDate: '', //开始日期
endDate: '', //结束日期
startPlayTime: '', //开始时间
endPlayTime: '', //结束时间
areaObj: '', //区域组件的传值
templateList: [], //该产品联系人必须要填写的信息
timeFlag: '', //setTimeout函数 timeFlag: '', //setTimeout函数
savedMoney: 0, //优惠价格 savedMoney: 0, //优惠价格
serviceList: [], //所有额外服务
chooseService: [], //选中的额外服务
extraPrice: 0, //额外服务总价格
showExtraPop: false, //控制支付时有额外服务,没有选中额外服务的弹窗显示隐藏
orderProductList: [], //额外服务,儿童票等入参
productDepositTotal: 0, //产品总押金 productDepositTotal: 0, //产品总押金
orderSource: '', //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
thirdOpenid: '', //第三方openid
beforeBookDays: '', //需提前预定天数
companyId: '', //公司Id
docQuery: '', //元素变量 docQuery: '', //元素变量
payBackground: '', //支付按钮背景颜色 payBackground: '', //支付按钮背景颜色
dateScroll: '', //日期滚动值 dateScroll: '', //日期滚动值
...@@ -448,73 +371,85 @@ export default { ...@@ -448,73 +371,85 @@ export default {
couponData:[], //所有劵数据 couponData:[], //所有劵数据
chooseCouponObj: '', //默认选中最优价格优惠券 chooseCouponObj: '', //默认选中最优价格优惠券
ableConpon: '', //没有可用优惠券时,达到一定条件可用,显示达到的条件 ableConpon: '', //没有可用优惠券时,达到一定条件可用,显示达到的条件
orderStatus:'',//上下架状态,任何一个产品状态为下架,该状态为下架
chooseTimeList:[],//选中产品时间列表
chooseTimeData: '', //选中的时间传给子组件
moreDateIndex:0,//点击的更多日期下标
dateList:[],//点击更多日期时对应的日期列表
showTelephone:true,//用于判断是否显示输入联系人电话号码
areaIndex:0,//选择站点时对应的产品下标
contactTotal: [], //所有联系人列表
} }
}, },
onLoad(option) { onLoad(option) {
this.companyId = option.companyId || ''
this.groupId=option.groupId||''
this.groupChannelId=option.groupChannelId||''
this.orderSource=option.orderSource||''
this.thirdOpenid=option.thirdOpenid||''
let idList=JSON.parse(option.productIdList)||[]
this.productIdList=idList.map((item)=>{
return {productId:item}
})
let times = new Date().Format('yyyy-MM-dd hh:mm:ss') let times = new Date().Format('yyyy-MM-dd hh:mm:ss')
this.timeNumber = parseInt(this.$commonjs.changeTime(times)) //将当前时间转化为数字 this.timeNumber = parseInt(this.$commonjs.changeTime(times)) //将当前时间转化为数字
this.companyId = option.companyId || ''
this.orderSource = option.orderSource || ''
this.thirdOpenid = option.thirdOpenid || '' //第三方openid
this.productId = option.productId || ''
this.merchantId = option.merchantId || ''
this.initData() //页面初始化数据 this.initData() //页面初始化数据
this.docQuery = uni.createSelectorQuery().in(this) this.docQuery = uni.createSelectorQuery().in(this)
}, },
computed: { computed: {
originalTotal() { originalTotal() {
//原价总价 let savedMoney=0
if (this.chooseService.length > 0) { let original=0
//额外服务价格和押金总价格 let deposit=0
let singleProduct = 0 //单个产品押金 this.productDepositTotal=0
this.extraPrice = 0 this.productList.forEach((item)=>{
this.extraDepositTotal = 0 //总押金 original+=item.originalPrice*item.buyNum
for (let i = 0; i < this.chooseService.length; i++) { if(item.chooseCouponObj){
this.extraPrice += parseFloat((this.chooseService[i].sellingPrice * this.buyNum).toFixed(2)) if(item.chooseCouponObj.slaveList&&item.chooseCouponObj.slaveList.length>0){
if (this.chooseService[i].depositType == 1) { savedMoney+=item.chooseCouponObj.slaveList[0].savedMoney
//等于1,押金金额跟数量没关系 }else{
singleProduct = this.chooseService[i].deposit savedMoney+=item.chooseCouponObj.savedMoney
} else if (this.chooseService[i].depositType == 2) {
//等于2,押金单价乘购买数量
singleProduct = parseFloat((this.chooseService[i].deposit * this.buyNum).toFixed(2))
}
this.extraDepositTotal += singleProduct
} }
} else {
this.extraPrice = 0
this.extraDepositTotal = 0
}
if (this.productIfo.deposit) {
//如果有押金
if (this.productIfo.depositType == 1) {
//等于1,押金金额跟数量没关系
this.productDepositTotal = this.productIfo.deposit
} else if (this.productIfo.depositType == 2) {
//等于2,押金单价乘购买数量
this.productDepositTotal = parseFloat((this.productIfo.deposit * this.buyNum).toFixed(2))
} }
} else { if(item.depositType==1){//等于1,押金金额跟数量没关系
this.productDepositTotal = 0 deposit=item.deposit
}else if(item.depositType==2){//等于2,押金单价乘购买数量
deposit=item.deposit*item.buyNum
} }
return parseFloat((this.originalPrice * this.buyNum + this.productDepositTotal + this.extraPrice + this.extraDepositTotal).toFixed(2)) //产品总价+产品押金+额外产品总价+额外产品押金-优惠价格 this.productDepositTotal+=deposit
})
return parseFloat((original+this.productDepositTotal).toFixed(2))||0 //产品总价+产品押金
}, },
sellTotal() { sellTotal() {
//卖价总价 let savedMoney=0
if (this.chooseService.length == 0) { let sell=0
this.extraPrice = 0 let deposit=0
this.extraDepositTotal = 0 this.productDepositTotal=0
this.productList.forEach((item)=>{
sell+=item.sellingPrice*item.buyNum
if(item.chooseCouponObj){
if(item.chooseCouponObj.slaveList&&item.chooseCouponObj.slaveList.length>0){
savedMoney+=item.chooseCouponObj.slaveList[0].savedMoney
}else{
savedMoney+=item.chooseCouponObj.savedMoney
}
} }
return parseFloat( if(item.depositType==1){//等于1,押金金额跟数量没关系
(this.sellingPrice * this.buyNum + this.productDepositTotal + this.extraPrice + this.extraDepositTotal - this.savedMoney).toFixed(2) deposit=item.deposit
) //产品总价+产品押金+额外产品总价+额外产品押金-优惠价格 }else if(item.depositType==2){//等于2,押金单价乘购买数量
deposit=item.deposit*item.buyNum
}
this.productDepositTotal+=deposit
})
return parseFloat((sell+this.productDepositTotal-savedMoney).toFixed(2))||0
} }
}, },
methods: { methods: {
//---获取排号信息 //---获取排号信息---暂时未使用
getSortInfor() { getSortInfor(merchantCode) {
let data = { let data = {
areaCode: this.areaObj.areaCode, areaCode: this.areaObj.areaCode,
merchantCode: this.merchantCode //商户code merchantCode //商户code
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
...@@ -533,79 +468,92 @@ export default { ...@@ -533,79 +468,92 @@ export default {
} }
}) })
}, },
//---获取子组件的传值 //---获取子组件的传值---已修改
areaSure(data) { areaSure(data) {
this.areaObj = data this.productList[this.areaIndex].areaObj=data
if (this.areaObj.areaCode == 'cjsd_project_0001') {
//选择了南站不显示耳麦
this.showErmai = false
this.chooseService = []
//多选框状态设置成未选中
this.serviceList.forEach(item=>{
item.ifChoose=false
})
} else {
this.showErmai = true
}
}, },
//---展示选择站点 //---展示选择站点---已修改
openArea() { openArea(index) {
this.showArea = true this.areaIndex=index
this.showChooseArea = true
}, },
//---关闭选择站点 //---关闭选择站点---已修改
closeArea() { closeArea() {
this.showArea = false this.showChooseArea = false
}, },
//---展示详情弹窗 //---展示详情弹窗---已修改
showDetail() { showDetail() {
this.$refs.detail.showPop = true this.$refs.detail.showPop = true
}, },
//---展示日历 //---展示日历---已修改
showCalendar() { showCalendar(index) {
// if(!this.productList[index].chooseDate){//没有选择时,默认第一个日期
// this.productList[index].chooseDate=this.productList[index].priceStockList[0].startTime.substr(0,10)
// }
// this.$refs.calendar.getDefaultDate(this.productList[index].chooseDate)//日历组件选中日期
this.moreDateIndex=index
this.dateList=this.productList[index].priceStockList
this.$refs.calendar.show = true this.$refs.calendar.show = true
}, },
//---日期选择 //---日期选择---已改
dateChoose(index) { dateChoose(item,item2,index) {
this.active = index //修改选中样式 item.active=index//修改选中样式
this.maxBookNum = Math.min(this.dateList[index].surplus, this.productIfo.maxBookNum) //剩余量变化 item.maxBookNum=Math.min(item2.maxBookNum,item2.surplus) //剩余量变化
this.originalPrice = this.dateList[index].originalPrice //原价变化 item.originalPrice=item2.originalPrice//产品原价为当前选中日期的原价
this.sellingPrice = this.dateList[index].sellingPrice //卖家变化 item.sellingPrice=item2.sellingPrice//产品卖价为当前选中日期的卖价
this.chooseDate = this.dateList[index].startTime.substr(0, 10) //日历组件选中日期 item.chooseDate=item2.startTime.substr(0,10)
this.endDate = this.dateList[index].endTime //开始日期 this.$refs.calendar.getDefaultDate(item.chooseDate)//日历组件选中日期
this.startDate = this.dateList[index].startTime //结束日期 item.endDate=item2.endTime//开始日期
this.$refs.calendar.defaultDate = this.chooseDate item.startDate=item2.startTime//结束日期
if (this.productIfo.productType == 3) { this.chooseTimeData=''//清除之前选中的时间
//如果为班次票,点击时,请求班次票接口 if(item.productType==3){
this.cruisePlanId = '' //清空班次id //productType=3为场次票
this.timeActive = 10000 item.cruisePlanId=''
uni.$u.throttle(this.getTimeStock, 3000) item.timeActive=10000
this.timeActive=10000
uni.$u.throttle(this.getTimeStock(item), 3000)
} }
this.initCoupon()
// this.computedPrice()
// this.initCoupon(Item.id,Item.buyNum,Item.sellingPrice,Item.merchantId,Index)
// this.$forceUpdate()
}, },
//---日历确认事件 //---日历确认事件---还未改完
dateConfig(data) { dateConfig(data) {
let index = this.dateList.findIndex(item => { let index=this.moreDateIndex
return item.startTime.substr(0, 10) == data let index2=this.productList[index].priceStockList.findIndex(item=>{
}) return item.startTime.substr(0,10)==data
this.dateChoose(index) //选中确认的日期 })
this.docQuery.selectAll('.date-list').boundingClientRect(data => { let item=this.productList[index]
this.dateScroll = (data[index].width + 4) * index let item2=item.priceStockList[index2]
}).exec() this.dateChoose(item,item2,index) //选中确认的日期
//下面需要处理
// this.docQuery.selectAll('.date-list').boundingClientRect(data => {
// this.dateScroll = (data[index].width + 4) * index
// }).exec()
}, },
//---展示更多时间 //---展示更多时间---已改好
showTime() { showTime(item,index) {
this.chooseTimeList=item.timeList
this.moreTimeIndex=index
if(item.timeActive>=0){
this.timeActive=item.timeActive//组件的默认下标
}else{
this.timeActive=10000
}
this.$refs.times.showPop = true this.$refs.times.showPop = true
}, },
//---时间选择 //---时间选择---已改好,数据更新需要测试
chooseTime(i) { chooseTime(item,item2,index) {
if(this.timeList[i].copyLast!='售罄'){ if(item2.copyLast!='售罄'){
this.timeActive = i item.timeActive=index
this.cruisePlanId = this.timeList[i].cruisePlanId //获取班次Id item.cruisePlanId=item2.cruisePlanId//获取班次Id
this.chooseTimeData = this.timeList[i].startPlanTime this.chooseTimeData=item2.startPlanTime
this.maxBookNum = Math.min(this.timeList[i].last, this.productIfo.maxBookNum) //获取剩余库存 item.maxBookNum=Math.min(item.maxBookNum,item2.last)
//如果为班次票,开始时间为班次时间的开始时间,结束时间为班次时间的结束时间,班次时间的结束时间为空时,结束时间为班次时间的开始时间 //如果为场次票,开始时间为班次时间的开始时间,结束时间为班次时间的结束时间,班次时间的结束时间为空时,结束时间为班次时间的开始时间
this.startPlayTime = this.timeList[i].startPlanTime item.startPlayTime=item2.startPlanTime
this.endPlayTime = this.timeList[i].endPlanTime || this.timeList[i].startPlanTime item.endPlayTime=item2.endPlanTime||item2.startPlanTime
// this.$forceUpdate()
} }
}, },
//---时间确认事件 //---时间确认事件
...@@ -697,60 +645,59 @@ export default { ...@@ -697,60 +645,59 @@ export default {
this.initCoupon() this.initCoupon()
}, 1500) }, 1500)
}, },
//---展示购票须知 //---展示购票须知---已修改
showBuyKnow() { showBuyKnow(index) {
this.buyKnowData=this.productList[index]
this.$refs.buyKnow.showPop = true this.$refs.buyKnow.showPop = true
}, },
//---页面初始化数据,获取产品基本信息 //---页面初始化数据,获取产品基本信息---已修改
initData() { initData() {
let data = { let data={
id: this.productId //产品id productList:this.productIdList,//产品id列表
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
mask:true mask:true
}) })
this.$request('scenic/groupGood/loadProduct', data).then(res => { this.$request('scenic/groupGood/loadProductList', data).then(res => {
if (res.code == '00') { if (res.code == '00'){
this.productIfo = res.data this.productList=res.data||[]
this.defaultAreaCode = this.productIfo.defaultAreaCode || '' this.productIdList=this.productList.map((item)=>{//id集合用于请求价格库存列表接口
//通过默认站点找到站点数据 return item.id
if (this.defaultAreaCode) {
this.productIfo.productAreaList.forEach(item => {
if (item.areaCode == this.defaultAreaCode) {
this.areaObj = {}
this.areaObj.areaCode = item.areaCode
this.areaObj.areaName = item.areaName
}
}) })
}
this.merchantCode = this.productIfo.merchantVo.code, //商户code for(let i=0;i<this.productList.length;i++){
this.productId = res.data.id//产品id变化,重新赋值产品id let item=this.productList[i]
this.merchantId = res.data.merchantId //重新赋值商户id //任何一个产品需要填写游客信息,下面的联系电话必须填写
this.beforeBookDays = res.data.beforeBookDays || 0 //提前预定天数 if(item.tripTemplateFlag!=2){
this.buyKnowData = res.data //购买须知,传给子组件 this.showTelephone=true
this.serviceList = res.data.loadProductResVoList //额外服务 }
//this.chooseService=res.data.data.loadProductResVoList//默认全部选中 if(item.defaultAreaCode){
if (this.productIfo.status == 1) { item.areaObj={}
//下架状态 item.areaObj.areaCode=item.areaCode
item.areaObj.areaName=item.areaName
}else{
item.areaObj={}
}
item.active=0//默认选中第一个日期
item.buyNum=1,//默认为1
item.contactTotal=[]//选中的游客信息列表
item.contactNum=1//需要选择几位联系人数量
if(item.status==1){//任何一个产品下架,该组合票为下架状态
this.orderStatus=1
this.payBackground = '#C0C0C0' this.payBackground = '#C0C0C0'
return
} }
if (this.productIfo.productType != 3) { if(item.productType!=3){//不为班次票时,开始时间为当前时间,结束时间为23:59:59
//不为班次票时,开始时间为当前时间,结束时间为23:59:59 item.startPlayTime=new Date().Format('hh:mm:ss')
this.startPlayTime = new Date().Format('hh:mm:ss') item.endPlayTime='23:59:59'
this.endPlayTime = '23:59:59' }
}
if (this.productIfo.tripTemplateResList.length > 0) {
//用于判断选中的联系人信息是否填写完善
this.productIfo.tripTemplateResList.forEach(item => {
this.templateList.push(item.enumKey)
})
} }
this.getPriceList() this.getPriceList()
this.getDiscountPrice() //获取优惠价格 // this.getDiscountPrice() //获取优惠价格
if (this.productIfo.tripTemplateFlag != 2) { if (this.showTelephone) {
//等于2时不需要填写联系人信息和手机号码 //需要填写联系人信息和手机号码
this.getContactList() this.getContactList()
} }
} else { } else {
...@@ -761,90 +708,168 @@ export default { ...@@ -761,90 +708,168 @@ export default {
} }
}) })
}, },
//---获取产品价格库存列表 //---获取产品价格库存列表---已部分修改
getPriceList() { getPriceList() {
let data = { let data={
productId: this.productId //产品id productIds:this.productIdList,//产品id集合
} }
this.$request('scenic/user/product/priceStockList', data).then(res => { this.$request('scenic/user/product/groupPriceStockList', data).then(res => {
if (res.code == '00') { if (res.code == '00') {
this.dateList = res.data //日期列表 //所有产品的价格库存列表
if (this.dateList.length > 0) { let stockList=res.data
let time1 = this.dateList[0].startTime.substr(0, 10) + this.productIfo.bookTime //获取价格列表的第一个日期+预订最晚时间 this.productList.forEach((item,index)=>{
let timeNum1 = parseInt(this.$commonjs.changeTime(time1)) if(item.isFetch==1&&item.productAreaList.length>1){
let time2 = new Date().Format('yyyy-MM-dd hh:mm:ss') //多个排号点
let timeNum2 = parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字 this.areaIndex=index
if (timeNum2 > timeNum1) { this.sortUpDown(item.merchantVo.code)
}else if(item.isFetch==1&&item.productAreaList.length==1){
//只有一个排号点
item.areaObj=item.productAreaList[0]
}
//把价格列表合并到对应的产品上面
stockList.forEach(item2=>{
if(item.id==item2.productId){
item.priceStockList=item2.priceStockList||[]
}
})
})
let today = this.$commonjs.today() //今天
let tomorrow = this.$commonjs.tomorrow() //明天
let afterTomorrow = this.$commonjs.afterTomorrow() //后天
this.productList.forEach(item=>{
if(item.priceStockList.length>0){
//获取价格列表的第一个日期+预订最晚时间
let time1=item.priceStockList[0].startTime.substr(0,10)+item.bookTime
let timeNum1=parseInt(this.$commonjs.changeTime(time1))
let time2=new Date().Format('yyyy-MM-dd hh:mm:ss')
let timeNum2 =parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字
if(timeNum2>timeNum1){
//如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示 //如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示
this.dateList.splice(0, 1) item.priceStockList.splice(0,1)
} }
this.dateList.forEach((item, index) => { item.priceStockList.forEach((item2, index) => {
//价格上面时间小于当前时间加上需预定天数之后的需删除 //价格上面时间小于当前时间加上需预定天数之后的需删除
let date = new Date() let date = new Date()
date.setDate(date.getDate() + this.beforeBookDays) date.setDate(date.getDate() + item2.beforeBookDays)
let newDate = date.Format('yyyy-MM-dd') let newDate = date.Format('yyyy-MM-dd')
let priceTime = this.$commonjs.changeTime(item.endTime.substr(0, 10)) let priceTime = this.$commonjs.changeTime(item2.endTime.substr(0, 10))
let newTime = this.$commonjs.changeTime(newDate) let newTime = this.$commonjs.changeTime(newDate)
if (priceTime < newTime) { if (priceTime < newTime) {
delete this.dateList[index] delete item.priceStockList[index]
} }
}) })
this.dateList = this.dateList.filter(val => { item.priceStockList = item.priceStockList.filter(val => {
return val return val
}) })
if (this.dateList.length == 0) { if(item.priceStockList.length==0){
uni.showToast({ uni.showToast({title: '没有库存',icon: 'none'})
title: '没有库存',
icon: 'none'
})
this.showArea = false
this.payBackground = '#C0C0C0' this.payBackground = '#C0C0C0'
return return
} }
if (this.productIfo.isFetch == 1) { item.startDate=item.priceStockList[0].startTime//开始日期
this.sortUpDown() item.endDate=item.priceStockList[0].endTime//结束日期
} item.originalPrice=item.priceStockList[0].originalPrice//原价
if (this.dateList.length == 1 && this.beforeBookDays == 0) { item.sellingPrice=item.priceStockList[0].sellingPrice//卖价
//长度为1而且只能预订当天,默认选中第一个日期 item.maxBookNum=Math.min(item.priceStockList[0].surplus,item.maxBookNum)//最大购买数量
//真机模拟的时候手机端不显示今天,明天后天,延迟执行 item.priceStockList.forEach(item2=>{//循环单个产品的价格列表
setTimeout(item => { item2.week='日一二三四五六'.charAt(new Date(item2.startTime.substr(0,10)).getDay())
this.$refs.calendar.defaultDate = this.dateList[0].startTime.substr(0, 10) if(item2.startTime.substr(0,10)==today){
}, 1000) item2.week='今天'
this.maxBookNum = Math.min(this.dateList[0].surplus, this.productIfo.maxBookNum) //剩余量
this.startDate = this.dateList[0].startTime //开始日期
this.endDate = this.dateList[0].endTime //结束日期
this.originalPrice = this.dateList[0].originalPrice //原价
this.sellingPrice = this.dateList[0].sellingPrice //卖价
this.active = 0
if (this.productIfo.productType == 3) {
//如果为班次票,请求班次票接口
this.getTimeStock()
}
this.initCoupon() //获取优惠券
} }
} else { if(item2.startTime.substr(0,10)==tomorrow){
uni.showToast({ item2.week='明天'
title: '没有库存',
icon: 'none'
})
this.showArea = false
this.payBackground = '#C0C0C0'
} }
let today = this.$commonjs.today() //今天 if(item2.startTime.substr(0,10)==afterTomorrow){
let tomorrow = this.$commonjs.tomorrow() //明天 item2.week='后天'
let afterTomorrow = this.$commonjs.afterTomorrow() //后天
this.dateList.forEach((item, index) => {
item.week = '日一二三四五六'.charAt(new Date(item.startTime.substr(0, 10)).getDay())
if (item.startTime.substr(0, 10) == today) {
item.week = '今天'
} }
if (item.startTime.substr(0, 10) == tomorrow) { })
item.week = '明天' //如果是班次票,并且班次票价格列表不为空
if(item.productType==3&&item.priceStockList.length>0){
this.getTimeStock(item)
} }
if (item.startTime.substr(0, 10) == afterTomorrow) { }else{
item.week = '后天' uni.showToast({title: '没有库存',icon: 'none'})
this.payBackground = '#C0C0C0'
} }
}) })
// this.dateList = res.data //日期列表
// if (this.dateList.length > 0) {
// let time1 = this.dateList[0].startTime.substr(0, 10) + this.productIfo.bookTime //获取价格列表的第一个日期+预订最晚时间
// let timeNum1 = parseInt(this.$commonjs.changeTime(time1))
// let time2 = new Date().Format('yyyy-MM-dd hh:mm:ss')
// let timeNum2 = parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字
// if (timeNum2 > timeNum1) {
// //如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示
// this.dateList.splice(0, 1)
// }
// this.dateList.forEach((item, index) => {
// //价格上面时间小于当前时间加上需预定天数之后的需删除
// let date = new Date()
// date.setDate(date.getDate() + this.beforeBookDays)
// let newDate = date.Format('yyyy-MM-dd')
// let priceTime = this.$commonjs.changeTime(item.endTime.substr(0, 10))
// let newTime = this.$commonjs.changeTime(newDate)
// if (priceTime < newTime) {
// delete this.dateList[index]
// }
// })
// this.dateList = this.dateList.filter(val => {
// return val
// })
// if (this.dateList.length == 0) {
// uni.showToast({
// title: '没有库存',
// icon: 'none'
// })
// this.showChooseArea = false
// this.payBackground = '#C0C0C0'
// return
// }
// if (this.productIfo.isFetch == 1) {
// this.sortUpDown()
// }
// if (this.dateList.length == 1 && this.beforeBookDays == 0) {
// //长度为1而且只能预订当天,默认选中第一个日期
// //真机模拟的时候手机端不显示今天,明天后天,延迟执行
// setTimeout(item => {
// this.$refs.calendar.defaultDate = this.dateList[0].startTime.substr(0, 10)
// }, 1000)
// this.maxBookNum = Math.min(this.dateList[0].surplus, this.productIfo.maxBookNum) //剩余量
// this.startDate = this.dateList[0].startTime //开始日期
// this.endDate = this.dateList[0].endTime //结束日期
// this.originalPrice = this.dateList[0].originalPrice //原价
// this.sellingPrice = this.dateList[0].sellingPrice //卖价
// this.active = 0
// if (this.productIfo.productType == 3) {
// //如果为班次票,请求班次票接口
// this.getTimeStock()
// }
// this.initCoupon() //获取优惠券
// }
// } else {
// uni.showToast({
// title: '没有库存',
// icon: 'none'
// })
// this.showChooseArea = false
// this.payBackground = '#C0C0C0'
// }
// let today = this.$commonjs.today() //今天
// let tomorrow = this.$commonjs.tomorrow() //明天
// let afterTomorrow = this.$commonjs.afterTomorrow() //后天
// this.dateList.forEach((item, index) => {
// item.week = '日一二三四五六'.charAt(new Date(item.startTime.substr(0, 10)).getDay())
// if (item.startTime.substr(0, 10) == today) {
// item.week = '今天'
// }
// if (item.startTime.substr(0, 10) == tomorrow) {
// item.week = '明天'
// }
// if (item.startTime.substr(0, 10) == afterTomorrow) {
// item.week = '后天'
// }
// })
} else { } else {
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
...@@ -853,10 +878,10 @@ export default { ...@@ -853,10 +878,10 @@ export default {
} }
}) })
}, },
//---排号是否上下架 //---排号是否上下架---已修改
sortUpDown() { sortUpDown(merchantCode) {
let data = { let data = {
merchantCode: this.merchantCode //商户code merchantCode //商户code
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
...@@ -866,34 +891,38 @@ export default { ...@@ -866,34 +891,38 @@ export default {
if (res.code == '00') { if (res.code == '00') {
this.sortArr = res.data.data this.sortArr = res.data.data
let data = res.data let data = res.data
if (this.productIfo.productAreaList.length > 1) { this.productList.forEach(item=>{
if(item.productAreaList.length>1){
//有库存并且需要选择两个站点以上的票种,显示区域组件 //有库存并且需要选择两个站点以上的票种,显示区域组件
for (let item in data.main) { for (let item2 in data.main) {
if (data.main[item].sceneSortStatus == '1'){ if (data.main[item2].sceneSortStatus == '1'){
this.showArea = true //暂时下面只适应长江索道
this.showOpenArea = true this.showChooseArea = true
//上架
item.areaUp = true
} }
} }
} else if (this.productIfo.productAreaList.length == 1) { }else if (item.productAreaList.length == 1) {
//只有一个站点时,直接选中站点(现目前还没有一个站点的景区) //只有一个站点时,直接选中站点(现目前还没有一个站点的景区)
for (let item in data.main) { for (let item in data.main) {
if (data.main[item].sceneSortStatus == '1') { if (data.main[item].sceneSortStatus == '1') {
this.areaObj = this.productIfo.productAreaList[0] item.areaObj = item.productAreaList[0]
this.showOpenArea = true item.areaUp = true
} }
} }
} }
})
} }
}) })
}, },
//---获取班次票 //---获取班次票---已修改
getTimeStock() { getTimeStock(item) {
let data = { let data = {
endDate: this.endDate, //结束日期 endDate: item.endDate, //结束日期
startDate: this.startDate, //开始日期 startDate: item.startDate, //开始日期
interfaceCode: this.productIfo.merchantVo.interfaceCompanyId, //接口编号 interfaceCode: item.merchantVo.interfaceCompanyId, //接口编号
merchantCode: this.merchantCode, //商户code merchantCode: item.merchantVo.code, //商户code
productCode: this.productIfo.code //产品code productCode: item.code //产品code
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
...@@ -901,20 +930,21 @@ export default { ...@@ -901,20 +930,21 @@ export default {
}) })
this.$request('distribution/distribution/getTimeStock', data).then(res => { this.$request('distribution/distribution/getTimeStock', data).then(res => {
if (res.code == '00') { if (res.code == '00') {
this.timeList = res.data item.timeList=res.data
this.timeList.forEach((item, index) => {
//增加一个时间Number字段,用于判断当前时间大于班次结束时间时,显示售罄 //增加一个时间Number字段,用于判断当前时间大于班次结束时间时,显示售罄
let text=parseFloat((item.last/item.total).toFixed(2))||0 item.timeList.forEach(item2=>{
let text=parseFloat((item2.last/item2.total).toFixed(2))||0
if(text>0.4){ if(text>0.4){
item.copyLast='余票充足' item2.copyLast='余票充足'
}else{ }else{
item.copyLast=item.last item2.copyLast=item2.last
} }
item.timeNumber = parseInt(this.$commonjs.changeTime(item.planDate.substr(0, 10) + item.endPlanTime)) item2.timeNumber=parseInt(this.$commonjs.changeTime(item2.planDate.substr(0,10)+item2.endPlanTime))
if (this.timeNumber > item.timeNumber || item.last <= 0) { if(this.timeNumber>item2.timeNumber||item2.last<=0){
item.copyLast='售罄' item2.copyLast='售罄'
} }
}) })
// this.$forceUpdate()
} else { } else {
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
...@@ -1055,124 +1085,20 @@ export default { ...@@ -1055,124 +1085,20 @@ export default {
showCoupon() { showCoupon() {
this.$refs.orderCoupon.showPop=true this.$refs.orderCoupon.showPop=true
}, },
//---额外服务多选框变化 //---下单---正在修改
extraChange(e) {
this.chooseService=[]
//解决数据修改之后,多选框未选中bug
this.serviceList.forEach(item=>{
item.ifChoose=false
})
let value=e.detail.value
value.forEach(item=>{
this.chooseService.push(JSON.parse(item))
})
//获取选中的多选框为选中状态
this.serviceList.forEach(item=>{
this.chooseService.forEach(item2=>{
if(item.id==item2.id){
item.ifChoose=true
}
})
})
},
//---不需要享受耳麦服务
extraNo() {
this.showExtraPop = false
this.placeOrder()
},
//---需要享受耳麦服务
extraYes() {
this.showExtraPop = false
this.serviceList.forEach(item=>{
item.ifChoose=true
})
this.chooseService = this.serviceList
this.placeOrder()
},
//---点击去支付
goPay() { goPay() {
if (this.serviceList.length == 0) { if (this.orderStatus == 1) {
//没有额外服务,直接支付 //下架状态,点击无效
this.placeOrder()
}
if (this.serviceList.length > 0) {
//有额外服务,并且选择了额外服务的,直接支付
if (this.chooseService.length > 0) {
this.placeOrder()
}
}
if (this.serviceList.length > 0) {
//有额外服务,没有选中额外服务的,弹出提示框
if (this.productIfo.tripTemplateFlag != 2) {
if (!this.$commonjs.phoneReg().test(this.ticketPhone)) {
//未填写正确手机号码
uni.showToast({
title: '请填写正确的手机号码',
icon: 'none'
})
return
}
}
if (this.productIfo.tripTemplateFlag == 1) {
//实名制
if (this.chooseContact.length != this.buyNum) {
uni.showToast({
title: '需要添加' + this.buyNum + '位出行人',
icon: 'none'
})
return
}
} else if (this.productIfo.tripTemplateFlag == 0) {
//非实名制
if (this.chooseContact.length < 1) {
uni.showToast({
title: '需要添加一位出行人',
icon: 'none'
})
return
}
}
if (this.productIfo.productType == 3) {
//如果为班次票,需要选择班次
if (this.cruisePlanId == '') {
uni.showToast({
title: '该票为班次票,请选择游玩时间',
icon: 'none'
})
return
}
}
if (this.productIfo.isFetch == 1 && this.showOpenArea) {
//需要选择站点的票种,必须选择站点
if (!this.areaObj.areaCode) {
uni.showToast({
title: '请选择站点',
icon: 'none'
})
return return
} }
} for(let i=0;i<this.productList.length;i++){
if (this.chooseService.length == 0 && this.showErmai) { let item=this.productList[i]
//没有购买额外服务,并且选择的北站,跳出弹窗 //没有库存情况
this.showExtraPop = true if(!item.priceStockList||item.priceStockList.length==0){
}
if (this.chooseService.length == 0 && !this.showErmai) {
//没有购买额外服务,并且选择的南站,直接购买
this.placeOrder()
}
}
},
//---下单
placeOrder() {
if (this.dateList.length == 0) {
//价格库存为空时,点击无效
return return
} }
if (this.productIfo.status == 1) {
//下架状态,点击无效
return
} }
if (this.productIfo.tripTemplateFlag != 2) { if (this.showTelephone) {
//需要填写电话号码 //需要填写电话号码
if (!this.$commonjs.phoneReg().test(this.ticketPhone) && this.productIfo.tripTemplateFlag != 2) { if (!this.$commonjs.phoneReg().test(this.ticketPhone) && this.productIfo.tripTemplateFlag != 2) {
//未填写正确手机号码 //未填写正确手机号码
...@@ -1183,45 +1109,47 @@ export default { ...@@ -1183,45 +1109,47 @@ export default {
return return
} }
} }
if (!this.startDate || !this.endDate) { // if (!this.startDate || !this.endDate) {
// uni.showToast({
// title: '请选择游玩日期',
// icon: 'none'
// })
// return
// }
//循环判断联系人数量,班次,站点是否填写完善
for(let i=0;i<this.productList.length;i++){
let item=this.productList[i]
if(item.tripTemplateFlag==1){//实名制
if(item.orderTouristList.length!=item.buyNum){
uni.showToast({ uni.showToast({
title: '请选择游玩日期', title: item.merchantName+'需要添加'+item.buyNum+'位出行人',
icon: 'none' icon: 'none'
}) })
return return
} }
if (this.productIfo.tripTemplateFlag == 1) {
//实名制
if (this.chooseContact.length != this.buyNum) {
uni.showToast({
title: '需要添加' + this.buyNum + '位出行人',
icon: 'none'
})
return
} }
} else if (this.productIfo.tripTemplateFlag == 0) { if(item.tripTemplateFlag==0){//非实名制
//非实名制 if(item.orderTouristList.length<1){
if (this.chooseContact.length < 1) {
uni.showToast({ uni.showToast({
title: '需要添加一位出行人', title: item.merchantName+'需要添加一位出行人',
icon: 'none' icon: 'none'
}) })
return return
} }
} }
if (this.productIfo.productType == 3) { if(item.productType==3){//如果为班次票,需要选择班次
//如果为班次票,需要选择班次 if(!item.cruisePlanId){
if (this.cruisePlanId == '') {
uni.showToast({ uni.showToast({
title: '该票为班次票,请选择游玩时间', title: '请选择'+item.merchantName+'游玩时间',
icon: 'none' icon: 'none'
}) })
return return
} }
} }
if (this.productIfo.isFetch == 1 && this.showOpenArea) { if (item.isFetch == 1 && item.areaUp) {
//需要选择站点的票种,必须选择站点 //需要选择站点的票种,必须选择站点
if (!this.areaObj.areaCode) { if (!item.areaObj.areaCode) {
uni.showToast({ uni.showToast({
title: '请选择站点', title: '请选择站点',
icon: 'none' icon: 'none'
...@@ -1229,95 +1157,81 @@ export default { ...@@ -1229,95 +1157,81 @@ export default {
return return
} }
} }
}
this.preOrder() this.preOrder()
}, },
//---预下单 //---预下单
preOrder() { preOrder() {
//参数游客信息组装 //获取游客信息参数
let orderTouristList = this.chooseContact.map((item) => { // let orderTouristList = this.chooseContact.map((item) => {
return { // return {
category: 0, // category: 0,
name: item.name, // name: item.name,
credentialNumber: item.credentialNumber // credentialNumber: item.credentialNumber
} // }
}) // })
//获取券参数
let couponList = [] this.productList.forEach(item=>{
if (this.chooseCouponObj) { if(item.chooseCouponObj){
if(this.chooseCouponObj.slaveList.length>0){//有从券取值从券,没有从券取值主劵 //有从券取值从券,没有从券取值主劵
couponList=[//券列表 if(item.chooseCouponObj.slaveList.length>0){
item.couponList=[//券列表
{ {
couponId:this.chooseCouponObj.slaveCouponId,//券id couponId:item.chooseCouponObj.slaveCouponId,//券id
isMerchant:this.chooseCouponObj.slaveCreateSource,//是否是商户的券 isMerchant:item.chooseCouponObj.slaveCreateSource,//是否是商户的券
myCouponId:this.chooseCouponObj.slaveId,//领取人编号 myCouponId:item.chooseCouponObj.slaveId,//领取人编号
couponType:this.chooseCouponObj.couponType,//券类型 couponType:item.chooseCouponObj.couponType,//券类型
couponPrice:this.chooseCouponObj.savedMoney,//券价格 couponPrice:item.chooseCouponObj.savedMoney,//券价格
} }
] ]
}else{ }else{
couponList=[ item.couponList=[
{ {
couponId:this.chooseCouponObj.couponId,//券id couponId:item.chooseCouponObj.couponId,//券id
isMerchant:this.chooseCouponObj.createSource,//是否是商户的券 isMerchant:item.chooseCouponObj.createSource,//是否是商户的券
myCouponId:this.chooseCouponObj.id,//领取人编号 myCouponId:item.chooseCouponObj.id,//领取人编号
couponType:this.chooseCouponObj.couponType,//券类型 couponType:item.chooseCouponObj.couponType,//券类型
couponPrice:this.chooseCouponObj.savedMoney,//券价格 couponPrice:item.chooseCouponObj.savedMoney,//券价格
} }
] ]
} }
}else{
item.couponList=[]
} }
})
//额外服务不为空,联票购买不为空,带有儿童票,组合购买不为空,单品购买为空 //额外服务不为空,联票购买不为空,带有儿童票,组合购买不为空,单品购买为空
if (this.chooseService.length > 0) { let orderProductList=this.productList.map((item)=>{
this.orderProductList = this.chooseService.map((item) => {
return { return {
distributionPrice: item.sellingPrice, //临时用
productId: item.id, //产品Id
buyNum: this.buyNum, //购买数量
subOrderType: 0, //产品类型,网络
unitPrice: item.sellingPrice, //产品单价
merchantId: item.merchantId, //商户id
orderTouristList, //游客信息
playDate: this.startDate.substr(0, 10), //开始日期
endPlayDate: this.endDate.substr(0, 10), //结束日期
isMaster: 1, //是否主产品 1 否, 0 是
startPlayTime: this.startPlayTime, //开始时间
endPlayTime: this.endPlayTime, //结束时间
}
})
}else{
this.orderProductList=[]
}
let data = {
companyId: this.companyId, //公司Id
buyMethod: 1, // 单品购买,2套票、联票购买,3组合购买
userId: this.openid,//用户id
ticketPhone: this.ticketPhone, //联系电话
cash: 0, //现金红包
orderMoney: this.sellTotal, //订单总价 = 订单原价 - 优惠券价格 - 现金抵扣价格
orderType: 1, //订单类型,景区
orderSource:this.orderSource||1, //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
orderProductList: this.orderProductList, //额外服务不为空,联票购买不为空,带有儿童票,组合购买不为空,单品购买为空
orderProductVo: //产品信息列表
{
bookTime:this.productIfo.bookTime,//最晚预定时间
earlyBookTime:this.productIfo.earlyBookTime,//最早预定时间
extendContent:'{"openid":'+'"'+this.openid+'"'+','+'"zr":'+'"'+this.thirdOpenid+'"'+'}', extendContent:'{"openid":'+'"'+this.openid+'"'+','+'"zr":'+'"'+this.thirdOpenid+'"'+'}',
productId: this.productId, //产品Id buyNum:item.buyNum,//购买数量
buyNum: this.buyNum, //购买数量 cruisePlanId:item.cruisePlanId,//班次Id
subOrderType: 0, //产品类型,网络 playDate:item.startDate.substr(0,10),//开始日期
cruisePlanId: this.cruisePlanId, //班次id endPlayDate:item.endDate.substr(0,10),//结束日期
unitPrice: this.sellingPrice, //产品单价 startPlayTime:item.startPlayTime,//开始时间
distributionPrice: this.sellingPrice, //临时用 endPlayTime:item.endPlayTime,//结束时间
merchantId: this.merchantId, //商户id isMaster:0,//是否主产品 1 否, 0 是
orderTouristList, //游客信息 merchantId:item.merchantId,//商户id
playDate: this.startDate.substr(0, 10), //开始日期 productId:item.id,//产品Id
endPlayDate: this.endDate.substr(0, 10), //结束日期 subOrderType:0,//产品类型,网络
isMaster: 0, //是否主产品 1 否, 0 是 unitPrice:item.sellingPrice,//产品单价
startPlayTime: this.startPlayTime, //开始时间 distributionPrice:item.sellingPrice,//临时用
endPlayTime: this.endPlayTime, //结束时间 productAreaCode:item.areaObj.areaCode||item.defaultAreaCode,//出发站点
productAreaCode:this.areaObj.areaCode, //选择的站点编码 orderTouristList:item.chooseTourist,//游客信息
couponList, //券列表 couponList:item.couponList//优惠券
} }
})
let data={
companyId:this.companyId,//公司Id
groupChannelId:this.groupChannelId,//组合渠道编号 ,组合订单必传
groupId:this.groupId,//组合编号 ,组合订单必传
buyMethod:3,// 单品购买,2套票、联票购买,3组合购买
userId:this.openid,//用户id
ticketPhone:this.ticketPhone,//联系电话
cash:0,//现金红包
orderMoney:this.sellTotal,//订单总价 = 订单原价 - 优惠券价格 - 现金抵扣价格
orderType:1,//订单类型,景区
orderSource:this.orderSource||1, //订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
orderProductList,//额外服务不为空,联票购买不为空,带有儿童票,组合购买不为空,单品购买为空
} }
uni.showLoading({ uni.showLoading({
title:'加载中', title:'加载中',
...@@ -1679,27 +1593,6 @@ export default { ...@@ -1679,27 +1593,6 @@ export default {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
/*额外服务部分*/
.extraService {
padding: 20rpx;
background:#DAE6F6;
margin-top: 30rpx;
border-radius: 10rpx;
}
.extraService label {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
color:#f45803;
}
.extra-wrap{
text-align: center;
padding-top: 100rpx;
height: 65vh;
}
/*底部部分*/ /*底部部分*/
.bottom { .bottom {
height: 100rpx; height: 100rpx;
......
...@@ -4,22 +4,22 @@ ...@@ -4,22 +4,22 @@
<view class="middle"> <view class="middle">
<view class="middle-top"> <view class="middle-top">
<!-- --------------------------------------------产品信息部分------------------------------------- --> <!-- --------------------------------------------产品信息部分------------------------------------- -->
<view class="middle-Product" v-for="(item,Index) in productList" :key='item.id'> <view class="middle-Product">
<view class="merchantName"> <view class="merchantName">
<text class="title-text"> <text class="title-text">
{{ item.merchantName || '' }} {{ productIfo.merchantName || '' }}
</text> </text>
<text> <text>
{{ item.name || '' }} {{ productIfo.name || '' }}
</text> </text>
</view> </view>
<view @click="showBuyKnow(index)" class="buyKnow"> <view @click="showBuyKnow()" class="buyKnow">
<view> <view>
<text v-if="item.backChangeRule == 0">不可退换</text> <text v-if="productIfo.backChangeRule == 0">不可退换</text>
<text v-if="item.backChangeRule == 1">可退</text> <text v-if="productIfo.backChangeRule == 1">可退</text>
<text v-if="item.backChangeRule == 2">随时可退</text> <text v-if="productIfo.backChangeRule == 2">随时可退</text>
<text v-if="item.isFetch == 1">无需取号</text> <text v-if="productIfo.isFetch == 1">无需取号</text>
</view> </view>
<view> <view>
购买须知 购买须知
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
</view> </view>
</view> </view>
<!--需要排队并且站点数大于1--> <!--需要排队并且站点数大于1-->
<view class="middle-place" @click="openArea()" v-if="item.isFetch == 1 && item.productAreaList.length > 1 && showOpenArea"> <view class="middle-place" @click="openArea()" v-if="productIfo.isFetch == 1 && productIfo.productAreaList.length > 1 && showOpenArea">
<view> 出发站点 </view> <view> 出发站点 </view>
<view> <view>
{{ item.areaObj.areaName || '请选择站点' }} {{ areaObj.areaName || '请选择站点' }}
</view> </view>
<view> <view>
...@@ -55,17 +55,17 @@ ...@@ -55,17 +55,17 @@
<view class="middle-Date"> <view class="middle-Date">
<view class="title-text">游玩日期</view> <view class="title-text">游玩日期</view>
<view class="middle-Datelist"> <view class="middle-Datelist">
<scroll-view class="date-content" scroll-x="true" :scroll-left="dateScroll" v-if="item.priceStockList.length > 0"> <scroll-view class="date-content" scroll-x="true" :scroll-left="dateScroll" v-if="dateList.length > 0">
<view class="date-list" v-for="(item2,index2) of item.priceStockList" :class="{ on: active == index2 }" @click="dateChoose(item,item2,index2)" :key="index2"> <view class="date-list" v-for="(item, index) of dateList" :class="{ on: active == index }" @click="dateChoose(index)" :key="index">
<view v-if="item2.week"> <view v-if="item.week">
<text v-if="item2.week != '今天' && item2.week != '明天' && item2.week != '后天'"></text> <text v-if="item.week != '今天' && item.week != '明天' && item.week != '后天'"></text>
{{ item2.week }} {{ item.week }}
</view> </view>
<view> <view>
{{ item2.startTime ? item2.startTime.substr(5, 5) : '' }} {{ item.startTime ? item.startTime.substr(5, 5) : '' }}
</view> </view>
<view class="date-price"> <view class="date-price">
¥<text style="font-weight: bold;">{{ item2.sellingPrice }}</text> ¥<text style="font-weight: bold;">{{ item.sellingPrice }}</text>
</view> </view>
<view v-if="active == index" class="date-icon"> <view v-if="active == index" class="date-icon">
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</view> </view>
</scroll-view> </scroll-view>
<text v-else class="no-date"> 不可购买 </text> <text v-else class="no-date"> 不可购买 </text>
<view class="dateMore" @click="showCalendar(index)"> <view class="dateMore" @click="showCalendar()">
<view class="date-more-content"> <view class="date-more-content">
<view>更多</view> <view>更多</view>
<view>日期</view> <view>日期</view>
...@@ -87,22 +87,26 @@ ...@@ -87,22 +87,26 @@
<view class="middle-time" v-if="productIfo.productType == 3"> <view class="middle-time" v-if="productIfo.productType == 3">
<view class="title-text"> 场次 </view> <view class="title-text"> 场次 </view>
<view class="middle-timelist"> <view class="middle-timelist">
<scroll-view class="time-content" scroll-x="true" :scroll-left="timeScroll" v-if="item.timeList.length> 0"> <scroll-view class="time-content" scroll-x="true" :scroll-left="timeScroll" v-if="timeList.length> 0">
<view class="time-list" v-for="(item2,index2) of item.timeList" @click="chooseTime(item,item2,index2)" :class="{ on:item.timeActive == index2 }" :key="index2"> <view class="time-list" v-for="(item, index) of timeList" @click="chooseTime(index)" :class="{ on: timeActive == index }" :key="index">
<view> <view>
{{ item2.startPlanTime ? item2.startPlanTime.substr(0, 5) : '' }} {{ item.startPlanTime ? item.startPlanTime.substr(0, 5) : '' }}
<text v-if="item2.endPlanTime">-</text> <text v-if="item.endPlanTime&&!item.saleOnlyShowFromDate">
{{ item2.endPlanTime ? item2.endPlanTime.substr(0, 5) : '' }} -{{ item.endPlanTime ? item.endPlanTime.substr(0, 5) : '' }}
</text>
</view>
<view>
<text v-if="item.copyLast!='余票充足'&&item.copyLast!='售罄'">剩余:</text>
{{ item.last }}
</view> </view>
<view> 剩余:{{ item2.last }} </view> <view v-if="timeActive == index" class="date-icon">
<view v-if="item.timeActive == index" class="date-icon">
<u-icon name="checkmark" color="#ffffff"></u-icon> <u-icon name="checkmark" color="#ffffff"></u-icon>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<text class="no-time" v-if="item.timeList&&item.timeList.length==0"> 该日票种已售罄,请选择其他日期 </text> <text class="no-time" v-if="startDate && endDate && timeList.length == 0"> 该日票种已售罄,请选择其他日期 </text>
<text class="no-time" v-if="!item.startDate || !item.endDate"> 请先选游玩日期 </text> <text class="no-time" v-if="!startDate || !endDate"> 请先选游玩日期 </text>
<view class="timeMore" @click="showTime(item,index)"> <view class="timeMore" @click="showTime()">
<view class="time-more-content"> <view class="time-more-content">
<view>更多</view> <view>更多</view>
<view>场次</view> <view>场次</view>
...@@ -118,11 +122,11 @@ ...@@ -118,11 +122,11 @@
<view class="middle-Number"> <view class="middle-Number">
<view class="title-text"> 购买数量 </view> <view class="title-text"> 购买数量 </view>
<view> <view>
<u-number-box v-model="item.buyNum" @change='buyNumChange'> <u-number-box v-model="buyNum" @change='buyNumChange'>
<view slot="minus" class="number-minus" > <view slot="minus" class="number-minus" >
<u-icon name="minus" color="#FFFFFF" size="32"></u-icon> <u-icon name="minus" color="#FFFFFF" size="32"></u-icon>
</view> </view>
<text slot="input" class="number-input">{{item.buyNum}}</text> <text slot="input" class="number-input">{{buyNum}}</text>
<view slot="plus" class="number-plus"> <view slot="plus" class="number-plus">
<u-icon name="plus" color="#FFFFFF" size="32"></u-icon> <u-icon name="plus" color="#FFFFFF" size="32"></u-icon>
</view> </view>
...@@ -134,33 +138,33 @@ ...@@ -134,33 +138,33 @@
</view> </view>
<!-- 有可用优惠券,并且未选中 --> <!-- 有可用优惠券,并且未选中 -->
<template v-if="item.couponData.masterSlaveCouponList&&item.couponData.masterSlaveCouponList.length>0&&!item.chooseCouponObj"> <template v-if="couponData.masterSlaveCouponList&&couponData.masterSlaveCouponList.length>0&&!chooseCouponObj">
<view> <view>
{{item.couponData.masterSlaveCouponList[0].couponName}} {{couponData.masterSlaveCouponList[0].couponName}}
</view> </view>
<view > <view >
未使用优惠券 未使用优惠券
</view> </view>
</template> </template>
<!-- 有可用优惠券 --> <!-- 有可用优惠券 -->
<template v-if="item.chooseCouponObj&&item.savedMoney>0"> <template v-if="chooseCouponObj&&savedMoney>0">
<view> <view>
{{item.chooseCouponObj.couponName}} {{chooseCouponObj.couponName}}
</view> </view>
<view style="font-size: 32rpx;"> <view style="font-size: 32rpx;">
<text style="font-size: 24rpx;position: relative;top: 6rpx;">¥</text> <text style="font-size: 24rpx;position: relative;top: 6rpx;">¥</text>
{{parseFloat(item.savedMoney.toFixed(2))}} {{parseFloat(savedMoney.toFixed(2))}}
</view> </view>
</template> </template>
<!-- 可用优惠券条件--> <!-- 可用优惠券条件-->
<template v-if="item.ableConpon"> <template v-if="ableConpon">
<view> <view>
{{item.ableConpon.couponName}} {{ableConpon.couponName}}
</view> </view>
<view> <view>
{{item.ableConpon.couponRule}} {{ableConpon.couponRule}}
</view> </view>
</template> </template>
<u-icon name="arrow-right" color="#3688FF"></u-icon> <u-icon name="arrow-right" color="#3688FF"></u-icon>
...@@ -213,12 +217,12 @@ ...@@ -213,12 +217,12 @@
</view> </view>
<!-- ---------------------------------------------游客信息-------------------------------------------- --> <!-- ---------------------------------------------游客信息-------------------------------------------- -->
<view class="middle-bottom" v-if="item.tripTemplateFlag != 2"> <view class="middle-bottom" v-if="productIfo.tripTemplateFlag != 2">
<view class="middle-visitor"> <view class="middle-visitor">
<view class="visitorTitle"> <view class="visitorTitle">
<text class="title-text"> 用户信息 </text> <text class="title-text"> 用户信息 </text>
<text> <text>
需填<text class="title-bold">{{item.contactNum }}</text>位出行人 需填<text class="title-bold">{{ contactNum }}</text>位出行人
<!-- <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>
...@@ -247,40 +251,40 @@ ...@@ -247,40 +251,40 @@
<text style="margin-left:16rpx;">新增</text> <text style="margin-left:16rpx;">新增</text>
</view> </view>
<view class="visitorEdit" v-show="item.chooseContact.length > 0"> <view class="visitorEdit" v-show="chooseContact.length > 0">
<view class="edit-list" v-for="(item2, index) of item.chooseContact" :key="item.id"> <view class="edit-list" v-for="(item, index) of chooseContact" :key="item.id">
<view @click="delChooseContact(item2, index)"> <view @click="delChooseContact(item, index)">
<u-icon name="close-circle" color="#3688ff" size="40"></u-icon> <u-icon name="close-circle" color="#3688ff" size="40"></u-icon>
</view> </view>
<view> <view>
{{ item2.name }} {{ item.name }}
</view> </view>
<view> <view>
{{ item2.credentialNumber ? item2.credentialNumber.substr(0, 3) + '****' + item2.credentialNumber.substr(14, 4) : '' }} {{ item.credentialNumber ? item.credentialNumber.substr(0, 3) + '****' + item.credentialNumber.substr(14, 4) : '' }}
</view> </view>
<view @click="showEdit(item2)"> <view @click="showEdit(item)">
<u-icon name="edit-pen-fill" color="#3688ff" size="48"></u-icon> <u-icon name="edit-pen-fill" color="#3688ff" size="48"></u-icon>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="middle-phone" v-if="productIfo.tripTemplateFlag != 2"> <view class="middle-phone" v-if="productIfo.tripTemplateFlag != 2">
<text> 联系电话: </text> <text> 联系电话: </text>
<input type="number" maxlength="11" placeholder="请输入联系电话" v-model.trim="ticketPhone" /> <input type="number" maxlength="11" placeholder="请输入联系电话" v-model.trim="ticketPhone" />
</view> --> </view>
</view> </view>
<!-- ---------------------------------------------产品押金部分---------------------------------------- --> <!-- ---------------------------------------------产品押金部分---------------------------------------- -->
<view class="productDeposit" v-if="item.deposit"> <view class="productDeposit" v-if="productIfo.deposit">
<view> <view>
{{ item.name }} {{ productIfo.name }}
<text style="color: #FC6703;margin-left: 10rpx;">押金</text> <text style="color: #FC6703;margin-left: 10rpx;">押金</text>
</view> </view>
<view style="color: #FC6703"> {{ item.deposit }}元 </view> <view style="color: #FC6703"> {{ productIfo.deposit }}元 </view>
</view> </view>
</view> </view>
...@@ -299,9 +303,9 @@ ...@@ -299,9 +303,9 @@
</view> </view>
<view class="bottom-btn" :style="{ background: payBackground }"> <view class="bottom-btn" :style="{ background: payBackground }">
<text v-if="orderStatus == 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="orderStatus!= 1 && parseInt(maxBookNum) >= 1" @click="goPay()">去支付</text> <text v-if="productIfo.status != 1 && parseInt(maxBookNum) >= 1" @click="goPay()">去支付</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -387,6 +391,7 @@ export default { ...@@ -387,6 +391,7 @@ export default {
}, },
data() { data() {
return { return {
defaultAreaCode: '', //默认站点
sortArr: [], //多个站点排号信息列表 sortArr: [], //多个站点排号信息列表
sortIfo: '', //单个站点排号信息 sortIfo: '', //单个站点排号信息
sortInforPop: false, //一个站点时获取排队信息弹窗 sortInforPop: false, //一个站点时获取排队信息弹窗
...@@ -394,18 +399,34 @@ export default { ...@@ -394,18 +399,34 @@ export default {
showArea: false, //控制选择站点显示隐藏 showArea: false, //控制选择站点显示隐藏
showOpenArea: false, //是否可以显示选择站点 showOpenArea: false, //是否可以显示选择站点
chooseDate: '', //选择的日期 chooseDate: '', //选择的日期
active: 10000, //日期下标
timeActive: 10000, //时间下标,默认不选中 timeActive: 10000, //时间下标,默认不选中
buyNum: 1, //订单数量
maxBookNum: 999, //最大预订数量
dateList: [], //日期列表
timeList: [], //时间列表
buyKnowData: '', //购买须知数据 buyKnowData: '', //购买须知数据
editContact: '', //编辑联系人传值对象 editContact: '', //编辑联系人传值对象
productId: '', //产品Id
merchantId: '', //商户Id merchantId: '', //商户Id
ticketPhone: '', //联系电话 ticketPhone: '', //联系电话
productIfo: '', //初始化产品基本信息
originalPrice: 0, //原价单价
sellingPrice: 0, //卖价单价
interfaceCode: '', //接口编号 interfaceCode: '', //接口编号
merchantCode: '', //商户code
productCode: '', //产品code productCode: '', //产品code
contactTotal: [], //所有联系人列表
chooseContact: [], //选中的游客信息列表 chooseContact: [], //选中的游客信息列表
contactNum: 1, //需要选择几位联系人数量
cruisePlanId: '', //班次Id cruisePlanId: '', //班次Id
chooseTimeData: '', //选中的时间传给子组件
timeNumber: '', //当前时间转化为数字 timeNumber: '', //当前时间转化为数字
startDate: '', //开始日期
endDate: '', //结束日期
startPlayTime: '', //开始时间 startPlayTime: '', //开始时间
endPlayTime: '', //结束时间 endPlayTime: '', //结束时间
areaObj: '', //区域组件的传值
templateList: [], //该产品联系人必须要填写的信息 templateList: [], //该产品联系人必须要填写的信息
timeFlag: '', //setTimeout函数 timeFlag: '', //setTimeout函数
savedMoney: 0, //优惠价格 savedMoney: 0, //优惠价格
...@@ -417,6 +438,7 @@ export default { ...@@ -417,6 +438,7 @@ export default {
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: '', //需提前预定天数
companyId: '', //公司Id companyId: '', //公司Id
docQuery: '', //元素变量 docQuery: '', //元素变量
payBackground: '', //支付按钮背景颜色 payBackground: '', //支付按钮背景颜色
...@@ -426,13 +448,6 @@ export default { ...@@ -426,13 +448,6 @@ export default {
couponData:[], //所有劵数据 couponData:[], //所有劵数据
chooseCouponObj: '', //默认选中最优价格优惠券 chooseCouponObj: '', //默认选中最优价格优惠券
ableConpon: '', //没有可用优惠券时,达到一定条件可用,显示达到的条件 ableConpon: '', //没有可用优惠券时,达到一定条件可用,显示达到的条件
productIdList:[],//产品id列表入参
productList:[],//初始化产品数据
orderStatus:'',//上下架状态,任何一个产品状态为下架,该状态为下架
chooseTimeList:[],//选中产品时间列表
chooseTimeData: '', //选中的时间传给子组件
moreDateIndex:0,//点击的更多日期下标
dateList:[],//点击更多日期时对应的日期列表
} }
}, },
onLoad(option) { onLoad(option) {
...@@ -441,14 +456,8 @@ export default { ...@@ -441,14 +456,8 @@ export default {
this.companyId = option.companyId || '' this.companyId = option.companyId || ''
this.orderSource = option.orderSource || '' this.orderSource = option.orderSource || ''
this.thirdOpenid = option.thirdOpenid || '' //第三方openid this.thirdOpenid = option.thirdOpenid || '' //第三方openid
this.productId = option.productId || ''
this.merchantId = option.merchantId || '' this.merchantId = option.merchantId || ''
let idList=JSON.parse(option.productIdList)
this.productIdList=idList.map((item)=>{
return {productId:item}
})
console.log(this.productIdList)
this.initData() //页面初始化数据 this.initData() //页面初始化数据
this.docQuery = uni.createSelectorQuery().in(this) this.docQuery = uni.createSelectorQuery().in(this)
}, },
...@@ -465,7 +474,7 @@ export default { ...@@ -465,7 +474,7 @@ export default {
if (this.chooseService[i].depositType == 1) { if (this.chooseService[i].depositType == 1) {
//等于1,押金金额跟数量没关系 //等于1,押金金额跟数量没关系
singleProduct = this.chooseService[i].deposit singleProduct = this.chooseService[i].deposit
} else if (this.chooseService[i].depositType == 2){ } else if (this.chooseService[i].depositType == 2) {
//等于2,押金单价乘购买数量 //等于2,押金单价乘购买数量
singleProduct = parseFloat((this.chooseService[i].deposit * this.buyNum).toFixed(2)) singleProduct = parseFloat((this.chooseService[i].deposit * this.buyNum).toFixed(2))
} }
...@@ -551,74 +560,52 @@ export default { ...@@ -551,74 +560,52 @@ export default {
showDetail() { showDetail() {
this.$refs.detail.showPop = true this.$refs.detail.showPop = true
}, },
//---展示日历---已修改 //---展示日历
showCalendar(index) { showCalendar() {
// if(!this.productList[index].chooseDate){//没有选择时,默认第一个日期
// this.productList[index].chooseDate=this.productList[index].priceStockList[0].startTime.substr(0,10)
// }
// this.$refs.calendar.getDefaultDate(this.productList[index].chooseDate)//日历组件选中日期
this.moreDateIndex=index
this.dateList=this.productList[index].priceStockList
this.$refs.calendar.show = true this.$refs.calendar.show = true
}, },
//---日期选择---已改 //---日期选择
dateChoose(item,item2,index) { dateChoose(index) {
item.active=index//修改选中样式 this.active = index //修改选中样式
item.maxBookNum=Math.min(item2.maxBookNum,item2.surplus) //剩余量变化 this.maxBookNum = Math.min(this.dateList[index].surplus, this.productIfo.maxBookNum) //剩余量变化
item.originalPrice=item2.originalPrice//产品原价为当前选中日期的原价 this.originalPrice = this.dateList[index].originalPrice //原价变化
item.sellingPrice=item2.sellingPrice//产品卖价为当前选中日期的卖价 this.sellingPrice = this.dateList[index].sellingPrice //卖家变化
item.chooseDate=item2.startTime.substr(0,10) this.chooseDate = this.dateList[index].startTime.substr(0, 10) //日历组件选中日期
this.$refs.calendar.getDefaultDate(item.chooseDate)//日历组件选中日期 this.endDate = this.dateList[index].endTime //开始日期
item.endDate=item2.endTime//开始日期 this.startDate = this.dateList[index].startTime //结束日期
item.startDate=item2.startTime//结束日期 this.$refs.calendar.defaultDate = this.chooseDate
this.chooseTimeData=''//清除之前选中的时间 if (this.productIfo.productType == 3) {
if(item.productType==3){ //如果为班次票,点击时,请求班次票接口
//productType=3为场次票 this.cruisePlanId = '' //清空班次id
item.cruisePlanId='' this.timeActive = 10000
item.timeActive=10000 uni.$u.throttle(this.getTimeStock, 3000)
this.timeActive=10000
uni.$u.throttle(this.getTimeStock(item), 3000)
} }
this.initCoupon()
// this.computedPrice()
// this.initCoupon(Item.id,Item.buyNum,Item.sellingPrice,Item.merchantId,Index)
// this.$forceUpdate()
}, },
//---日历确认事件---已改好 //---日历确认事件
dateConfig(data) { dateConfig(data) {
let index=this.moreDateIndex let index = this.dateList.findIndex(item => {
let index2=this.productList[index].priceStockList.findIndex(item=>{ return item.startTime.substr(0, 10) == data
return item.startTime.substr(0,10)==data
}) })
let item=this.productList[index] this.dateChoose(index) //选中确认的日期
let item2=item.priceStockList[index2]
this.dateChoose(item,item2,index) //选中确认的日期
this.docQuery.selectAll('.date-list').boundingClientRect(data => { this.docQuery.selectAll('.date-list').boundingClientRect(data => {
this.dateScroll = (data[index].width + 4) * index this.dateScroll = (data[index].width + 4) * index
}).exec() }).exec()
}, },
//---展示更多时间---已改好 //---展示更多时间
showTime(item,index) { showTime() {
this.chooseTimeList=item.timeList
this.moreTimeIndex=index
if(item.timeActive>=0){
this.timeActive=item.timeActive//组件的默认下标
}else{
this.timeActive=10000
}
this.$refs.times.showPop = true this.$refs.times.showPop = true
}, },
//---时间选择---已改好,数据更新需要测试 //---时间选择
chooseTime(item,item2,index) { chooseTime(i) {
if(item2.copyLast!='售罄'){ if(this.timeList[i].copyLast!='售罄'){
item.timeActive=index this.timeActive = i
item.cruisePlanId=item2.cruisePlanId//获取班次Id this.cruisePlanId = this.timeList[i].cruisePlanId //获取班次Id
this.chooseTimeData=item2.startPlanTime this.chooseTimeData = this.timeList[i].startPlanTime
item.maxBookNum=Math.min(item.maxBookNum,item2.last) this.maxBookNum = Math.min(this.timeList[i].last, this.productIfo.maxBookNum) //获取剩余库存
//如果为场次票,开始时间为班次时间的开始时间,结束时间为班次时间的结束时间,班次时间的结束时间为空时,结束时间为班次时间的开始时间 //如果为班次票,开始时间为班次时间的开始时间,结束时间为班次时间的结束时间,班次时间的结束时间为空时,结束时间为班次时间的开始时间
item.startPlayTime=item2.startPlanTime this.startPlayTime = this.timeList[i].startPlanTime
item.endPlayTime=item2.endPlanTime||item2.startPlanTime this.endPlayTime = this.timeList[i].endPlanTime || this.timeList[i].startPlanTime
// this.$forceUpdate()
} }
}, },
//---时间确认事件 //---时间确认事件
...@@ -654,33 +641,6 @@ export default { ...@@ -654,33 +641,6 @@ export default {
showContacts() { showContacts() {
this.$refs.contactList.showPop = true this.$refs.contactList.showPop = true
}, },
//---计算价格
computedPrice(){
let savedMoney=0
let original=0
let sell=0
let deposit=0
this.productDepositTotal=0
this.productList.forEach((item)=>{
original+=item.originalPrice*item.buyNum
sell+=item.sellingPrice*item.buyNum
if(item.chooseCouponObj){
if(item.chooseCouponObj.slaveList&&item.chooseCouponObj.slaveList.length>0){
savedMoney+=item.chooseCouponObj.slaveList[0].savedMoney
}else{
savedMoney+=item.chooseCouponObj.savedMoney
}
}
if(item.depositType==1){//等于1,押金金额跟数量没关系
deposit=item.deposit
}else if(item.depositType==2){//等于2,押金单价乘购买数量
deposit=item.deposit*item.buyNum
}
this.productDepositTotal+=deposit
})
this.originalTotal=parseFloat((original+this.productDepositTotal).toFixed(2))||0 //产品总价+产品押金
this.sellTotal=parseFloat((sell+this.productDepositTotal-savedMoney).toFixed(2))||0
},
//---游客选择 //---游客选择
visitorChoose(i) { visitorChoose(i) {
let chooseList = this.chooseContact let chooseList = this.chooseContact
...@@ -737,58 +697,62 @@ export default { ...@@ -737,58 +697,62 @@ export default {
this.initCoupon() this.initCoupon()
}, 1500) }, 1500)
}, },
//---展示购票须知---已修改 //---展示购票须知
showBuyKnow(index) { showBuyKnow() {
this.buyKnowData=this.productList[index]
this.$refs.buyKnow.showPop = true this.$refs.buyKnow.showPop = true
}, },
//---页面初始化数据,获取产品基本信息---已修改 //---页面初始化数据,获取产品基本信息
initData() { initData() {
let data={ let data = {
productList:this.productIdList,//产品id列表 id: this.productId //产品id
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
mask:true mask:true
}) })
this.$request('scenic/groupGood/loadProductList', data).then(res => { this.$request('scenic/groupGood/loadProduct', data).then(res => {
if (res.code == '00'){ if (res.code == '00') {
this.productList=res.data||[] this.productIfo = res.data
this.productIdList=this.productList.map((item)=>{//id集合用于请求价格库存列表接口 this.defaultAreaCode = this.productIfo.defaultAreaCode || ''
return item.id //通过默认站点找到站点数据
}) if (this.defaultAreaCode) {
this.productIfo.productAreaList.forEach(item => {
for(let i=0;i<this.productList.length;i++){ if (item.areaCode == this.defaultAreaCode) {
let item=this.productList[i] this.areaObj = {}
if(item.defaultAreaCode){ this.areaObj.areaCode = item.areaCode
item.areaObj={} this.areaObj.areaName = item.areaName
item.areaObj.areaCode=item.areaCode }
item.areaObj.areaName=item.areaName })
}else{ }
item.areaObj={} this.merchantCode = this.productIfo.merchantVo.code, //商户code
} this.productId = res.data.id//产品id变化,重新赋值产品id
item.active=0//默认选中第一个日期 this.merchantId = res.data.merchantId //重新赋值商户id
item.buyNum=1,//默认为1 this.beforeBookDays = res.data.beforeBookDays || 0 //提前预定天数
item.contactTotal=[]//选中的游客信息列表 this.buyKnowData = res.data //购买须知,传给子组件
item.contactNum=1//需要选择几位联系人数量 this.serviceList = res.data.loadProductResVoList //额外服务
if(item.status==1){//任何一个产品下架,该组合票为下架状态 //this.chooseService=res.data.data.loadProductResVoList//默认全部选中
this.orderStatus=1 if (this.productIfo.status == 1) {
//下架状态
this.payBackground = '#C0C0C0' this.payBackground = '#C0C0C0'
return
} }
if(item.productType!=3){//不为班次票时,开始时间为当前时间,结束时间为23:59:59 if (this.productIfo.productType != 3) {
item.startPlayTime=new Date().Format('hh:mm:ss') //不为班次票时,开始时间为当前时间,结束时间为23:59:59
item.endPlayTime='23:59:59' this.startPlayTime = new Date().Format('hh:mm:ss')
this.endPlayTime = '23:59:59'
} }
if (this.productIfo.tripTemplateResList.length > 0) {
//用于判断选中的联系人信息是否填写完善
this.productIfo.tripTemplateResList.forEach(item => {
this.templateList.push(item.enumKey)
})
} }
this.getPriceList() this.getPriceList()
// this.getDiscountPrice() //获取优惠价格 this.getDiscountPrice() //获取优惠价格
//---待处理 if (this.productIfo.tripTemplateFlag != 2) {
// if (this.productIfo.tripTemplateFlag != 2) { //等于2时不需要填写联系人信息和手机号码
// //等于2时不需要填写联系人信息和手机号码 this.getContactList()
// this.getContactList() }
// }
} else { } else {
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
...@@ -797,168 +761,90 @@ export default { ...@@ -797,168 +761,90 @@ export default {
} }
}) })
}, },
//---获取产品价格库存列表---已部分修改 //---获取产品价格库存列表
getPriceList() { getPriceList() {
let data={ let data = {
productIds:this.productIdList,//产品id集合 productId: this.productId //产品id
} }
this.$request('scenic/user/product/groupPriceStockList', data).then(res => { this.$request('scenic/user/product/priceStockList', data).then(res => {
if (res.code == '00') { if (res.code == '00') {
//所有产品的价格库存列表 this.dateList = res.data //日期列表
let stockList=res.data if (this.dateList.length > 0) {
this.productList.forEach(item=>{ let time1 = this.dateList[0].startTime.substr(0, 10) + this.productIfo.bookTime //获取价格列表的第一个日期+预订最晚时间
//待处理 let timeNum1 = parseInt(this.$commonjs.changeTime(time1))
// if(item.isFetch==1&&item.productAreaList.length>1){ let time2 = new Date().Format('yyyy-MM-dd hh:mm:ss')
// this.areaIndex=index let timeNum2 = parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字
// this.merchantCode=this.productList[index].merchantVo.code if (timeNum2 > timeNum1) {
// this.sortUpDown()
//}else if(item.isFetch==1&&item.productAreaList.length==1){
// item.areaObj=item.productAreaList[0]
// }
//把价格列表合并到对应的产品上面
stockList.forEach(item2=>{
if(item.id==item2.productId){
item.priceStockList=item2.priceStockList||[]
}
})
})
let today = this.$commonjs.today() //今天
let tomorrow = this.$commonjs.tomorrow() //明天
let afterTomorrow = this.$commonjs.afterTomorrow() //后天
this.productList.forEach(item=>{
if(item.priceStockList.length>0){
//获取价格列表的第一个日期+预订最晚时间
let time1=item.priceStockList[0].startTime.substr(0,10)+item.bookTime
let timeNum1=parseInt(this.$commonjs.changeTime(time1))
let time2=new Date().Format('yyyy-MM-dd hh:mm:ss')
let timeNum2 =parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字
if(timeNum2>timeNum1){
//如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示 //如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示
item.priceStockList.splice(0,1) this.dateList.splice(0, 1)
} }
item.priceStockList.forEach((item2, index) => { this.dateList.forEach((item, index) => {
//价格上面时间小于当前时间加上需预定天数之后的需删除 //价格上面时间小于当前时间加上需预定天数之后的需删除
let date = new Date() let date = new Date()
date.setDate(date.getDate() + item2.beforeBookDays) date.setDate(date.getDate() + this.beforeBookDays)
let newDate = date.Format('yyyy-MM-dd') let newDate = date.Format('yyyy-MM-dd')
let priceTime = this.$commonjs.changeTime(item2.endTime.substr(0, 10)) let priceTime = this.$commonjs.changeTime(item.endTime.substr(0, 10))
let newTime = this.$commonjs.changeTime(newDate) let newTime = this.$commonjs.changeTime(newDate)
if (priceTime < newTime) { if (priceTime < newTime) {
delete item.priceStockList[index] delete this.dateList[index]
} }
}) })
item.priceStockList = item.priceStockList.filter(val => { this.dateList = this.dateList.filter(val => {
return val return val
}) })
if(item.priceStockList.length==0){ if (this.dateList.length == 0) {
uni.showToast({title: '没有库存',icon: 'none'}) uni.showToast({
title: '没有库存',
icon: 'none'
})
this.showArea = false
this.payBackground = '#C0C0C0' this.payBackground = '#C0C0C0'
return return
} }
item.startDate=item.priceStockList[0].startTime//开始日期 if (this.productIfo.isFetch == 1) {
item.endDate=item.priceStockList[0].endTime//结束日期 this.sortUpDown()
item.originalPrice=item.priceStockList[0].originalPrice//原价 }
item.sellingPrice=item.priceStockList[0].sellingPrice//卖价 if (this.dateList.length == 1 && this.beforeBookDays == 0) {
item.maxBookNum=Math.min(item.priceStockList[0].surplus,item.maxBookNum)//最大购买数量 //长度为1而且只能预订当天,默认选中第一个日期
item.priceStockList.forEach(item2=>{//循环单个产品的价格列表 //真机模拟的时候手机端不显示今天,明天后天,延迟执行
item2.week='日一二三四五六'.charAt(new Date(item2.startTime.substr(0,10)).getDay()) setTimeout(item => {
if(item2.startTime.substr(0,10)==today){ this.$refs.calendar.defaultDate = this.dateList[0].startTime.substr(0, 10)
item2.week='今天' }, 1000)
} this.maxBookNum = Math.min(this.dateList[0].surplus, this.productIfo.maxBookNum) //剩余量
if(item2.startTime.substr(0,10)==tomorrow){ this.startDate = this.dateList[0].startTime //开始日期
item2.week='明天' this.endDate = this.dateList[0].endTime //结束日期
this.originalPrice = this.dateList[0].originalPrice //原价
this.sellingPrice = this.dateList[0].sellingPrice //卖价
this.active = 0
if (this.productIfo.productType == 3) {
//如果为班次票,请求班次票接口
this.getTimeStock()
} }
if(item2.startTime.substr(0,10)==afterTomorrow){ this.initCoupon() //获取优惠券
item2.week='后天'
} }
} else {
uni.showToast({
title: '没有库存',
icon: 'none'
}) })
//如果是班次票,并且班次票价格列表不为空 this.showArea = false
if(item.productType==3&&item.priceStockList.length>0){
this.getTimeStock(item)
}
}else{
uni.showToast({title: '没有库存',icon: 'none'})
this.payBackground = '#C0C0C0' this.payBackground = '#C0C0C0'
} }
let today = this.$commonjs.today() //今天
let tomorrow = this.$commonjs.tomorrow() //明天
let afterTomorrow = this.$commonjs.afterTomorrow() //后天
this.dateList.forEach((item, index) => {
item.week = '日一二三四五六'.charAt(new Date(item.startTime.substr(0, 10)).getDay())
if (item.startTime.substr(0, 10) == today) {
item.week = '今天'
}
if (item.startTime.substr(0, 10) == tomorrow) {
item.week = '明天'
}
if (item.startTime.substr(0, 10) == afterTomorrow) {
item.week = '后天'
}
}) })
// this.dateList = res.data //日期列表
// if (this.dateList.length > 0) {
// let time1 = this.dateList[0].startTime.substr(0, 10) + this.productIfo.bookTime //获取价格列表的第一个日期+预订最晚时间
// let timeNum1 = parseInt(this.$commonjs.changeTime(time1))
// let time2 = new Date().Format('yyyy-MM-dd hh:mm:ss')
// let timeNum2 = parseInt(this.$commonjs.changeTime(time2)) //将当前时间转化为数字
// if (timeNum2 > timeNum1) {
// //如果当前时间大于价格列表第一个日期+预订最晚时间,第一个价格不显示
// this.dateList.splice(0, 1)
// }
// this.dateList.forEach((item, index) => {
// //价格上面时间小于当前时间加上需预定天数之后的需删除
// let date = new Date()
// date.setDate(date.getDate() + this.beforeBookDays)
// let newDate = date.Format('yyyy-MM-dd')
// let priceTime = this.$commonjs.changeTime(item.endTime.substr(0, 10))
// let newTime = this.$commonjs.changeTime(newDate)
// if (priceTime < newTime) {
// delete this.dateList[index]
// }
// })
// this.dateList = this.dateList.filter(val => {
// return val
// })
// if (this.dateList.length == 0) {
// uni.showToast({
// title: '没有库存',
// icon: 'none'
// })
// this.showArea = false
// this.payBackground = '#C0C0C0'
// return
// }
// if (this.productIfo.isFetch == 1) {
// this.sortUpDown()
// }
// if (this.dateList.length == 1 && this.beforeBookDays == 0) {
// //长度为1而且只能预订当天,默认选中第一个日期
// //真机模拟的时候手机端不显示今天,明天后天,延迟执行
// setTimeout(item => {
// this.$refs.calendar.defaultDate = this.dateList[0].startTime.substr(0, 10)
// }, 1000)
// this.maxBookNum = Math.min(this.dateList[0].surplus, this.productIfo.maxBookNum) //剩余量
// this.startDate = this.dateList[0].startTime //开始日期
// this.endDate = this.dateList[0].endTime //结束日期
// this.originalPrice = this.dateList[0].originalPrice //原价
// this.sellingPrice = this.dateList[0].sellingPrice //卖价
// this.active = 0
// if (this.productIfo.productType == 3) {
// //如果为班次票,请求班次票接口
// this.getTimeStock()
// }
// this.initCoupon() //获取优惠券
// }
// } else {
// uni.showToast({
// title: '没有库存',
// icon: 'none'
// })
// this.showArea = false
// this.payBackground = '#C0C0C0'
// }
// let today = this.$commonjs.today() //今天
// let tomorrow = this.$commonjs.tomorrow() //明天
// let afterTomorrow = this.$commonjs.afterTomorrow() //后天
// this.dateList.forEach((item, index) => {
// item.week = '日一二三四五六'.charAt(new Date(item.startTime.substr(0, 10)).getDay())
// if (item.startTime.substr(0, 10) == today) {
// item.week = '今天'
// }
// if (item.startTime.substr(0, 10) == tomorrow) {
// item.week = '明天'
// }
// if (item.startTime.substr(0, 10) == afterTomorrow) {
// item.week = '后天'
// }
// })
} else { } else {
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
...@@ -1000,14 +886,14 @@ export default { ...@@ -1000,14 +886,14 @@ export default {
} }
}) })
}, },
//---获取班次票---已修改 //---获取班次票
getTimeStock(item) { getTimeStock() {
let data = { let data = {
endDate: item.endDate, //结束日期 endDate: this.endDate, //结束日期
startDate: item.startDate, //开始日期 startDate: this.startDate, //开始日期
interfaceCode: item.merchantVo.interfaceCompanyId, //接口编号 interfaceCode: this.productIfo.merchantVo.interfaceCompanyId, //接口编号
merchantCode: item.merchantVo.code, //商户code merchantCode: this.merchantCode, //商户code
productCode: item.code //产品code productCode: this.productIfo.code //产品code
} }
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
...@@ -1015,21 +901,20 @@ export default { ...@@ -1015,21 +901,20 @@ export default {
}) })
this.$request('distribution/distribution/getTimeStock', data).then(res => { this.$request('distribution/distribution/getTimeStock', data).then(res => {
if (res.code == '00') { if (res.code == '00') {
item.timeList=res.data this.timeList = res.data
this.timeList.forEach((item, index) => {
//增加一个时间Number字段,用于判断当前时间大于班次结束时间时,显示售罄 //增加一个时间Number字段,用于判断当前时间大于班次结束时间时,显示售罄
item.timeList.forEach(item2=>{ let text=parseFloat((item.last/item.total).toFixed(2))||0
let text=parseFloat((item2.last/item2.total).toFixed(2))||0
if(text>0.4){ if(text>0.4){
item2.copyLast='余票充足' item.copyLast='余票充足'
}else{ }else{
item2.copyLast=item2.last item.copyLast=item.last
} }
item2.timeNumber=parseInt(this.$commonjs.changeTime(item2.planDate.substr(0,10)+item2.endPlanTime)) item.timeNumber = parseInt(this.$commonjs.changeTime(item.planDate.substr(0, 10) + item.endPlanTime))
if(this.timeNumber>item2.timeNumber||item2.last<=0){ if (this.timeNumber > item.timeNumber || item.last <= 0) {
item2.copyLast='售罄' item.copyLast='售罄'
} }
}) })
// this.$forceUpdate()
} else { } else {
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
......
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