import scheduleservice from '../../../service/scheduleservice'; import sysSchedules from '../../../data/schedules'; import moment from '../../../utils/moment.min'; import util from '../../../utils/util'; const app = getApp(); /** * 环保日程管理 */ module.exports = Behavior({ // behaviors: [bLoadingStatus], properties: { ledgerCompleted: { type: Boolean, observer(value) { this.checkScheduleComplete(0, value); }, }, assessmentCompleted: { type: Boolean, observer(value) { this.checkScheduleComplete(1, value); }, }, }, data: { allSchedules: [], thisSchedule: {}, index: 0, }, lifetimes: { attached: function () { this.getRecentSchedule(); this.getSchedules(); if (app.globalData.newUser) { this.nextSchedules(); } // this.getAllSchedules() }, }, methods: { getSchedules() { // let startTime = '2023-04-10'; // let endTime = '2023-04-10'; let startTime = moment().format('YYYY-MM-DD'); let endTime = startTime; const that = this; scheduleservice.getSchedules( { startTime, endTime, type: 0 }, { success(res) { if (res.data.length > 0) { const schedule = res.data[0]; schedule.time = moment(schedule.time.split('T')[0]).format( 'YYYY-MM-DD', ); that.setData({ thisSchedule: schedule, }); } }, fail(e) { console.log(e); }, }, ); }, //查找最临近的日程 getRecentSchedule() { //1. 从接口获取用户个人、用户企业类型的相关最临近日程 //2. 按照本地逻辑,得出最邻近日程 const schedules = sysSchedules(); //2.1 将台账、评估、承诺三项APP功能定义为日程 //2.2 选择最邻近的事项作为当日的提醒事项, let today = moment().hour(0).minute(0).second(0).millisecond(0); let diffDays = 999; let schedule; let index = 0; for (let i = 0; i < schedules.length; i++) { let s = schedules[i]; let d = s.time.diff(today, 'days'); s.diffDays = d; if (Math.abs(d) < Math.abs(diffDays)) { let _index = i; schedule = s; diffDays = d; index = _index; } } //2.3 日程在时间维度上分为三类提醒,预告、当日、未完成的逾期提醒 this.setData({ allSchedules: schedules, // thisSchedule: { // date: schedule.time, // time: schedule.time.format('YYYY-MM-DD dddd'), // type: schedule.type, // events: schedule.events, // diffDays: schedule.diffDays, // }, index, }); }, //获取所有日程 getAllSchedules() { const schedules = sysSchedules(); this.setData({ allSchedules: schedules, }); }, // 当前日程完成,顺延下一个日程 nextSchedules() { let today = moment().hour(0).minute(0).second(0).millisecond(0); let s = this.data.allSchedules[this.data.index + 1]; let d = s.time.diff(today, 'days'); s.diffDays = d; this.setData({ thisSchedule: { date: s.time, time: s.time.format('YYYY-MM-DD'), type: s.type, events: s.events, diffDays: s.diffDays, }, index: this.data.index + 1, }); }, // 检查当前日程是否完成 checkScheduleComplete(type, value) { // 新用户不做判断 if (app.globalData.newUser) return; // 日程类型不一致无需判断 if (this.data.thisSchedule.type != type) return; // 日程不在当月的无需判断 const thisMonth = moment().month(); const sTimeMonth = moment(this.data.thisSchedule.date).month(); if (thisMonth != sTimeMonth) return; // 日程完成则顺延下个日程 if (value) { this.nextSchedules(); } }, }, });