import { getHomeUserSchedule } from '../../api/request.js' Page({ data: { AllScheduleList: [], scheduleList: [], todayStr: '', thisYear: '', maxYear: '', minYear: '' }, onLoad(query) { // 页面加载 }, onReady() { }, onScroll() { this.setData({ todayStr: '00000' }) }, onShow() { // 页面显示 let data = { "startTime": "2020-01-01 00:00:00", "endTime": "2025-12-30 23:59:59" } let that = this getHomeUserSchedule(data).then(res => { that.setData({ AllScheduleList: res.data.data }, () => { let now = new Date() let year = now.getFullYear(); let scheduleList = []; for (let i = 0; i<= year - 2019; i++) { scheduleList.push(that.returnScheduleList(2019 + i)) } const today = new Date() const finalDate = new Date(today) finalDate.setDate(today.getDate() - today.getDay()) console.log(finalDate.toLocaleDateString()) that.setData({ scheduleList: scheduleList, todayStr: finalDate.toLocaleDateString(), thisYear: year, maxYear: year }) }) }) }, returnScheduleList(year) { let that = this let weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] let DateMap = new Map(); let isLeapYear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 if (isLeapYear) { let isFirstWeek = false; for (let i = 1; i <= 366; i++) { if (i < 7 && new Date(year, 0, i).getDay() === 0) { isFirstWeek = true } if (isFirstWeek) { DateMap.set(`${new Date(year, 0, i).toLocaleDateString()}`, { scheduleList: [] }) } } let num = 6 - new Date(year, 0, 366).getDay() for (let i = 0; i <= num; i++) { DateMap.set(`${new Date(year, 0, 366 + i).toLocaleDateString()}`, { scheduleList: [] }) } } else { let isFirstWeek = false; for (let i = 1; i <= 365; i++) { if (i < 7 && new Date(year, 0, i).getDay() === 0) { isFirstWeek = true } if (isFirstWeek) { DateMap.set(`${new Date(year, 0, i).toLocaleDateString()}`, { scheduleList: [] }) } } let num = 6 - new Date(year, 0, 365).getDate() for (let i = 0; i <= num; i++) { DateMap.set(`${new Date(year, 0, 366 + i).toLocaleDateString()}`, { scheduleList: [] }) } } for (let y = 0; y < this.data.AllScheduleList.length; y++) { let date1 = this.data.AllScheduleList[y].startTime.slice(0, 10).replace(/-/g, '/') let date2 = this.data.AllScheduleList[y].endTime.slice(0, 10).replace(/-/g, '/') let count = this.count(date1, date2) if (count == 0) { if (DateMap.get(`${new Date(this.data.AllScheduleList[y].startTime.replace(/-/g, '/')).toLocaleDateString()}`)){ DateMap.get(`${new Date(this.data.AllScheduleList[y].startTime.replace(/-/g, '/')).toLocaleDateString()}`).scheduleList.push({ ...this.data.AllScheduleList[y], thisDayStartTime: this.data.AllScheduleList[y].startTime.slice(11, 16), thisDayEndTime: this.data.AllScheduleList[y].endTime.slice(11, 16), isBeOverdue: new Date().getTime() > new Date(this.data.AllScheduleList[y].endTime.replace(/-/g, '/')).getTime() ? true : false }) } } else { for (let j = 0; j <= count; j++) { let time = new Date(date1); time.setDate(time.getDate() + j) if (DateMap.get(new Date(time.getFullYear(), time.getMonth(), time.getDate()).toLocaleDateString())){ DateMap.get(new Date(time.getFullYear(), time.getMonth(), time.getDate()).toLocaleDateString()).scheduleList.push({ ...this.data.AllScheduleList[y], isfirstDayOrEndDay: j === 0 ? '0' : j === count ? '2' : '1', // 0 第一天,1中间的天,2结束的天 thisDayStartTime: this.data.AllScheduleList[y].startTime.slice(11, 16), thisDayEndTime: this.data.AllScheduleList[y].endTime.slice(11, 16), isFewDays: j + 1, duration: count + 1, isBeOverdue: new Date().getTime() > new Date(this.data.AllScheduleList[y].endTime.replace(/-/g, '/')).getTime() ? true : false }) } } } } let DateList = []; let listMonth = ''; let listWeek = new Date(year, 0, 1).getDay() === 0 ? 0 : 1; DateList.push({ type: 'year', value: year }) DateMap.forEach(function (value, key, map) { if (new Date(key).getDay() === 0 && that.count(key, new Date(year, 0, isLeapYear ? 366 : 365).toLocaleDateString()) >7) { listWeek = listWeek + 1 if (new Date(key).getMonth() !== listMonth) { listMonth = new Date(key).getMonth() DateList.push({ type: 'month', value: new Date(key).getMonth() + 1 }) let rangeYear1 = new Date(key).getFullYear() let rangeMonth1 = new Date(key).getMonth() let rangeDay1 = new Date(key).getDate() let rangeDate = new Date(rangeYear1, rangeMonth1, rangeDay1 + 6) let rangeMonth2 = new Date(rangeDate).getMonth() let rangeDay2 = new Date(rangeDate).getDate() DateList.push({ type: 'week', value: `第${listWeek}周,${rangeMonth1 + 1}月${rangeDay1}日 - ${rangeMonth2 == rangeMonth1 ? '' : rangeMonth2 + 1 + '月'}${rangeDay2}日`, dayStr: key }) } else { let rangeYear1 = new Date(key).getFullYear() let rangeMonth1 = new Date(key).getMonth() let rangeDay1 = new Date(key).getDate() let rangeDate = new Date(rangeYear1, rangeMonth1, rangeDay1 + 6) let rangeMonth2 = new Date(rangeDate).getMonth() let rangeDay2 = new Date(rangeDate).getDate() DateList.push({ type: 'week', value: `第${listWeek}周,${rangeMonth1 + 1}月${rangeDay1}日 - ${rangeMonth2 == rangeMonth1 ? '' : rangeMonth2 + 1 + '月'}${rangeDay2}日`, dayStr: key }) } } else if (new Date(key).getDay() === 0 && that.count(new Date(key), new Date(year, 0, isLeapYear ? 366 : 365) < 7)) { let rangeYear1 = new Date(key).getFullYear() let rangeMonth1 = new Date(key).getMonth() let rangeDay1 = new Date(key).getDate() let rangeDate = new Date(rangeYear1, rangeMonth1, rangeDay1 + 6) let rangeMonth2 = new Date(rangeDate).getMonth() let rangeDay2 = new Date(rangeDate).getDate() listWeek = 1 DateList.push({ type: 'week', value: `第${listWeek}周,${rangeMonth1 + 1}月${rangeDay1}日 - ${rangeMonth2 == rangeMonth1 ? '' : rangeMonth2 + 1 + '月'}${rangeDay2}日`, dayStr: key }) } if (value.scheduleList.length !== 0) { DateList.push({ type: 'day', value: { value: value.scheduleList, day: new Date(key).getDate() < 10 ? '0' + new Date(key).getDate() : new Date(key).getDate(), week: weekList[new Date(key).getDay()] }, }) } }); return DateList }, count(date1, date2) { var date1 = new Date(date1); var date2 = new Date(date2); var date = (date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24);/*不用考虑闰年否*/ return date }, onHide() { // 页面隐藏 }, onUnload() { // 页面被关闭 }, onTitleClick() { // 标题被点击 }, onPullDownRefresh() { // 页面被下拉 }, onReachBottom() { // 页面被拉到底部 }, onShareAppMessage() { // 返回自定义分享信息 return { title: 'My App', desc: 'My App description', path: 'pages/index/index', }; }, nextPage() { dd.navigateTo({ url: './../createOrEditSchedule/createOrEditSchedule' }) }, nextDetail(e) { let item = e.target.dataset.item dd.navigateTo({ url: `./../scheduleDetail/scheduleDetail?scheduleItem=${JSON.stringify(item)}` }) }, lower() { let year = this.data.maxYear + 1 let DateList = this.returnScheduleList(year) this.data.scheduleList.push(DateList) let scheduleList = [...this.data.scheduleList] this.setData({ scheduleList: scheduleList, maxYear: year }) } });