Commit 0b62f5e1 by zhangzhen

订单功能优化

parent 333a1d6a
...@@ -547,7 +547,7 @@ ...@@ -547,7 +547,7 @@
onChangePackage(index){ onChangePackage(index){
if(this.modeIndex == index) return; if(this.modeIndex == index) return;
let startDateTime = this.modeIndex >=0 ? this.formatAllData.startDateTime: null let startDateTime = this.orderType ==2? this.orderInfo.startDate: ''
this.modeIndex = index this.modeIndex = index
this.modeIndex2 = -1 this.modeIndex2 = -1
...@@ -556,7 +556,6 @@ ...@@ -556,7 +556,6 @@
startDateTime, startDateTime,
duration: this.roomLabelList[this.modeIndex].labelDuration, duration: this.roomLabelList[this.modeIndex].labelDuration,
}); });
console.log(this.formatAllData,"this.formatAllData")
}, },
onPackageCheck(){ onPackageCheck(){
this.onCancleTip(); this.onCancleTip();
...@@ -580,7 +579,6 @@ ...@@ -580,7 +579,6 @@
let orderEndDate = moment(endDate).valueOf() let orderEndDate = moment(endDate).valueOf()
if(start >= orderStartDate && start<=orderEndDate && item.status ==1){ if(start >= orderStartDate && start<=orderEndDate && item.status ==1){
startDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00"); startDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00");
console.log(startDate,"重置的开始时间")
} }
}) })
...@@ -591,65 +589,203 @@ ...@@ -591,65 +589,203 @@
duration, duration,
durationType:2 durationType:2
}); });
console.log(this.formatAllData,9999992222)
}, },
// 套餐切换 // 套餐切换
onChangePackage2(index){ onChangePackage2(index){
if(this.modeIndex2 == index) return; if(this.modeIndex2 == index) return;
this.tempPackageIndex = index; this.tempPackageIndex = index;
let startStr = `${this.dateList[this.dateIndex].readDate} ${this.packageMode[this.tempPackageIndex].packaStartPeriod}:00:00` let startStr = `${this.dateList[this.dateIndex].readDate} ${this.packageMode[this.tempPackageIndex].packaStartPeriod}:00:00`
let startDate = moment(moment().format(startStr)).format("YYYY-MM-DD HH:00:00"); let startDate = moment(moment().format(startStr)).format("YYYY-MM-DD HH:00:00");
let endStr = `${this.dateList[this.dateIndex].readDate} ${this.packageMode[this.tempPackageIndex].packaEndPeriod}:00:00` let endStr = `${this.dateList[this.dateIndex].readDate} ${this.packageMode[this.tempPackageIndex].packaEndPeriod}:00:00`
let endDate = moment(moment().format(endStr)).format("YYYY-MM-DD HH:00:00"); let endDate = moment(moment().format(endStr)).format("YYYY-MM-DD HH:00:00");
if(this.dateIndex === 0 && (moment().valueOf() > moment(endDate).valueOf())){ console.log(startDate,endDate,"此套餐的开始时间和结束时间")
startDate = moment(startDate).add(1,'d').format("YYYY-MM-DD HH:00:00")
endDate = moment(endDate).add(1,'d').format("YYYY-MM-DD HH:00:00")
// 如果此套餐的结束时间在11点前,则为通宵套餐,会在当天及明天进行找合适的时间段,否则则没有合适的套餐时段
let pointDateForm = moment(this.dateList[this.dateIndex].readDate).format("YYYY-MM-DD 11:00:00");
let dateTimeObj = {};
console.log(pointDateForm,9999)
if(moment(endDate).valueOf() < moment(pointDateForm).valueOf()){
dateTimeObj = this.onComputeStartDateAndEndDate(startDate,endDate);
console.log(dateTimeObj,"计算后的时间");
// 实际时长小于原时长的50%则选择明天的时间
// 原时间
let originTime = moment(endDate).valueOf() - moment(startDate).valueOf()
// 实际时间
let actualTime = moment(dateTimeObj.tempEndDate).valueOf() - moment(dateTimeObj.tempStartDate).valueOf()
if( actualTime< originTime*0.6){
console.log("实际时长小于原时长的50%则选择明天的时间");
// 加一天时间重新计算
dateTimeObj = this.onComputeStartDateAndEndDate(moment(startDate).add(1,"d").format("YYYY-MM-DD HH:00:00"),moment(endDate).add(1,"d").format("YYYY-MM-DD HH:00:00"));
console.log(dateTimeObj,"计算后的时间2");
// 实际时间
actualTime = moment(dateTimeObj.tempEndDate).valueOf() - moment(dateTimeObj.tempStartDate).valueOf()
if( actualTime < originTime*0.6){
uni.showToast({
icon:"none",
title:'可使用时长不足,请选择其他日期'
})
return
}else if(actualTime < originTime*0.8 && actualTime >= originTime*0.6){
this.$refs.popupDialog.open();
return
}
} else if( actualTime < originTime*0.8 && actualTime >= originTime*0.6){
this.$refs.popupDialog.open();
return
}else{
this.modeIndex = -1
this.modeIndex2 = index
let duration = (moment(dateTimeObj.tempEndDate).valueOf()-moment(dateTimeObj.tempStartDate).valueOf())/1000/60;
this.formatAllData = this.onTransiteForDate({
list: JSON.parse(JSON.stringify(this.dateIntervalList)),
startDateTime: dateTimeObj.tempStartDate,
endDateTime: dateTimeObj.tempEndDate,
duration,
durationType:2
});
}
} }
//原始时长,结束时间-原开始时间
let originDate = moment(endDate).valueOf() - moment(startDate).valueOf(); // 如果此套餐的结束时间在12点后,则为闲时套餐,仅查看今日日否有合适的套餐
console.log(originDate/1000/60, "originDate原始时长")
},
// 通过指定时间在当前时间段内查询合适的时间段
onComputeStartDateAndEndDate(startDate,endDate){
//重新设置开始时间和结束时间
let tempStartDate = startDate;
let tempEndDate = endDate;
let startNeedChange = false;
let endNeedChange = false;
this.dateIntervalList.forEach(item=>{ this.dateIntervalList.forEach(item=>{
let start = moment(moment(item.timeHour).format("YYYY-MM-DD HH::mm:ss")).valueOf() // 检查时段在开始时间和结束时间内
let orderStartDate = moment(startDate).valueOf() let start = moment(moment(item.timeHour).format("YYYY-MM-DD HH:00:00")).valueOf()
let orderEndDate = moment(endDate).valueOf() let end = moment(moment(item.timeHour).format("YYYY-MM-DD HH:59:59")).valueOf()
if(start >= orderStartDate && start<=orderEndDate && item.status ==1){ if( start < moment(endDate).valueOf() && start >= moment(startDate).valueOf()){
startDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00"); // 当前小时被完全占用
console.log(startDate,"重置的开始时间") if(item.status ==1 && this.onCheckHourUse(item.startHoldTime,item.endHoldTime)){
startNeedChange = true;
tempStartDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")
}
if(item.status ==1 && !this.onCheckHourUse(item.startHoldTime,item.endHoldTime)){
tempStartDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")
startNeedChange = false;
}
if(item.status == 0 && startNeedChange){
tempStartDate = moment(item.timeHour).format("YYYY-MM-DD HH:00:00")
startNeedChange = false;
}
if(start > moment(tempStartDate).valueOf() && endNeedChange){
endNeedChange = true;
tempEndDate = moment(item.startHoldTime).format("YYYY-MM-DD HH:mm:00")
}
if(start > moment(tempStartDate).valueOf() && !endNeedChange && item.status == 1){
endNeedChange = false;
tempEndDate = moment(item.startHoldTime).format("YYYY-MM-DD HH:mm:00")
}
} }
}) })
//实际时长,结束时间-实际开始时间 console.log(tempStartDate,tempEndDate,9999);
let actualDate = moment(endDate).valueOf() - moment(startDate).valueOf(); return {
console.log(actualDate/1000/60, "actualDate实际时长") tempStartDate,
tempEndDate
if( actualDate >= originDate*0.6 && actualDate <= originDate*0.8 ){ }
this.$refs.popupDialog.open(); },
return // 通过指定时长在当前时间段内查询合适的时间段
} else if (actualDate < originDate*0.6){ onComputeByDuration(duration,durationType=1){
this.$refs.popupMessage2.open(); console.log(duration,durationType,8888)
//重新设置开始时间和结束时间
return let m = Number(duration)*60;
if (durationType === 2) {
m = Number(duration)
} }
// 把时长计算成毫秒数
let timeStampLong = m*60*1000;
let tempStartDate = '';
let tempEndDate = '';
let startNeedChange = true;
let endNeedChange = true;
console.log(this.dateIntervalList,9999,"原列表")
this.dateIntervalList.forEach((item,k) => {
if(k<24){
if(item.status == 1 && startNeedChange && this.onCheckHourUse(item.startHoldTime,item.endHoldTime)){
tempStartDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")
startNeedChange = true
endNeedChange = true;
}
if(item.status == 1 && startNeedChange && !this.onCheckHourUse(item.startHoldTime,item.endHoldTime)){
tempStartDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")
startNeedChange = false
endNeedChange = true;
}
if(item.status == 0 && startNeedChange){
tempStartDate = moment(item.timeHour).format("YYYY-MM-DD HH:00:00")
startNeedChange = false
endNeedChange = true;
}
}
if(item.status == 1 && endNeedChange && tempStartDate){
let endDate = moment(item.startHoldTime).format("YYYY-MM-DD HH:mm:00")
if( moment(endDate).valueOf() >= moment(tempStartDate).valueOf()){
tempEndDate = endDate
if( moment(tempEndDate).valueOf() - moment(tempStartDate).valueOf() >= timeStampLong){
startNeedChange = false;
endNeedChange = false;
}else{
if(k <24 ){
tempStartDate = moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")
startNeedChange = true;
}else{
startNeedChange = false;
}
endNeedChange = false;
}
}
}else if(item.status == 0 && endNeedChange && tempStartDate){
console.log(k)
let endDate = moment(item.timeHour).format("YYYY-MM-DD HH:59:00")
if( moment(endDate).valueOf() - moment(tempStartDate).valueOf() >= timeStampLong){
endNeedChange = false;
tempEndDate = moment(moment(tempStartDate).valueOf()+timeStampLong).format("YYYY-MM-DD HH:mm:00")
}else{
endNeedChange = true;
}
}
})
this.modeIndex = -1
this.modeIndex2 = index
let duration = (moment(endDate).valueOf()-moment(startDate).valueOf())/1000/60;
this.formatAllData = this.onTransiteForDate({
list: JSON.parse(JSON.stringify(this.dateIntervalList)),
startDateTime: startDate,
duration,
durationType:2
});
console.log(this.formatAllData,9999992222)
let params = {
startDateTime:tempStartDate,
endDateTime: tempEndDate,
useStatus: moment(tempEndDate).valueOf() - moment(tempStartDate).valueOf() < timeStampLong
}
console.log(params,"通过时长找合适时间段1213")
return params
}, },
onInitDateList() { onInitDateList() {
this.toDayDate = moment().format("YYYY-MM-DD") this.toDayDate = moment().format("YYYY-MM-DD")
...@@ -708,7 +844,6 @@ ...@@ -708,7 +844,6 @@
}, },
onGetOrderInfo() { onGetOrderInfo() {
getOrderInfoByNo(this.preOrderNo).then(res => { getOrderInfoByNo(this.preOrderNo).then(res => {
console.log(res, "订单信息")
if (res.data.code == 200) { if (res.data.code == 200) {
this.orderInfo = res.data.data; this.orderInfo = res.data.data;
this.id = this.orderInfo.roomId; this.id = this.orderInfo.roomId;
...@@ -766,7 +901,6 @@ ...@@ -766,7 +901,6 @@
list: JSON.parse(JSON.stringify(this.dateIntervalList)), list: JSON.parse(JSON.stringify(this.dateIntervalList)),
duration: this.roomLabelList[this.modeIndex].labelDuration duration: this.roomLabelList[this.modeIndex].labelDuration
}); });
console.log(this.formatAllData, "transiteForDate2222")
}) })
}, },
// 获取可用优惠券 // 获取可用优惠券
...@@ -930,15 +1064,11 @@ ...@@ -930,15 +1064,11 @@
this.checkedDateList = this.checkedIndex.length ? this.checkedIndex.map(item => Number(item)) : [0, 0]; this.checkedDateList = this.checkedIndex.length ? this.checkedIndex.map(item => Number(item)) : [0, 0];
let startTime = `${this.hourList[this.checkedDateList[0]]}:${this.minuteList[this.checkedDateList[1]]}`; let startTime = `${this.hourList[this.checkedDateList[0]]}:${this.minuteList[this.checkedDateList[1]]}`;
this.formatAllData.startTime = startTime; this.formatAllData.startTime = startTime;
console.log(startTime,"开始时间,888")
this.formatAllData = this.onTransiteForDate({ this.formatAllData = this.onTransiteForDate({
...this.formatAllData,
list: JSON.parse(JSON.stringify(this.dateIntervalList)), list: JSON.parse(JSON.stringify(this.dateIntervalList)),
startDateTime: `${this.dateList[this.dateIndex].readDate} ${startTime}:00`, startDateTime: `${this.dateList[this.dateIndex].readDate} ${startTime}:00`,
endDateTime: '', duration: this.roomLabelList[this.modeIndex].labelDuration
endTime:''
}); });
console.log(this.formatAllData,9911199)
this.$forceUpdate(); this.$forceUpdate();
this.onHideModal(); this.onHideModal();
}, },
...@@ -985,7 +1115,6 @@ ...@@ -985,7 +1115,6 @@
}, },
complete: (res) => { complete: (res) => {
console.log(res, 909090)
// this.$refs.confirmPop.open(); // this.$refs.confirmPop.open();
this.onOrderConfirm(); this.onOrderConfirm();
} }
...@@ -1067,7 +1196,6 @@ ...@@ -1067,7 +1196,6 @@
}, },
complete: (res) => { complete: (res) => {
console.log(res, 909090)
// this.$refs.confirmPop.open(); // this.$refs.confirmPop.open();
this.onOrderCreate(); this.onOrderCreate();
} }
...@@ -1123,7 +1251,6 @@ ...@@ -1123,7 +1251,6 @@
}) })
}, },
"fail": (resp) => { "fail": (resp) => {
console.log(resp, "支付失败")
// 取消支付或支付失败 // 取消支付或支付失败
uni.showToast({ uni.showToast({
title: "取消支付" title: "取消支付"
...@@ -1131,11 +1258,10 @@ ...@@ -1131,11 +1258,10 @@
orderCancelPay({ orderCancelPay({
orderNo: res.data.data.orderNo orderNo: res.data.data.orderNo
}).then(res => { }).then(res => {
console.log(res)
}) })
}, },
"complete": (resp) => { "complete": (resp) => {
console.log(resp, "支付完成")
// 接口调用结束的回调函数(调用成功、失败都会执行) // 接口调用结束的回调函数(调用成功、失败都会执行)
} }
}); });
...@@ -1198,9 +1324,7 @@ ...@@ -1198,9 +1324,7 @@
}) })
return return
} }
console.log(val,9999) let startDate = val.endHoldTime? moment(val.endHoldTime).add(1,'m').format("YYYY-MM-DD HH:mm:00") : moment(val.timeHour).format("YYYY-MM-DD HH:00:00")
let startDate = val.endHoldTime? moment(val.endHoldTime).format("YYYY-MM-DD HH:mm:00") : moment(val.timeHour).format("YYYY-MM-DD HH:00:00")
this.formatAllData = this.onTransiteForDate({ this.formatAllData = this.onTransiteForDate({
list: JSON.parse(JSON.stringify(this.dateIntervalList)), list: JSON.parse(JSON.stringify(this.dateIntervalList)),
startDateTime: startDate, startDateTime: startDate,
...@@ -1208,13 +1332,42 @@ ...@@ -1208,13 +1332,42 @@
durationType:2 durationType:2
}); });
this.$forceUpdate(); this.$forceUpdate();
console.log(this.formatAllData,"处理后的数据")
}, },
// 通过开始时间和时长计算时段有无占用
onUseByStartAndDuration(startDate,duration,durationType=1){
let useStatus = false;
let m = Number(duration)*60;
if (durationType === 2) {
m = Number(duration)
}
let stempLong = m*60000;
let nextStatus = false;
this.dateIntervalList.forEach((item,k) =>{
if(nextStatus) return;
let start = moment(item.timeHour+':00:00').valueOf();
let end = moment(item.timeHour+':59:59').valueOf();
if( end > moment(startDate).valueOf() && start < moment(startDate).valueOf()+stempLong){
if(item.status ==1){
if(moment(item.endHoldTime).valueOf() > moment(startDate).valueOf() ){
useStatus = true;
nextStatus = true;
}
if(moment(item.startHoldTime).valueOf()< moment(startDate).valueOf() + stempLong){
useStatus = true
nextStatus = true;
}
}
}
})
return useStatus
},
//list(Array):当前日期的时间占用情况 //list(Array):当前日期的时间占用情况
//startDateTime(YYYY-MM-DD HH:mm:ss): 开始时间 //startDateTime(YYYY-MM-DD HH:mm:ss): 开始时间
//endDateTime(YYYY-MM-DD HH:mm:ss): 开始时间 //endDateTime(YYYY-MM-DD HH:mm:ss): 结束时间
//duration(Number||String): 时长,小时或分钟 //duration(Number||String): 时长,小时或分钟
//durationType(Number) : 时长类型,1:小时,2:分钟 //durationType(Number) : 时长类型,1:小时,2:分钟
// 返回值 // 返回值
...@@ -1236,73 +1389,57 @@ ...@@ -1236,73 +1389,57 @@
if (params.durationType === 2) { if (params.durationType === 2) {
m = Number(params.duration) m = Number(params.duration)
} }
// 开始时间的毫秒数 let startStamp = moment().valueOf();
let startStamp = this.dateIndex > 0 && !params.startDateTime ? moment(params.list[0].timeHour).valueOf() : !params.startDateTime || params.startDateTime == null ? moment(moment().add(1,'m').format("YYYY-MM-DD HH:mm:00")).valueOf() : moment(params.startDateTime).valueOf(); let endStamp = moment().valueOf() + m*60000;
let endStamp = startStamp + m * 60 * 1000; let dateObj = {
console.log(moment(endStamp).format("YYYY-MM-DD HH:mm:ss"),"结束时间戳") useStatus: false
// 记录可开始的时间点 };
let startPoint = startStamp; if(params.startDateTime){
let endPoint = endStamp // 开始和结束时间的毫秒数
let useStatus = false; startStamp = moment(params.startDateTime).valueOf();
endStamp = startStamp + m*60000;
dateObj.useStatus = this.onUseByStartAndDuration(params.startDateTime,m,2)
console.log(dateObj.useStatus,9999334)
} else if(params.duration){
dateObj = this.onComputeByDuration(m,2);
startStamp = moment(dateObj.startDateTime).valueOf();
endStamp = moment(dateObj.endDateTime).valueOf();
}
// 获取开始时间的当前小时 // 获取开始时间的当前小时
let startPointDate = moment(moment(startStamp).format("YYYY-MM-DD HH:00:00")).valueOf();
// 截取可预定时间段状态,true表示也筛选到
let interceptDateStatus = false;
let list = params.list.map((item, index) => { let list = params.list.map((item, index) => {
console.log(interceptDateStatus,"interceptDateStatus")
if (interceptDateStatus) {
return item
}
if(item.status == 0){
let s = moment(moment(item.timeHour).format("YYYY-MM-DD HH:59:59")).valueOf();
if(s>endStamp){
interceptDateStatus = true;
}
}else if(item.status == 1){
let startH = moment(moment(item.timeHour).format("YYYY-MM-DD HH:00:00")).valueOf(); let startH = moment(moment(item.timeHour).format("YYYY-MM-DD HH:00:00")).valueOf();
let endH = moment(moment(item.timeHour).format("YYYY-MM-DD HH:59:59")).valueOf(); let endH = moment(moment(item.timeHour).format("YYYY-MM-DD HH:59:59")).valueOf();
let end = moment(moment(item.endHoldTime).format("YYYY-MM-DD HH:mm:00")).valueOf(); if( endH >= startStamp && endH < endStamp){
if( startStamp >= startH && startStamp < endH && startStamp < end && endStamp > endH){ item.status = 2
useStatus = true;
}
let start = moment(item.startHoldTime).valueOf();
if(endStamp >= startH && endStamp < endH && endStamp > start && startStamp < startH ){
useStatus = true;
interceptDateStatus = true;
} }
if((start > startStamp && start < endPoint) || (end > startStamp && end < endPoint)) {
useStatus = true;
interceptDateStatus = true;
}
}
let point = moment(moment(item.timeHour).format("YYYY-MM-DD HH:00:00")).valueOf();
if (point >= startPointDate && point < endStamp) {
item.status = 2;
}
return item return item
}) })
if(dateObj.useStatus){
this.$refs.popupMessage.open();
}
let paramsData = { let paramsData = {
list: useStatus? JSON.parse(JSON.stringify(this.dateIntervalList)) : list , list: dateObj.useStatus? JSON.parse(JSON.stringify(this.dateIntervalList)) : list,
startDateTime: moment(startPoint).format("YYYY-MM-DD HH:mm:ss"), startDateTime: moment(startStamp).format("YYYY-MM-DD HH:mm:ss"),
startTime: moment(startPoint).format("HH:mm"), startTime: moment(startStamp).format("HH:mm"),
endDateTime: moment(endPoint).format("YYYY-MM-DD HH:mm:ss"), endDateTime: moment(endStamp).format("YYYY-MM-DD HH:mm:ss"),
endTime: moment(endPoint).format("HH:mm"), endTime: moment(endStamp).format("HH:mm"),
duration: m, duration: m,
useStatus, useStatus:dateObj.useStatus,
durationType: 2, durationType: 2,
interceptDateStatus
} }
// 获取用户可用优化券 // 获取用户可用优化券
this.onGetUseCoupon(paramsData) this.onGetUseCoupon(paramsData)
if(paramsData.useStatus){ console.log(paramsData,"返回结果")
this.$refs.popupMessage.open();
}
return paramsData return paramsData
}, },
onCancleTip(){ onCancleTip(){
...@@ -1310,7 +1447,11 @@ ...@@ -1310,7 +1447,11 @@
this.$refs.popupMessage2.close(); this.$refs.popupMessage2.close();
this.$refs.popupDialog.close(); this.$refs.popupDialog.close();
}, },
onCheckDate() {} // 检查当前小时段是否被全部占用
onCheckHourUse(startDate,endDate) {
let timeStamp = moment(endDate).valueOf()-moment(startDate).valueOf();
return timeStamp >= 3599000
}
} }
} }
</script> </script>
......
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