123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- // 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.endDate;
- 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
- })
- }
- this.initList()
- });
- util.apiPost(urls.get_holidays, {
- 'q.companyId': stu.orgId
- }).then((rs) => {
- if (rs && rs.length > 0) {
- this.setData({
- 'holidayList': rs
- })
- }
- });
- }
- },
- initList:function(){
- let date = this.data.bd
- if (date) {
- let t = this;
- t.selectDate(date)
- }
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- let pages = getCurrentPages();
- let currPage = pages[pages.length - 1];
- //当前页的options,啥意思呢,就是你可能某个函数需要刷新,但是他的参数正好是传过来的参数
- 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, bd: v
- })
- let vd = new Date(v);
- let week = this.data.weekMap[vd.getDay()];
- let list = this.data.eventList.filter(o => {
- return o.attenceDate == v;
- });
-
- list.map(o => {
- o.bt = o.beginTime.substring(0, 5);
- o.et = o.endTime.substring(0, 5);
- o.leaveFlag = this.canLeave(o)
- })
- if(this.data.newItem){
- for(var i in list){
- if(list[i].id == this.data.newItem.id){
- list[i].leaveFlag = false
- this.data.newItem = null
- break;
- }
- }
- }
- 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));
- },
- })
|