Browse Source

加班单合计列

qingwu 5 months ago
parent
commit
2764b3eca5
1 changed files with 435 additions and 0 deletions
  1. 435 0
      js/addon/attendmanage/web/js/shr/ats/atsOverTimeBillBatchEditEx.js

+ 435 - 0
js/addon/attendmanage/web/js/shr/ats/atsOverTimeBillBatchEditEx.js

@@ -0,0 +1,435 @@
+
+shr.defineClass("shr.ats.AtsOverTimeBillBatchEditEx", shr.ats.AtsOverTimeBillBatchEdit, {
+	initalizeDOM: function () {
+		shr.ats.AtsOverTimeBillBatchEditEx.superClass.initalizeDOM.call(this);
+		// 编辑表格合计
+		var _self = this;
+		var that = this;
+		var entries_cont = waf("#entries");
+		entries_cont.jqGrid("option", {
+			onChange: function (rowid, cellname, value, iRow, iCol) {
+				console.log(rowid, cellname, value, iRow, iCol, 123123);
+			},
+			beforeSaveCell: function (
+				rowid,
+				cellname,
+				value,
+				iRow,
+				iCol
+			) { },
+			afterSaveCell: function (rowid, cellname, value, iRow, iCol) {
+			
+				if (value["adminOrgUnit.id"]) {
+					$("#entries").jqGrid(
+						"setCell",
+						rowid,
+						"adminOrgUnit.id",
+						value["adminOrgUnit.id"]
+					);
+				}
+
+				that.removePreShowError(rowid);
+				if (cellname == "otDate") {
+					var val = value;
+					if (val.length <= 10) {
+						val = val + " 00:00:00";
+					}
+					val &&
+						$("#entries").jqGrid(
+							"setCell",
+							rowid,
+							"startTime",
+							val
+						);
+					val &&
+						$("#entries").jqGrid(
+							"setCell",
+							rowid,
+							"endTime",
+							val
+						);
+					that.changeOverTimeType(rowid);
+					that.calRestTimeLen(rowid);
+					that.getOTContrlParams(rowid);
+				}
+
+				if (cellname == "otType") {
+					that.changeOTCompens(rowid);
+				}
+				// 添加 开始时间  结束时间   休息时长(分钟) 响应时间
+				if (
+					cellname == "startTime" ||
+					cellname == "endTime" ||
+					cellname == "restTime"
+				) {
+
+					if (cellname != "restTime") {
+						that.calRestTimeLen(rowid);
+					}
+					that.calculateOTtimes(rowid);
+				}
+				if (cellname == "person") {
+					that.calRestTimeLen(rowid);
+					that.getOTContrlParams(rowid);
+				}
+				if (cellname == "applyOTTime") {
+					_self.calculateTotal();
+
+					// 加班小时数  发生改变就给予提示
+					that.changOtTimeTipInfo(rowid);
+				}
+				if (
+					cellname == "restStartTime" ||
+					cellname == "restStartTime2" ||
+					cellname == "restEndTime" ||
+					cellname == "restEndTime2"
+				) {
+					//计算休息时间,加班时间
+					var startTime = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"startTime"
+					);
+					var endTime = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"endTime"
+					);
+					var restStartTime = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"restStartTime"
+					);
+					var restEndTime = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"restEndTime"
+					);
+					var restStartTime2 = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"restStartTime2"
+					);
+					var restEndTime2 = $("#entries").jqGrid(
+						"getCell",
+						rowid,
+						"restEndTime2"
+					);
+					if (startTime == "" || endTime == "") {
+						return;
+					}
+
+					var totalRestTime = 0;
+					var totalRestTimeLong = 0;
+					var restStartTimeOfDate;
+					var restEndTimeOfDate;
+					if (shr.getBowserInfo().browser === 'IE' || shr.getBowserInfo().browser === 'Safari') {
+						restStartTime = restStartTime.replace(/-/g, '/');
+						restEndTime = restEndTime.replace(/-/g, '/');
+						restStartTime2 = restStartTime2.replace(/-/g, '/');
+						restEndTime2 = restEndTime2.replace(/-/g, '/');
+					}
+					if (restStartTime != "" && restEndTime != "") {
+						restStartTimeOfDate = new Date(restStartTime);
+						restEndTimeOfDate = new Date(restEndTime);
+						var times =
+							restEndTimeOfDate.getTime() -
+							restStartTimeOfDate.getTime();
+						if (times < 0) {
+							times = 0;
+						}
+						totalRestTimeLong += times;
+						times = times / 1000 / 60;
+						totalRestTime += times;
+					}
+					if (restStartTime2 != "" && restEndTime2 != "") {
+						var restStartTime2OfDate = new Date(restStartTime2);
+						var restEndTime2OfDate = new Date(restEndTime2);
+						if (
+							(restStartTime != "" &&
+								restEndTime2OfDate.getTime() >
+								restStartTimeOfDate.getTime() &&
+								restStartTimeOfDate.getTime() >=
+								restStartTime2OfDate.getTime()) ||
+							(restEndTime != "" &&
+								restEndTimeOfDate.getTime() <=
+								restEndTime2OfDate.getTime() &&
+								restStartTime2OfDate.getTime() <
+								restEndTimeOfDate.getTime()) ||
+							(restStartTime != "" &&
+								restEndTime != "" &&
+								restEndTimeOfDate.getTime() >=
+								restEndTime2OfDate.getTime() &&
+								restStartTime2OfDate.getTime() >=
+								restStartTimeOfDate.getTime())
+						) {
+							//时间有交叉
+							$("#entries").jqGrid(
+								"setCell",
+								rowid,
+								"restEndTime2",
+								restStartTime2
+							);
+						} else {
+							var times =
+								restEndTime2OfDate.getTime() -
+								restStartTime2OfDate.getTime();
+							if (times < 0) {
+								times = 0;
+							}
+							totalRestTimeLong += times;
+							times = times / 1000 / 60;
+							totalRestTime += times;
+						}
+					}
+					var t1 = totalRestTime.toFixed(
+						atsMlUtile.getSysDecimalPlace()
+					);
+					$("#entries").jqGrid("setCell", rowid, "restTime", t1);
+					var startTime = NewDate(startTime + ":00");
+					var endTime = NewDate(endTime + ":00");
+					var se =
+						endTime.getTime() -
+						startTime.getTime() -
+						totalRestTimeLong; // 毫秒
+					var tfl = se / (3600 * 1000);
+					$("#entries").jqGrid(
+						"setCell",
+						rowid,
+						"applyOTTime",
+						tfl
+					);
+					that.getOTContrlParams(rowid);
+				}
+			},
+			afterEditCell: function (rowid, cellname, value, iRow, iCol) {
+				_self.calculateTotal();
+				if (
+					cellname == "otType" &&
+					that.OTContrlParams[rowid] &&
+					that.OTContrlParams[rowid].isOtrolByDateType
+				) {
+					$("#" + iRow + "_otType").shrPromptBox("disable");
+				}
+				if (cellname == "otCompens") {
+					if (that.filter[rowid] == undefined) {
+						// R20221006-0542 修复选择加班费后 再点击“补偿方式”F7就变成了调休的问题
+						// that.changeOTCompens(rowid);
+					}
+					if (that.filter[rowid]) {
+						//						$("#"+rowid+"_otCompens").shrPromptBox("setFilter",that.filter[rowid]);
+						$(
+							"#" +
+							$("#entries").jqGrid(
+								"getCell",
+								rowid,
+								"rn"
+							) +
+							"_otCompens"
+						).shrPromptBox("setFilter", that.filter[rowid]);
+					}
+				}
+				if (cellname == "person") {
+					var hrOrgUnitId = $("#hrOrgUnit_el").val();
+					$("#" + rowid + "_person")
+						.shrPromptBox()
+						.attr("data-params", hrOrgUnitId);
+					$("#" + iRow + "_person").shrPromptBox("option", {
+						onchange: function (e, value) {
+							$("#entries").jqGrid(
+								"setCell",
+								rowid,
+								"person.number",
+								value.current
+									? value.current["person.number"]
+									: ""
+							);
+						}
+					});
+
+				}
+				if (cellname == "attAdminOrgUnit") {
+					var personId = $("#entries").jqGrid("getCell", rowid, "person").id;
+					var attendanceDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+
+					if (!(personId && attendanceDate)) {
+						shr.showInfo({ message: jsBizMultLan.atsManager_atsOverTimeBillEdit_YM_999 });
+						return false;
+					} else {
+						//$("#"+rowid+"_attPosition").shrPromptBox().attr("data-params", adminOrg);
+						$("#" + iRow + "_attAdminOrgUnit").shrPromptBox("setOtherParams", {
+							personId: personId,
+							attendanceDate: attendanceDate
+						});
+					}
+				}
+			}
+			, footerrow: function (rowid, cellname, value, iRow, iCol) {
+			}
+		});
+		$(".ui-jqgrid-sdiv").show();
+		// $(".footrow-ltr td:first").html('合计').parent().css("border-color", "#EEE");
+		$(".footrow-ltr").last().find("td:first").html('合计').parent().css("border-color", "#EEE");
+		_self.calculateTotal();
+
+	},
+
+	calculateTotal() {
+		var count = 0;
+		var ids = $("#entries").jqGrid('getDataIDs');
+		for (var i = 0; i < ids.length; i++) {
+			var rowData = $('#entries').jqGrid('getRowData', ids[i]);
+			count = count + Number(rowData.applyOTTime);
+		}
+		$("#count").val(count.toFixed(2));
+		$("#entries").footerData("set", { "applyOTTime": count.toFixed(2) }); //	
+	}, //去除个性化展示,每次校验前去除
+	removePreShowError: function (rowid) {
+		var rnColNum = this.getColNumIndex();
+		var rows = $("#entries").getGridParam("reccount");
+		var td = $("#entries").find("tr[id='" + rowid + "'] td:eq(" + rnColNum + ")");
+		td.attr(
+			"title",
+			""
+		);
+		td.html(
+			$("#entries").find("tr[id='" + rowid + "']")[0].rowIndex
+		);
+		td.css(
+			"color",
+			"rgb(153, 153, 153)"
+		);
+		$("#entries").find("tr[id='" + rowid + "']").css(
+			"color",
+			"rgb(153, 153, 153)"
+		); //如果设置成css("color","initial")会变成黑色,而原界面为灰色
+	},
+	changeOverTimeType: function (rowid) {
+		var that = this;
+		var otDate;
+		var personId;
+		if (!$("#entries").jqGrid("getCell", rowid, "otDate")) {
+			return;
+		} else {
+			otDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+		}
+
+		if (!$("#entries").jqGrid("getCell", rowid, "person")) {
+			return;
+		} else {
+			personId = $("#entries").jqGrid("getCell", rowid, "person").id;
+		}
+		that.getOverTimeType(rowid, otDate, personId);
+	},
+	getOverTimeType: function (rowid, otDate, personId) {
+		var _self = this;
+		var tDate = otDate;
+		var url =
+			shr.getContextPath() +
+			"/dynamic.do?method=getOverTimeTypeAndOtCompens";
+		url +=
+			"&otDate=" +
+			encodeURIComponent(otDate) +
+			"&personId=" +
+			encodeURIComponent(personId)+"&uipk="+shr.getUrlRequestParam('uipk');
+		$.ajax({
+			url: url,
+			async: false,
+			success: function (response) {
+				if (
+					response.otTypeValue != null &&
+					response.otTypeValue != undefined &&
+					response.otTypeValue != ""
+				) {
+					var responseObejct = {
+						id: response.otTypeValue,
+						name: response.otTypeText
+					};
+					if (_self.isOtTypeEffective(response.otTypeValue)) {
+						// $('#entries').restoreCell(rowid,4); // 先恢复单元格状态再重新赋值,可以避免
+						$("#entries").jqGrid(
+							"setCell",
+							rowid,
+							"otType",
+							responseObejct
+						);
+						//设置该加班类型的补偿方式过滤
+						var otCompensIds = _self.getOTCompensByOTType(
+							personId,
+							response.otTypeValue,
+							tDate
+						);
+						if (otCompensIds) {
+							var otCompensIdsStr = _self
+								.getOTCompensByOTType(
+									personId,
+									response.otTypeValue,
+									tDate
+								)
+								.replace(/(,)/g, "','");
+							_self.filter[rowid] =
+								"BaseInfo.id in ('" +
+								otCompensIdsStr +
+								"')";
+						}
+
+						var compens = response.compensInfo;
+						if (compens != null) {
+							var defaultJson = {
+								id: compens.id,
+								name: compens.name
+							};
+							$("#entries").jqGrid(
+								"setCell",
+								rowid,
+								"otCompens",
+								defaultJson
+							);
+						}
+					} else {
+						$("#entries").jqGrid(
+							"setCell",
+							rowid,
+							"otType",
+							null
+						);
+					}
+				}
+			},
+			error: function (response) {}
+		});
+	},
+	getOTContrlParams: function (rowid) {
+		var personId;
+		if (!$("#entries").jqGrid("getCell", rowid, "person")) {
+			return;
+		} else {
+			personId = $("#entries").jqGrid("getCell", rowid, "person").id;
+		}
+		var otDate;
+		if (!$("#entries").jqGrid("getCell", rowid, "otDate")) {
+			return;
+		} else {
+			otDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+		}
+		var that = this;
+
+		var url =
+			shr.getContextPath() +
+			"/dynamic.do?handler=com.kingdee.shr.ats.bill.util.BillBizUtil&method=getOTContrlParam";
+		shr.ajax({
+			type: "post",
+			async: false,
+			url: url,
+			data: { personId: personId, otDate: otDate },
+			success: function (res) {
+				if (res) {
+					that.OTContrlParams[rowid] = res;
+					//					isOTControl=res.isOTControl;
+					//					isOtrolByDateType=res.isOtrolByDateType;
+				}
+			}
+		});
+	},
+
+})