leave.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. // pages/leave/leave.js
  2. const app = getApp()
  3. const util = require("../../utils/util")
  4. const urlDef = require("../../utils/urls")
  5. Page({
  6. /**
  7. * 页面的初始数据
  8. */
  9. data: {
  10. curStu: null,
  11. aheadTime: 0,
  12. eventList: [],
  13. holidayList: [],
  14. dateList: [],
  15. date: null,
  16. week: 0,
  17. weekMap: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
  18. leaveTime: 0,
  19. leaveDay: 0,
  20. curDate: null,
  21. bd: null
  22. },
  23. /**
  24. * 生命周期函数--监听页面加载
  25. */
  26. onLoad: function (options) {
  27. // let date = options.beginDate;
  28. const curDate = new Date()
  29. const month = (curDate.getMonth()+1)>=10 ? curDate.getMonth()+1 : "0"+(curDate.getMonth()+1)
  30. const day = curDate.getDate()>=10? curDate.getDate() : "0"+curDate.getDate()
  31. let date = curDate.getFullYear()+"-"+ month+"-"+day
  32. if (date) {
  33. this.setData({
  34. bd: date
  35. })
  36. }
  37. const urls = urlDef.urls;
  38. let stu = wx.getStorageSync('student');
  39. if (stu) {
  40. this.setData({
  41. 'curStu': stu
  42. });
  43. util.apiPost(urls.get_sys_params + '&q.orgId=' + stu.orgId + '&q.id=1000_2').then((rs) => {
  44. if (rs && rs.length > 0) {
  45. this.setData({
  46. leaveTime: parseInt(rs[0].sysVal, 10)
  47. })
  48. }
  49. });
  50. // this.leaveDay = 14; // 允许提前()天请假
  51. util.apiPost(urls.get_sys_params + '&q.orgId=' + stu.orgId + '&q.id=1000_1').then((rs) => {
  52. if (rs && rs.length > 0) {
  53. this.setData({
  54. leaveDay: parseInt(rs[0].sysVal, 10)
  55. })
  56. }
  57. });
  58. util.apiPost(urls.get_sys_params, {
  59. 'q.orgId': stu.orgId,
  60. 'q.id': 'f8158acabeeb44ec9ff651aade6b295f'
  61. }).then((rs) => {
  62. if (rs && rs.length > 0) {
  63. // 将分钟转为毫秒
  64. this.setData({
  65. 'aheadTime': parseInt(rs[0].sysVal, 10) * 60 * 1000
  66. })
  67. }
  68. });
  69. util.apiPost(urls.leave_get_classes_info, {
  70. 'q.studentId': stu.studentId
  71. }).then((rs) => {
  72. if (rs && rs.length > 0) {
  73. this.setData({
  74. 'eventList': rs
  75. })
  76. }
  77. });
  78. util.apiPost(urls.get_holidays, {
  79. 'q.companyId': stu.orgId
  80. }).then((rs) => {
  81. if (rs && rs.length > 0) {
  82. this.setData({
  83. 'holidayList': rs
  84. })
  85. }
  86. });
  87. }
  88. },
  89. /**
  90. * 生命周期函数--监听页面初次渲染完成
  91. */
  92. onReady: function () {
  93. },
  94. /**
  95. * 生命周期函数--监听页面显示
  96. */
  97. onShow: function () {
  98. let date = this.data.bd
  99. if (date) {
  100. let t = this;
  101. setTimeout(() => {
  102. t.selectDate(date)
  103. }, 500)
  104. }
  105. },
  106. /**
  107. * 生命周期函数--监听页面隐藏
  108. */
  109. onHide: function () {
  110. },
  111. /**
  112. * 生命周期函数--监听页面卸载
  113. */
  114. onUnload: function () {
  115. },
  116. /**
  117. * 页面相关事件处理函数--监听用户下拉动作
  118. */
  119. onPullDownRefresh: function () {
  120. },
  121. /**
  122. * 页面上拉触底事件的处理函数
  123. */
  124. onReachBottom: function () {
  125. },
  126. /**
  127. * 用户点击右上角分享
  128. */
  129. onShareAppMessage: function () {
  130. },
  131. selectDate: function (v) {
  132. this.setData({
  133. curDate: v
  134. })
  135. let vd = new Date(v);
  136. let week = this.data.weekMap[vd.getDay()];
  137. let list = this.data.eventList.filter(o => {
  138. return o.attenceDate == v;
  139. });
  140. list.map(o => {
  141. o.bt = o.beginTime.substring(0, 5);
  142. o.et = o.endTime.substring(0, 5);
  143. o.leaveFlag = this.canLeave(o)
  144. })
  145. this.setData({
  146. 'date': v,
  147. 'week': week,
  148. 'dateList': [{
  149. items: list,
  150. date: v,
  151. week: week
  152. }]
  153. });
  154. },
  155. callSelectDate: function (d) {
  156. let v = d.detail.dateString;
  157. this.selectDate(v);
  158. },
  159. canLeave(item) {
  160. let timeCheck = (item.attenceDate.replace(/-/g, '/') > this.data.curDate.replace(/-/g, '/')); // 默认要大于当前时间,就是不能请当天的假
  161. let dateCheck = (item.attenceDate.replace(/-/g, '/') > this.data.curDate.replace(/-/g, '/')); // 默认要大于当前时间,就是不能请当天的假
  162. if (this.data.leaveTime > 0) { // 允许上课前()分钟请假
  163. // 判断当前时间是否跟上课时间相差 leaveTime 分钟
  164. let attenceTime = new Date(item.attenceDate.replace(/-/g, '/') + ' ' + item.beginTime)
  165. timeCheck = Math.floor((attenceTime.getTime() - new Date().getTime()) / 60000) >= this.data.leaveTime;
  166. }
  167. if (this.data.leaveDay > 0) { // 允许提前()天请假
  168. let attenceTime = item.attenceDate + ' 00:00:00'
  169. const temDate = new Date();
  170. temDate.setDate(temDate.getDate() + this.data.leaveDay);
  171. const curTemDate = temDate.getFullYear()+ "-" + (temDate.getMonth() + 1) + "-" + temDate.getDate() + ' 00:00:00';
  172. dateCheck = (curTemDate.replace(/-/g, '/') >= attenceTime.replace(/-/g, '/'));
  173. }
  174. return (item.isAttend === 0 && item.leaveCount > 0 && timeCheck && dateCheck && (item.status === 0 || item.status === 4));
  175. },
  176. })