/*
* 初始化日历信息
1.获取当天日期,找到当前年份与月份
2.按照当月信息找到当月第一天与最后一天
3.获取第一天与最后一天分别是周几
4.找到日历中要显示上个月最后几天与下个月开始几天
5.找到日历中要显示的开始时间与结束时间
*/
const initDate = () => {
calendarList.value = [];
shiftInfo.value = [];
// 获取当月的第一天
let startTime = new Date(new Date(date.value).getFullYear(), new Date(date.value).getMonth(), 1);
// 获取当月的最后一天
let endTime = new Date(new Date(date.value).getFullYear(), new Date(date.value).getMonth() + 1, 0);
// 计算当月第一天是一个星期中的第几天
let startDays = startTime.getDay();
// 计算当月最后一天是一个星期中还剩几天补满一个星期
let endDays = 6 - endTime.getDay();
// 当月第一天减去开始差的天数
let momentStart: any = moment(startTime).subtract(startDays, "days");
// 当月最后一天加上结束差的天数
let momentEnd: any = moment(endTime).add(endDays, "days");
// 获取momentStart对应的date对象
calendarStartTime.value = momentStart._d;
// 获取momentEnd对应的date对象
calendarEndTime.value = momentEnd._d;
// 两个日期之间的范围值
let duration: any = moment.duration(moment(calendarEndTime.value).diff(moment(calendarStartTime.value)));
// 当月日历范围内总天数
let dayLength = duration._milliseconds / 1000 / 60 / 60 / 24 + 1;
let currentDay = calendarStartTime.value.getTime();
let year = new Date().getFullYear();
let month = new Date().getMonth();
let day = new Date().getDate();
for (let index = 0; index < dayLength; index++) {
let obj: any = {};
obj.disabled = false;
obj.day = currentDay;
obj.isCurrentDay = currentDay === new Date(year, month, day).getTime();
obj.isCurrentMonth = new Date(currentDay).getMonth() === new Date(date.value).getMonth();
obj.shiftList = [];
calendarList.value.push(obj);
let momentCurrent: any = moment(currentDay).add(1, "days");
currentDay = momentCurrent._d.getTime();
}
shiftInfo.value = calendarList.value;
};