// pages/leave/leave.js const app = getApp() const util = require("../../utils/util") const urlDef = require("../../utils/urls") Page({ /** * 页面的初始数据 */ data: { curStu: null, aheadTime: 0, eventList: [], holidayList: [], dateList: [], date: null, week: 0, weekMap: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], leaveTime: 0, leaveDay: 0, curDate: null, bd: null }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let date = options.beginDate; if (date) { this.setData({ bd: date }) } const urls = urlDef.urls; let stu = wx.getStorageSync('student'); if (stu) { this.setData({ 'curStu': stu }); util.apiPost(urls.get_sys_params + '&q.orgId=' + stu.orgId + '&q.id=1000_2').then((rs) => { if (rs && rs.length > 0) { this.setData({ leaveTime: parseInt(rs[0].sysVal, 10) }) } }); // this.leaveDay = 14; // 允许提前()天请假 util.apiPost(urls.get_sys_params + '&q.orgId=' + stu.orgId + '&q.id=1000_1').then((rs) => { if (rs && rs.length > 0) { this.setData({ leaveDay: parseInt(rs[0].sysVal, 10) }) } }); util.apiPost(urls.get_sys_params, { 'q.orgId': stu.orgId, 'q.id': 'f8158acabeeb44ec9ff651aade6b295f' }).then((rs) => { if (rs && rs.length > 0) { // 将分钟转为毫秒 this.setData({ 'aheadTime': parseInt(rs[0].sysVal, 10) * 60 * 1000 }) } }); util.apiPost(urls.leave_get_classes_info, { 'q.studentId': stu.studentId }).then((rs) => { if (rs && rs.length > 0) { this.setData({ 'eventList': rs }) } }); util.apiPost(urls.get_holidays, { 'q.companyId': stu.orgId }).then((rs) => { if (rs && rs.length > 0) { this.setData({ 'holidayList': rs }) } }); } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { let date = this.data.bd if (date) { let t = this; setTimeout(() => { t.selectDate(date) }, 500) } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, selectDate: function (v) { this.setData({ curDate: v }) let vd = new Date(v); let week = this.data.weekMap[vd.getDay()]; let list = this.data.eventList.filter(o => { return o.attenceDate == v; }); if(list.length<=0){ setTimeout(() => { this.selectDate(v) }, 1000); } list.map(o => { o.bt = o.beginTime.substring(0, 5); o.et = o.endTime.substring(0, 5); o.leaveFlag = this.canLeave(o) }) this.setData({ 'date': v, 'week': week, 'dateList': [{ items: list, date: v, week: week }] }); }, callSelectDate: function (d) { let v = d.detail.dateString; this.selectDate(v); }, canLeave(item) { let timeCheck = (item.attenceDate.replace(/-/g, '/') > this.data.curDate.replace(/-/g, '/')); // 默认要大于当前时间,就是不能请当天的假 let dateCheck = (item.attenceDate.replace(/-/g, '/') > this.data.curDate.replace(/-/g, '/')); // 默认要大于当前时间,就是不能请当天的假 if (this.data.leaveTime > 0) { // 允许上课前()分钟请假 // 判断当前时间是否跟上课时间相差 leaveTime 分钟 let attenceTime = new Date(item.attenceDate.replace(/-/g, '/') + ' ' + item.beginTime) timeCheck = Math.floor((attenceTime.getTime() - new Date().getTime()) / 60000) >= this.data.leaveTime; } if (this.data.leaveDay > 0) { // 允许提前()天请假 let attenceTime = item.attenceDate + ' 00:00:00' const temDate = new Date(); temDate.setDate(temDate.getDate() + this.data.leaveDay); const curTemDate = temDate.getFullYear()+ "-" + (temDate.getMonth() + 1) + "-" + temDate.getDate() + ' 00:00:00'; dateCheck = (curTemDate.replace(/-/g, '/') >= attenceTime.replace(/-/g, '/')); } return (item.isAttend === 0 && item.leaveCount > 0 && timeCheck && dateCheck && (item.status === 0 || item.status === 4)); }, })