atsOverTimeBillEditEx.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. shr.defineClass("shr.customer.gtiit.AtsOverTimeBillEditEx", shr.ats.AtsOverTimeBillEdit, {
  2. initalizeDOM:function(){
  3. shr.customer.gtiit.AtsOverTimeBillEditEx.superClass.initalizeDOM.call(this);
  4. var that = this ;
  5. if(that.getOperateState() != 'VIEW'){
  6. $('#entries_otDate').bind('change',function(){
  7. var otDate=atsMlUtile.getFieldOriginalValue('entries_otDate');
  8. $('#entries_startTime').shrDateTimePicker('setValue', otDate);
  9. $('#entries_endTime').shrDateTimePicker('setValue', otDate);
  10. that.setOverTimeRemark();
  11. that.changeWorkType(otDate);
  12. });
  13. }
  14. },
  15. changeWorkType: function (otDate) {
  16. var that = this;
  17. if (!otDate) {
  18. return;
  19. }
  20. _self.remoteCall({
  21. type:"post",
  22. async: false,
  23. method:"workMultiple",
  24. param:{otDate:otDate},
  25. success:function(res){
  26. if(res.otTypeValue){
  27. var responseObejct = {id: res.otTypeValue,name: res.otTypeText};
  28. $("#entries_otType").shrPromptBox("setValue", responseObejct);
  29. }
  30. }
  31. });
  32. },
  33. checkOtDate:function(){
  34. var otDate = $("#entries_otDate").val();
  35. otDate = new Date(otDate);
  36. const currentDate = new Date();
  37. const lastMonthDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
  38. var lastYear = lastMonthDate.getFullYear();
  39. var lastMonth = lastMonthDate.getMonth();
  40. if(otDate.getMonth() != lastMonth || otDate.getFullYear() != lastYear){
  41. shr.showWarning({message: "当月只能提交加班日期为上个月加班记录"});
  42. return false;
  43. }
  44. return true;
  45. },
  46. verify:function(){
  47. var _self = this ;
  48. var workArea = _self.getWorkarea();
  49. $form = $('form', workArea);
  50. if (!$form.valid()) {
  51. return false;
  52. }
  53. if ( !_self.verifyRestTime(true)) {
  54. return
  55. }
  56. var startTime = atsMlUtile.getFieldOriginalValue("entries_startTime");
  57. var endTime = atsMlUtile.getFieldOriginalValue("entries_endTime");
  58. var regEx = new RegExp("\\-","gi"); //i不区分大小写 g匹配所有
  59. startTime = startTime.replace(regEx,"/");
  60. endTime = endTime.replace(regEx,"/");
  61. var startTimeOfDate = new Date(startTime);
  62. var endTimeOfDate = new Date(endTime);
  63. var longTime = endTimeOfDate.getTime() - startTimeOfDate.getTime();
  64. var realstartTime = atsMlUtile.getFieldOriginalValue("entries_realStartTime");
  65. var realendTime = atsMlUtile.getFieldOriginalValue("entries_realEndTime");
  66. var realstartTimeOfDate = new Date( realstartTime.replace(regEx,"/") );
  67. var realendTimeOfDate = new Date( realendTime.replace(regEx,"/") );
  68. var longTime_real = realendTimeOfDate.getTime() - realstartTimeOfDate.getTime();
  69. //处理加班日期 与 加班开始时间 和结束时间的日期保持一致
  70. var overDate = atsMlUtile.getFieldOriginalValue("entries_otDate");
  71. var overTimeBegin = atsMlUtile.getFieldOriginalValue("entries_startTime");
  72. overTimeBegin = overTimeBegin.substring(0,10); //2014-01-02 00:00
  73. var overTimeEnd = atsMlUtile.getFieldOriginalValue("entries_endTime");
  74. overTimeEnd = overTimeEnd.substring(0,10);
  75. var overTimeDate = new Date(overDate.replace(regEx,"/"));
  76. var overTimeStartDate = new Date(overTimeBegin.replace(regEx,"/"));
  77. var overTimeEndDate = new Date(overTimeEnd.replace(regEx,"/"));
  78. var otTypeId = "";
  79. if (_self.getOperateState().toUpperCase() == 'VIEW') {
  80. otTypeId = $("#entries_otType").val();
  81. }else {
  82. otTypeId = $("#entries_otType_el").val();
  83. }
  84. if(otTypeId == null || otTypeId == undefined || otTypeId.length == 0){
  85. shr.showInfo({message: overDate + jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_12});
  86. return false;
  87. }
  88. //检查人员是否有考勤档案
  89. var isExistsFile = true;
  90. var personNum = "";
  91. if("ADDNEW" == this.getOperateState() || "EDIT" == this.getOperateState()){
  92. personNum = $("#entries_person_number").val()//@
  93. }else if("VIEW" == this.getOperateState()){
  94. personNum = $("#entries_person_number").text()//@
  95. }
  96. if ( overTimeStartDate.getTime() <overTimeDate.getTime()-24*60*60*1000 ) {//longTime_start != 0 && longTime_end != 0
  97. shr.showInfo({message: jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_2});
  98. return false;
  99. }
  100. if ( overTimeEndDate.getTime()-24*60*60*1000 > overTimeDate.getTime() ) {
  101. shr.showInfo({message: jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_2});
  102. return false;
  103. }
  104. if ( overTimeEndDate.getTime()- overTimeStartDate.getTime() >=2*24*60*60*1000) {
  105. shr.showInfo({message: jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_2});
  106. return false;
  107. }
  108. if (longTime <= 0) {
  109. shr.showInfo({message: jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_10});
  110. return false;
  111. }else if (longTime_real <= 0) {
  112. shr.showInfo({message: jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_19});
  113. return false;
  114. }else if ($("#entries_otCompens").attr("title")
  115. ==jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_4 && !_self.isOverMaxQuota()){
  116. return false;
  117. }
  118. var otTime = atsMlUtile.getFieldOriginalValue("entries_applyOTTime");
  119. if(parseFloat(otTime) < 0){
  120. shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_11});
  121. return false;
  122. }
  123. if(parseFloat(otTime) == 0){
  124. shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillEdit_YM_0001});
  125. return false;
  126. }
  127. var personId = $('#entries_person_el').val();
  128. if (_self.getOperateState().toUpperCase() == 'VIEW') {
  129. personId = $('#entries_person').val();
  130. }
  131. var flag = true ;
  132. _self.remoteCall({
  133. type:"post",
  134. method:"isCrossShift",
  135. async: false,
  136. param:{personId: personId,overDate:overDate,overTimeBegin:atsMlUtile.getFieldOriginalValue("entries_startTime")+":00",overTimeEnd:atsMlUtile.getFieldOriginalValue("entries_endTime")+":00"},
  137. success:function(res){
  138. var info = res;
  139. if (info.isCrossShift){
  140. shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_42});
  141. flag = false ;
  142. }
  143. }
  144. });
  145. var model = _self.getCurrentModel();
  146. _self.remoteCall({
  147. method:"validateIsFillOt",
  148. param:{model:model},
  149. async: false,
  150. success:function(res){
  151. info = res;
  152. if(res.errorString){
  153. shr.showError({message:res.errorString});
  154. flag = false;
  155. // return false;
  156. }
  157. }
  158. });
  159. _self.remoteCall({
  160. type:"post",
  161. method:"isWorkTime",
  162. async: false,
  163. param:{personId: personId,overDate:overDate,overTimeBegin:atsMlUtile.getFieldOriginalValue("entries_startTime")+":00",overTimeEnd:atsMlUtile.getFieldOriginalValue("entries_endTime")+":00"},
  164. success:function(res){
  165. var info = res;
  166. if (info.isWorkTime){
  167. shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_9});
  168. flag = false ;
  169. }
  170. }
  171. });
  172. _self.remoteCall({
  173. type:"post",
  174. method:"isAtFixedOverTimeOrExcep",
  175. async: false,
  176. param:{personId: personId,overDate:overDate,overTimeBegin:atsMlUtile.getFieldOriginalValue("entries_startTime")+":00",overTimeEnd:atsMlUtile.getFieldOriginalValue("entries_endTime")+":00"},
  177. success:function(res){
  178. var info = res;
  179. if (info.isAtFixedOverTimeOrExcep){
  180. shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillEdit_i18n_1});
  181. flag = false ;
  182. }
  183. }
  184. });
  185. if(_self.isFromWF())
  186. {
  187. var model = _self.getCurrentModel();
  188. _self.remoteCall({
  189. method:"validateIsFillOt",
  190. param:{model:model},
  191. async: false,
  192. success:function(res){
  193. info = res;
  194. if(res.errorString){
  195. shr.showError({message:res.errorString});
  196. flag = false;
  197. // return false;
  198. }
  199. }
  200. });
  201. _self.remoteCall({
  202. method:"validOtStart",
  203. param:{personId:personId,applyOTTime:otTime},
  204. async: false,
  205. success:function(res){
  206. info = res;
  207. if(res.info){
  208. shr.showError({message:res.info});
  209. flag = false ;
  210. }
  211. }
  212. });
  213. }
  214. if(!_self.checkOtDate()){
  215. return false;
  216. }
  217. return flag;
  218. }
  219. });