收到后端数据
initPage() {
findShopReservationDetailVO({shopId}).then(res => {
if(res.data.code === 200){
let temp = res.data.data;
let tempDataList = [];
for(let i = 0; i < temp.availableDates; i++){
const { futureTime: date, name } = this.getFutureTime(i);
tempDataList.push({
date,
name
})
}
this.dataList = tempDataList;
temp.reservationTimeList.forEach(item => {
this.timeList = this.timeList.concat(this.getOpenTime(item.beginTime,item.endTime));
})
}else {
toast(res.data.msg);
}
})
}
第一步通过数字获取未来天数
/**
* 获取未来时间
* method: getFutureTime
* @param days 未来天天数
* @return 未来日期和周几
* */
getFutureTime(days = 15) {
let newTime = new Date();
newTime.setDate(newTime.getDate() + (days));
const day = newTime.getDay();
const weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
const week = weeks[day];
let month = newTime.getMonth() + 1;
if (month < 10) {
month = '0' + month;
}
let date = newTime.getDate();
if (date < 10) {
date = '0' + date;
}
const futureTime = month + "-" + date;
const name = week;
return {
futureTime,
name
};
}
第二步计算时间
getOpenTime(beginTime,endTime) {
let timeArr = [];
const beginStamp = new Date(`2020/09/07 ${beginTime}`).getTime();
let endStamp = new Date(`2020/09/07 ${endTime}`).getTime() ;
const halfHourStamp = 1800000;
while(endStamp >= beginStamp){
const hour = new Date(endStamp).getHours();
let min = new Date(endStamp).getMinutes();
min = min > 10 ? min : '0' + min;
timeArr.unshift(
hour + ':' + min
)
endStamp = endStamp - halfHourStamp;
}
return timeArr;
}
Date对象需要留意