9060 1 mese fa
parent
commit
6ab572a240

+ 124 - 0
patch/20250412/eas/server/deploy/easweb.ear/shr_web.war/addon/customer/web/js/ERPManualLogList.js

@@ -0,0 +1,124 @@
+shr.defineClass("shr.compensation.ERPManualLogList", shr.framework.List, {
+
+    initalizeDOM: function () {
+        shr.compensation.ERPManualLogList.superClass.initalizeDOM.call(this);
+        var that = this;
+    },
+    /**
+     * 审批操作
+     */
+    dataToERPAction : function(){
+        var _self = this;
+       
+            var day = new Date();
+            var today = day.format("yyyy-MM");
+            //添加选择月份弹框
+            $("#taxPeriodDialog").remove();
+            var $body = $(document.body);
+            var dialog = _self.getTaxPeriodDialog();
+            var buttons = _self.getTaxPeriodButtons();
+            $body.append(dialog);
+            showDialog("#taxPeriodDialog",
+                "薪酬数据同步",//'薪酬数据同步',
+                dialog, buttons, 750, 300);
+            var taxPeriodDate_json = {};
+            taxPeriodDate_json.validate = "{required:true}";
+            taxPeriodDate_json.id = "taxPeriodDate";
+            taxPeriodDate_json.format = 'yyyy-mm';
+            taxPeriodDate_json.maxDate = today;
+
+            taxPeriodDate_json.isRemoveDay = true;
+            taxPeriodDate_json.ctrlType = 'Date';
+            $('#taxPeriodDate').shrDateTimePicker(taxPeriodDate_json);
+            $('#taxPeriodDate').shrDateTimePicker("setValue",today);
+        
+    },
+    getTaxPeriodDialog: function() {
+        var line = '选择报送月份'//'选择报送月份';
+        var msg1 = '说明:';//'说明:';
+        var msg2 = '1、	选择需要触发薪酬数据同步的月份;';//'1、	当月新增人员,或任职受雇从业信息有变更的人员需要进行人员报送;';
+        var msg3 = '';//'2、	已报送成功的人员在发起下一次人员报送任务之前,始终有效,无需每月都报送。';
+        var html = ['<div id="taxPeriodDialog" style="padding:5px;">',
+            '<div class="photoState" style="margin-left:0px;">',
+            '<table width="100%">',
+            '<tr>',
+            '<td width="20%"><h6>' + line + '</h6></td>' ,
+            '<td width="40%">',
+            '<input type="text" id="taxPeriodDate" name="taxPeriodDate" class="input-height" style=""/>',
+            '</td>',
+            '<td width="40%"></td>',
+            '</tr>',
+            '</table>',
+            '<div style="color:#428bca;width:auto;height:auto;">' +
+            '<p>'+msg1+'</p>' +
+            '<p>'+msg2+'</p>' +
+            '<p>'+msg3+'</p>',
+            '</div>',
+            '</div>',
+            '</div>'].join('');
+        return html;
+    },
+    getTaxPeriodButtons: function() {
+        var self = this;
+        var buttons = [{
+            text: '确定',//'确定',
+            click: function() {
+                var taxPeriodDate = $("#taxPeriodDate").shrDateTimePicker("getValue");
+                if (taxPeriodDate == null) {
+                    shr.showError({
+                        message: "选择报送月份不能为空"//'选择报送月份不能为空'
+                    });
+                    return;
+                }
+                taxPeriodDate=taxPeriodDate.slice(0,taxPeriodDate.length-3);
+                $("#taxPeriodDialog").dialog("close");
+                self.doReport({taxPeriodDate:taxPeriodDate});
+            }
+        }];
+        return buttons;
+    },
+    doReport: function(taxPeriodDate){
+        var _self = this;
+//		var serviceId =_self.getFieldValue("serviceID");
+        var selectedRowsData = $('#grid').jqGrid('getSelectedRowsData');
+        var temp = [];
+        for(i=0; i<selectedRowsData.length; i++){
+
+            var selectedData=selectedRowsData[i];
+            temp.push(selectedData.id);
+        }
+        var selectedIds =temp.join(",");
+
+        var param = _self.assembleFullQueryParam();
+        param.selectedIds = selectedIds;
+        param.taxPeriodDate=taxPeriodDate.taxPeriodDate;
+        //调用后台人员申报接口
+        _self.remoteCall({
+            method : "dataToERP",
+            param :param,
+            success : function(response) {
+
+                shr.showInfo({
+//					message : "已提交系统进行人员报送,需要等待几分钟,可在执行任务监控中查看运行进度;报送完成后将会推送消息告知",
+                    message : "已提交系统进行报送,需要等待几分钟,可在执行任务监控中查看运行进度;",
+                    hideAfter : 10
+                });
+                return;
+            }
+        });
+    },
+    assembleFullQueryParam : function(){
+		var _self = this;
+		var postData=$('#grid').jqGrid("getGridParam","postData");
+		$('#grid')._pingPostData(postData);		
+		totalRecords = $('#grid').jqGrid('getGridParam', 'records');		
+		var param = $.extend({}, postData);	
+		var selectedIdsP = _self.getSelectedFields().toString();
+		param.totalRecords =totalRecords;
+		param.selectedData = selectedIdsP;
+		param.page = 1;
+		param.isAll = true;
+		param.columnModel = "id";
+		return param;
+	},
+});

