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: Number,
|
observer(value) {
|
this.checkScheduleComplete(1, value);
|
},
|
},
|
assessmentCompleted: {
|
type: Number,
|
observer(value) {
|
this.checkScheduleComplete(2, value);
|
},
|
},
|
},
|
data: {
|
// 全部环保日程
|
allSchedules: [],
|
// 当前用户最临近未完成日程
|
thisSchedule: {},
|
// 当前用户最临近未完成日程索引
|
index: 0,
|
// 台账和自评本期完成情况
|
scheduleComplete: new Map(),
|
// 需要做日程是否完成判断的日程个数(台账和自评)
|
scheduleCount: 2,
|
},
|
lifetimes: {
|
attached: function () {
|
this.setData({
|
scheduleComplete: new Map(),
|
});
|
this.getAllSchedules().then(() => {
|
this.getRecentSchedule();
|
if (app.globalData.newUser) {
|
this.nextSchedules();
|
}
|
});
|
// this.getSchedules();
|
},
|
},
|
methods: {
|
// 获取最邻近的一个环保系统日程
|
getSchedules() {
|
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) {
|
res.data.sort(
|
(a, b) => Math.abs(a.diffDays) - Math.abs(b.diffDays),
|
);
|
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 = this.data.allSchedules;
|
//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.diffDays;
|
// if (d == -8) {
|
if (Math.abs(d) < Math.abs(diffDays)) {
|
let _index = i;
|
|
schedule = s;
|
diffDays = d;
|
index = _index;
|
}
|
}
|
//2.3 日程在时间维度上分为三类提醒,预告、当日、未完成的逾期提醒
|
|
this.setData({
|
thisSchedule: schedule,
|
index,
|
});
|
},
|
|
//获取所有日程
|
getAllSchedules() {
|
return sysSchedules().then(res => {
|
this.setData({
|
allSchedules: res,
|
});
|
});
|
},
|
|
// 当前日程完成,顺延下一个日程
|
nextSchedules() {
|
let s = this.data.allSchedules[this.data.index + 1];
|
this.setData({
|
thisSchedule: s,
|
index: this.data.index + 1,
|
});
|
},
|
|
// 检查当前日程是否完成(2023.8.24 目前只涉及台账和自评两类日程)
|
checkScheduleComplete(scId, value) {
|
const { scheduleComplete, scheduleCount } = this.data;
|
scheduleComplete.set(scId, value);
|
// 台账和自评的结果全部传入后再做判断
|
if (scheduleComplete.size < scheduleCount) return;
|
// 新用户不做判断
|
if (app.globalData.newUser) return;
|
|
let index = 0;
|
const thisMonth = moment().month();
|
do {
|
const { thisSchedule } = this.data;
|
// 日程不在当月的无需判断
|
const sTimeMonth = moment(thisSchedule.time).month();
|
if (thisMonth != sTimeMonth) return;
|
|
// 判断当月该日程是否完成,完成则将当前日程顺延至下一个
|
if (scheduleComplete.get(thisSchedule.id) == 2) {
|
this.nextSchedules();
|
}
|
index++
|
} while (index < scheduleCount);
|
},
|
},
|
});
|