+ 719 - 0
patch/20250412/eas/server/deploy/easweb.ear/shr_web.war/addon/customer/web/js/atsOverTimeBillBatchEditEx.js

@@ -0,0 +1,719 @@
+shr.defineClass("shr.customer.gtiit.AtsOverTimeBillBatchEditEx", shr.ats.AtsOverTimeBillBatchEdit, {
+
+    initalizeDOM:function(){
+        shr.customer.gtiit.AtsOverTimeBillBatchEditEx.superClass.initalizeDOM.call(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);
+            },
+              // 其他配置...
+            beforeEditCell: function (rowid, cellname, value, iRow, iCol) {
+                console.log("进入编辑前:", rowid, cellname, value, iRow, iCol);
+               
+            },
+   
+            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);
+                    that.countOvertimeHourAction();
+                }
+                // 添加 开始时间  结束时间   休息时长(分钟) 响应时间
+                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") {
+                    // 加班小时数  发生改变就给予提示
+                    that.changOtTimeTipInfo(rowid);
+                    that.countOvertimeHourAction();
+                }
+                if (cellname == "otCompens") {
+                    that.countOvertimeHourAction();
+                }
+                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);
+                    that.countOvertimeHourAction();
+                }
+            },
+            afterEditCell: function (rowid, cellname, value, iRow, iCol) {
+                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
+                        });
+                    }
+
+
+                }
+
+
+            }
+        });
+       this.updateCalWidth();
+    },
+    updateCalWidth:function(inWidth){
+        // 获取jqGrid的引用
+        var $grid = $("#entries");
+        // 获取列模型
+        var colModel = $grid.jqGrid('getGridParam', 'colModel');
+        
+        // 找到 'startTime' 列的索引
+        var columnIndex = -1;
+        $.each(colModel, function (i, col) {
+            if (col.name === 'startTime' || col.name === 'endTime' 
+                || col.name === 'restStartTime' || col.name === 'restEndTime' 
+                || col.name === 'restStartTime2' || col.name === 'restEndTime2'
+                || col.name === 'realStartTime' || col.name === 'realEndTime') {
+                columnIndex = i;
+                // 设置新的列宽
+                var newWidth = inWidth?inWidth:75; // 新的宽度值
+            
+                // 调整列标题的宽度
+                $('.ui-jqgrid-labels > th:eq(' + columnIndex + ')').css('width', newWidth + 'px');
+            
+                // 调整列内容的宽度
+                $grid.find('tbody tr').each(function () {
+                    var $td = $(this).find('td:eq(' + columnIndex + ')');
+                    $td.css('width', newWidth + 'px');
+                });
+            
+                // 调整jqGrid的列宽(确保jqGrid内部状态更新)
+                $grid.jqGrid('setColProp', col.name, { width: newWidth });
+            }
+        });
+    },
+    calculateOTtimes: function (rowid) {
+        var startTime = $("#entries").jqGrid("getCell", rowid, "startTime");
+        var endTime = $("#entries").jqGrid("getCell", rowid, "endTime");
+        var restTime = $("#entries").jqGrid("getCell", rowid, "restTime");
+
+        if (startTime == "[object Object]") {
+            $("#" + rowid)
+                .find("td")
+                .eq("5")
+                .text("");
+            $("#" + rowid)
+                .find("td")
+                .eq("5")
+                .attr("title", "");
+        }
+        if (endTime == "[object Object]") {
+            $("#" + rowid)
+                .find("td")
+                .eq("6")
+                .text("");
+            $("#" + rowid)
+                .find("td")
+                .eq("6")
+                .attr("title", "");
+        }
+
+        if (startTime != "" && endTime != "") {
+            var restVal = 0;
+            if (restTime != "" && /^[0-9]*$/.test(restTime)) {
+                restVal = restTime; // 分钟数
+            }
+            var startTime = NewDate(startTime + ":00");
+            var endTime = NewDate(endTime + ":00");
+            var se =
+                endTime.getTime() -
+                startTime.getTime() -
+                restVal * 1000 * 60; // 毫秒
+            var tfl = se / (3600 * 1000);
+            $("#entries").jqGrid(
+                "setCell",
+                rowid,
+                "applyOTTime",
+                tfl.toFixed(fixedNum)
+            );
+            this.countOvertimeHourAction();
+        }
+    },
+    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
+                        );
+                    }
+                }else{
+                    $("#entries").jqGrid('setCell',rowid,"otType",null);
+                }
+            },
+            error: function (response) {}
+        });
+        _self.changeWorkType(rowid);
+        _self.countOvertimeHourAction();
+    },
+    changeOTCompens: function (rowid) {
+        var that = this;
+        var otCompensId;
+        if (!$("#entries").jqGrid("getCell", rowid, "otType")) {
+            return;
+        } else {
+            otTypeId = $("#entries").jqGrid("getCell", rowid, "otType").id;
+        }
+
+        if (!$("#entries").jqGrid("getCell", rowid, "person")) {
+            return;
+        } else {
+            var personId = $("#entries").jqGrid("getCell", rowid, "person").id;
+        }
+
+        if (!$("#entries").jqGrid("getCell", rowid, "otDate")) {
+            return;
+        } else {
+            var otDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+        }
+        var otCompensIds = that.getOTCompensByOTTypes(personId, otTypeId);
+        var url =
+            shr.getContextPath() +
+            "/dynamic.do";
+        that.remoteCall({
+            type: "post",
+            method: "getDefaultOTCompens",
+            url: url,
+            param: {
+                personId: personId,
+                otTypeId: otTypeId,
+                otDate: otDate
+            },
+            async: false,
+            success: function (res) {
+                var info = res;
+                if (info.defaultId == "" || info.defaultId == undefined) {
+                    shr.showWarning({
+                        message:
+                            jsBizMultLan.atsManager_atsOverTimeBillBatchEdit_i18n_28
+                    });
+                } else {
+                    var defaultOTCompens = {
+                        id: info.defaultId,
+                        name: info.defaultName
+                    };
+                    $("#entries").jqGrid(
+                        "setCell",
+                        rowid,
+                        "otCompens",
+                        defaultOTCompens
+                    );
+                    if (otCompensIds) {
+                        var otCompensIdsStr = otCompensIds.replace(
+                            /(,)/g,
+                            "','"
+                        );
+                        that.filter[rowid] =
+                            "BaseInfo.id in ('" + otCompensIdsStr + "')";
+                    }
+                }
+            }
+        });
+        that.countOvertimeHourAction();
+    },
+    verify: function () {
+        var _self = this;
+        var obj = $("#entries").jqGrid("getRowData");
+        var errorString = "";
+        var errorFlag = 0;
+        var billerrorString = "";
+        if (obj.length == 0) {
+            shr.showWarning({
+                message:
+                    jsBizMultLan.atsManager_atsOverTimeBillBatchEdit_i18n_7
+            });
+            return false;
+        }
+        if (!_self.checkRowIsOver()) {
+            //          closeLoader();
+            return false;
+        }
+
+        _rowMap = {};
+
+        openLoader(
+            1,
+            jsBizMultLan.atsManager_atsOverTimeBillBatchEdit_i18n_29
+        );
+
+        jQuery(obj).each(function (n) {
+            errorString = _self.checkEveryRow(n + 1, this);
+
+            if (errorString) {
+                _self.preShowError(
+                    n + 1,
+                    this.person.name + " " + errorString
+                );
+                billerrorString =
+                    billerrorString +
+                    shr.formatMsg(
+                        jsBizMultLan.atsManager_atsOverTimeBillBatchEdit_i18n_44,
+                        [n + 1]
+                    ) +
+                    errorString;
+
+                errorFlag = 1;
+            }
+        });
+        if (errorString && errorString != "") {
+            var showMes = "";
+            showMes += billerrorString.replace(/。/g, "。</br>");
+            shr.showWarning({ message: showMes });
+            closeLoader();
+            return false;
+        }
+
+        errorString = _self.validateOTEntry();
+        if (errorString && errorString != "") {
+            shr.showWarning({ message: errorString });
+            closeLoader();
+            return false;
+        }
+
+        var hasOtType = _self.checkOtType();
+        if (!hasOtType) {
+            return false;
+        }
+
+        if (errorFlag == 0) {
+            //工作流审批界面,加班补提控制。
+            var boo = true;
+            boo = _self.validateIsFillOtVerify();
+            closeLoader();
+            // if(!_self.checkOtDate()){
+            //     return false;
+            // }
+            return boo;
+        } else {
+            closeLoader();
+            return false;
+        }
+    },
+    changeWorkType: function (rowid) {
+        var that = this;
+        var otDate;
+        if (!$("#entries").jqGrid("getCell", rowid, "otDate")) {
+            return;
+        } else {
+            otDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+        }
+
+        _self.remoteCall({
+            type:"post",
+            async: false,
+            method:"workMultiple",
+            param:{otDate:otDate},
+            success:function(res){
+                if(res.otTypeValue){
+                    var responseObejct = {id: res.otTypeValue,name: res.otTypeText};
+                    $("#entries").jqGrid("setCell",rowid,"otType",responseObejct);
+                }
+            }
+        });
+
+        var otType = $("#entries").jqGrid("getCell",rowid,"otType");
+        if(!otType){
+            _self.remoteCall({
+                type:"post",
+                async: false,
+                method:"jobType",
+                param:{otDate:otDate},
+                success:function(res){
+                    if(res.otTypeValue){
+                        var responseObejct = {id: res.otTypeValue,name: res.otTypeText};
+                        $("#entries").jqGrid("setCell",rowid,"otType",responseObejct);
+                    }
+                }
+            });
+        }
+    },
+
+    /**
+     * 删除行
+     */
+    deleteRowAction: function(event) {
+        var $editGrid = this.getEditGrid(event.currentTarget);
+        var ids = $editGrid.jqGrid('getSelectedRows');
+        if (ids.length > 0) {
+            for (var i = ids.length - 1; i >= 0; i--) {
+                $editGrid.jqGrid('delRow', ids[i]);
+            }
+            this.countOvertimeHourAction();
+        }else{
+            shr.showInfo({
+                message: $.shrI18n.common.tips.chooseTableDataFirst,
+                hideAfter: 3
+            });
+        }
+    },
+
+    countOvertimeHourAction:function(){
+        var allRowData = $("#entries").jqGrid("getAllRowData");
+        var length = allRowData.length;
+        var weekdayHour = 0;//工作日加班小时数
+        var restdayHour = 0;//休息日加班小时数
+        var holidayHour = 0;//法定节假日加班小时数
+        var totalDuration = 0;//加班总时长
+        var compensatoryTotal = 0;//调休加班总时长
+        var totalOvertimePay = 0;//加班费加班总时长
+        for(var i=0; i<length; i++){
+            var otType = allRowData[i].otType.id;
+            var applyOTTime = allRowData[i].applyOTTime;
+            var otCompens = allRowData[i].otCompens.id;
+            if(applyOTTime == ""){
+                continue;
+            }
+            if(otType == "rBy0u1YgQ9C1OxcM85mxyY6C/nU="){
+                weekdayHour = Number(weekdayHour)+Number(applyOTTime);
+            }else if(otType == "zr+ur5D4RA+2bdVZ2VPqp46C/nU="){
+                restdayHour = Number(restdayHour)+Number(applyOTTime);
+            }else if(otType == "sRWUOt7sRpOY0TCo6NMqGY6C/nU="){
+                holidayHour = Number(holidayHour)+Number(applyOTTime);
+            }
+            if(otCompens == "AERg0TIcSnaM40EKvJCdRKlrTmA="){
+                compensatoryTotal = Number(compensatoryTotal)+Number(applyOTTime);
+            }else if(otCompens == "zkbt5bMLQ3ehUivmKbtBOqlrTmA="){
+                totalOvertimePay = Number(totalOvertimePay)+Number(applyOTTime);
+            }
+        }
+        totalDuration = Number(weekdayHour)+Number(restdayHour)+Number(holidayHour);
+        // $("#weekdayHour").val(weekdayHour);
+        // $("#restdayHour").val(restdayHour);
+        // $("#holidayHour").val(holidayHour);
+        // $("#totalDuration").val(totalDuration);
+        // $("#compensatoryTotal").val(compensatoryTotal);
+        // $("#totalOvertimePay").val(totalOvertimePay);
+
+        this.getField("weekdayHour").shrNumberField("setValue",weekdayHour);
+        this.getField("restdayHour").shrNumberField("setValue",restdayHour);
+        this.getField("holidayHour").shrNumberField("setValue",holidayHour);
+        this.getField("totalDuration").shrNumberField("setValue",totalDuration);
+        this.getField("compensatoryTotal").shrNumberField("setValue",compensatoryTotal);
+        this.getField("totalOvertimePay").shrNumberField("setValue",totalOvertimePay);
+    },
+    checkOtDate:function(){
+        var allRowData = $("#entries").jqGrid("getAllRowData");
+        for(var i=0; i<allRowData.length; i++){
+            var otDate = allRowData[i].otDate;
+            otDate  = new Date(otDate);
+            const currentDate = new Date();
+            const lastMonthDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
+            var lastYear = lastMonthDate.getFullYear();
+            var lastMonth = lastMonthDate.getMonth();
+
+            if(otDate.getMonth() != lastMonth || otDate.getFullYear() != lastYear){
+                shr.showWarning({message: "Only overtime records with the previous month's overtime date can be submitted for the current month"});
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+});
+waf.defineCustomeClass("cellformatter.shrTextArea", cellformatter.defaultFormatter, {
+    unformat: function (cell, rowId) {
+        return $.trim($(cell).text());
+    },
+    format: function (cellval, rwd) {
+        if (!$.type.isEmpty(cellval)) {
+            return "<pre class='required' style='width:98%;color:rgb(153, 153, 153)'>" + cellval + "</pre>";
+        } else {
+            return cellformatter.defaultFormatter.prototype.format.call(this, cellval, rwd);
+        }
+    }, 
+});

+ 502 - 0
patch/20250412/eas/server/deploy/easweb.ear/shr_web.war/addon/customer/web/js/atsOverTimeBillBatchEditForPerEx.js

@@ -0,0 +1,502 @@
+shr.defineClass("shr.customer.gtiit.AtsOverTimeBillBatchEditForPerEx", shr.ats.atsOverTimeBillBatchEditForPer, {
+
+    initalizeDOM:function(){
+        shr.customer.gtiit.AtsOverTimeBillBatchEditForPerEx.superClass.initalizeDOM.call(this);
+        var that = this;
+        if(jsBinder.operateState == 'VIEW'){
+            $('[aria-describedby="entries_todescription"]').css({'white-space':'break-spaces'});
+        }
+        var entries_cont=waf("#entries");
+        entries_cont.jqGrid("option", { 
+              beforeSaveCell:function (rowid, cellname, value, iRow, iCol) {
+                  
+              },
+             beforeEditCell: function (rowid, cellname, value, iRow, iCol) {
+        console.log("进入编辑前:", rowid, cellname, value, iRow, iCol);
+       
+    },
+    afterEditCell: function (rowid, cellname, value, iRow, iCol) {
+        console.log("进入编辑后:", rowid, cellname, value, iRow, iCol);
+        // 在这里可以进行一些后续操作,如设置焦点
+        // that.updateCalWidth(90)
+    },
+              afterSaveCell:function (rowid, cellname, value, iRow, iCol) {
+
+                  if(value["adminOrgUnit.id"]){
+                        $("#entries").jqGrid('setCell',rowid,"adminOrgUnit.id",value["adminOrgUnit.id"]);
+                     }
+                _self.afterSaveCellTrigger(rowid, cellname, value, iRow, iCol);              
+                    
+              }
+              ,afterEditCell:function (rowid, cellname, value, iRow, iCol) 
+              {
+                that.getOTContrlParams(rowid);
+                if(cellname=="otType" && that.OTContrlParams[rowid].isOtrolByDateType){
+                    $("#"+iRow+"_otType").shrPromptBox("disable");
+                }
+                //因为需求只是提了第一个时间时改变业务组织
+                $("#1_otDate").change(function(){
+                 that.changeOverHrOrgUnit();
+                });
+                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 == "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
+                          });
+                      }
+
+
+                  }
+
+                _self.saveEditCellValue(rowid,cellname, value,iRow,iCol) ;
+              }
+        });
+        
+    this.updateCalWidth();
+    },
+    updateCalWidth:function(inWidth){
+        // 获取jqGrid的引用
+        var $grid = $("#entries");
+        // 获取列模型
+        var colModel = $grid.jqGrid('getGridParam', 'colModel');
+        
+        // 找到 'startTime' 列的索引
+        var columnIndex = -1;
+        $.each(colModel, function (i, col) {
+            if (col.name === 'startTime' || col.name === 'endTime' 
+                || col.name === 'restStartTime' || col.name === 'restEndTime' 
+                || col.name === 'restStartTime2' || col.name === 'restEndTime2'
+                || col.name === 'realStartTime' || col.name === 'realEndTime') {
+                columnIndex = i;
+                // 设置新的列宽
+                var newWidth = inWidth?inWidth:75; // 新的宽度值
+            
+                // 调整列标题的宽度
+                $('.ui-jqgrid-labels > th:eq(' + columnIndex + ')').css('width', newWidth + 'px');
+            
+                // 调整列内容的宽度
+                $grid.find('tbody tr').each(function () {
+                    var $td = $(this).find('td:eq(' + columnIndex + ')');
+                    $td.css('width', newWidth + 'px');
+                });
+            
+                // 调整jqGrid的列宽(确保jqGrid内部状态更新)
+                $grid.jqGrid('setColProp', col.name, { width: newWidth });
+            }
+        });
+    },
+    afterSaveCellTrigger: function(rowid, cellname, value, iRow, iCol)
+    {   
+        var that = this ;
+        var entries_cont=waf("#entries");
+        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);
+        }
+        
+        if(cellname=="otType"){
+            that.changeOTCompens(rowid);
+            that.countOvertimeHourAction();
+        }
+        // 添加 开始时间  结束时间   休息时长(分钟) 响应时间 
+        if(cellname=="startTime" || cellname=="endTime" || cellname=="restTime"){
+            if(cellname!="restTime"){
+                that.calRestTimeLen(rowid);
+            }
+            that.calculateOTtimes(rowid);
+        }
+        if(cellname=="person"){
+            
+            that.calRestTimeLen(rowid);
+        }
+        if(cellname=="applyOTTime"){ // 加班小时数  发生改变就给予提示
+            that.changOtTimeTipInfo(rowid);
+            that.countOvertimeHourAction();
+        }
+        if (cellname == "otCompens") {
+            that.countOvertimeHourAction();
+        }
+        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 restStartTimeOfDate;
+            var restEndTimeOfDate;
+            if (restStartTime!="" && restEndTime!=""){
+                restStartTimeOfDate = new Date(restStartTime);
+                restEndTimeOfDate = new Date(restEndTime);
+                var times =restEndTimeOfDate.getTime()-restStartTimeOfDate.getTime();
+                if (times<0){
+                    times=0;
+                }
+                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;
+                    }
+                    times=times/1000/60;
+                    totalRestTime+=times;
+                }
+            }
+            var  t1 = totalRestTime.toFixed(atsMlUtile.getSysDecimalPlace());
+            $("#entries").jqGrid('setCell',rowid,"restTime",t1) ;
+            var startTime =new Date(startTime+":00");
+            var endTime =new Date(endTime+":00");
+            var se = endTime.getTime()-startTime.getTime() -totalRestTime; // 毫秒
+            var tfl = se/(3600*1000) ;
+            $("#entries").jqGrid('setCell',rowid,"applyOTTime",tfl) ;
+            that.calculateOTtimes(rowid);
+            that.getOTContrlParams(rowid);
+            that.countOvertimeHourAction();
+        }
+    },
+    calculateOTtimes : function(rowid){
+        var that = this ;
+        var startTime = $("#entries").jqGrid('getCell',rowid,"startTime") ;
+        var endTime = $("#entries").jqGrid('getCell',rowid,"endTime") ;
+        var restTime = $("#entries").jqGrid('getCell',rowid,"restTime") ;
+         
+        if(startTime =="[object Object]"){
+            $("#"+rowid).find('td').eq('5').text("");
+            $("#"+rowid).find('td').eq('5').attr("title","");
+        }
+        if(endTime =="[object Object]"){
+            $("#"+rowid).find('td').eq('6').text("");
+            $("#"+rowid).find('td').eq('6').attr("title","");
+        }
+
+        startTime = that.addTimeToDate(startTime);
+        endTime = that.addTimeToDate(endTime);
+        
+        if(startTime!="" && endTime!=""){
+            var restVal = 0;
+            if(restTime!="" && (/^[0-9]*$/.test(restTime))){
+                restVal = restTime; // 分钟数 
+            }
+            var startTime = NewDate(startTime+":00");
+            var endTime = NewDate(endTime+":00");
+            var se = endTime.getTime()-startTime.getTime() - (restVal * 1000 * 60); // 毫秒
+            var tfl = (se/(3600*1000)).toFixed(fixedNum) ;
+            $("#entries").jqGrid('setCell',rowid,"applyOTTime",tfl);
+            this.countOvertimeHourAction();
+        }
+    },
+    getOverTimeType:function(rowid,otDate,personId){
+        var _self = this;
+        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);
+                        if(otCompensIds){
+                            var otCompensIdsStr = _self.getOTCompensByOTType(personId,response.otTypeValue).replace(/(,)/g, "','");
+                            _self.filter[rowid]="BaseInfo.id in ('"+otCompensIdsStr+"')";
+                        }
+                        
+                        var compens = response.compensInfo ;
+                        var defaultJson = {id:compens.id , name:compens.name} ;
+                        $("#entries").jqGrid('setCell',rowid,"otCompens",defaultJson);
+                    }
+                    else {
+                        $("#entries").jqGrid('setCell',rowid,"otType",null);
+                    }
+                }else{
+                    $("#entries").jqGrid('setCell',rowid,"otType",null);
+                }
+            }  
+            ,error: function(response) {
+            }
+        });
+        _self.changeWorkType(rowid);
+        _self.countOvertimeHourAction();
+    },
+    changeOTCompens:function(rowid){
+        var that=this;
+        var otCompensId ;
+        if(!$("#entries").jqGrid('getCell',rowid,"otType")){
+            return;
+        }else{
+            otTypeId = $("#entries").jqGrid('getCell',rowid,"otType").id;
+        }
+        
+        if(!$("#entries").jqGrid('getCell',rowid,"person")){
+            return;
+        }else{
+            var personId = $("#entries").jqGrid('getCell',rowid,"person").id;
+        }
+        var otCompensIds = that.getOTCompensByOTType(personId,otTypeId);
+
+        var url = shr.getContextPath()+'/dynamic.do';
+        that.remoteCall({
+            type:"post",
+            method:"getDefaultOTCompens",
+            url:url,
+            param:{personId:personId,otTypeId:otTypeId},
+            async: false,
+            success:function(res){
+                var info =  res;
+                if (info.defaultId == "" || info.defaultId ==undefined ){
+                    shr.showWarning({message:jsBizMultLan.atsManager_atsOverTimeBillBatchEditForPer_i18n_24});
+                }else {
+                    var defaultOTCompens = {id:info.defaultId,name:info.defaultName};   
+                    $("#entries").jqGrid('setCell',rowid,"otCompens",defaultOTCompens);
+                    if(otCompensIds){
+                        var otCompensIdsStr = otCompensIds.replace(/(,)/g, "','")
+                        that.filter[rowid]="BaseInfo.id in ('"+otCompensIdsStr+"')";
+                    }
+                    
+                }           
+            }
+        });
+        that.countOvertimeHourAction();
+    },
+    verify:function(){
+        var _self = this ;
+        var obj = $("#entries").jqGrid("getRowData");
+        var errorString = "";
+        var errorFlag = 0 ;
+        if(obj.length == 0){
+            shr.showWarning({message: jsBizMultLan.atsManager_atsOverTimeBillBatchEditForPer_i18n_7});
+            return false;
+        }
+        
+        if(!_self.checkRowIsOver()){
+            return false;
+        }
+        
+        _rowMap = {} ;
+        jQuery(obj).each(function(n){
+                errorString = _self.checkEveryRow(n + 1 , this);
+                if(errorString){
+                    _self.preShowError( n + 1 ,this.person.name + " " + errorString);
+                    errorFlag = 1 ;
+                }
+            
+         });    
+         if(!_self.verifyCheck()){
+            return false;
+         }
+
+        errorString = _self.validateOTEntry();
+        if(errorString && errorString != ""){
+            shr.showWarning({message: errorString});
+            closeLoader();
+            return false;
+        }
+         if(errorFlag == 0){
+             //工作流审批界面,加班补提控制。
+            var boo = true;
+            boo = _self.validateIsFillOtVerify();
+            
+            return boo;
+         }else{
+            return false;
+         }
+    },
+    changeWorkType: function (rowid) {
+        var that = this;
+        var otDate;
+        if (!$("#entries").jqGrid("getCell", rowid, "otDate")) {
+            return;
+        } else {
+            otDate = $("#entries").jqGrid("getCell", rowid, "otDate");
+        }
+
+        _self.remoteCall({
+            type:"post",
+            async: false,
+            method:"workMultiple",
+            param:{otDate:otDate},
+            success:function(res){
+                if(res.otTypeValue){
+                    var responseObejct = {id: res.otTypeValue,name: res.otTypeText};
+                    $("#entries").jqGrid("setCell",rowid,"otType",responseObejct);
+                }
+            }
+        });
+
+        var otType = $("#entries").jqGrid("getCell",rowid,"otType");
+        if(!otType){
+            _self.remoteCall({
+                type:"post",
+                async: false,
+                method:"jobType",
+                param:{otDate:otDate},
+                success:function(res){
+                    if(res.otTypeValue){
+                        var responseObejct = {id: res.otTypeValue,name: res.otTypeText};
+                        $("#entries").jqGrid("setCell",rowid,"otType",responseObejct);
+                    }
+                }
+            });
+        }
+    },
+
+    /**
+     * 删除行
+     */
+    deleteRowAction: function(event) {
+        var $editGrid = this.getEditGrid(event.currentTarget);
+        var ids = $editGrid.jqGrid('getSelectedRows');
+        if (ids.length > 0) {
+            for (var i = ids.length - 1; i >= 0; i--) {
+                $editGrid.jqGrid('delRow', ids[i]);
+            }
+            this.countOvertimeHourAction();
+        }else{
+            shr.showInfo({
+                message: $.shrI18n.common.tips.chooseTableDataFirst,
+                hideAfter: 3
+            });
+        }  
+    },
+
+    countOvertimeHourAction:function(){
+        var allRowData = $("#entries").jqGrid("getAllRowData");
+        var length = allRowData.length;
+        var weekdayHour = 0;//工作日加班小时数
+        var restdayHour = 0;//休息日加班小时数
+        var holidayHour = 0;//法定节假日加班小时数
+        var totalDuration = 0;//加班总时长
+        var compensatoryTotal = 0;//调休加班总时长
+        var totalOvertimePay = 0;//加班费加班总时长
+        for(var i=0; i<length; i++){
+            var otType = allRowData[i].otType.id;
+            var applyOTTime = allRowData[i].applyOTTime;
+            var otCompens = allRowData[i].otCompens.id;
+            if(applyOTTime == ""){
+                continue;
+            }
+            if(otType == "rBy0u1YgQ9C1OxcM85mxyY6C/nU="){
+                weekdayHour = Number(weekdayHour)+Number(applyOTTime);
+            }else if(otType == "zr+ur5D4RA+2bdVZ2VPqp46C/nU="){
+                restdayHour = Number(restdayHour)+Number(applyOTTime);
+            }else if(otType == "sRWUOt7sRpOY0TCo6NMqGY6C/nU="){
+                holidayHour = Number(holidayHour)+Number(applyOTTime);
+            }
+            if(otCompens == "AERg0TIcSnaM40EKvJCdRKlrTmA="){
+                compensatoryTotal = Number(compensatoryTotal)+Number(applyOTTime);
+            }else if(otCompens == "zkbt5bMLQ3ehUivmKbtBOqlrTmA="){
+                totalOvertimePay = Number(totalOvertimePay)+Number(applyOTTime);
+            }
+        }
+        totalDuration = Number(weekdayHour)+Number(restdayHour)+Number(holidayHour);
+        // $("#weekdayHour").val(weekdayHour);
+        // $("#restdayHour").val(restdayHour);
+        // $("#holidayHour").val(holidayHour);
+        // $("#totalDuration").val(totalDuration);
+        // $("#compensatoryTotal").val(compensatoryTotal);
+        // $("#totalOvertimePay").val(totalOvertimePay);
+
+        this.getField("weekdayHour").shrNumberField("setValue",weekdayHour);
+        this.getField("restdayHour").shrNumberField("setValue",restdayHour);
+        this.getField("holidayHour").shrNumberField("setValue",holidayHour);
+        this.getField("totalDuration").shrNumberField("setValue",totalDuration);
+        this.getField("compensatoryTotal").shrNumberField("setValue",compensatoryTotal);
+        this.getField("totalOvertimePay").shrNumberField("setValue",totalOvertimePay);
+    },
+    submitAction: function(event) {
+        var _self = this,
+            workArea = _self.getWorkarea(),
+            $form = $('form', workArea);
+        if(!_self.validate()){
+            return ;
+        }
+        if(!_self.checkOtDate()){
+            return false;
+        }
+            
+        if ($form.valid() && _self.verify()) {
+            shr.showConfirm(jsBizMultLan.atsManager_atsOverTimeBillBatchEditForPer_i18n_14, function() {
+                _self.doSubmit(event, 'submit');
+            });
+        }       
+    },
+    checkOtDate:function(){
+        var allRowData = $("#entries").jqGrid("getAllRowData");
+        for(var i=0; i<allRowData.length; i++){
+            var otDate = allRowData[i].otDate;
+            otDate  = new Date(otDate);
+            const currentDate = new Date();
+            const lastMonthDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, currentDate.getDate());
+            var lastYear = lastMonthDate.getFullYear();
+            var lastMonth = lastMonthDate.getMonth();
+
+            if(otDate.getMonth() != lastMonth || otDate.getFullYear() != lastYear){
+                shr.showWarning({message: "Only overtime records with the previous month's overtime date can be submitted for the current month"});
+                return false;
+            }
+        }
+        return true;
+    }
+});
+
+waf.defineCustomeClass("cellformatter.shrTextArea", cellformatter.defaultFormatter, {
+    unformat: function (cell, rowId) {
+        return $.trim($(cell).text());
+    },
+    format: function (cellval, rwd) {
+        if (!$.type.isEmpty(cellval)) {
+            return "<pre class='required' style='width:98%;color:rgb(153, 153, 153)'>" + cellval + "</pre>";
+        } else {
+            return cellformatter.defaultFormatter.prototype.format.call(this, cellval, rwd);
+        }
+    }, 
+}); 

+ 34 - 0
patch/20250412/eas/server/deploy/easweb.ear/shr_web.war/addon/customer/web/js/cmpGiveDynamicListEx.js

@@ -0,0 +1,34 @@
+shr.defineClass("shr.compensation.CmpGiveDynamicListEx", shr.compensation.CmpGiveDynamicList, {
+
+    initalizeDOM: function () {
+        shr.compensation.CmpGiveDynamicListEx.superClass.initalizeDOM.call(this);
+        var that = this;  
+    },
+    /**
+	 * 审批操作
+	 */
+	dataToERPAction : function(){
+		var _self = this;
+		var param = _self.getSelectParams();
+		$.extend(param,{			
+			cmpschemeid : _self.cmpschemeid
+		});
+	
+		_self.confirm(true,"您确定要将工资单数据同步到ERP吗?Are you sure you want to sync payroll data to ERP?",
+					  function(){
+			_self.remoteCall({
+				type : "post",
+				showBlock : true,
+				method : "dataToERP",
+				param : param,
+				success : function(res){
+					shr.showInfo({
+						message : '启动同步成功',
+						hideAfter : 30
+					});
+					//_self.queryGrid();
+				}
+			});
+		});
+	},	
+});