yuanzhi_kuang 5 mesiacov pred
rodič
commit
8e2544619a

+ 1199 - 2
js/addon/customer/perfweb/web/js/perfscoreNewEx.js

@@ -15,7 +15,438 @@ shr.defineClass("shr.perfweb.perfscoreNewEx", shr.perfweb.perfscoreNew, {
     },
  
 
-   
+    // 20241213等级切换时,更改选择框的title值
+    levelSwitchChange: function () {
+        $('select[name="_editGrades"],select[name="wholeGrade"]').die('change').live('change', function () {
+            $(this).attr('title', $(this).find("option:selected").text());
+            if($(this).find("option:selected").parent().attr("name") == 'wholeGrade'){
+            	isEditGradesChange = 1;
+            }
+            var selectTitle = $(this).val();
+            $('.workerList li.current').find("i[name='nodeGrade']").text(selectTitle);
+            //获取点击元素的id
+            var selectId = $(this).attr('id');
+             
+            getDefaultScoreData(gradeTaskNode,selectTitle);
+        })
+
+        $('input[id$="gradeORrejection"],input[id$="nodeGrade"]').die('change').live('change', function () {
+        	calcTotoalScore(gradeTaskNode);
+        })
+    },
+
+
+    
+
+      /*
+     * 评分保存事件
+     * */
+      saveScoreEvent: function () {
+        var _self = this;
+        $('#saveScore').unbind('click').bind('click', function () {
+            let totalScoreVal = $("#totalScore").find("input").val();
+            let selectTitle =  $('select[name="_editGrades"],select[name="wholeGrade"]').val();
+         var scoreObj = _self.assembleScoreData();
+         if(!scoreObj && scoreObj[0] == null){
+            return false;
+        }
+        let evaObjVal =scoreObj[0].evaObj;
+            var issok =  _checkScore(evaObjVal,selectTitle,totalScoreVal);
+            if(issok){
+                // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
+                $('.scoretabs').each(function(index,tab){
+                    $(tab).jqGrid('editStop');
+                })
+                that.doSaveScore('1', 0);
+                //刷新正态分布列表
+                that.getDistributionInfo();
+            }else{
+                shr.showWarning({
+                    message:  "当前总分不在该等级范围内,请重新评分"
+                    ,hideAfter:5});
+            }
+        });
+    },
+
+
+/*
+     * 评分提交事件
+     * */
+submitScoreClickEvent: function () {
+    $('#submitScore').unbind('click').bind('click', function () {
+        var _self = this;
+        let  totalScoreVal = $("#totalScore").find("input").val();
+        let selectTitle =  $('select[name="_editGrades"],select[name="wholeGrade"]').val();
+        var scoreObj = that.assembleScoreData();
+        if(!scoreObj && scoreObj[0] == null){
+            return false;
+        }
+        let evaObjVal =scoreObj[0].evaObj;
+        var issok =  _checkScore(evaObjVal,selectTitle,totalScoreVal);
+        if(!issok){
+                shr.showWarning({
+                    message:  "当前总分不在该等级范围内,请重新评分!"
+                ,hideAfter:5});
+            return false;
+        }
+
+        _gExistRejection = 0;
+        // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
+        $('.scoretabs').each(function(index,tab){
+            $(tab).jqGrid('editStop');
+        })
+        if (gradeTaskNode == '') {
+            shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_12});
+            return false;
+        }
+        if (_noPassVerifyArr.length > 0) {
+            shr.showWarning({message: _noPassVerifyArr[0].errortext});
+            //自动点击第一条评分不通过的指标
+            $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
+            return false;
+        }
+        //组装评分数据
+        var scoreObj = that.assembleScoreData('1');
+        if(!scoreObj){
+            return false;
+        }
+        //进行评分校验
+
+        if (scoreObj[0].scoreError == true) {
+            shr.showError({
+                // message : '分数只能为整数或不超过2位的小数,请检查!',
+                //12月补丁功能-天虹
+                message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_31,
+                hideAfter: 3
+            });
+            return false;
+        }
+        if (scoreObj[0].targetValError) {
+            shr.showError({
+                message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
+                hideAfter: 3
+            });
+            return false;
+        }
+        if (scoreObj[0].actValError) {
+            shr.showError({
+                message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
+                hideAfter: 3
+            });
+            return false;
+        }
+        if (scoreObj[0].desError) {
+            shr.showError({
+                message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+            [2000]),
+                hideAfter: 3
+            });
+            return false;
+        }
+        if(globalErrorMsg.length > 0){
+            for(var i=0; i<globalErrorMsg.length;i++){
+                $('#scoreTab_'+globalErrorMsg[i].tabIndex).jqGrid('setCell', globalErrorMsg[i].fid, globalErrorMsg[i].colName, '', 'errorval');
+            }
+            
+            // shr.showWarning({message : '必填字段不能为空,请检查'});
+            shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_20220826_i18n_1});
+            return false;
+        }
+        //判断整体评价等级是否必填,如果必填则进行必录校验
+        var ids = new Array();
+        for (var i = 0; i < scoreObj.length; i++) {
+            ids.push(scoreObj[i].gradeTaskNode);
+        }
+
+        //打总分校验总分必填
+        if (_needScore == "3" && ($("#totalScore").find("input").val() == undefined || $("#totalScore").find("input").val().length < 1)) {
+            var flag = sumSocreOnblur($("#totalScore").find("input"));
+            if (!flag) {
+                return;
+            }
+        }
+
+        var canSubmitFlag = false;
+        var scoremsg = '';
+        var confirmMsg = '';
+        var msg = '';
+        var matrixDetail = "";
+        var saveNodeSumScoreList;
+        var marginTop = -(document.body.clientHeight/3);
+        $.block.show({text :
+            //'数据处理中,请稍后...'
+            jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04
+            ,marginTop:marginTop});
+        //1、保存分数
+        that.remoteCall({
+            method: "saveScore",
+            param: {
+                needScore:_needScore,
+                scoreObj: JSON.stringify(scoreObj)
+            },
+            async: false,
+            success: function (data) {
+                if (data != null && data.result == '200') {
+                    nodeSumScore = data.nodeSumScore;
+                    nodeGrade = data.nodeGrade;
+                    matrixDetail = data.detail;
+                    saveNodeSumScoreList = data.nodeSumScoreList;
+                    var nodeSumScoreList = data.nodeSumScoreList;
+                    var gtnLen = nodeSumScoreList.length;
+                    for(var i=0; i<gtnLen; i++){
+                        var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
+                        // if(null != nsumscore && "" != nsumscore){
+                             $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
+                             $($("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']")).text(nsumscore);
+                        // }else{
+                        // 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
+                        // }
+                    }
+                }
+            }
+        });
+
+        var needrResult = null;
+        //2、判断节点是否可被提交
+        that.remoteCall({
+            method: "judgeIsCanSubmit",
+            param: {
+                gradeTaskNode: ids.toString(),
+                evaObj: evaObj,
+                scoreObj: JSON.stringify(scoreObj)
+            },
+            async: false,
+            success: function (result) {
+                $.block.hide();
+                canSubmitFlag=true;
+                 needrResult =result;
+                for (var i = 0; i < scoreObj.length; i++) {
+                    var data = '';
+                    for (var j = 0; j < result.length; j++) {
+                        if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
+                            data = result[j];
+                        }
+                    }
+
+                    if (data != null && data.canSubmit == true) {
+                        if (scoreObj[i].wholeComment != null && scoreObj[i].wholeComment != undefined && scoreObj[i].wholeComment.length > 2000) {
+                            shr.showWarning({
+                                message:
+                                    shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,
+                                        [2000])
+                            });
+                            return false;
+                        }
+                        //判断整体评语是否必录,如果必录则进行必录校验
+                        // BT-00580949 绩效管理--绩效工作台--考核目标填报、目标变更--编辑指标,评价标准填写数字,保存js会报错
+                        if (scoreObj[i].wholeComment == '' || scoreObj[i].wholeComment == undefined || (scoreObj[i].wholeComment+'').trim().length < 1) {
+                            var wholeCommentIsMustLen = _wholeCommentIsMustArr.length;
+                            for(var m=0; m<wholeCommentIsMustLen; m++){
+                                 if(_wholeCommentIsMustArr[m].gradeTaskNode == scoreObj[i].gradeTaskNode 
+                                         && _wholeCommentIsMustArr[m].wholeCommentIsMust == 1){
+                                     //shr.showWarning({message: '请填写当前节点整体评价中的评价内容!'});
+                    shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_39});
+                                    $("#wholeComment").click();
+                                    $("#curWholeComment").focus();
+                                    canSubmitFlag = false;
+                                    return false;
+                                 }
+                            }
+                        }
+
+                        //指标评语是否必录校验,如果必录则提示并定位到其中一条未录评语的指标
+                        if(needrResult != null){
+                            for(var n=0; n<needrResult.length; n++){
+                                if(needrResult[n].isTargetComment == '1' && needrResult[n].unvalidTargetID.length>0){
+                                    needrResult[n].unvalidTargetID.forEach(function(item){
+                                        $('.scoretabs').jqGrid('setCell', item, 'FCOMMENT', null, 'errorval');
+                                    })
+                                    shr.showWarning({message : needrResult[n].targetCommentMsg});
+                                    canSubmitFlag = false;
+                                    return false;
+                                }
+                            }
+                        }
+
+                        //判断整体评价等级是否必填,如果必填则进行必录校验(矩阵考核需要根据节点进行判断)
+                        var needScoreSize = _gneedScoreArr.length;
+                        for(var j=0; j<needScoreSize; j++){
+                            if(_gneedScoreArr[j].gradeTaskNode == scoreObj[i].gradeTaskNode 
+                                    && _gneedScoreArr[j].indicatorComment == 1
+                                    && _gneedScoreArr[j].perfGradeEvaluate == 1){
+                                if (scoreObj[i].wholeGrade == '' || scoreObj[i].wholeGrade == undefined) {
+                                //shr.showWarning({message: '请填写当前节点整体评价等级!'});
+                shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_38});
+                                 canSubmitFlag = false;
+                                return false;
+                             }
+                             }
+                        }
+                    } else {
+                        shr.showWarning({message: data.msg});
+                        return;
+                    }
+                }
+                
+                var resLen = result.length;
+                var needMustCount = 0;
+                for(var m=0; m<resLen; m++){
+                  if(result[m].isNeedScore == '2' && result[m].unValidId.length>0){
+                     needMustCount++;
+                     shr.showWarning({message : result[m].msg});
+                     $("li[numval='"+result[m].unValidId[0]+"']").mousedown();
+                     canSubmitFlag =false;
+                     return false;
+                  }
+                }
+                if(needMustCount<1){
+                    for(var n=0; n<resLen; n++){
+                        if(result[n].isNeedScore == '1' && result[n].unValidId.length>0){
+                            msg += result[n].msg
+                            $("li[numval='"+result[n].unValidId[0]+"']").mousedown();
+                            break;
+                        }
+                    }
+                }
+                if(saveNodeSumScoreList != undefined && saveNodeSumScoreList != null && saveNodeSumScoreList.length >= 2){
+
+                    confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10;
+                    for(var i=0; i<saveNodeSumScoreList.length; i++){
+                        var scoremsg = '';
+                        //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
+                        if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
+                            if (saveNodeSumScoreList[i].nodeSumscore == null) {
+                                saveNodeSumScoreList[i].nodeSumscore = "";
+                            }
+                            scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + saveNodeSumScoreList[i].nodeSumscore + ',';
+                        }
+                        if(matrixDetail != null && matrixDetail != ''){
+                            confirmMsg = matrixDetail;
+                        }else{
+                            confirmMsg += saveNodeSumScoreList[i].nodeHandlerName + scoremsg;
+                            //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
+                            for(var j=0; j<_gneedScoreArr.length;j++){
+                                if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
+                                    _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                                    break;
+                                }
+                            }
+                            if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
+                                confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 + saveNodeSumScoreList[i].nodeGrade + ',';
+                            }
+                        }
+                    }
+                }else{
+                    //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
+                    var scoremsg = '';
+                    if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
+                        if (nodeSumScore == null) {
+                            nodeSumScore = "";
+                        }
+                        scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + nodeSumScore + ',';
+                    }
+                    if(matrixDetail != null && matrixDetail != ''){
+                        confirmMsg = matrixDetail;
+                    }else{
+                        confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10 + scoremsg;
+                        //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
+                        for(var j=0; j<_gneedScoreArr.length;j++){
+                            if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
+                                _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                                break;
+                            }
+                        }
+                        if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
+                            confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 +nodeGrade + ',';
+                        }
+                    }
+                }
+
+                if(null != msg && msg != undefined && msg != 'undefined' && '' != msg){
+                    confirmMsg +=  msg;
+                }              
+                if(_gExistRejection == 1){
+                    //confirmMsg += '存在否决项,将直接影响绩效最终得分!';
+        confirmMsg += jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_9;
+                }
+                //confirmMsg += '您确认提交吗?';
+        confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_33;
+                if(!canSubmitFlag){
+                    return false;
+                }
+
+                shr.showConfirm(confirmMsg, function () {
+                    //$.block.show({text : '数据处理中,请稍后...',marginTop:marginTop});
+        $.block.show({text : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04,marginTop:marginTop});
+                    // var isAutoSubmitVal = $("#isAutoSubmit").text();
+                    // var isAutoSubmit = false;
+                    // if (isAutoSubmitVal == 'true') {
+                    //     isAutoSubmit = true;
+                    // }
+                    //3、提交
+                    that.remoteCall({
+                        method: "submitScore",
+                        param: {
+                            scoreObj: JSON.stringify(scoreObj),
+                            // isAutoSubmit: isAutoSubmit
+                        },
+                        async: false,
+                        success: function (data) {
+                            $.block.hide();
+                            if (data != null && data.result == '200') {
+                                scoreStatus = '2';
+                                if (_gscoreOrRate == 0) {//评分
+                                    $("input[name='evaScore']").attr("disabled", "disabled");
+                                } else {
+                                    $("select[name='_editGrades']").attr("disabled", "disabled");
+                                }
+                                if(!entryType){
+                                    $("li[workerid='" +evaObj+ "']").remove();
+                                    shr.showInfo({message: data.msg});
+                                    if ($('.workerList').find('li').length == 0) {
+                                        // ==================================================================================
+                                        /**
+                                         * 组织考核返回组织目标评价页面,个人考核返回团队个人目标评价页面
+                                         * modified by Janeou_xie 2020/11/12
+                                         */
+                                        if(isOrg == "1"){
+                                            that.reloadPage({
+                                                uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore4Org.core',
+                                                serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                                personId : personId
+                                            })
+                                        }else {
+                                            that.reloadPage({
+                                                uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore.core',
+                                                serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                                personId : personId
+                                            });
+                                        }
+                                        // ==================================================================================
+                                        return;
+                                    }else{
+                                         $(".workerList>li")[0].click();
+                                         evaObj = $($(".workerList>li")[0]).attr("workerid");
+                                    }
+                                 }else if(entryType = 'myselfEvalu'){
+                                     shr.showInfo({message: data.msg});
+                                    that.reloadPage({
+                                       uipk: 'com.kingdee.shr.perfweb.app.perfportal.core',
+                                       serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                    });
+                                 }
+                            } else {
+                                shr.showWarning({message: data.msg});
+                            }
+                        }
+                    });
+                });
+            }
+        });
+    });
+},
+
+
 
 
     _getGridParams: function(tabIndex,msgdata){
@@ -155,7 +586,8 @@ shr.defineClass("shr.perfweb.perfscoreNewEx", shr.perfweb.perfscoreNew, {
                             }
                         },
                         formatter: 'shrtext',
-                        hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection|| areaNeedScore=='0'  ? true : false)
+                        // hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection|| areaNeedScore=='0'  ? true : false)
+                        hidden:true
                     });
                 }
             }
@@ -552,5 +984,770 @@ shr.defineClass("shr.perfweb.perfscoreNewEx", shr.perfweb.perfscoreNew, {
             scoreTipsText: scoreTipsText
         };   
     },
+
+
+
+
+    //生成整体评价区域
+    createWholeCommentHtml: function (data) {
+        var wholeCommentHtml = '<div id="wholeCommentDiv" class="scoreContentboxWholeComment">';
+        var controlAreaHtml = '<div class="othersScoreBox">';
+        var currentWholeGrade = '';
+        _gneedScoreArr = new Array();
+        // var hideNodeWeight = $('#hideNodeWeight').text();
+
+        if (data != null && data.length > 0) {
+            var isShowWholeGrade = 0;
+            for (var i = 0; i < data.length; i++) {
+                var wholeCommentEdithtml = '';
+                var _data = data[i];
+                //
+                var selectOptionArr =  _data.levelSelectVal;
+                //selectOptionArr中所有"含"字去除 20241213
+                var selectOptionArrWithoutScoreRange = new Array();
+                for(var j=0;j<selectOptionArr.length;j++){
+                    if(selectOptionArr[j].indexOf("含") == -1){
+                        selectOptionArrWithoutScoreRange.push(selectOptionArr[j]);
+                    }
+                }  
+                //将去除"含"字后的selectOptionArr赋值给_data.levelSelectVal
+                _data.levelSelectVal = selectOptionArrWithoutScoreRange.join("");
+                
+
+                isShowWholeGrade = _data.isShowWholeGrade; //获取当前节点是否可显示总分和总体评价
+                _perfGradeEvaluate = _data.perfGradeEvaluate; //整体评价等级是否允许评定
+                var _needScore = _data.needScore; //是否允许评分
+                var needScoreObj = new Object();
+                needScoreObj.gradeTaskNode = _data.gradeTaskNode;
+                needScoreObj.needScore = _needScore;
+                needScoreObj.indicatorComment = _data.indicatorComment;
+                needScoreObj.perfGradeEvaluate = _perfGradeEvaluate;
+                _gneedScoreArr.push(needScoreObj);
+                 
+                if (data[i].canEdit == 1) { //当前节点可评价
+                	  currentIsShowWholeGrade = isShowWholeGrade; //记录当前评分人是否可评总体评价
+                      _perfGradeEvaluate = _data.perfGradeEvaluate;
+                      // 重新定义一个新的变量,标识当前任务节点能否打等级,_perfGradeEvaluate赋值,使用到的地方太多了,可能会出问题 modified by Janeou_xie
+                      isShowDistribution = _data.perfGradeEvaluate
+                      _wholeComment = _data.wholeCommentIsMust;
+                      //currentWholeGrade = data[i].wholeGrade;
+                      currentWholeGrade = _data.scoreToLevel;
+                      
+                    wholeCommentEdithtml = wholeCommentEdithtml
+                        + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
+                        + '<span class="left textOverflow">' +_data.nodeName;
+
+                    //yien 判断是否展示处理人权重
+                    if(hideNodeWeight != 'true'){  
+                        wholeCommentEdithtml += '('+_data.nodeWeight + '%)';
+                    }
+                    wholeCommentEdithtml = wholeCommentEdithtml + (_data.nodeHandlerName == '' ? ':' : ':'+_data.nodeHandlerName );
+                    wholeCommentEdithtml = wholeCommentEdithtml + '(' + _data.personNodeWeight + '%)';
+                    wholeCommentEdithtml += '</span>';
+
+                    //判断是否可评价总分和等级
+                    if (isShowWholeGrade) {
+                    	var wholeScoreTmp = '';
+                    	if(_needScore == '1' || _needScore == '2'|| _needScore == '3'){
+                    		wholeScoreTmp = _data.wholeScore;
+                    	}
+                        var disabledClass = 'disabled="disabled"';
+                        if (_needScore == '3') {
+                            disabledClass = '';
+                        }
+                  
+                        wholeCommentEdithtml += '<div name="editScoreDiv" class="row1 paddingbox">';
+
+                        if (_perfGradeEvaluate == '1') {//允许打整体评价等级
+                            //wholeCommentEdithtml = wholeCommentEdithtml + '<label>等级:</label><span class="selectwrap">';
+			    wholeCommentEdithtml = wholeCommentEdithtml + '<label>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap">';
+                        } else {
+                            //wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">等级:</label><span class="selectwrap" style="display:none">';
+			    wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap" style="display:none">';
+                        }
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<select name="wholeGrade" id ="wholeGrade_' + _data.gradeTaskNode + '">'
+                            + '<option id="blackOp"></option>';
+                        var levelSelectValue = _data.levelSelectVal; //等级下拉选值value
+                        var levelSelectKey = _data.levelSelectKey; //等级下拉选key
+                        var selectOptionArr = new Array();
+                        var selectOptionKeyArr = new Array();
+                        if (levelSelectValue != null && levelSelectValue != '') {
+                            selectOptionArr = levelSelectValue.split(",");
+                            selectOptionKeyArr = levelSelectKey.split(",");
+                        }
+                        for (var j = 0; j < selectOptionArr.length; j++) {
+                            //yien 20191122 天虹私包 
+                            var _selectOptionKeyArr = selectOptionKeyArr[j];
+                            var _selectOptionArr = selectOptionArr[j];
+                            //不显示分数范围
+                            if (isShowLevelScoreRange == 0) {
+                                _selectOptionArr = getLevelWidthoutScoreRange(_selectOptionArr);
+                            }
+                            wholeCommentEdithtml = wholeCommentEdithtml + '<option id="' + _selectOptionKeyArr + '" value="' + _selectOptionKeyArr + '" title="' + _selectOptionArr + '">' + (_selectOptionArr) + '</option>';
+                        }
+                        wholeCommentEdithtml = wholeCommentEdithtml + '</select>'
+                            + '</span>';
+
+                                  // 评分流程节点设置不能评分,则隐藏总分 modify by janeou
+                        //20241213 <input '+ disabledClass +' id ="wholeScore_' + _data.gradeTaskNode 去除 disabledClass
+                        //var totalScoreDiv = _needScore == '0' ? '':'<div class="right">总分:<span id="totalScore" ' +
+			var totalScoreDiv = _needScore == '0' ? '':'<div class="right">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58+'<span id="totalScore" ' +
+            'gtnname="'+_data.gradeTaskNode+'"><input   id ="wholeScore_' + _data.gradeTaskNode + '" data-needScore="'+_needScore+'" value="'+wholeScoreTmp+'"> '  + '</input></span>';
+        totalScoreDiv = totalScoreDiv + '<div style="padding-left:1%"><span class="shorterinpwrap" id="MSG_SUMSCORE" style="max-width:300px;color:red"></span></div>';
+        wholeCommentEdithtml += totalScoreDiv ;
+        if (data[i].isVetoZero == 1) {
+            //wholeCommentEdithtml += '<span class="vetomsg">存在否决项</span></div>';
+wholeCommentEdithtml += '<span class="vetomsg">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
+        } else {
+            //wholeCommentEdithtml += '<span class="vetomsg" style="display:none">存在否决项</span></div>';
+wholeCommentEdithtml += '<span class="vetomsg" style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
+        }
+        wholeCommentEdithtml     += '</div>';
+                    }
+
+
+                    wholeCommentEdithtml = wholeCommentEdithtml + '<div name="editTextareaDivForWholeComment" gradeNode="' + _data.gradeTaskNode + '" class="row1 paddingbox longeditbox">'
+                        + '<label>'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
+                        '</label>';
+
+                    //yien:处理合并打分节点问题
+                    combineGradeTaskIds.push(_data.gradeTaskNode);
+
+                    if (_wholeComment == '1') {
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea id="curWholeComment" class="paddingbox required" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
+                        wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>';
+                    } else {
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea class="paddingbox" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
+                        wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>'
+                    }
+                    gradeTaskNode = _data.gradeTaskNode; //当前评估对象节点运行实例id
+                    scoreStatus = _data.scoreStatus;
+                    $('#wholeComment .details').append(wholeCommentEdithtml);
+
+                } else {
+                    if (_data.isVisible != '1') {
+                        continue;
+                    }
+                    controlAreaHtml = controlAreaHtml + '<div class="cutting_line">'
+                        + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
+                        + '<span class="left textOverflow">' +  _data.nodeName;
+                    //yien 增加判断是否展示处理人权重
+                    if(hideNodeWeight != 'true'){ 
+                        controlAreaHtml += '('+ _data.nodeWeight + '%)';
+                    }
+                    controlAreaHtml = controlAreaHtml + (data[i].nodeHandlerName == '' ? ':' : ':'+data[i].nodeHandlerName );
+                    controlAreaHtml = controlAreaHtml + '(' + _data.personNodeWeight + '%)';
+                    controlAreaHtml += '</span>';
+                    //判断是否显示总分和等级
+                    if (isShowWholeGrade) {
+                        //var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">总分:' + _data.wholeScore;
+			var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + _data.wholeScore;
+                        //如果节点不能评分,隐藏总分
+                        if (data[i].needScore == '0') {
+                            scoreDivHtml = '<div>';//增加一个div标签,不然格局有问题,打分过程中隐藏评分人参数失败
+                        }
+                        controlAreaHtml += scoreDivHtml;
+
+                        if (data[i].isVetoZero == 1) {
+                		controlAreaHtml += '<span style="margin-left:5px;color:red">'+
+	                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+
+	                        '</span></div>';
+                        } else {
+                            controlAreaHtml += '</div>';
+                        }
+                        controlAreaHtml += '<div name="editScoreDiv" class="row1 paddingbox" isself="' +_data.isSelf+ '">';
+                        if (_perfGradeEvaluate == '1') {//允许打整体评价等级
+                            controlAreaHtml = controlAreaHtml + '<label>'+
+                                jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+
+                                '</label>'
+                                + '<span style="float: left;">'
+                                + (data[i].wholeGrade)
+                                + '</span>'
+                        }
+                        controlAreaHtml = controlAreaHtml + '</div>';
+                    }
+                    controlAreaHtml = controlAreaHtml + '<div name="editTextareaDiv" class="row1 paddingbox">'
+                        + '<label>'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
+                        '</label>'
+                        + '<span class="longinpwrap evaluate"><textarea disabled="disabled" class="paddingbox" >' + _data.wholeComment + '</textarea></span>'
+                        + '</div></div>';
+                }
+            }
+        }
+        controlAreaHtml = controlAreaHtml + "</div>";
+
+        if (data.length == 1 && data[0].canEdit == 1) {
+            $('.controller').hide();
+        } else {
+            wholeCommentHtml = wholeCommentHtml + controlAreaHtml;
+            $(wholeCommentHtml).appendTo($('#wholeComment .scoreContentboxwrap'));
+            //$('#wholeComment .controller').click();
+        }
+        if (data) {
+            for (var i = 0; i < data.length; i++) {
+                if (data[i].scoreToLevel) {
+                    $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].scoreToLevel + "']").attr("selected", "selected");
+                } else {
+                    $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].wholeGrade + "']").attr("selected", "selected");
+                }
+                $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').attr('title', $('#wholeGrade').find("option:selected").text());
+            }
+        }
+        if (currentWholeGrade == '') {
+            blackOp = "blackOp";
+        }
+        that.spreadScore();
+        $('.spreadothers').trigger('click');
+        it.levelSwitchChange();
+        //整体评价中是否允许修改等级
+        if ( isManualJudgeGrade==2) {
+            $("[name='wholeGrade']").attr("disabled", "disabled");
+        }
+        //总分校验
+        $("#totalScore").find("input").blur(function () {
+            sumSocreOnblur(this);
+            /**
+             * 自动计算等级
+             */
+            var grade = $("#wholeComment").find("select").val();
+            //20241214去除自动计算; 输入什么要什么
+            // if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
+            //   //  var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
+            //     //    "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
+            //     that.remoteCall({
+            //         method: "getLeaveByScore",
+            //         async: false,
+            //         param: {
+            //             nodeSumScore:  $(this).val(),
+            //             id:gradeTaskNode,
+            //             shruicode:shr.getUrlRequestParam("shruicode")
+            //         },
+            //        // data: {"nodeSumScore": $(this).val(), "id": gradeTaskNode},
+            //         success: function (data) {
+            //             //这里的结果类似 {data: "差E"}
+            //             console.log(data);
+            //             if (data.data) {
+            //                 $("#wholeComment").find("select").find('option').attr('selected', false);
+            //                 $("#wholeComment").find("select").find("option[value='" + data.data + "']").attr('selected', true);
+            //                 //$("#wholeComment").find("select").val(data.data);
+            //                 $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+            //             }
+            //         }
+            //     });
+            // }
+
+        });
+
+        //考核结果显示控制
+        if(typeof initScoreDetailResultShow == 'function') {
+            initScoreDetailResultShow();
+        }
+    },
+
+
+
+
+    // 事件绑定
+    bindEvent: function(){
+        if (_needScore != "3") {
+            //20241213
+            // $("#totalScore").find("input").attr("disabled", "disabled");
+        }
+        // 查看其他人打分
+        // $('.view_other_btn').die('click').live('click',function(){
+        // 	var tabid = $(this).closest('table').attr('id');
+        //     var rowid = $(this).closest('tr').attr('id');
+        //     var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
+        //     var msgdata = it.getCurrentAndPrevScoreMsg(rowid);
+        //     it.openOtherScoreDialog(msgdata,rowData);
+        //     that.personHistoryParamControl();
+        // })
+        $('.expend-btn').die('click').live('click',function(){
+            // var ul = $(this).closest('td').find('ul');
+            // if(ul.hasClass('show-more')){
+            //     ul.removeClass('show-more');
+            // }else{
+            //     ul.addClass('show-more');
+            // }
+            var pre = $(this).closest('td').find('pre');
+            if(pre.hasClass('textOverflow3')){
+                pre.removeClass('textOverflow3');
+            }else{
+                pre.addClass('textOverflow3');
+            }
+        })
+        // 编辑指标评语字段
+//         $('.commentcell').die('click').live('click',function(){
+//             //打总分不能输入指标评语
+//             if (_needScore == '3') {
+//                 return;
+//             }
+//             var tabid = $(this).closest('table').attr('id');
+//             var rowid = $(this).closest('tr').attr('id');
+//             var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
+//             it.openCommentDialog(tabid,rowid,rowData);
+//         })
+        // 点击序号,查看指标其他字段
+        $('.scoretabs tr').die('click').live('click',function(){
+            var areaIndex = $(this).closest('table').attr('areaindex');
+            var areadata = globalIndicatorData.rows.evaAreaList[areaIndex];
+            var trIndex = $(this).index() - 1;
+            var indicatorDatalist = areadata.evaIndicatorList || areadata.evaRecordList;
+            var indicatorData = indicatorDatalist[trIndex];
+            var isClosedPrev = $('.fieldsboxhide:visible').hasClass('small');
+            indicatorData.areaType = areadata.areaType;
+            indicatorData.scoringWay = areadata.scoringWay;
+            indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
+            $('.fieldsboxhide').hide();
+            if($(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).length > 0){
+                // $('.fieldsboxhide[indid="'+indicatorData.FID+'"]').show();
+                _thisbox =  $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]'));
+                if(_thisbox.find('.field-line').length > 0){
+                    _thisbox.show();
+                }
+            }else{
+                indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
+                _thisbox = $(indicatorDetailHTML);
+                if(_thisbox.find('.field-line').length > 0){
+                    _thisbox.show();
+                    $(indicatorDetailHTML).appendTo($('.indicator-box'));
+                }
+                $('.fieldsboxhide').css({
+                    'height': $('.centercontainer').height() + 'px'
+                })
+                if(it.fixedboxWidth){
+                    $('.fieldsboxhide').css({
+                        'width': it.fixedboxWidth + 'px'
+                    })
+                }
+                // if($('.fieldsboxhide:visible').find('.field-line').length == 0){
+                //     $('.fieldsboxhide:visible').find('.emptywrap').show();
+                // }
+            }
+            var isClosedCurr = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).hasClass('small');
+            if(isClosedPrev){   // 其他信息是否展开控制
+                if(!isClosedCurr){
+                    $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).addClass('small');
+                }
+                $('.centercontainer').addClass('big');
+            }else{
+                if(isClosedCurr){
+                    $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).removeClass('small');
+                }
+                $('.centercontainer').removeClass('big');
+            }
+            $('.scoretabs').each(function(index){
+                var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+                $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+            })
+        })
+        // 指标其他字段框控制按钮点击事件
+        $('.fixedboxctrlbtn').die('click').live('click',function(){
+            var fixedbox = $(this).closest('.fieldsboxhide');
+            var centerbox = $('.centercontainer');
+            if($(this).hasClass('isclose')){
+                centerbox.removeClass('big');
+                fixedbox.removeClass('small');
+                $(this).removeClass('isclose');
+            }else{
+                centerbox.addClass('big');
+                fixedbox.addClass('small');
+                $(this).addClass('isclose');
+            }
+            $('.scoretabs').each(function(index){
+                var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+                $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+            })
+        })
+
+        it.bindDragEvent()
+
+    },
+    
+
+
+
+
+/*
+     * 保存打分
+     * @param isShowMsg 是否展示提示信息
+     * @param isEditGradesChange 是否下拉选引起的打分保存操作
+     * */
+doSaveScore: function (isShowMsg, isEditGradesChange) {
+    if (_clicked) {
+        return;
+    }
+    _clicked = true;
+    //防止连击,设置过1s后点击才有效
+    setTimeout(function () {
+        _clicked = false;
+    }, 1000);
+
+    if (_noPassVerifyArr.length > 0) {
+        shr.showWarning({message: _noPassVerifyArr[0].errortext});
+        //自动点击第一条评分不通过的指标
+        $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
+        return false;
+    }
+//
+//        var canSubmit = false;
+//        var isAsync = false;
+    //组装评分数据
+    //组装评分数据
+    var scoreObj = that.assembleScoreData();
+    if(!scoreObj){
+        return false;
+    }
+    var ids = new Array();
+    for (var i = 0; i < scoreObj.length; i++) {
+        ids.push(scoreObj[i].gradeTaskNode);
+    }
+
+    if (scoreObj[0].targetValError) {
+        shr.showError({
+            //jsBizMultLan 请检查目标值值输入是否正确
+            message :jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
+            hideAfter: 3
+        });
+        return false;
+    }
+    if (scoreObj[0].actValError) {
+        shr.showError({
+            message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
+            hideAfter: 3
+        });
+        return false;
+    }
+    if (scoreObj[0].desError) {
+        shr.showError({
+            message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+        [2000]),
+            hideAfter: 3
+        });
+        return false;
+    }
+    //1、判断节点是否可被提交
+    that.remoteCall({
+        method: "judgeIsCanSubmit",
+        param: {
+            gradeTaskNode: ids.toString(),
+            evaObj: evaObj,
+            scoreObj: JSON.stringify(scoreObj)
+        },
+        async: false,
+        success: function (result) {
+            for (var i = 0; i < scoreObj.length; i++) {
+                for (var j = 0; j < result.length; j++) {
+                    if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
+                        data = result[j];
+                    }
+                    if (data != null && data.canSubmit == true) {
+                        //保存评分
+                    } else {
+                        if (isShowMsg == '1') {
+                            shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_11});
+                        }
+                        return false;
+                    }
+                }
+            }
+
+            that.remoteCall({
+                method: "saveScore",
+                param: {
+                    needScore:_needScore,
+                    scoreObj: JSON.stringify(scoreObj)
+                },
+                async: false,
+                success: function (data) {
+                    if (data != null && data.result == '200') {
+                        if (_needScore == "3") {
+                            shr.showInfo({message: $.perfwebI18n.commonMsg.msg3});
+                            //window.location.reload();
+                            //it.initLeftList();//左侧列表
+                            $("li[workerid='" + evaObj + "']").removeClass("current");
+                            $("li[workerid='" + evaObj + "']").click();
+                            return;
+                        }
+                        //$("li[workerid='"+evaObj+"']").click();//指哪打哪
+                        isFirstInit = 0;
+                       /* if (isEditGradesChange != 1) {
+                            it.initRightContent();//右侧内容
+                        }*/
+
+                        if (entryType == 'myview') {
+                            $('.content_right').css({
+                                'width': '100%',
+                                'margin-right': '0'
+                            });
+                        } else if (entryType == 'myselfEvalu') {//个人目标评分入口
+                            $('.content_right').css({
+                                'width': '100%',
+                                'margin-right': '0'
+                            });
+                        } else {//团队目标评分入口
+                            $('.view_manager_body').css('background', '#EDEFF4');
+                        }
+
+                       // it.initPersonalInformation(); //评估对象个人信息
+                        nodeSumScore = data.nodeSumScore;
+                        nodeGrade = data.nodeGrade;
+                        var sumScoreText = nodeSumScore;
+                        var nodeGradeText = nodeGrade;
+                        if (null != sumScoreText) {
+                            if(data.gradetaskNode.length<2){
+                                $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeSumScore']").text(sumScoreText);
+                                $("#totalScore").find("input").val(sumScoreText);
+                            }
+                            //TODO
+                            //$("#totalScore").text(sumScoreText);
+                        }
+                       if (null != nodeGradeText) {
+                            if(data.gradetaskNode.length<2){
+                              for(var j=0; j<_gneedScoreArr.length;j++){
+                                if(data.gradetaskNode == _gneedScoreArr[j].gradeTaskNode){
+                                   _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                                   break;
+                                }
+                              }
+                              if(_perfGradeEvaluate != 0){
+                                  $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeGrade']").text(nodeGradeText);
+                              }
+                                $("select[id='wholeGrade_" +gradeTaskNode+ "']").val(nodeGradeText);
+                            }
+                        }
+
+                        // var nodeSumScoreList = data.nodeSumScoreList;
+                        // var gtnLen = nodeSumScoreList.length;
+                        // for(var i=0; i<gtnLen; i++){
+                        //     var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
+                        //     // if(null != nsumscore && "" != nsumscore){
+                        //         $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
+                        //         $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
+                        //     // }else{
+                        //     // 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').val("");
+                        //     // }
+                        // }
+                        
+                        //第一节点隐藏"打回"按钮
+                        if (currentNodeLevel == 1) {
+                            $("#backTo").css("display", "none");
+                        }
+                        if (isShowMsg == '1') {
+                            shr.showInfo({message: data.msg});
+                        }
+                    } else {
+                        if (isShowMsg == '1') {
+                            shr.showWarning({message: data.msg});
+                        }
+                    }
+                }
+            });
+        }
+    });
+    if (scoreObj.wholeComment != null && scoreObj.wholeComment != undefined && scoreObj.wholeComment.length > 2000) {
+        //shr.showWarning({message: '整体评价中的评价内容已超过最大长度2000个汉字,请重新输入!'});
+        shr.showWarning({message :shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,[2000])});
+    return false;
+    }
+},
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
      
 });
+
+function getDefaultScoreData (gradeTaskNode,levelName){
+
+    // var that = this;
+    var scoreObj = that.assembleScoreData();
+    if(!scoreObj && scoreObj[0] == null){
+        return false;
+    }
+    let evaObjVal =scoreObj[0].evaObj;
+    that.remoteCall({
+        method: "getDefaultScore",
+        param: {
+            levelName:levelName,
+            evaObjVal: evaObjVal
+        },
+        async: false,  //不能使用异步,下面要使用结果数据计算等级
+        success: function (data) {
+            if (data != null && data.default  ) {
+                var newscore = data.default;
+                calcTotoalScore_cus(gradeTaskNode,newscore);
+                	 
+            }
+        }
+    });
+
+
+
+}
+
+
+//计算总分
+function calcTotoalScore_cus(startGradeTaskNode,newscore) {
+    if (_noPassVerifyArr.length > 0) {
+        // shr.showWarning({message: _noPassVerifyArr[0].errortext});
+        // //自动点击第一条评分不通过的指标
+        // $("li[numval='" + _noPassVerifyArr[0].indicator + "']").click();
+        return false;
+    }
+    // $(lastTable).jqGrid("saveCell",lastrow,lastcell);
+    $('.scoretabs').each(function(index,tab){
+        $(tab).jqGrid('editStop');
+    })
+    var scoreObj = that.assembleScoreData();
+    if(!scoreObj){
+        return false;
+    }
+    //组装评分数据 二开 202412 改造
+    scoreObj[0].sumScore = newscore;
+    var nodeSumScoreList;
+    //保存评分
+    that.remoteCall({
+        /* method: "calcTotalScore",
+         param: {
+             scoreObj: JSON.stringify(scoreObj)
+         },*/
+        method: "saveScore",
+        param: {
+            needScore:_needScore,
+            scoreObj: JSON.stringify(scoreObj)
+        },
+        async: false,  //不能使用异步,下面要使用结果数据计算等级
+        success: function (data) {
+            if (data != null && data.result == '200') {
+                nodeSumScore = data.nodeSumScore;
+                nodeGrade = data.nodeGrade;
+                matrixDetail = data.detail;
+                nodeSumScoreList = data.nodeSumScoreList;
+                var gtnLen = nodeSumScoreList.length;
+                for(var i=0; i<gtnLen; i++){
+                	// var nsumscore = nsumscore == "" ? nsumscore.toFixed(2) : '';
+                	// if(null != nsumscore && "" != nsumscore){
+                    //newscore转为数值类型
+                    //newscore = parseFloat(newscore);
+                    var newscore_num = newscore == "" ? newscore : Number(newscore);
+                        nodeSumScoreList[i].nodeSumscore = newscore_num;
+                        $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(newscore_num);
+                        $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(newscore_num);
+                	// }else{
+                	// 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
+                	// }
+                	var isVetoZero = nodeSumScoreList[i].isVetoZero;
+                	if(isVetoZero == '1'){
+                		$($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().show();
+                	}else{
+                		$($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().hide();
+                	}
+                	
+                	if(nodeSumScoreList[i].nodeGrade){
+                        $('[id="wholeGrade_' + nodeSumScoreList[i].gradeTaskNode+ '"]').find("option[id='" + nodeSumScoreList[i].nodeGrade + "']").attr("selected", "selected");
+                        $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeGrade']").text(nodeSumScoreList[i].nodeGrade);
+               	 	}
+                }
+            }
+        }
+    });
+    /**
+     * 自动计算等级
+     */
+    //202412 不自动计算等级 定制
+    // var grade = $("#wholeComment").find("select").val();
+    // if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
+    //   //  var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
+    //  //       "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
+    //     if(nodeSumScoreList){
+    //         for(var i=0; i< nodeSumScoreList.length; i++){
+    //             that.remoteCall({
+    //                 method: "getLeaveByScore",
+    //                 async: false,
+    //                 param: {
+    //                     nodeSumScore: $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(),
+    //                     id: nodeSumScoreList[i].gradeTaskNode
+    //                 },
+    //                 //data: {"nodeSumScore":  $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(), "id": nodeSumScoreList[i].gradeTaskNode},
+    //                 success: function (data) {
+    //                     //这里的结果类似 {data: "差E"}
+    //                     console.log(data);
+    //                     if (data.data) {
+    //                         $("#wholeComment").find("select").find('option').attr('selected', false);
+    //                         $("#wholeComment").find("[id='wholeGrade_"+nodeSumScoreList[i].gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
+    //                         //$("#wholeComment").find("select").val(data.data);
+    //                         $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+    //                     }
+    //                 }
+    //             });
+    //         }
+    //     }else{
+    //         that.remoteCall({
+    //             method: "getLeaveByScore",
+    //             async: false,
+    //             param: {
+    //                 nodeSumScore:  $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(),
+    //                 id:gradeTaskNode
+    //             },
+    //             data: {"nodeSumScore":  $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(), "id": gradeTaskNode},
+    //             success: function (data) {
+    //                 //这里的结果类似 {data: "差E"}
+    //                 console.log(data);
+    //                 if (data.data) {
+    //                     $("#wholeComment").find("select").find('option').attr('selected', false);
+    //                     $("#wholeComment").find("[id='wholeGrade_"+gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
+    //                     //$("#wholeComment").find("select").val(data.data);
+    //                     $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+    //                 }
+    //             }
+    //         });
+    //     }
+
+    // }
+}
+
+
+
+
+function  _checkScore    (evaObjVal,selectTitle,totalScoreVal) {
+    // var _self = this;
+    let issok = true;
+ if( "" == selectTitle || undefined == totalScoreVal ){
+     return issok;
+ }
+ that.remoteCall({
+     method: "checkGradeHas",
+     param: {
+         levelName:selectTitle,
+         scoreVal:totalScoreVal,
+         evaObjVal: evaObjVal
+     },
+     async: false,  //不能使用异步,下面要使用结果数据计算等级
+     success: function (data) {
+         if (data != null && data.has != null  ) {
+            issok =  data.has == 0 ? false : true;
+         }
+     },
+     error:function(response){
+         console.log(response);
+    }
+ });
+
+ return issok;
+
+}

+ 1185 - 0
src/com/kingdee/shr/perfweb/app/workflow/PerfWorkFlowFacadeControllerBeanEx.java

@@ -0,0 +1,1185 @@
+package com.kingdee.shr.perfweb.app.workflow;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.*;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.metadata.entity.*;
+import com.kingdee.bos.metadata.query.util.CompareType;
+import com.kingdee.bos.util.BOSUuid;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.framework.CoreBaseCollection;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.base.syssetting.app.filter.HRFilterUtils;
+import com.kingdee.shr.perfweb.app.base.evalplan.*;
+import com.kingdee.shr.perfweb.app.base.evalrule.*;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.IPerfScorLevelDefine;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineCollection;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineFactory;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScorLevelDefineInfo;
+import com.kingdee.shr.perfweb.app.base.perfmancescore.PerfScoreLevelInfo;
+import com.kingdee.shr.perfweb.app.common.CustomerDevConfigCollection;
+import com.kingdee.shr.perfweb.app.common.CustomerDevConfigFactory;
+import com.kingdee.shr.perfweb.app.common.ICustomerDevConfig;
+import com.kingdee.shr.perfweb.app.common.YesOrNoEnum;
+import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException;
+import com.kingdee.shr.perfweb.app.resource.SHRPerfWebResource;
+import com.kingdee.shr.perfweb.app.workflow.PerfWorkFlowFacadeControllerBean;
+import com.kingdee.shr.perfweb.bean.PerfScoreBean;
+import com.kingdee.shr.perfweb.bean.PerfScoreList;
+import com.kingdee.shr.perfweb.portal.serviceImpl.PerfGoasFillService;
+import com.kingdee.shr.perfweb.util.*;
+import com.kingdee.shr.perfweb.utils.PerfPlanUtils;
+import com.kingdee.shr.perfweb.utils.PerfWorkFlowUtils;
+import com.kingdee.shr.perfweb.utils.PerfwebStrUtils;
+import com.kingdee.shr.perfweb.workflow.serviceImpl.WorkFlowEngine;
+import com.kingdee.shr.perfweb.workflowext.CustomerPerfwebWorkFlowFactory;
+import com.kingdee.shr.perfweb.workflowext.ICustomerPerfwebWorkFlow;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
+
+
+/**
+ * 绩效定制需求
+ * 20241216
+ * @author coyle
+ */
+public class PerfWorkFlowFacadeControllerBeanEx  extends PerfWorkFlowFacadeControllerBean {
+	
+	private static final Logger logger = LoggerFactory .getLogger(PerfWorkFlowFacadeControllerBeanEx.class);
+
+
+ 
+    public static PerfWorkFlowFacadeControllerBeanEx getInstance() {
+        return PerfWorkFlowFacadeControllerBeanEx.PerfWorkFlowFacadeControllerBeanInst.instance;
+    }
+	
+	   public static class PerfWorkFlowFacadeControllerBeanInst {
+		   private static final PerfWorkFlowFacadeControllerBeanEx instance = new PerfWorkFlowFacadeControllerBeanEx();
+		   public PerfWorkFlowFacadeControllerBeanInst() {
+		   }
+	   }
+
+	public String saveScore(Context ctx, PerfScoreList scoreList) {
+		try {
+			String needScore = scoreList.getNeedScore();
+			String sumScore = scoreList.getSumScore();
+			if (!this.isNodeHandlerValid(ctx, scoreList.getGradeTaskNode())) {
+				return ServerResponseConst.INVALID;
+			}
+
+			IGradeTargetInst igradeTargetInst = GradeTargetInstFactory.getLocalInstance(ctx);
+			CoreBaseCollection gradeTargetCollection = new CoreBaseCollection();
+			Map<String, Object> targetValues = new HashMap();
+			Set<String> indicatorIdSet = new HashSet(16);
+			String scoreOrRate = "";
+			Set<String> gradeSet = new HashSet();
+			Iterator var11 = scoreList.getScoreList().iterator();
+
+			while(var11.hasNext()) {
+				PerfScoreBean scoreBean = (PerfScoreBean)var11.next();
+				String sourceIndicator = scoreBean.getIndicatorId();
+				String indicatorId = scoreBean.getIndicatorId().substring(0, sourceIndicator.lastIndexOf("Itag0"));
+				indicatorIdSet.add(indicatorId);
+				targetValues.put(indicatorId, scoreBean);
+				scoreOrRate = scoreBean.getScoreOrRate();
+				gradeSet.add(scoreBean.getNodeGrade());
+			}
+
+			EntityViewInfo evi = new EntityViewInfo();
+			FilterInfo filter = new FilterInfo();
+			filter.getFilterItems().add(new FilterItemInfo("gradeTaskNode", scoreList.getGradeTaskNode(), CompareType.EQUALS));
+			filter.getFilterItems().add(new FilterItemInfo("evaObj", scoreList.getEvaObj(), CompareType.EQUALS));
+			filter.getFilterItems().add(new FilterItemInfo("target", indicatorIdSet, CompareType.INCLUDE));
+			evi.setFilter(filter);
+			SelectorItemCollection indSic = new SelectorItemCollection();
+			indSic.add(new SelectorItemInfo("*"));
+			indSic.add(new SelectorItemInfo("areaBase.performanceRule"));
+			indSic.add(new SelectorItemInfo("areaBase.subAreaType"));
+			indSic.add(new SelectorItemInfo("areaBase.id"));
+			evi.setSelector(indSic);
+			this.updateEditActValues(ctx, targetValues, indicatorIdSet, true);
+			Set<String> indicatorTargetIds = new HashSet();
+			Set<String> recordTargetIds = new HashSet();
+			GradeTargetInstCollection gtInstColl = GradeTargetInstFactory.getLocalInstance(ctx).getGradeTargetInstCollection(evi);
+			Map<String, GradeTargetInstInfo> gtInstMap = new HashMap(16);
+			String ruleId = "";
+			if (null != gtInstColl && gtInstColl.size() > 0) {
+				int gtInstSize = gtInstColl.size();
+
+				for(int i = 0; i < gtInstSize; ++i) {
+					GradeTargetInstInfo gradeTargetInstInfo = gtInstColl.get(i);
+					if (TargetTypeEnum.INDICATOR == gradeTargetInstInfo.getTargetType()) {
+						indicatorTargetIds.add(gradeTargetInstInfo.getTarget());
+					} else if (TargetTypeEnum.RECORD == gradeTargetInstInfo.getTargetType()) {
+						recordTargetIds.add(gradeTargetInstInfo.getTarget());
+					}
+
+					gtInstMap.put(gradeTargetInstInfo.getGradeTaskNode().getId().toString() + "#" + gradeTargetInstInfo.getTarget(), gradeTargetInstInfo);
+					ruleId = gradeTargetInstInfo.getAreaBase().getPerformanceRule().getId().toString();
+				}
+			}
+
+			Map<String, IndicatorExtendHelperInfo> targetExtendMap = this.getTargetExtendMapByTargetIds(ctx, indicatorTargetIds, recordTargetIds);
+			CoreBaseCollection extendHelperCollection = new CoreBaseCollection();
+			Map<String, IndicatorTargetInfo> indicatorTargetInfoMap = new HashMap();
+			Map<String, Float> gradeScoreMap = new HashMap();
+			if (scoreOrRate.equals("0")) {
+				IndicatorTargetCollection indicatorTargetCollection = IndicatorTargetFactory.getLocalInstance(ctx).getIndicatorTargetCollection("select id, qualiOrRation, scoringFormula WHERE ID in (" + PerfwebStrUtils.convertListToString(indicatorIdSet.toArray()) + ")");
+				if (indicatorTargetCollection != null && indicatorTargetCollection.size() > 0) {
+					indicatorTargetInfoMap = new HashMap(indicatorTargetCollection.size());
+
+					for(int i = 0; i < indicatorTargetCollection.size(); ++i) {
+						IndicatorTargetInfo indicatorTargetInfo = indicatorTargetCollection.get(i);
+						indicatorTargetInfoMap.put(indicatorTargetInfo.getId().toString(), indicatorTargetInfo);
+					}
+				}
+			} else {
+				gradeScoreMap = PerfWorkFlowUtils.getDefaultScoreByPerfRate(ctx, ruleId, gradeSet, "0");
+			}
+
+			Iterator var49 = scoreList.getScoreList().iterator();
+
+			String isRejection;
+			while(var49.hasNext()) {
+				PerfScoreBean scoreBean = (PerfScoreBean)var49.next();
+				String sourceIndicator = scoreBean.getIndicatorId();
+				String indicatorId = scoreBean.getIndicatorId().substring(0, sourceIndicator.lastIndexOf("Itag0"));
+				if (!StringUtils.isEmpty(scoreBean.getScore())) {
+					scoreBean.setScore(scoreBean.getScore().trim());
+				} else {
+					scoreBean.setScore((String)null);
+				}
+
+				GradeTargetInstInfo gradeTargetInfo = (GradeTargetInstInfo)gtInstMap.get(scoreList.getGradeTaskNode() + "#" + indicatorId);
+				if (null != gradeTargetInfo) {
+					if (scoreOrRate.equals("0")) {
+						if ("200".equals(gradeTargetInfo.getTargetType().getValue())) {
+							IndicatorTargetInfo targetInfo = (IndicatorTargetInfo)indicatorTargetInfoMap.get(indicatorId);
+							if (targetInfo != null && (targetInfo.getQualiOrRation().getValue() == 0 || StringUtils.isEmpty(targetInfo.getScoringFormula()) && targetInfo.getQualiOrRation().getValue() == 1)) {
+								if (!StringUtils.isEmpty(scoreBean.getScore())) {
+									gradeTargetInfo.setTargetScore(Float.parseFloat(scoreBean.getScore()));
+								} else {
+									gradeTargetInfo.put("targetScore", (Object)null);
+								}
+							}
+						} else if (!StringUtils.isEmpty(scoreBean.getScore())) {
+							gradeTargetInfo.setTargetScore(Float.parseFloat(scoreBean.getScore()));
+						} else {
+							gradeTargetInfo.put("targetScore", (Object)null);
+						}
+					} else {
+						gradeTargetInfo.setGradeRank(scoreBean.getNodeGrade());
+						if (gradeTargetInfo.getAreaBase().getId() != null) {
+							EvaluFormAreaBaseInfo areaBaseInfo = gradeTargetInfo.getAreaBase();
+							if (areaBaseInfo.getPerformanceRule().getId() != null) {
+								float score = ((Map)gradeScoreMap).get(scoreBean.getNodeGrade()) == null ? 0.0F : (Float)((Map)gradeScoreMap).get(scoreBean.getNodeGrade());
+								if (SubAreaTypeEnum.ADDSUB.equals(areaBaseInfo.getSubAreaType()) && StringUtils.isNotEmpty(scoreBean.getScore())) {
+									score = Double.valueOf(scoreBean.getScore()).floatValue();
+								}
+
+								gradeTargetInfo.setTargetScore(score);
+								scoreBean.setScore(String.valueOf(score));
+							}
+						}
+					}
+
+					gradeTargetInfo.setComment(scoreBean.getComment());
+					Map<String, Map<String, String>> extendInfo = scoreBean.getExtendInfo();
+					if (!CollectionUtils.isEmpty(extendInfo)) {
+						IndicatorExtendHelperInfo extendHelperInfo = null;
+						if (!CollectionUtils.isEmpty(targetExtendMap)) {
+							extendHelperInfo = (IndicatorExtendHelperInfo)targetExtendMap.get(indicatorId);
+							extendHelperCollection.add(extendHelperInfo);
+						}
+
+						Iterator var30 = extendInfo.keySet().iterator();
+
+						while(var30.hasNext()) {
+							String colName = (String)var30.next();
+							if ("0".equals(((Map)extendInfo.get(colName)).get("fillOverwrite"))) {
+								gradeTargetInfo.put(colName.substring(1), ((Map)extendInfo.get(colName)).get("value"));
+							} else if ("1".equals(((Map)extendInfo.get(colName)).get("fillOverwrite")) && extendHelperInfo != null) {
+								extendHelperInfo.put(colName.substring(1), ((Map)extendInfo.get(colName)).get("value"));
+							}
+						}
+					}
+
+					gradeTargetInfo.setScoreStatus(ScoreStatusEnum.JUSTSAVE);
+					isRejection = scoreBean.getIsRejection();
+					if (!StringUtils.isEmpty(isRejection)) {
+						gradeTargetInfo.setIsRejection(YesOrNoEnum.getEnum(Integer.parseInt(isRejection)));
+					}
+
+					gradeTargetCollection.add(gradeTargetInfo);
+				}
+			}
+
+			igradeTargetInst.updateBatchData(gradeTargetCollection);
+			if (extendHelperCollection.size() > 0) {
+				IndicatorExtendHelperFactory.getLocalInstance(ctx).updateBatchData(extendHelperCollection);
+			}
+			//标记
+			GradeTaskNodeInstCollection gradeTaskNodeColl = GetEntityInfoUtils.getGradeTaskNodeInstCollection(ctx, scoreList.getGradeTaskNode());
+			if (gradeTaskNodeColl != null && gradeTaskNodeColl.size() > 0) {
+				GradeTaskNodeInstInfo gTaskNodeInstInfo = gradeTaskNodeColl.get(0);
+				List<String> annexList = scoreList.getAnnexList();
+				List<String> annexIdList = scoreList.getAnnexIdList();
+				String nodeSumscore;
+				if (annexList != null) {
+					try {
+						PerfEvaObjectInfo evaObj = gTaskNodeInstInfo.getEvaObj();
+						nodeSumscore = null;
+						if (evaObj != null) {
+							nodeSumscore = gTaskNodeInstInfo.getEvaObj().getId().toString();
+						}
+
+						isRejection = gTaskNodeInstInfo.getId().toString();
+						AttachmentUtil.saveAttachments(ctx, nodeSumscore, isRejection, annexList, annexIdList);
+					} catch (Exception var40) {
+						logger.error("saveAttachments err:" + var40);
+					}
+				}
+
+				HashMap<String, String> sumscoreMap = this.calcNodeSumScore(ctx, scoreList.getGradeTaskNode(), gTaskNodeInstInfo.getEvaObj().getId().toString());
+				nodeSumscore = (String)sumscoreMap.get("sumScore");
+				WFNodeDefInfo wfNodeInfo = GetEntityInfoUtils.getWFNodeDefInfo(ctx, gTaskNodeInstInfo.getWfNode().getId().toString());
+				String isNeedScore = wfNodeInfo.getNeedScore().getValue();
+				//20241213  定制需求,总分按手动输入时的保存
+				if (!StringUtils.isEmpty(sumScore)) {
+					if (isNeedScore.equals("0")) {
+						gTaskNodeInstInfo.put("nodeSumScore", (Object)null);
+					} else {
+						gTaskNodeInstInfo.setNodeSumScore(PerfPortalUtils.roudUpRemainGiveDecimal(2, Float.valueOf(sumScore)));
+					}
+				} else {
+					gTaskNodeInstInfo.put("nodeSumScore", (Object)null);
+				}
+
+				if (!gTaskNodeInstInfo.getScoreStatus().getValue().equals("2")) {
+					gTaskNodeInstInfo.setScoreStatus(ScoreStatusEnum.JUSTSAVE);
+				}
+
+				gTaskNodeInstInfo.setTaskStatus(TaskStatusEnum.DEALING);
+				boolean gradeCarryToNextFlag = false;
+				WFNodeDefCollection wfNodeDefCollection = WFNodeDefFactory.getLocalInstance(ctx).getWFNodeDefCollection("where workflow = '" + wfNodeInfo.getWorkflow().getId().toString() + "' and level =" + (wfNodeInfo.getLevel() - 1));
+				String nodeGrade;
+				if (wfNodeDefCollection != null && wfNodeDefCollection.size() > 0) {
+					int size = wfNodeDefCollection.size();
+
+					for(int i = 0; i < size; ++i) {
+						nodeGrade = wfNodeDefCollection.get(i).getGradeCarryToNext();
+						if ("1".equals(nodeGrade)) {
+							gradeCarryToNextFlag = true;
+							break;
+						}
+					}
+				}
+
+				String isManualJudgeGrade = PerfConfigUtils.getConfigByName(ctx, "isManualJudgeGrade", false);
+				if (!StringUtils.isEmpty(scoreList.getIsEditGrade()) && scoreList.getIsEditGrade().equals("0") && !gradeCarryToNextFlag || isManualJudgeGrade.equals("0") || isManualJudgeGrade.equals("2")) {
+					PerformanceRuleInfo ruleInfo = GetEntityInfoUtils.getPerformanceRuleInfoByEvaObjNew(ctx, gTaskNodeInstInfo.getEvaObj().getId().toString());
+					if (!StringUtils.isEmpty(nodeSumscore) && isManualJudgeGrade.equals("2")) {
+						nodeGrade = (new PerfGoasFillService()).getCurrentSelectVal(ctx, ruleInfo.getPerfRate().getId().toString(), Float.valueOf(nodeSumscore));
+						scoreList.setWholeGrade(nodeGrade);
+					}
+				}
+
+				if (GradeEvaNeedEnum.NO.equals(wfNodeInfo.getPerfGradeEvaluate())) {
+					scoreList.setWholeGrade((String)null);
+				}
+
+				if (scoreList.getWholeGrade() != null) {
+					gTaskNodeInstInfo.setNodeGrade(scoreList.getWholeGrade());
+				} else {
+					gTaskNodeInstInfo.setNodeGrade((String)null);
+				}
+
+				SelectorItemCollection sic = new SelectorItemCollection();
+				sic.add(new SelectorItemInfo("scoreStatus"));
+				sic.add(new SelectorItemInfo("nodeSumScore"));
+				sic.add(new SelectorItemInfo("taskStatus"));
+				sic.add(new SelectorItemInfo("nodeGrade"));
+				IGradeTaskNodeInst igradeTaskNodeInst = GradeTaskNodeInstFactory.getLocalInstance(ctx);
+				if ("3".equals(needScore) && StringUtils.isNotBlank(sumScore)) {
+					gTaskNodeInstInfo.setNodeSumScore(Float.valueOf(sumScore));
+				}
+
+				igradeTaskNodeInst.updatePartial(gTaskNodeInstInfo, sic);
+				IWholeComment iWholeComment = WholeCommentFactory.getLocalInstance(ctx);
+				WholeCommentCollection wholeCommentColl = iWholeComment.getWholeCommentCollection(" where gradeTaskNodeInst='" + gTaskNodeInstInfo.getId().toString() + "'");
+				if (wholeCommentColl != null && wholeCommentColl.size() > 0) {
+					SelectorItemCollection selector = new SelectorItemCollection();
+					selector.add(new SelectorItemInfo("score"));
+					selector.add(new SelectorItemInfo("comment"));
+					selector.add(new SelectorItemInfo("grade"));
+					selector.add(new SelectorItemInfo("isVetoZero"));
+					WholeCommentInfo wholeCommentInfo = wholeCommentColl.get(0);
+					//20241214
+					if (!StringUtils.isEmpty(sumScore)) {
+						wholeCommentInfo.setScore(PerfPortalUtils.roudUpRemainGiveDecimal(2, Float.valueOf(sumScore)));
+					} else {
+						wholeCommentInfo.put("score", (Object)null);
+					}
+
+					if (scoreList.getWholeComment() != null) {
+						wholeCommentInfo.setComment(scoreList.getWholeComment());
+					} else {
+						wholeCommentInfo.setComment(wholeCommentInfo.getComment());
+					}
+
+					if (scoreList.getWholeGrade() != null) {
+						wholeCommentInfo.setGrade(scoreList.getWholeGrade());
+					} else {
+						wholeCommentInfo.setGrade(wholeCommentInfo.getGrade());
+					}
+
+					if (((String)sumscoreMap.get("isVetoZero")).equals("1")) {
+						wholeCommentInfo.setIsVetoZero(YesOrNoEnum.YES);
+					} else {
+						wholeCommentInfo.setIsVetoZero(YesOrNoEnum.NO);
+					}
+
+					iWholeComment.updatePartial(wholeCommentInfo, selector);
+				}
+			}
+		} catch (Exception var41) {
+			logger.error("【PERFWEB】-SAVESCOREERR...error message: ", var41);
+			this.setRollbackOnly();
+			return ServerResponseConst.FAILED;
+		}
+
+		return ServerResponseConst.SUCCESS;
+	}
+
+
+
+	private void updateEditActValues(Context ctx, Map<String, Object> targetValues, Set<String> indicatorIdSet, boolean isSave) throws BOSException, EASBizException {
+		Map<String, Boolean> map = PerfPlanUtils.checkCanEditActValue(ctx, indicatorIdSet);
+		Map<String, Boolean> auditMap = PerfPlanUtils.checkIsAudit(ctx, indicatorIdSet);
+		Map<String, String> indicatorMap = new HashMap();
+		IIndicatorTarget iIndicatorTarget = IndicatorTargetFactory.getLocalInstance(ctx);
+		CoreBaseCollection colls = new CoreBaseCollection();
+		FilterInfo filter = new FilterInfo();
+		filter.getFilterItems().add(new FilterItemInfo("id", indicatorIdSet, CompareType.INCLUDE));
+		IndicatorTargetCollection targets = iIndicatorTarget.getIndicatorTargetCollection("where " + filter.toSql());
+		Set<String> calscore = new HashSet();
+
+		for(int i = 0; i < targets.size(); ++i) {
+			String id = targets.get(i).getId().toString();
+			IndicatorTargetInfo indicatorTargetInfo = targets.get(i);
+			if (map.get(id) != null && (Boolean)map.get(id)) {
+				if (!isSave) {
+					indicatorTargetInfo.setAchivementEntryState(AchivementDataEntryStateEnum.SUBMITED);
+					boolean isAudit = auditMap.get(id) == null ? false : (Boolean)auditMap.get(id);
+					if (isAudit) {
+						indicatorTargetInfo.setAuditTime(new Timestamp(System.currentTimeMillis()));
+						indicatorTargetInfo.setActCompValState(ActCompValStateEnum.ENABLED);
+						calscore.add(id);
+						indicatorMap.put(id, "");
+					}
+
+					String actualCompleValue = indicatorTargetInfo.getActualCompleValue();
+					if (StringUtils.isEmpty(actualCompleValue)) {
+						indicatorTargetInfo.setAchivementEntryState(AchivementDataEntryStateEnum.SAVED);
+						indicatorTargetInfo.setActCompValState(ActCompValStateEnum.UNENABLE);
+					}
+				} else {
+					PerfScoreBean bean = (PerfScoreBean)targetValues.get(id);
+					indicatorTargetInfo.setEditActlCompVal(bean.getActValue());
+					indicatorTargetInfo.setEditTargetVal(bean.getTargetVale());
+					indicatorTargetInfo.setActualCompleValue(bean.getActValue());
+					indicatorTargetInfo.setTargetValue(bean.getTargetVale());
+					indicatorTargetInfo.setActualCompleteDesc(bean.getDescription());
+					if (!StringUtils.isEmpty(bean.getActulCompleteTime())) {
+						indicatorTargetInfo.setActualCompleteTime(Timestamp.valueOf(PersonInchargeUtils.strToTimestamp(bean.getActulCompleteTime()) + " 00:00:00"));
+					}
+
+					indicatorTargetInfo.put("entrior", HRFilterUtils.getCurrentPersonId(ctx));
+					indicatorTargetInfo.setEntryTime(new Timestamp(System.currentTimeMillis()));
+					indicatorTargetInfo.setAchivementEntryState(AchivementDataEntryStateEnum.SAVED);
+					PersonInchargeUtils.addGoalsProgressRecord(ctx, indicatorTargetInfo);
+				}
+
+				colls.add(indicatorTargetInfo);
+			}
+		}
+
+		iIndicatorTarget.save(colls);
+		if (calscore.size() > 0 && !isSave) {
+			ScoreFormulaCalculateFacadeFactory.getLocalInstance(ctx).calcalateNodeScore(indicatorMap);
+		}
+
+	}
+
+
+
+
+	/************************************************************解决提交后生成考核结果问题**********************************************/
+
+	public String _submitPerfScoreNew(Context ctx, String gradeTaskNode, String evaObj, boolean isAutoSubmit, boolean isAutoGtnNode) throws BOSException, EASBizException {
+		if (!isAutoSubmit && !this.isNodeHandlerValid(ctx, gradeTaskNode)) {
+			return ServerResponseConst.INVALID;
+		} else {
+			PerfEvaObjectInfo perfEvaObjectInfo = GetEntityInfoUtils.getPerfEvaObjectInfo(ctx, evaObj);
+			boolean isOrg = perfEvaObjectInfo.getIsOrg() != null && perfEvaObjectInfo.getIsOrg().getValue() == 1;
+			String isAutoSubmitVal = PerfConfigUtils.getConfigByName(ctx, "isAutoSubmit", isOrg);
+			isAutoSubmit = StringUtils.isEmpty(isAutoSubmitVal) ? false : isAutoSubmitVal.equals("true");
+			IGradeTaskNodeInst igradeTaskNodeInst = GradeTaskNodeInstFactory.getLocalInstance(ctx);
+			GradeTaskNodeInstCollection gradeTaskNodeInstColl = GetEntityInfoUtils.getGradeTaskNodeInstCollection(ctx, gradeTaskNode);
+			if (gradeTaskNodeInstColl != null && gradeTaskNodeInstColl.size() > 0) {
+				GradeTaskNodeInstInfo gradeTaskNodeInfo = gradeTaskNodeInstColl.get(0);
+				float nodeSumScoreTmp = gradeTaskNodeInfo.getNodeSumScore();
+				if (IsNeedScoreEnum.EVALUSUMSCORE.equals(gradeTaskNodeInfo.getWfNode().getNeedScore())) {
+					gradeTaskNodeInfo.put("nodeSumScore", nodeSumScoreTmp);
+				} else {
+					String nodeSumscore = null;
+					HashMap<String, String> sumscoreMap = this.calcNodeSumScore(ctx, gradeTaskNode, evaObj);
+					nodeSumscore = (String)sumscoreMap.get("sumScore");
+					if (!StringUtils.isEmpty(nodeSumscore)) {
+						//202412 分数不计算;
+//						gradeTaskNodeInfo.put("nodeSumScore", PerfPortalUtils.roudUpRemainGiveDecimal(2, Float.valueOf(nodeSumscore)));
+						gradeTaskNodeInfo.put("nodeSumScore", nodeSumScoreTmp);
+					} else {
+						gradeTaskNodeInfo.put("nodeSumScore", (Object)null);
+					}
+				}
+
+				gradeTaskNodeInfo.setScoreStatus(ScoreStatusEnum.SUBMIT);
+				gradeTaskNodeInfo.setHandleTime(new Date());
+				gradeTaskNodeInfo.setCanEdit(CanEditEnum.DISABLED);
+				gradeTaskNodeInfo.setTaskStatus(TaskStatusEnum.COMPLETED);
+				gradeTaskNodeInfo.put("concurrentNodeStatus", 1);
+				SelectorItemCollection sic = new SelectorItemCollection();
+				sic.add(new SelectorItemInfo("scoreStatus"));
+				sic.add(new SelectorItemInfo("handleTime"));
+				sic.add(new SelectorItemInfo("canEdit"));
+				sic.add(new SelectorItemInfo("nodeSumScore"));
+				sic.add(new SelectorItemInfo("taskStatus"));
+				sic.add(new SelectorItemInfo("concurrentNodeStatus"));
+				igradeTaskNodeInst.updatePartial(gradeTaskNodeInfo, sic);
+				String wfNode = gradeTaskNodeInfo.getWfNode().getId().toString();
+				WFNodeDefInfo nodeDefInfo = GetEntityInfoUtils.getWFNodeDefInfo(ctx, wfNode);
+				String scoreControl = nodeDefInfo.getScoreControl().getValue();
+				boolean onlyOneIsEffective = true;
+				ITargetNode iTargetNode = TargetNodeFactory.getLocalInstance(ctx);
+				FilterInfo nodeFilter = new FilterInfo();
+				nodeFilter.getFilterItems().add(new FilterItemInfo("evaObj", evaObj, CompareType.EQUALS));
+				nodeFilter.getFilterItems().add(new FilterItemInfo("wfNode", nodeDefInfo.getId().toString(), CompareType.EQUALS));
+				if (iTargetNode.exists(nodeFilter)) {
+					onlyOneIsEffective = false;
+				}
+
+				if (scoreControl.equals("1") && onlyOneIsEffective) {
+					CoreBaseCollection coreBaseColl = new CoreBaseCollection();
+					GradeTaskNodeInstCollection gradeTaskNodeColl = igradeTaskNodeInst.getGradeTaskNodeInstCollection(" where wfNode='" + wfNode + "' and evaObj='" + evaObj + "' and id<>'" + gradeTaskNode + "'");
+					if (gradeTaskNodeColl != null && gradeTaskNodeColl.size() > 0) {
+						for(int i = 0; i < gradeTaskNodeColl.size(); ++i) {
+							GradeTaskNodeInstInfo gradeNodeInfo = gradeTaskNodeColl.get(i);
+							gradeNodeInfo.setIsVisible(IsVisibleEnum.HIDDEN);
+							gradeNodeInfo.setCanEdit(CanEditEnum.DISABLED);
+							gradeNodeInfo.setScoreStatus(ScoreStatusEnum.SUBMIT);
+							gradeNodeInfo.setIsEffective(IsEffectiveEnum.INVALID);
+							gradeNodeInfo.setTaskStatus(TaskStatusEnum.COMPLETED);
+							gradeNodeInfo.put("concurrentNodeStatus", 2);
+							coreBaseColl.add(gradeNodeInfo);
+						}
+
+						igradeTaskNodeInst.updateBatchData(coreBaseColl);
+					}
+				}
+
+				int level = gradeTaskNodeInfo.getWfLevel();
+				String wfLevelDef = gradeTaskNodeInfo.getWfLevelDef().getId().toString();
+				boolean isCurrentLastLevel = WorkFlowEngine.getInstance().judgeCurrentNodeLevelIsCompleted(ctx, evaObj, wfLevelDef);
+				boolean isAllNodeSumbit = WorkFlowEngine.getInstance().judgeIsAllNodeSubmitedIgnoreWorkflow(ctx, evaObj);
+				++level;
+				Set<String> autoSubmitNodeIds = new HashSet();
+				if (this.judgeNextNodeIsActive(evaObj, gradeTaskNodeInfo.getId().toString(), gradeTaskNodeInfo.getIsRegrade(), ctx, level)) {
+					if (nodeDefInfo.getScoreCarryToNext().equals("1")) {
+						this.scoreCarryToNextLevelNew(ctx, gradeTaskNodeInfo, evaObj, level);
+					}
+
+					if (!isAllNodeSumbit && isCurrentLastLevel) {
+						autoSubmitNodeIds = WorkFlowEngine.getInstance().activeNodeInst(ctx, evaObj, level, nodeDefInfo.getWorkflow().getId().toString(), isAutoSubmit);
+						PerfEvaObjectControllerBean.getInstance().urgedSendSuccessfully(ctx, new String[]{evaObj}, 2, nodeDefInfo.getWorkflow().getId().toString());
+					}
+				}
+
+				if (!isAllNodeSumbit) {
+					if (WorkFlowEngine.getInstance().isNodeHandUp(ctx, evaObj, level)) {
+						WorkFlowUtils.writeBackWorkFlowStatusForEvaObj(ctx, perfEvaObjectInfo, PerfEvaObjectWFStatusEnum.HANGUP);
+					} else {
+						WorkFlowUtils.writeBackWorkFlowStatusForEvaObj(ctx, perfEvaObjectInfo, PerfEvaObjectWFStatusEnum.UNDERWAY);
+					}
+				}
+
+				if (isAllNodeSumbit) {
+					this.calcEvaSumScore(ctx, evaObj, gradeTaskNode, EndWayEnum.NOMALWAY, onlyOneIsEffective);
+					this.calcEvaObjTargetScore(ctx, evaObj);
+					WorkFlowUtils.writeBackWorkFlowStatusForEvaObj(ctx, perfEvaObjectInfo, PerfEvaObjectWFStatusEnum.COMPLETED);
+					WorkFlowUtils.writeBackEndWayForEvaObj(ctx, evaObj, EndWayEnum.NOMALWAY);
+					if (isOrg) {
+						WorkFlowUtils.writeStatusForOrgEvaResult(ctx, evaObj, PerfEvaObjectWFStatusEnum.COMPLETED);
+					} else {
+						WorkFlowUtils.writeBackWorkFlowStatusForEvaResult(ctx, evaObj, PerfEvaObjectWFStatusEnum.COMPLETED);
+					}
+				}
+
+				if (!CollectionUtils.isEmpty((Collection)autoSubmitNodeIds)) {
+					Iterator var25 = ((Set)autoSubmitNodeIds).iterator();
+
+					while(var25.hasNext()) {
+						String autoSubmitNodeId = (String)var25.next();
+						getInstance().submitPerfScoreNew(ctx, autoSubmitNodeId, evaObj, isAutoSubmit, true);
+					}
+				}
+
+				Set<String> indicatorIdSet = new HashSet();
+				GradeTargetInstCollection targetInst = GradeTargetInstFactory.getLocalInstance(ctx).getGradeTargetInstCollection("where gradeTaskNode = '" + gradeTaskNodeInfo.getId().toString() + "'");
+				if (targetInst.size() > 0) {
+					for(int i = 0; i < targetInst.size(); ++i) {
+						GradeTargetInstInfo instInfo = targetInst.get(i);
+						if ("200".equals(instInfo.getTargetType().getValue())) {
+							indicatorIdSet.add(instInfo.getTarget());
+						}
+					}
+				}
+
+				this.updateEditActValues(ctx, (Map)null, indicatorIdSet, false);
+			}
+
+			return ServerResponseConst.SUCCESS;
+		}
+	}
+
+
+
+	private Boolean judgeNextNodeIsActive(String objID, String currentNode, YesOrNoEnum isReGrade, Context ctx, int level) throws BOSException {
+		EntityViewInfo viewInfo = new EntityViewInfo();
+		FilterInfo filterInfo = new FilterInfo();
+		filterInfo.getFilterItems().add(new FilterItemInfo("evaObj", objID, CompareType.EQUALS));
+		filterInfo.getFilterItems().add(new FilterItemInfo("id", currentNode, CompareType.NOTEQUALS));
+		filterInfo.getFilterItems().add(new FilterItemInfo("wfLevel", level, CompareType.EQUALS));
+		viewInfo.setFilter(filterInfo);
+		SelectorItemCollection selector = viewInfo.getSelector();
+		selector.add("id");
+		selector.add("wfLevel");
+		selector.add("taskStatus");
+		selector.add("scoreStatus");
+		selector.add("isEffective");
+		GradeTaskNodeInstCollection nodeInstCollection = GradeTaskNodeInstFactory.getLocalInstance(ctx).getGradeTaskNodeInstCollection(viewInfo);
+		if (isReGrade == YesOrNoEnum.NO) {
+			return true;
+		} else {
+			for(int i = 0; i < nodeInstCollection.size(); ++i) {
+				GradeTaskNodeInstInfo taskNodeInst = nodeInstCollection.get(i);
+				if (taskNodeInst.getTaskStatus() == TaskStatusEnum.UNDEAL || taskNodeInst.getTaskStatus() == TaskStatusEnum.DEALING) {
+					return true;
+				}
+			}
+
+			return false;
+		}
+	}
+
+	public String calcEvaSumScore(Context ctx, String evaObj, String gradeTaskNode, EndWayEnum endWay, boolean onlyOneIsEffective) throws BOSException {
+		String sumScore = null;
+		String nodeGrade = null;
+		BigDecimal sumScoreMal = BigDecimal.ZERO;
+		boolean hasFinalGrade = false;
+		boolean hasSetScoreHandler = false;
+		Map<String, Integer> nodeEffectiveHandlerCountMap = new HashMap(16);
+
+		try {
+			IGradeTaskNodeInst iGradeTaskNodeInst = GradeTaskNodeInstFactory.getLocalInstance(ctx);
+			PerfEvaObjectInfo evaObjInfo = GetEntityInfoUtils.getPerfEvaObjectInfo(ctx, evaObj);
+			boolean isMatrixEvalu = evaObjInfo.getCanAdjustEvaluer().getValue() == 1;
+			boolean isTargetNodeWeight = evaObjInfo.getPeriod().getPerfPlan().isTargetNodeWeight();
+			Set<String> wfNodeHasTargetNodes = new HashSet();
+			TargetNodeCollection targetNodes = TargetNodeFactory.getLocalInstance(ctx).getTargetNodeCollection("select wfNode where evaObj ='" + evaObj + "'");
+			if (targetNodes != null && !targetNodes.isEmpty()) {
+				Iterator<TargetNodeInfo> it = targetNodes.iterator();
+
+				while(it.hasNext()) {
+					TargetNodeInfo targetNodeInfo = (TargetNodeInfo)it.next();
+					wfNodeHasTargetNodes.add(targetNodeInfo.getWfNode().getId().toString());
+				}
+			}
+
+			GradeTaskNodeInstCollection gradeTNodeInstColl = iGradeTaskNodeInst.getGradeTaskNodeInstCollection(" where evaObj='" + evaObj + "' and scoreStatus='" + "2" + "' and isEffective='" + "1" + "'");
+			ICustomerDevConfig icusDevConfig = CustomerDevConfigFactory.getLocalInstance(ctx);
+			CustomerDevConfigCollection cusDevConfigColl = icusDevConfig.getCustomerDevConfigCollection(" where bizType=2 and isStart=1");
+			ICustomerPerfwebWorkFlow instance;
+			if (!cusDevConfigColl.isEmpty()) {
+				instance = CustomerPerfwebWorkFlowFactory.getInstance(ctx, 2);
+				sumScore = instance.getCustomerCalcuSumscore(ctx, evaObj);
+				return sumScore;
+			} else {
+				cusDevConfigColl = icusDevConfig.getCustomerDevConfigCollection(" where bizType=1 and isStart=1");
+				if (!cusDevConfigColl.isEmpty()) {
+					instance = CustomerPerfwebWorkFlowFactory.getInstance(ctx, 1);
+					instance.getCustomerCalculateParams(ctx, nodeEffectiveHandlerCountMap, gradeTNodeInstColl, evaObj);
+				} else if (!isMatrixEvalu) {
+					StringBuffer selectSqlSb = new StringBuffer("select count(FWFNODEID) as nodeCount,FWFNODEID from T_EVA_GRADETASKNODEINST where FEVAOBJID ='");
+					selectSqlSb.append(evaObj).append("' and FScoreStatus in ('").append("2").append("','").append("4").append("') and FISEFFECTIVE ='").append("1").append("' group by FWFNODEID");
+					IRowSet rs = DbUtil.executeQuery(ctx, selectSqlSb.toString());
+
+					while(rs.next()) {
+						nodeEffectiveHandlerCountMap.put(rs.getString("FWFNODEID"), rs.getInt("nodeCount"));
+					}
+				}
+
+				boolean setFinalGrade = false;
+				int isOrg;
+				if (gradeTNodeInstColl != null && gradeTNodeInstColl.size() > 0) {
+					int gradeTNodeSize = gradeTNodeInstColl.size();
+
+					for(isOrg = 0; isOrg < gradeTNodeSize; ++isOrg) {
+						GradeTaskNodeInstInfo gradeTNodeInfo = gradeTNodeInstColl.get(isOrg);
+						String wfNode = gradeTNodeInfo.getWfNode().getId().toString();
+						String currentTaskNode = gradeTNodeInfo.getId().toString();
+						StringBuffer gradeTaskNodeConditionSb = new StringBuffer("select id where wfNode='");
+						gradeTaskNodeConditionSb.append(wfNode).append("' and scoreStatus='").append("2").append("' and isEffective='").append("1").append("' and evaObj='" + evaObj + "'");
+						int nodeEffectiveHandlerCount = 0;
+						if (!isMatrixEvalu && null != nodeEffectiveHandlerCountMap.get(wfNode)) {
+							nodeEffectiveHandlerCount = (Integer)nodeEffectiveHandlerCountMap.get(wfNode);
+						}
+
+						WFNodeDefInfo nodeDefInfo = GetEntityInfoUtils.getWFNodeDefInfo(ctx, wfNode);
+						if (isMatrixEvalu && !hasFinalGrade) {
+							if (Integer.valueOf(nodeDefInfo.getIsFinalGrade()) == 1 && gradeTNodeInfo.getIsEndProcess().getValue() == 0 && gradeTNodeInfo.getIsShowWholeGrade().getValue() == 1) {
+								hasFinalGrade = true;
+							}
+						} else if (!hasFinalGrade && Integer.valueOf(nodeDefInfo.getIsFinalGrade()) == 1 && gradeTNodeInfo.getIsEndProcess().getValue() == 0) {
+							hasFinalGrade = true;
+						}
+
+						if (!setFinalGrade && nodeDefInfo.getPerfGradeEvaluate() != null && nodeDefInfo.getPerfGradeEvaluate().getValue().equals("1")) {
+							setFinalGrade = true;
+						}
+
+						String scoreControl = nodeDefInfo.getScoreControl().getValue();
+						if (null != gradeTNodeInfo.get("nodeSumScore")) {
+							float nodeWeight = gradeTNodeInfo.getNodeWeight() / 100.0F;
+							float nodeSumScore = gradeTNodeInfo.getNodeSumScore();
+							if (!StringUtils.isEmpty(gradeTNodeInfo.getInweight())) {
+								nodeWeight += Float.valueOf(gradeTNodeInfo.getInweight()) / 100.0F;
+							}
+
+							if (!StringUtils.isEmpty(gradeTNodeInfo.getOutWeight())) {
+								nodeWeight = 0.0F;
+							}
+
+							onlyOneIsEffective = !wfNodeHasTargetNodes.contains(gradeTNodeInfo.getWfNode().getId().toString());
+							hasSetScoreHandler = wfNodeHasTargetNodes.contains(gradeTNodeInfo.getWfNode().getId().toString());
+							int effectedCount;
+							GradeTaskNodeInstCollection gradeTaskNodeColl;
+							int gtnSize;
+							ArrayList gradeTasknodeList;
+							int k;
+							IGradeTargetInst iGradeTargetInst;
+							GradeTargetInstCollection targetInstColls;
+							BigDecimal reCalNodeSumScore;
+							String taskIdCondition;
+							if (null != sumScore) {
+								if (isMatrixEvalu) {
+									if ((!scoreControl.equals("0") || hasSetScoreHandler) && onlyOneIsEffective) {
+										sumScore = String.valueOf(Float.valueOf(sumScore) + nodeSumScore * nodeWeight);
+									} else {
+										effectedCount = 1;
+										gradeTaskNodeColl = iGradeTaskNodeInst.getGradeTaskNodeInstCollection(gradeTaskNodeConditionSb.toString());
+										if (null != gradeTaskNodeColl && gradeTaskNodeColl.size() > 0) {
+											gtnSize = gradeTaskNodeColl.size();
+											gradeTasknodeList = new ArrayList();
+
+											for(k = 0; k < gtnSize; ++k) {
+												gradeTasknodeList.add(gradeTaskNodeColl.get(k).getId().toString());
+											}
+
+											taskIdCondition = "where gradeTaskNode in (" + PerfwebStrUtils.convertListToString(gradeTasknodeList) + ") and nodeTargetWeight='100'";
+											iGradeTargetInst = GradeTargetInstFactory.getLocalInstance(ctx);
+											if (!onlyOneIsEffective) {
+												taskIdCondition = "where gradeTaskNode in (" + PerfwebStrUtils.convertListToString(gradeTasknodeList) + ") ";
+												taskIdCondition = taskIdCondition + " and areaBase.subAreaType = '0' and areaBase.areaAddSub = 0 ";
+												targetInstColls = iGradeTargetInst.getGradeTargetInstCollection(taskIdCondition);
+												reCalNodeSumScore = getReCalNodeSumScore(ctx, currentTaskNode, targetInstColls, isTargetNodeWeight);
+												sumScore = String.valueOf((new BigDecimal(sumScore)).add(reCalNodeSumScore.multiply(BigDecimal.valueOf((double)nodeWeight))));
+											} else {
+												if (iGradeTargetInst.exists(taskIdCondition)) {
+													effectedCount = gtnSize;
+												}
+
+												sumScore = String.valueOf(Float.valueOf(sumScore) + nodeSumScore * nodeWeight / (float)effectedCount);
+											}
+										}
+									}
+								} else if ((scoreControl.equals("0") && !hasSetScoreHandler || !onlyOneIsEffective && isTargetNodeWeight) && nodeEffectiveHandlerCount > 0) {
+									sumScore = String.valueOf(Float.valueOf(sumScore) + nodeSumScore * nodeWeight / (float)nodeEffectiveHandlerCount);
+								} else {
+									sumScore = String.valueOf(Float.valueOf(sumScore) + nodeSumScore * nodeWeight);
+								}
+							} else if (isMatrixEvalu) {
+								if ((!scoreControl.equals("0") || hasSetScoreHandler) && onlyOneIsEffective) {
+									sumScore = String.valueOf(nodeSumScore * nodeWeight);
+								} else {
+									effectedCount = 1;
+									gradeTaskNodeColl = iGradeTaskNodeInst.getGradeTaskNodeInstCollection(gradeTaskNodeConditionSb.toString());
+									if (null != gradeTaskNodeColl && gradeTaskNodeColl.size() > 0) {
+										gtnSize = gradeTaskNodeColl.size();
+										gradeTasknodeList = new ArrayList();
+
+										for(k = 0; k < gtnSize; ++k) {
+											gradeTasknodeList.add(gradeTaskNodeColl.get(k).getId().toString());
+										}
+
+										taskIdCondition = "where gradeTaskNode in (" + PerfwebStrUtils.convertListToString(gradeTasknodeList) + ") and nodeTargetWeight='100'";
+										iGradeTargetInst = GradeTargetInstFactory.getLocalInstance(ctx);
+										if (!onlyOneIsEffective) {
+											taskIdCondition = "where gradeTaskNode in (" + PerfwebStrUtils.convertListToString(gradeTasknodeList) + ") ";
+											taskIdCondition = taskIdCondition + " and areaBase.subAreaType = '0' and areaBase.areaAddSub = 0 ";
+											targetInstColls = iGradeTargetInst.getGradeTargetInstCollection(taskIdCondition);
+											reCalNodeSumScore = this.getReCalNodeSumScore(ctx, currentTaskNode, targetInstColls, isTargetNodeWeight);
+											sumScore = String.valueOf(reCalNodeSumScore.multiply(BigDecimal.valueOf((double)nodeWeight)));
+										} else {
+											if (iGradeTargetInst.exists(taskIdCondition)) {
+												effectedCount = gtnSize;
+											}
+
+											sumScore = String.valueOf(nodeSumScore * nodeWeight / (float)effectedCount);
+										}
+									}
+								}
+							} else if ((scoreControl.equals("0") && !hasSetScoreHandler || !onlyOneIsEffective && isTargetNodeWeight) && nodeEffectiveHandlerCount > 0) {
+								sumScore = String.valueOf(nodeSumScore * nodeWeight / (float)nodeEffectiveHandlerCount);
+							} else {
+								sumScore = String.valueOf(nodeSumScore * nodeWeight);
+							}
+						}
+					}
+				}
+
+				PerfEvaObjectInfo perfEvaObjectInfo = GetEntityInfoUtils.getPerfEvaObjectInfo(ctx, evaObj);
+				if (null != perfEvaObjectInfo) {
+					isOrg = perfEvaObjectInfo.getIsOrg().getValue();
+					if (isMatrixEvalu && !onlyOneIsEffective) {
+						sumScore = this.checkSumScoreByAddSubArea(ctx, sumScore, evaObj, isOrg);
+					}
+
+					if (1 == isOrg) {
+						sumScore = this.setOrgLevel(ctx, sumScore, hasFinalGrade, setFinalGrade, perfEvaObjectInfo);
+					} else {
+						//20241216 -
+						IWholeComment whoIns = WholeCommentFactory.getLocalInstance(ctx);
+						WholeCommentCollection wholeCommentColl = whoIns.getWholeCommentCollection(" where evaObj = '" + evaObj + "'");
+						//
+						sumScoreMal = BigDecimal.ZERO;
+						String cusGrade = "";
+						for(int i = 0; i < wholeCommentColl.size(); i++){
+							WholeCommentInfo wComInfo = wholeCommentColl.get(i);
+							float score = wComInfo.getScore();
+							String  weight = StringUtils.isBlank(wComInfo.getWeight()) ? "0" : wComInfo.getWeight();
+							BigDecimal weightDmal =  new BigDecimal(weight);
+							//weight转为 BigDecimal
+							if( weightDmal.compareTo(BigDecimal.ZERO) != 0  ){
+								sumScoreMal = sumScoreMal.add(new BigDecimal(score).multiply(weightDmal).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
+							}
+							
+							if(weightDmal.compareTo(new BigDecimal("100")) == 0) {
+								cusGrade = StringUtils.isBlank (wComInfo.getGrade()) ? "" : wComInfo.getGrade();
+							}
+						}
+						logger.error ("二开计算分数:"+sumScore);
+						sumScore = sumScoreMal.toString();
+						sumScore = this.setPersonLevel(ctx, sumScore,cusGrade, hasFinalGrade, setFinalGrade, perfEvaObjectInfo);
+						logger.error ("二开计算分数2:"+sumScore);
+					}
+				}
+				return sumScore;
+			}
+
+
+		} catch (Exception var40) {
+			logger.error(var40.getMessage(), var40);
+			logger.error("it is failed to create evaResult,evaObj【" + evaObj + "】,gradeTaskNode【" + gradeTaskNode + "】");
+			throw new BOSException((new SHRPerfWebBizException(SHRPerfWebBizException.CREATEEVARESULTERR)).getMessage());
+		}
+	}
+
+	private BigDecimal getReCalNodeSumScore(Context ctx, String gradeTaskNode, GradeTargetInstCollection targetInstColls, boolean isTargetNodeWeight) throws BOSException {
+		BigDecimal reCalNodeSumScore = BigDecimal.ZERO;
+		if (targetInstColls != null && !targetInstColls.isEmpty()) {
+			Map<String, Map<String, List<GradeTargetInstInfo>>> targetInstMap = new HashMap();
+			Iterator<GradeTargetInstInfo> it = targetInstColls.iterator();
+
+			while(it.hasNext()) {
+				GradeTargetInstInfo targetInstInfo = (GradeTargetInstInfo)it.next();
+				String key = targetInstInfo.getTarget();
+				Map<String, List<GradeTargetInstInfo>> targetInfos = (Map)targetInstMap.get(key);
+				String gradeTaskNodeId = targetInstInfo.getGradeTaskNode().getId().toString();
+				if (targetInfos == null) {
+					targetInfos = new HashMap();
+				}
+
+				if (((Map)targetInfos).get(gradeTaskNodeId) == null) {
+					List<GradeTargetInstInfo> targetInfo = new ArrayList();
+					((Map)targetInfos).put(gradeTaskNodeId, targetInfo);
+				}
+
+				((List)((Map)targetInfos).get(gradeTaskNodeId)).add(targetInstInfo);
+				targetInstMap.put(key, targetInfos);
+			}
+
+			Map<String, BigDecimal> targetWeightMap = new HashMap();
+			FilterInfo filterInfo = new FilterInfo();
+			filterInfo.getFilterItems().add(new FilterItemInfo("id", targetInstMap.keySet(), CompareType.INCLUDE));
+			SelectorItemCollection selectors = new SelectorItemCollection();
+			selectors.add(new SelectorItemInfo("id"));
+			selectors.add(new SelectorItemInfo("weight"));
+			EntityViewInfo evi = new EntityViewInfo();
+			evi.setFilter(filterInfo);
+			evi.setSelector(selectors);
+			IndicatorTargetCollection targetColls = IndicatorTargetFactory.getLocalInstance(ctx).getIndicatorTargetCollection(evi);
+			if (targetColls != null && !targetColls.isEmpty()) {
+				Iterator<IndicatorTargetInfo> it1 = targetColls.iterator();
+
+				while(it1.hasNext()) {
+					IndicatorTargetInfo indicatorTargetInfo = (IndicatorTargetInfo)it1.next();
+					String weight = indicatorTargetInfo.getWeight();
+					targetWeightMap.put(indicatorTargetInfo.getId().toString(), StringUtils.isEmpty(weight) ? BigDecimal.valueOf(100L) : new BigDecimal(weight));
+				}
+			}
+
+			RecordTargetCollection recordTargetColls = RecordTargetFactory.getLocalInstance(ctx).getRecordTargetCollection(evi);
+			Iterator it1;
+			if (recordTargetColls != null && !recordTargetColls.isEmpty()) {
+				it1 = recordTargetColls.iterator();
+
+				while(it1.hasNext()) {
+					RecordTargetInfo recordTargetInfo = (RecordTargetInfo)it1.next();
+					String weight = recordTargetInfo.getWeight();
+					targetWeightMap.put(recordTargetInfo.getId().toString(), StringUtils.isEmpty(weight) ? BigDecimal.valueOf(100L) : new BigDecimal(weight));
+				}
+			}
+
+			it1 = targetInstMap.entrySet().iterator();
+
+			while(true) {
+				int nodeSize;
+				List currentTargetInsts;
+				BigDecimal totalWeight;
+				Map.Entry item;
+				do {
+					if (!it1.hasNext()) {
+						return reCalNodeSumScore;
+					}
+
+					item = (Map.Entry)it1.next();
+					Map<String, List<GradeTargetInstInfo>> targetInsts = (Map)item.getValue();
+					nodeSize = targetInsts.size();
+					currentTargetInsts = (List)targetInsts.get(gradeTaskNode);
+					totalWeight = BigDecimal.ZERO;
+					Set<Map.Entry<String, List<GradeTargetInstInfo>>> entries = targetInsts.entrySet();
+					Iterator var20 = entries.iterator();
+
+					while(var20.hasNext()) {
+						Map.Entry<String, List<GradeTargetInstInfo>> en = (Map.Entry)var20.next();
+						List<GradeTargetInstInfo> gtValues = (List)en.getValue();
+						Iterator var23 = gtValues.iterator();
+
+						while(var23.hasNext()) {
+							GradeTargetInstInfo gt = (GradeTargetInstInfo)var23.next();
+							if (StringUtils.isNotEmpty(gt.getNodeTargetWeight())) {
+								totalWeight = totalWeight.add(new BigDecimal(gt.getNodeTargetWeight()));
+							}
+						}
+					}
+				} while(CollectionUtils.isEmpty(currentTargetInsts));
+
+				String targetId = (String)item.getKey();
+				Iterator var37 = currentTargetInsts.iterator();
+
+				while(var37.hasNext()) {
+					GradeTargetInstInfo currentTargetInst = (GradeTargetInstInfo)var37.next();
+					if (isTargetNodeWeight) {
+						reCalNodeSumScore = reCalNodeSumScore.add(BigDecimal.valueOf((double)currentTargetInst.getTargetScore()).multiply((BigDecimal)targetWeightMap.get(targetId)).divide(BigDecimal.valueOf(100L), 4, 4).divide(BigDecimal.valueOf((long)nodeSize), 4, 4));
+					} else {
+						BigDecimal handlerSize = new BigDecimal(1);
+						if (totalWeight.compareTo(new BigDecimal(100)) > 0) {
+							handlerSize = totalWeight.divide(BigDecimal.valueOf(100L), 4, 4);
+						}
+
+						reCalNodeSumScore = reCalNodeSumScore.add(BigDecimal.valueOf((double)currentTargetInst.getTargetScore()).divide(handlerSize, 4, 4).multiply((BigDecimal)targetWeightMap.get(targetId)).multiply(new BigDecimal(currentTargetInst.getNodeTargetWeight())).divide(BigDecimal.valueOf(10000L), 4, 4));
+					}
+				}
+			}
+		} else {
+			return reCalNodeSumScore;
+		}
+	}
+
+
+	private String checkSumScoreByAddSubArea(Context ctx, String sumScore, String evaObj, int isOrg) throws BOSException, EASBizException {
+		IGradeTargetInst iGradeTargetInst = GradeTargetInstFactory.getLocalInstance(ctx);
+		GradeTargetInstCollection gradeTargetInstColl = iGradeTargetInst.getGradeTargetInstCollection("select targetScore, gradeTaskNode.nodeWeight, areaBase.* where evaObj='" + evaObj + "' and areaBase.subAreaType = '1' and (areaBase.areaAddSub = 1 or areaBase.targetAddSub = 1)");
+		if (gradeTargetInstColl != null && gradeTargetInstColl.size() > 0) {
+			Map<String, List<GradeTargetInstInfo>> needCheckTargetMap = new HashMap();
+
+			String areaBaseId;
+			for(int i = 0; i < gradeTargetInstColl.size(); ++i) {
+				GradeTargetInstInfo gradeTargetInstInfo = gradeTargetInstColl.get(i);
+				areaBaseId = gradeTargetInstInfo.getAreaBase().getId().toString();
+				List<GradeTargetInstInfo> gradeTargetInstInfos = (List)needCheckTargetMap.get(areaBaseId);
+				if (CollectionUtils.isEmpty((Collection)gradeTargetInstInfos)) {
+					gradeTargetInstInfos = new ArrayList();
+				}
+
+				((List)gradeTargetInstInfos).add(gradeTargetInstInfo);
+				needCheckTargetMap.put(areaBaseId, gradeTargetInstInfos);
+			}
+
+			BigDecimal totalScore = BigDecimal.ZERO;
+			Iterator var22 = needCheckTargetMap.keySet().iterator();
+
+			while(var22.hasNext()) {
+				areaBaseId = (String)var22.next();
+				List<GradeTargetInstInfo> gradeTargetInstInfos = (List)needCheckTargetMap.get(areaBaseId);
+				String areaAddSubUpStr = ((GradeTargetInstInfo)gradeTargetInstInfos.get(0)).getAreaBase().getAreaAddSubUp();
+				String areaAddSubDownStr = ((GradeTargetInstInfo)gradeTargetInstInfos.get(0)).getAreaBase().getAreaAddSubDown();
+				BigDecimal areaAddSubUp = new BigDecimal(StringUtils.isEmpty(areaAddSubUpStr) ? String.valueOf(Integer.MAX_VALUE) : areaAddSubUpStr);
+				BigDecimal areaAddSubDown = new BigDecimal(StringUtils.isEmpty(areaAddSubDownStr) ? String.valueOf(Integer.MIN_VALUE) : areaAddSubDownStr);
+				BigDecimal addSubSumScore = BigDecimal.ZERO;
+
+				float nodeWeight;
+				float targetScore;
+				for(Iterator var17 = gradeTargetInstInfos.iterator(); var17.hasNext(); addSubSumScore = addSubSumScore.add((new BigDecimal(String.valueOf(targetScore))).multiply((new BigDecimal(String.valueOf(nodeWeight))).divide(new BigDecimal("100"))))) {
+					GradeTargetInstInfo gradeTargetInstInfo = (GradeTargetInstInfo)var17.next();
+					nodeWeight = gradeTargetInstInfo.getGradeTaskNode().getNodeWeight();
+					targetScore = gradeTargetInstInfo.getTargetScore();
+				}
+
+				if (areaAddSubUp.compareTo(addSubSumScore) < 0) {
+					totalScore = totalScore.add(areaAddSubUp);
+				} else if (areaAddSubDown.compareTo(addSubSumScore) > 0) {
+					totalScore = totalScore.add(areaAddSubDown);
+				} else {
+					totalScore = totalScore.add(addSubSumScore);
+				}
+			}
+
+			if (totalScore.compareTo(BigDecimal.ZERO) != 0) {
+				IEvaResultSumRevisionLog iEvaResultSumRevisionLog = EvaResultSumRevisionLogFactory.getLocalInstance(ctx);
+				EvaResultSumRevisionLogInfo logInfo = new EvaResultSumRevisionLogInfo();
+				logInfo.setBeforeReviseSumScore(Double.parseDouble(sumScore));
+				sumScore = totalScore.add(new BigDecimal(sumScore)).toString();
+				logInfo.setAfterReviseSumScore(Double.parseDouble(sumScore));
+				logInfo.setSourceEnum(EvaResultSumLogSourceEnum.AUTOREVISE);
+				logInfo.setReviseReason(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.SYSTEMAUTOREVISESUMSCORE, ctx));
+				if (1 == isOrg) {
+					IOrgEvaResultSummary iOrgEvaResultSummary = OrgEvaResultSummaryFactory.getLocalInstance(ctx);
+					logInfo.setOrgEvaResultSummary(iOrgEvaResultSummary.getOrgEvaResultSummaryInfo(" where evaObj = '" + evaObj + "'"));
+				} else {
+					IEvaResultSummary iEvaResultSummary = EvaResultSummaryFactory.getLocalInstance(ctx);
+					logInfo.setEvaResultSummary(iEvaResultSummary.getEvaResultSummaryInfo(" where evaObj = '" + evaObj + "'"));
+				}
+
+				logInfo.setCreateTime(new Timestamp((new Date()).getTime()));
+				logInfo.setLastUpdateTime(new Timestamp((new Date()).getTime()));
+				iEvaResultSumRevisionLog.save(logInfo);
+			}
+		}
+
+		return sumScore;
+	}
+
+
+
+	private String setOrgLevel(Context ctx, String sumScore, boolean hasFinalGrade, boolean setFinalGrade, PerfEvaObjectInfo perfEvaObjectInfo) throws BOSException, EASBizException {
+		String evaObj = perfEvaObjectInfo.getId().toString();
+		EndWayEnum endWay = EndWayEnum.NOMALWAY;
+		boolean isMatrixEvalu = perfEvaObjectInfo.getCanAdjustEvaluer().getValue() == 1;
+		String perfPeriod = perfEvaObjectInfo.getPeriod().getId().toString();
+		PerfPeriodInfo periodInfo = GetEntityInfoUtils.getPerfPeriodInfo(ctx, perfPeriod);
+		PerfPlanInfo planInfo = GetEntityInfoUtils.getPerfPlanInfo(ctx, periodInfo.getPerfPlan().getId().toString());
+		IOrgEvaResultSummary ievaResultSummary = OrgEvaResultSummaryFactory.getLocalInstance(ctx);
+		new OrgEvaResultSummaryInfo();
+		boolean existsFlag = ievaResultSummary.exists(" where evaObj='" + evaObj + "'");
+		if (existsFlag) {
+			SelectorItemCollection sic = new SelectorItemCollection();
+			sic.add(new SelectorItemInfo("sumScore"));
+			sic.add(new SelectorItemInfo("gradeLevel"));
+			sic.add(new SelectorItemInfo("perfScorLevelDefine"));
+			sic.add(new SelectorItemInfo("perfScorLevel"));
+			OrgEvaResultSummaryInfo evaResultSummaryInfo = ievaResultSummary.getOrgEvaResultSummaryInfo(" where evaObj='" + evaObj + "'");
+			String nodeGrade;
+			if ((endWay == EndWayEnum.ENDPROCESS || endWay == EndWayEnum.ENDPERIOD) && !hasFinalGrade) {
+				sumScore = null;
+				nodeGrade = null;
+			} else if (planInfo.getPerfRule().getId() != null) {
+				String ruleId = planInfo.getPerfRule().getId().toString();
+				WFNodeDefCollection wfNodeDefColl = GetEntityInfoUtils.getFinalGradeNodeColl(ctx, evaObj);
+				if (null != wfNodeDefColl && wfNodeDefColl.size() > 0 && wfNodeDefColl.size() < 2) {
+					if (isMatrixEvalu) {
+						nodeGrade = WorkFlowEngine.getInstance().getMatrixWFNodeWholeGrade(ctx, evaObj, wfNodeDefColl.get(0));
+					} else {
+						nodeGrade = WorkFlowEngine.getInstance().getWFNodeWholeGrade(ctx, evaObj, wfNodeDefColl.get(0));
+					}
+				} else {
+					nodeGrade = null;
+				}
+
+				if (StringUtils.isEmpty(nodeGrade) && null != sumScore) {
+					nodeGrade = PerfWorkFlowUtils.getLevelByPerfScore(ctx, ruleId, Float.valueOf(sumScore), "1");
+				}
+
+				evaResultSummaryInfo.setGradeLevel(nodeGrade);
+			}
+
+			PerfEvaObjRejectionAreaCollection evaObjRejectionAreaColl = GetEntityInfoUtils.getPerfEvaObjRejectionAreaColl(ctx, evaObj);
+			if (null != evaObjRejectionAreaColl && evaObjRejectionAreaColl.size() > 0) {
+				int evaObjRejSize = evaObjRejectionAreaColl.size();
+
+				for(int i = 0; i < evaObjRejSize; ++i) {
+					if (evaObjRejectionAreaColl.get(i).getRejection() != null && evaObjRejectionAreaColl.get(i).getRejection().getValue().equals("100")) {
+						sumScore = "0";
+						String ruleId = planInfo.getPerfRule().getId().toString();
+						nodeGrade = PerfWorkFlowUtils.getLevelByPerfScore(ctx, ruleId, Float.valueOf(sumScore), "1");
+						evaResultSummaryInfo.setGradeLevel(nodeGrade);
+						break;
+					}
+				}
+			}
+
+			if (null != sumScore) {
+				evaResultSummaryInfo.put("sumScore", PerfPortalUtils.roudUpRemainGiveDecimal(2, Float.valueOf(sumScore)));
+			} else {
+				evaResultSummaryInfo.put("sumScore", (Object)null);
+			}
+
+			evaResultSummaryInfo = PerfWorkFlowUtils.setPerfscoreLevelForEvaresult(ctx, evaObj, evaResultSummaryInfo);
+			if (!setFinalGrade) {
+				evaResultSummaryInfo.setGradeLevel("");
+				evaResultSummaryInfo.put("gradeLevel", "");
+			}
+
+			ievaResultSummary.updatePartial(evaResultSummaryInfo, sic);
+		} else {
+			this.createEvaResultSummary(ctx, evaObj);
+		}
+
+		return sumScore;
+	}
+
+
+
+	private String setPersonLevel(Context ctx, String sumScore,String cusGrade, boolean hasFinalGrade, boolean setFinalGrade, PerfEvaObjectInfo perfEvaObjectInfo) throws BOSException, EASBizException {
+		String newSumScore = sumScore;
+		String evaObj = perfEvaObjectInfo.getId().toString();
+		EndWayEnum endWay = EndWayEnum.NOMALWAY;
+		boolean isMatrixEvalu = perfEvaObjectInfo.getCanAdjustEvaluer().getValue() == 1;
+		String perfPeriod = perfEvaObjectInfo.getPeriod().getId().toString();
+		PerfPeriodInfo periodInfo = GetEntityInfoUtils.getPerfPeriodInfo(ctx, perfPeriod);
+		PerfPlanInfo planInfo = GetEntityInfoUtils.getPerfPlanInfo(ctx, periodInfo.getPerfPlan().getId().toString());
+		IEvaResultSummary ievaResultSummary = EvaResultSummaryFactory.getLocalInstance(ctx);
+		new EvaResultSummaryInfo();
+		boolean existsFlag = ievaResultSummary.exists(" where evaObj='" + evaObj + "'");
+		if (existsFlag) {
+			SelectorItemCollection sic = new SelectorItemCollection();
+			sic.add(new SelectorItemInfo("sumScore"));
+			sic.add(new SelectorItemInfo("gradeLevel"));
+			sic.add(new SelectorItemInfo("perfScorLevelDefine"));
+			sic.add(new SelectorItemInfo("perfScorLevel"));
+			EvaResultSummaryInfo evaResultSummaryInfo = ievaResultSummary.getEvaResultSummaryInfo(" where evaObj='" + evaObj + "'");
+			String nodeGrade;
+			if ((endWay == EndWayEnum.ENDPROCESS || endWay == EndWayEnum.ENDPERIOD) && !hasFinalGrade) {
+				sumScore = null;
+				nodeGrade = null;
+			} else if (planInfo.getPerfRule().getId() != null) {
+				String ruleId = planInfo.getPerfRule().getId().toString();
+				WFNodeDefCollection wfNodeDefColl = GetEntityInfoUtils.getFinalGradeNodeColl(ctx, evaObj);
+				if (null != wfNodeDefColl && wfNodeDefColl.size() > 0 && wfNodeDefColl.size() < 2) {
+					if (isMatrixEvalu) {
+						nodeGrade = WorkFlowEngine.getInstance().getMatrixWFNodeWholeGrade(ctx, evaObj, wfNodeDefColl.get(0));
+					} else {
+						nodeGrade = WorkFlowEngine.getInstance().getWFNodeWholeGrade(ctx, evaObj, wfNodeDefColl.get(0));
+					}
+				} else {
+					nodeGrade = null;
+				}
+
+				if (StringUtils.isEmpty(nodeGrade) && null != sumScore) {
+					nodeGrade = PerfWorkFlowUtils.getLevelByPerfScore(ctx, ruleId, Float.valueOf(sumScore), "1");
+				}
+
+				evaResultSummaryInfo.setGradeLevel(nodeGrade);
+			}
+
+			PerfEvaObjRejectionAreaCollection evaObjRejectionAreaColl = GetEntityInfoUtils.getPerfEvaObjRejectionAreaColl(ctx, evaObj);
+			if (null != evaObjRejectionAreaColl && evaObjRejectionAreaColl.size() > 0) {
+				int evaObjRejSize = evaObjRejectionAreaColl.size();
+
+				for(int i = 0; i < evaObjRejSize; ++i) {
+					if (evaObjRejectionAreaColl.get(i).getRejection() != null && evaObjRejectionAreaColl.get(i).getRejection().getValue().equals("100")) {
+						sumScore = "0";
+						String ruleId = planInfo.getPerfRule().getId().toString();
+						nodeGrade = PerfWorkFlowUtils.getLevelByPerfScore(ctx, ruleId, Float.valueOf(sumScore), "1");
+						evaResultSummaryInfo.setGradeLevel(nodeGrade);
+						break;
+					}
+				}
+			}
+			//二开改 202412
+			if (null != newSumScore) {
+				if(!StringUtils.isEmpty(cusGrade)) {
+					evaResultSummaryInfo.setGradeLevel(cusGrade);  
+					PerfScoreLevelInfo perfScorLevel = evaResultSummaryInfo.getPerfScorLevel();
+					if(null != perfScorLevel) {
+						FilterInfo filterInfo = new FilterInfo();
+						filterInfo.getFilterItems().add(new FilterItemInfo("perfScoreLevel.id",perfScorLevel.getId().toString() , CompareType.EQUALS));
+						filterInfo.getFilterItems().add(new FilterItemInfo("perfLevelName",cusGrade , CompareType.EQUALS));
+//						SelectorItemCollection selectors = new SelectorItemCollection();
+//						selectors.add(new SelectorItemInfo("id"));
+						EntityViewInfo evi = new EntityViewInfo();
+						evi.setFilter(filterInfo);
+//						evi.setSelector(selectors);
+						IPerfScorLevelDefine defIns = PerfScorLevelDefineFactory.getLocalInstance(ctx);
+						PerfScorLevelDefineCollection sCollection = defIns.getPerfScorLevelDefineCollection(evi);
+						if(sCollection.size()>0 ) {
+							PerfScorLevelDefineInfo perfScorLevelDefineInfo = sCollection.get(0);
+							evaResultSummaryInfo.setPerfScorLevelDefine(perfScorLevelDefineInfo);
+						}
+					}
+				} 
+				evaResultSummaryInfo.put("sumScore", PerfPortalUtils.roudUpRemainGiveDecimal(2, Float.valueOf(newSumScore)));
+			} else {
+				evaResultSummaryInfo.put("sumScore", (Object)null);
+			}
+
+			evaResultSummaryInfo = PerfWorkFlowUtils.setPerfscoreLevelForEvaresult(ctx, evaObj, evaResultSummaryInfo);
+			if (!setFinalGrade) {
+				evaResultSummaryInfo.setGradeLevel("");
+				evaResultSummaryInfo.put("gradeLevel", "");
+			}
+
+			ievaResultSummary.updatePartial(evaResultSummaryInfo, sic);
+		} else {
+			this.createEvaResultSummary(ctx, evaObj);
+		}
+		//二开
+		return newSumScore;
+	}
+	/****************************************解决提交后生成考核结果问题* over**************************************************/
+
+
+
+
+
+}
+
+
+

+ 827 - 0
备份/perfportalNew.js

@@ -0,0 +1,827 @@
+shr.defineClass("shr.perfweb.perfportalNew", shr.framework.Core, {
+    _SHOW_TODO: 1,  // 右侧显示绩效待办
+    _SHOW_AXVTODO: 2,   // 右侧显示业绩待办
+    _SHOW_IFRAME: 3,    // 右侧显示iframe
+    _RESOURCETARGET_AXV: 'achivementData', // 初始化默认点击业绩数据维护菜单
+    initalizeDOM: function () {
+        // 初始化JS环境
+        shr.perfweb.perfportalNew.superClass.initalizeDOM.call(this);
+        if (shr.getUrlParam("inFrame") == null || shr.getUrlParam("inFrame") == '') {
+            window.location.href = shr.getContextPath() + '/dynamic.do?uipk=' + shr.getCurrentViewPage().uipk + '&inFrame=true';
+        }
+        this.initMenu();    // 初始化菜单
+
+        if (shr.getUrlRequestParam("resourceTag") == this._RESOURCETARGET_AXV) {
+            //选中 业绩维护 菜单
+            $('#perfAchivementManagementParent').trigger('click');
+            $('#perfAchivementManagementTag').trigger('click');
+        } else {
+            // 自动跳转默认展示菜单
+            var defautMenu = shr.getUrlRequestParam("defautMenu");
+            if (defautMenu != undefined && defautMenu != "") {
+                var $menuLi = $('li[name="' + defautMenu + '"]');
+                var $menuParent = $menuLi.parent("ul").parent(".menuList");
+                $menuParent.trigger('click');
+                $menuLi.trigger('click');
+            } else {
+                this.initTodoContent(); // 初始化绩效待办
+                this.initMyOngoingData();   // 初始化我参与进行中的考核
+            }
+        }
+
+        //yien BT1468810 没任何组织绩效待办卡片权限时   ,组织绩效待办框 字段去掉(个人)
+        this.initPersonAndOrgCardPanel();
+        defaultPage = this.initData['perfBatchScoreList_defaultPage'];
+        defaultPage4Org = this.initData['orgPerfBatchScoreList_defaultPage'];
+    },
+
+    /**
+     * 初始左侧菜单
+     */
+    initMenu: function () {
+        $('#workAreaDiv').append($("#leftMenuTpl").html());
+        $("#leftMenuTpl").remove();
+        this.menuClickEvent();
+    },
+
+    /**
+     * 菜单点击事件
+     */
+    menuClickEvent: function () {
+        var _self = this;
+        $('.menuList').unbind('click').bind('click', function (event) {
+            _self._menuClickStyle($(this));
+            var contentid = $(this).attr('for');
+            var breadcrumb = $(this).attr('breadcrumb');
+            var shruicode = $(this).attr('shruicode');
+            var perfshruicode = $(this).attr('perfshruicode');
+
+            // 【BT-01105576】breadcrumb取不到值,面包屑显示有问题
+            if (breadcrumb == undefined) {
+                breadcrumb = $("li[for='myEvaluationContent']").attr("breadcrumbValue");
+            }
+
+            if (contentid == 'myEvaluationContent') {
+                _self.initTodoContent(breadcrumb);  // 初始化绩效待办
+                _self.initMyOngoingData();   // 初始化我参与进行中的考核
+            } else if (contentid == 'axvManagementContent') {
+                _self.initAxvTodoContent(breadcrumb);   // 初始化业绩待办
+            } else if (!_self.customerMenuClickEvent($(this), contentid)) {
+                _self.initIframeContent($(this).attr("uipk"), $(this).attr("iframeName"), shruicode, perfshruicode);  // 跳转配置的uipk对应页面
+            }
+
+            stopEvent(event);
+        });
+    },
+
+    /**
+     *  自定义菜单点击事件
+     * @param obj
+     * @param contentid
+     * @returns {boolean}
+     */
+    customerMenuClickEvent: function (obj, contentid) {
+        return false;
+    },
+
+    /**
+     * 待办卡片点击事件
+     */
+    cardClickEvent: function () {
+        var _self = this;
+        var $rightContentArea = $("#rightContentArea");
+        $rightContentArea.find('.board').unbind('click').bind('click', function (event) {
+            // var count = $(this).find(".count").html();
+            var count = $(this).attr("count");
+            var uipk = $(this).attr("uipk");
+            var serviceId = decodeURIComponent($(this).attr("serviceid"));
+            var personId = $(this).attr("personid");
+            var action = $(this).attr("action");
+            var isOrg = $(this).attr("isorg");
+            var iframe = $(this).attr("iframe");
+            // 交叉视图拆分入口携带参数
+            var shruicode = $(this).attr("shruicode");
+            // 子页面交叉视图拆分入口携带参数
+            var perfshruicode = $(this).attr("perfshruicode");
+            if (action != undefined && action != "") {
+                action += "Action";
+                // 卡片定义了action属性的调用action对应的方法
+                shr.proxyCall.call(_self, action, _self, $(this), uipk, serviceId, personId, isOrg, shruicode, perfshruicode);
+            } else if (iframe != undefined && iframe != "") {
+                _self.initIframeContent(uipk, "", shruicode, perfshruicode);  // 跳转配置的uipk对应页面
+            } else if (uipk != undefined && uipk != "") {
+                if (count == "0") {
+                    // 待办数为0显示暂无待办事项
+                    _self._showNoneTodoMessage();
+                } else {
+                    var param = {
+                        uipk: uipk,
+                        isOrg: isOrg,
+                        serviceId: serviceId,
+                        period: ''
+                    }
+                    _self._addShruicode(param, shruicode, perfshruicode);
+                    // 否则根据uipk重载页面
+                    _self.reloadPage(param);
+                }
+            }
+        });
+    },
+
+    /**
+     * 团队目标下达待办卡片点击处理
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+     * @param isOrg
+     * @param shruicode
+     * @param perfshruicode
+     */
+    getTeamPersonalTargetDataAction: function (obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode) {
+        var _self = this;
+        $.block.show();
+        var param = {
+            uipk: uipk,
+            serviceId: serviceId,
+        }
+        if (isOrg != undefined && isOrg != "") {
+            param.isOrg = isOrg;
+        }
+        _self._addShruicode(param, shruicode, perfshruicode);
+        _self.reloadPage(param);
+        /*this.remoteCall({
+            method: "getTeamPersonalTargetData",
+            param: {
+                personId: personId,
+                evaObjName: '',
+                isOrg: isOrg
+            },
+            async: true,
+            success: function (data) {
+                $.block.hide();
+                if (data != null && data.totalCount > 0) {
+                    //将下达数量为0的考核周期过滤掉
+                    var periodId = '';
+                    for (var i = 0, len = data.evaPerfPeriodBeanList.length; i < len; i++) {
+                        if (data.evaPerfPeriodBeanList[i].evaCountPerPeriod > 0) {
+                            periodId = data.evaPerfPeriodBeanList[i].periodId;
+                            break;
+                        }
+                    }
+                    var param = {
+                        uipk: uipk,
+                        serviceId: serviceId,
+                        period: periodId
+                    }
+                    if (isOrg != undefined && isOrg != "") {
+                        param.isOrg = isOrg;
+                    }
+                    _self._addShruicode(param, shruicode, perfshruicode);
+                    _self.reloadPage(param);
+                } else {
+                    _self._showNoneTodoMessage();
+                }
+            }
+        });*/
+    },
+
+    /**
+     * 团队个人目标评价待办卡片点击处理
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+     * @param isOrg
+     * @param shruicode
+     * @param perfshruicode
+     */
+    getTeamTargetCommentListAction: function (obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode) {
+        var _self = this;
+        $.block.show();
+
+        //打分页面性能优化 by huan_xiong 去掉有无数据判断,直接跳转
+        var param = {
+            uipk: uipk,
+            serviceId: serviceId,
+            personId: personId
+        }
+
+        _self._addShruicode(param, shruicode, perfshruicode);
+        _self.reloadPage(param);
+
+        /*        this.remoteCall({
+                    method: "getTeamTargetCommentList",
+                    async: true,
+                    success: function (data) {
+                        $.block.hide();
+                        if (data != null && data.totalCount > 0) {
+                            var periodId = data.evaPerfPeriodBeanList[0].periodId;
+                            _self.reloadPage({
+                                uipk: uipk,
+                                period: periodId,
+                                serviceId: serviceId,
+                                personId: personId
+                            });
+                        } else {
+                            _self._showNoneTodoMessage();
+                        }
+                    }
+                });*/
+    },
+
+    /**
+     * 我的考核目标待办卡片点击处理
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+     * @param isOrg
+     * @param shruicode
+     * @param perfshruicode
+     */
+    getMyTargetDataAction: function (obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode) {
+        var _self = this;
+        this.remoteCall({
+            method: "getMyTargetData",
+            param: {
+                evaObjName: '',
+                isOrg: isOrg
+            },
+            async: false,
+            success: function (data) {
+                /*if (data != null && data.length > 0) {*/
+                var curPeriodId;
+                if (data != null && data.length > 0){
+                    curPeriodId = data[0];
+                }else{
+                    curPeriodId = '';
+                }
+
+
+                    var param = {
+                        uipk: uipk,
+                        serviceId: serviceId,
+                        period: curPeriodId
+                    }
+
+                    _self._addShruicode(param, shruicode, perfshruicode);
+                    _self.reloadPage(param);
+                /*} else {
+                    _self._showNoneTodoMessage();
+                }*/
+            }
+        });
+    },
+
+    /**
+     * 我的考核自评待办卡片点击处理
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+     * @param isOrg
+     * @param shruicode
+     * @param perfshruicode
+     */
+    getPersonalTargetCommentListAction: function (obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode) {
+        var _self = this;
+        if (_self._hideboardwrap(obj)) {
+            return;
+        }
+        $.block.show();
+        var param = {
+            personId: personId
+        };
+        if (isOrg != undefined && isOrg != "") {
+            param.isOrg = isOrg;
+        }
+        this.remoteCall({
+            method: "getPersonalTargetCommentList",
+            param: param,
+            async: true,
+            success: function (data) {
+                $.block.hide();
+                if (data != null && data.length > 0) {
+                    globalPersonnalTargetData = data;
+                    _self._loadingSelfAssessmentData(data, obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode);
+                } else {
+                    _self._showNoneTodoMessage2(obj.find(".nameboard"));
+                }
+                _self._openNameboardList(obj);
+            }
+        });
+    },
+
+    /**
+     * 其他绩效待办卡片点击处理
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+     */
+    othersTodoAction: function (obj, uipk, serviceId, personId) {
+        var safeUrl = shr.safeUrl(shr.getContextPath().replace("/shr", "") +
+            "/easweb/webviews/workflow/processcenter.jsp?waf2skin=eas&entitypk=" + encodeURIComponent(uipk));
+        window.open(safeUrl);
+    },
+
+    /**
+     * 隐藏卡片下拉显示
+     * @private
+     */
+    _hideboardwrap: function (obj) {
+        var boardwrapH = obj.parents('.boardwrap').height();
+        if (obj.hasClass('boardfooterclick')) {
+            $.block.hide();
+            obj.animate({height: boardwrapH + 'px'}, function () {
+                obj.removeClass('boardfooterclick');
+                obj.removeClass('boxshadow');
+                obj.css('z-index', '0');
+            });
+            return true;
+        }
+        return false;
+    },
+
+    /**
+     * 加载【我的考核自评】数据
+     * @param data
+     * @param obj
+     * @param uipk
+     * @param serviceId
+     * @param personId
+	 * @param isOrg
+     * @param shruicode
+     * @param perfshruicode
+     * @private
+     */
+    _loadingSelfAssessmentData: function (data, obj, uipk, serviceId, personId, isOrg, shruicode, perfshruicode) {
+        var _self = this;
+        var $nameboard = obj.find('.nameboard');
+        if (data == undefined || data == null || data == '') {
+            _self._showNoneTodoMessage2($nameboard);
+        } else {
+            $nameboard.html('');
+            $nameboard.append(_self._myselfEvalutionLoadList(data));
+        }
+
+        //跳转到我的自评打分页面
+        obj.find('.megList li .batch, .one_column').each(function (index, el) {
+            $(el).live('click', function () {
+                var evaObj = $(this).attr("evaobj");
+                var periodId = $(this).attr("periodId");
+                var gradeTaskNode = $(this).attr("gradeTasknode");
+                var wfLevel = $(this).attr("wfLevel");
+
+                //var defaultPage = $('#defaultPage').text();
+                if(isOrg == "1") {
+                    if (defaultPage4Org == 'list') {
+                        uipk = 'com.kingdee.shr.perfweb.app.perfscoreNew4Org.core'
+                    }
+                }else {
+                    if (defaultPage == 'list') {
+                        uipk = 'com.kingdee.shr.perfweb.app.perfscoreNew.core';
+                    }
+                }
+
+                var param = {
+                    uipk: uipk,
+                    evaObj: evaObj,
+                    periodId: periodId,
+                    personId: personId,
+                    serviceId: serviceId,
+                    //personNumber: personNumber,
+                    entryType: 'myselfEvalu',
+                    gradeTaskNode: gradeTaskNode,
+                    wfLevel: wfLevel
+                }
+
+                _self._addShruicode(param, shruicode, perfshruicode);
+                _self.reloadPage(param);
+            });
+        })
+    },
+
+    /**
+     * 我的考核自评待办卡片数据预览Html
+     * @param data
+     * @private
+     */
+    _myselfEvalutionLoadList: function (data) {
+        var $nameboardTpl = $("#nameboardTpl");
+        var nameboardTpl = juicerUtils.parseHtml2JuicerTpl($nameboardTpl.html());
+        return juicer(nameboardTpl, {rows: data})
+    },
+
+    /**
+     * 打开待办卡片预览
+     * @param obj
+     * @private
+     */
+    _openNameboardList: function (obj) {
+        var board = obj;
+        var boardwrapH = obj.parents('.boardwrap').height();
+        var nameboard = obj.find('.nameboard');
+        var zIndex = $('.boardfooterclick').length + 2;
+        board.css('z-index', zIndex);
+        obj.addClass('boardfooterclick');
+        board.addClass('boxshadow');
+        var height = nameboard.innerHeight() + boardwrapH + 10 + 'px';
+        board.animate({height: height});
+    },
+
+    /**
+     * 刷新待办卡片数量
+     */
+    initDataAction: function (updateCountFlag) {
+        $.block.show();
+        this.remoteCall({
+            method: 'initData',
+            param: {
+                updateCountFlag: updateCountFlag
+            },
+            success: function (data) {
+                if (data && data.length > 0) {
+                    for (var item in data) {
+                        $("div[id='" + item + "']").html(data[item]);   // 刷新待办数
+                    }
+                }
+                $.block.hide();
+            }
+        });
+    },
+
+    /**
+     * 初始化右侧区域
+     * @param contentIndex 1:显示绩效待办 2:显示业绩数据 3:显示iframe
+     * @param uipk iframe的src
+     * @param iframeName 兼容老代码,有些地方iframe的子页面需要根据父页面iframe名称来定位
+     * @param shruicode
+     * @param perfshruicode
+     */
+    initRightContent: function (contentIndex, uipk, iframeName, shruicode, perfshruicode) {
+        var $rightContentArea = $("#rightContentArea");
+        var $otherContent = $rightContentArea.find("div.content[index!='" + contentIndex + "']");
+        var $content;
+        if ($rightContentArea != undefined) {
+            $content = $rightContentArea.find("div.content[index='" + contentIndex + "']");
+        }
+
+        // 右侧显示iframe
+        if (contentIndex == this._SHOW_IFRAME) {
+            if (uipk == undefined) {
+                return;
+            }
+            $otherContent.hide();
+            $content.remove();
+        } else if ($content.length > 0) {
+            // 右侧区域已渲染的情况下,重新渲染待办卡片数即可
+            this.initDataAction(contentIndex + "");
+            if (contentIndex == this._SHOW_TODO) {
+                this.initMyOngoingData();   // 初始化我参与进行中的考核;
+            }
+            $otherContent.hide();
+            $content.show();
+            return;
+        }
+        $otherContent.hide();
+        // 根据视图配置模板解析右侧区域
+        this._parseRightContent(contentIndex, uipk, iframeName, shruicode, perfshruicode);
+
+    },
+
+    /**
+     * 初始化绩效待办区域
+     */
+    initTodoContent: function (breadcrumb) {
+        if (breadcrumb == undefined) {
+            breadcrumb = $("li[for='myEvaluationContent']").attr("breadcrumbValue");
+        }
+        this.initRightContent(this._SHOW_TODO);
+        var resourceTag = shr.getUrlRequestParam("resourceTag");
+        var url = window.location.href;
+        if (resourceTag != "" && resourceTag != undefined) {
+            url = url.replace(/(&resourceTag=.*?)&/g, '&');
+            window.history.pushState({}, 0, url);
+        }
+        this.initNavigationStore({
+            uipk: shr.getCurrentViewPage().uipk,
+            name: breadcrumb,
+            url: url
+        });
+        this.cardClickEvent();
+    },
+
+    /**
+     * 初始化业绩数据待办区域
+     */
+    initAxvTodoContent: function (breadcrumb) {
+        this.initRightContent(this._SHOW_AXVTODO);
+        var uipk = shr.getCurrentViewPage().uipk;
+        var resourceTag = shr.getUrlRequestParam("resourceTag");
+        if (resourceTag == "" || resourceTag == undefined) {
+            uipk += "&resourceTag=achivementData";
+        }
+        this.initNavigationStore({
+            uipk: uipk,
+            name: breadcrumb
+        });
+        this.cardClickEvent();
+    },
+
+    /**
+     * 初始化iframe区域
+     */
+    initIframeContent: function (uipk, iframeName, shruicode, perfshruicode) {
+        if (iframeName == "" || iframeName == undefined) {
+            iframeName = "rightContentIframe";
+        }
+        this.initRightContent(this._SHOW_IFRAME, uipk, iframeName, shruicode, perfshruicode);
+    },
+
+    /**
+     * 初始化面包屑导航数据
+     */
+    initNavigationStore: function (item) {
+        var items = shrDataManager.pageNavigationStore.getDatas();
+        if (typeof items != "undefined" && items.length == 2) {
+            var oldUipk = items[1].uipk;
+            var newUipk = item['uipk'];
+            var newUrl = item['url'];
+            items[1].name = item['name'];
+            items[1].uipk = newUipk;
+            if (newUrl != undefined && newUrl != "") {
+                items[1].url = newUrl;
+            } else {
+                items[1].url = items[1].url.replace(oldUipk, newUipk);
+            }
+
+            shrDataManager.pageNavigationStore.setDatas(items);
+        }
+    },
+
+    /**
+     * 初始化我参与进行中的考核
+     */
+    initMyOngoingData: function () {
+        $.block.show();
+        var _self = this;
+        var $rightContentArea = $("#rightContentArea");
+        var $myOngoingTpl = $("#myOngoingTpl");
+        var myOngoingTpl = juicerUtils.parseHtml2JuicerTpl($myOngoingTpl.html());
+
+        this.remoteCall({
+            method: "getMyOngoingAsmtList",
+            async: true,
+            param: {rows: $myOngoingTpl.attr("rows")},
+            success: function (result) {
+                if (result && null != result.baseData && result.baseData != undefined) {
+                    var baseData = result.baseData;
+                    var processViewData = result.processViewData;
+                    var rows = [];
+                    for (var i = 0; i < baseData.length; i++) {
+                        var item = baseData[i];
+                        var it = {};
+                        it.planname = item["perfPlan.name"] ? item["perfPlan.name"] : '&nbsp;&nbsp;';
+                        if(0===item["evaObj.isOrg"].value){
+                            it.objname = item["person.name"];
+                        }else {
+                            it.objname = item["adminOrgUnit.name"];
+                        }
+                        it.asignmentPoolID = item["asignmentPool.id"];
+
+                        var processViewDatas = processViewData.data;
+                        var datas = {};
+                        for (var k = 0; k < processViewDatas.length; k++) {
+                            var elem = processViewDatas[k][0][0][0];
+                            if (elem.asignmentPoolID == it.asignmentPoolID) {
+                                datas.data = processViewDatas[k];
+                                break;
+                            }
+                        }
+                        datas.photo = processViewData.photo;
+                        var processViewHtml = generateProcessView(datas);
+                        it.processViewHtml = processViewHtml
+                        rows.push(it);
+                    }
+
+                    $rightContentArea.find('#ongoingRows').html(juicer(myOngoingTpl, {rows: rows}));
+                }
+                _self._myOngoingViewClick();
+                $.block.hide();
+            }
+        });
+    },
+
+    /**
+     * 显示暂无待办事项
+     * @private
+     */
+    _showNoneTodoMessage: function () {
+        shr.showInfo({
+            message: $("#todoMessage1").attr("value"),
+            hideAfter: 3
+        })
+    },
+
+    /**
+     * 显示暂无待办事项
+     * @param obj
+     * @private
+     */
+    _showNoneTodoMessage2: function (obj) {
+        obj.html($("#todoMessage2").html());
+    },
+
+    /**
+     * 根据视图配置模板解析右侧区域
+     * @param contentIndex
+     * @param uipk
+     * @param iframeName
+     * @private
+     */
+    _parseRightContent: function (contentIndex, uipk, iframeName, shruicode, perfshruicode) {
+        var _self = this;
+        var $rightContentArea = $("#rightContentArea");
+        var $workAreaDiv = $('#workAreaDiv');
+        var rightContentTpl = juicerUtils.parseHtml2JuicerTpl($("#rightContentTpl" + contentIndex).html());
+        var minHeight = $(window).height() - $('.menu').offset().top - 5;
+        var serviceId = shr.getUrlRequestParam("serviceId", window.location.href);
+        if (uipk != undefined && uipk != "" && uipk.indexOf("serviceId") < 0) {
+            uipk += "&serviceId=" + serviceId;
+        }
+        var param = {
+            minheight: minHeight,
+            width: $rightContentArea.width(),
+            src: shr.getContextPath() + "/dynamic.do?uipk=" + decodeURIComponent(uipk),
+            iframeName: iframeName
+        }
+
+        if (shruicode != undefined && shruicode != "") {
+            param.src += "&shruicode=" + shruicode;
+        }
+        if (perfshruicode != undefined && perfshruicode != "") {
+            param.src += "&perfshruicode=" + perfshruicode;
+        }
+
+        var parseRightHtml = $(juicer(rightContentTpl, param));
+        $rightContentArea.append(parseRightHtml);
+        $workAreaDiv.append($rightContentArea);
+
+        if (contentIndex != this._SHOW_IFRAME) {
+            var $cardTpl = $("#cardTpl" + contentIndex);
+            var $orgCardTpl = $("#orgCardTpl" + contentIndex);
+            var $content = $rightContentArea.find("div.content[index='" + contentIndex + "']")
+            this._parseCardTpl($cardTpl, $content.find('.todo'), "0");
+            this._parseCardTpl($orgCardTpl, $content.find('.orgtodo'), "1");
+        } else if (uipk != undefined && uipk != "") {
+            var $iframe = $rightContentArea.find("iframe[name='" + iframeName + "']");
+            $.block.show({
+                text: $iframe.attr("loadtext")
+            });
+            $iframe.css('min-height', minHeight + 'px');
+            $iframe.load(function () {
+                $.block.hide();
+            });
+        }
+    },
+
+    /**
+     * 菜单点击样式控制
+     * @param obj
+     */
+    _menuClickStyle: function (obj) {
+        var $this = obj;
+        var currentClass = 'selectedmenu';
+        if (obj.closest('ul').hasClass('menu_second')) {						//二级菜单
+            $this = obj.closest('li');
+            currentClass = 'subCurrentSelsct';
+        }
+
+        var borderleft = $this.parent().find('.borderleft');
+        var index = $this.index();
+        $('.' + currentClass).removeClass(currentClass);
+        obj.addClass(currentClass);
+
+        if (obj.attr('hasSecondMenu') == 'true') {
+            var secondMenu = obj.find('.menu_second');
+            if (secondMenu.is(':hidden')) {
+                $('.menu_second').hide();
+                secondMenu.show();
+            } else {
+                secondMenu.hide();
+            }
+        } else if (obj.closest('ul').hasClass('menu_list')) {
+            $('.menu_second').hide();
+            $('.subCurrentSelsct').removeClass('subCurrentSelsct');
+        }
+
+        var top = (parseInt($this.css("margin-bottom")) + $this.height()) * index + 'px';
+        borderleft.animate({top: top}, 100);
+    },
+
+    /**
+     * 我参与进行中的考核点击事件
+     */
+    _myOngoingViewClick: function () {
+        var _self = this;
+        $('.linkstyle').unbind('click').bind('click', function () {
+            var li = $(this).parent('li');
+            var chart = li.find('.assessment_chart');
+            if (!$(this).hasClass('viewapread')) {
+                li.animate({height: 57 + chart.innerHeight() + 'px'});
+                $(this).addClass('viewapread');
+                li.addClass('boxshadow');
+            } else {
+                li.animate({height: '57px'}, function () {
+                    li.removeClass('boxshadow');
+                });
+                $(this).removeClass('viewapread');
+            }
+        });
+
+        $('.more').die('click').live('click', function () {
+            uipk = $(this).attr("uipk");
+            _self.reloadPage({
+                uipk: uipk,
+                serviceId: '' //处理点击更多报500的问题 R20200401-2163
+            });
+        });
+    },
+
+    /**
+     * 解析视图待办卡片模板
+     * @param $cardTpl
+     * @param $appendTo
+     * @param isOrg 是否组织考核
+     */
+    _parseCardTpl: function ($cardTpl, $appendTo, isOrg) {
+        var $cardParseTpl = juicerUtils.parseHtml2JuicerTpl($("#cardTpl").html());
+        $cardTpl.find("cardx").each(function () {
+            var param = {
+                title: $(this).attr("title"),  // 卡片标题
+                desc: $(this).attr("desc"), // 卡片描述
+                count: $(this).attr("count"),   // 待办数
+                uipk: $(this).attr("uipk"),
+                serviceid: $(this).attr("serviceid"),
+                countflag: $(this).attr("countflag"),   // 更新待办数id
+                display: $(this).attr("display"),   // 是否可见
+                action: $(this).attr("action"), // 点击执行自定义方法,
+                isOrg: isOrg,    // 是否组织考核
+                iframe: $(this).attr("iframe"),
+                shruicode: $(this).attr("shruicode"),   // 交叉视图拆分入口携带参数
+                perfshruicode: $(this).attr("perfshruicode"),   // 子页面交叉视图拆分入口携带参数
+            }
+            if (param.display == "true" || param.display == undefined) {
+                $(juicer($cardParseTpl, param)).appendTo($appendTo);
+            }
+        });
+    },
+    /**
+     * yien 补丁11 根据权限是否隐藏个人、组织填报的面板
+     */
+    initPersonAndOrgCardPanel: function() {
+        if($('#cardTpl1 cardx[display="true"]').length < 1) {
+            $('.content[index="1"]  .todo').remove();
+        }
+
+        if($('#orgCardTpl1 cardx[display="true"]').length < 1) {
+            $('.orgtodo').remove();
+        }
+    },
+
+    /**
+     * 给param添加shruicode参数
+     * @param param
+     * @param shruicode
+     * @param perfshruicode
+     * @private
+     */
+    _addShruicode: function(param, shruicode, perfshruicode) {
+        if (shruicode != undefined && shruicode != "") {
+            param.shruicode = shruicode;
+        }
+        if (perfshruicode != undefined && perfshruicode != "") {
+            param.perfshruicode = perfshruicode;
+        }
+    }
+
+});
+
+/**
+ * 阻止事件冒泡
+ * @param event
+ */
+function stopEvent(event) {
+    var e = arguments.callee.caller.arguments[0] || event;//这里是因为除了IE有event其他浏览器没有所以要做兼容
+    if (e && e.stopPropagation) {     //其他浏览器
+        e.stopPropagation();
+    } else if (window.event) {       //IE浏览器
+        e.cancelBubble = true;
+    }
+}
+
+function setIframeHeight(id) {
+    shr.setIframeHeight(id);
+}

+ 5769 - 0
备份/perfscoreNew.js

@@ -0,0 +1,5769 @@
+/*
+ *description : 单人评分
+ *author :caiwei_li
+ *date :2017/08/01
+*/
+var isAutoSubmitVal,hideUnselfWholeGrade,hideUnselfWholeScore,hideReviseResultVal,hideUnselfScore,hideHandlerWeight,hideReviseReasonVal,hideUnselfScoring,hideUnselfWholeGrading,hideUnselfWholeScoring
+    ,hideUnselfWholeCommenting; //参数配置
+var hideNodeWeight= "true";
+var globalPersonBaseData = null; //员工
+var evaObj = null; //当前评估对象id
+var periodId = null; //当前评估对象所在考核周期id
+var personId = null; //当前登录用户对应的员工id
+var personNumber = null; //当前评估对象对应的职员编码
+var showfieldnum = 5; //员工信息区域默认显示6个字段
+var isShowAuditedWholeForm = 0; //我已处理的评分 已评分列表-是否允许查看后续已审核节点评分详情
+var entryType = null; //标志是从哪里进入评分页面:myselfEvalu-我的考核自评
+var that = null;
+var globalIndicatorData = null; //指标数据
+var CREATE_INDICATOR = 1; //1:创建指标明细
+var SWITCH_INDICATOR = 0; //0:切换指标明细
+
+var currentNum = 0;
+var curIndecatorType = null; //当前指标类型
+var currentNodeLevel = 1; //当前节点层级
+var gradeTaskNode = ''; //当前节点运行实例id
+var scoreStatus = ''; //节点评分状态
+
+var _gscoreOrRate = 0; //评分还是打等级[0:评分;1:打等级]
+var _glowLimit = 0; //分数下限
+var _gupLimit = 0; //分数上限
+var _overRang ; //超过分数上限
+var _ftarscore = 0; //超过分数上限
+var _gcanNegative = 0; //可否打负分[0:不可;1:可以]
+var _gcanRate = 0; //是否可以评分[0:不可;1:可以]
+var _gcanOverRang = 0; //是否允许评分超出分制范围[0:不可;1:可以]
+
+var _needScore = 0; //是否允许评分
+var _wholeComment = 0; //整体评语是否必录
+var _perfGradeEvaluate = 0; //是否允许打等级
+var isShowDistribution = '0'; // 是否显示正态分布
+var _indicatorComment = 0; //是否必须打等级
+
+var _noPassVerifyArr = new Array(); //评分校验信息数组
+var _gcanSaveFlag = true; //评分是否通过校验的标识
+var isFirstInit = 0; //第一条指标初始化标志
+var handleName; //当前登陆人姓名
+var nodeSumScore = 0; //当前节点总分
+var nodeGrade = ""; //当前节点等级
+
+var spreadothersFlag = false; //是否默认展开他人评分
+var selectedIndicatorId = ''; //当前点击的指标的id
+var _clicked = false;
+var pageSource = "";//标注请求的来源、EVALUCARDVIEV:请求为考核卡界面请求
+var personName = '';
+var myType = "INIT";
+var viewMode = ""; //用于做扩展业务处理,目前用户已发送列表查看评估表
+
+var rows = 8; //左侧列表默认显示8条数据
+var page = 1; //默认第一页
+var isPageInit = 1;
+var initGradeTaskNode = '';
+var currentIsShowWholeGrade = 0; //当前处理人是否能打整体评价
+var isShowHandlerWeight = 1; //是否展示处理人的权重
+var isTeamEvalu = 0; //是否团队目标评分[0:否;1:是]
+
+//yien 20191122 天虹私包
+var isShowLevelScoreRange = 1; //是否显示等级的分数范围
+var isManualJudgeGrade = 0; //是否手工调整体等级
+var rateIsAutoCaluWholeGrade = 0; //打等级时是否自动计算整体评价等级【0:不自动计算;1:自动计算】 注:不再使用,使用isManualJudgeGrade一个参数控制
+
+var _gExistRejection = 0; //是否存在否决项
+var isEditGradesChange = 0; //是否手工选了整体评价等级 
+var isModifyScore = 0; //是否有修改过指标得分
+
+var submitMsg = null; //提交打分时后台组装的提示信息
+var submitNodeGrade = null; //提交时等级
+var submitNodeSumScore = null; //提交时节点总分
+var errorType = ['0', '1']; //[0:指标得分;1:指标评语]
+var evaResultId = "";
+var hideConfirmResult = false;
+var hideAppealResult = false;
+var hideConfirmResultVal = "";
+var hideAppealResultVal = "";
+var isAudited = false; //是否已审核
+var showAttachsOnly = false; // 是否仅显示上传附件但不允许上传
+
+var _gneedScoreArr = new Array(); //评分参数数组
+var isInitLeftListCompleted = 0; //左侧评估对象列表是否已加载 
+var personalScoreSearchIdList = "";
+var sourcePeriod = null; //团队目标评分传入的周期id
+var _gneedScoreArr = new Array(); //评分参数数组
+var _wholeCommentIsMustArr = new Array(); //整体评价是否必录-支持矩阵
+var fromPage;
+var _gRadio = null;
+
+var gradeOption = []    // 等级下拉框option
+
+var canEditTable = true;     // 默认表格可以编辑
+var lastTable = '';
+var lastrow = '';
+var lastcell = '';
+
+var scoreparams = null; //指标评分参数
+// 组织考核标识
+var isOrg = "0";
+var uploadAttachSize=10; //附件上传大小
+
+//yien:合并打分节点的任务实例
+var combineGradeTaskIds = [];
+
+// 新增校验信息记录对象,用于提交时校验字段必填
+var globalErrorMsg = [];
+
+var interviewData = {}; //补丁18
+shr.defineClass("shr.perfweb.perfscoreNew", shr.framework.List, {
+    targetBillIdMap: {}, //暂存目标流程单据
+    fixedboxWidth: '',
+    initalizeDOM: function () {
+        var defaultPage = this.initData.scoreDefaultPage;
+        if(defaultPage == 'overview'){
+            this.initCurrentPageByConfig();
+        }
+        // 初始化JS环境
+        it = this;
+        that = this;
+        shr.perfweb.perfscoreNew.superClass.initalizeDOM.call(this);
+
+        evaObj = shr.getUrlRequestParam("evaObj");
+        periodId = shr.getUrlRequestParam("periodId");
+        sourcePeriod = periodId;
+        personId = shr.getUrlRequestParam("personId");
+        personNumber = shr.getUrlRequestParam("personNumber");
+        entryType = shr.getUrlRequestParam("entryType");
+        pageSource = shr.getUrlRequestParam("pageSource");
+        personName = shr.getUrlRequestParam("personName");
+        viewMode = shr.getUrlRequestParam("viewMode");
+        initGradeTaskNode = gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
+        personalScoreSearchIdList = shr.getUrlRequestParam("personalScoreSearchIdList");
+        fromPage = shr.getUrlRequestParam("fromPage");
+
+        // hideConfirmResultVal = $("#hideConfirmResult").text();
+        // hideAppealResultVal = $("#hideAppealResult").text();
+        var reqRows = shr.getUrlRequestParam("rows");
+        if(null != reqRows && reqRows != undefined){
+            rows = reqRows;
+        }
+        var reqPage = shr.getUrlRequestParam("page");
+        if(null != reqPage && reqPage != undefined){
+            page = reqPage;
+        }
+        this.initConfigData();//初始化参数配置
+
+        //代码还原-yien
+        that.bindGridScoreInputBlurEvent();
+
+        //yien 20191122 天虹私包
+        that.initCustomParamList();
+
+        //获取页面自定义参数,是否展示处理人权重
+        if (hideNodeWeight == 'true') {
+            isShowHandlerWeight = 0;
+        }
+
+        if(entryType == 'myview'){
+            // currentNodeLevel = shr.getUrlRequestParam("wfLevel");
+            // gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
+            // it.initRightContent();//右侧内容
+            // it.initPersonalInformation(); //评估对象个人信息
+
+            it.initLeftList();//左侧列表
+            isInitLeftListCompleted = 1;
+            $(".content_left").remove();
+            $('#saveScore, #submitScore').hide();
+
+            $('.content_right').css({
+                'width': '100%',
+                'margin-right': '0'
+            });
+
+        } else if (entryType == 'myselfEvalu') {//个人目标评分入口
+            currentNodeLevel = shr.getUrlRequestParam("wfLevel");
+            gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
+            it.initRightContent();//右侧内容
+            // it.initPersonalInformation(); //评估对象个人信息
+            $('.content_right').css({
+                'width': '100%',
+                'margin-right': '0'
+            });
+        } else if (entryType == 'viewMyScoreForm') {//查看我参与评分的界面;
+            if(isShowAuditedWholeForm == 'true'){
+                isShowAuditedWholeForm = 1;
+            }
+            canEditTable = false;
+            // 考核结果表单允许查看附件,隐藏上传按钮 2019-09-03 liuzw
+            showAttachsOnly = true;
+            myType = "VIEW";
+            currentNodeLevel = '2';// shr.getUrlRequestParam("wfLevel");
+            gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
+            it.initRightContent();//右侧内容
+            // it.initPersonalInformation(); //评估对象个人信息
+            $('.content_right').css({
+                'width': '100%',
+                'margin-right': '0'
+            });
+
+            $('#processView').hide();
+            $('#perfHistory').hide();
+            $('#backTo').hide();
+            $('#backtoRema').hide();
+            $('#saveScore').hide();
+            $('#saveScore, #submitScore, .view_manager_header').hide();
+
+            //BT1394720 (Q:之前为什么要隐藏?)
+            // $('#attachments').hide();
+            $('#submitScore').hide();
+            //    $('.workInfoWrap').append($('<span id="sumScoreShow"  style="margin-left:'+$('.informationBox').offset().left - 40+'px">考核成绩:<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
+//            $('#controlBtns').prepend($('<span id="sumScoreShow">考核成绩:<span id="sumscore" style="margin-left:10px"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
+
+            //屏蔽指标上的分数
+            $('span[name="indeicatorScore"]').hide();
+            $('span[name="scoreLable"]').hide();
+            $('.informationBox li:gt(' + showfieldnum + ')').hide();
+
+            //获取考核成绩
+            // that.remoteCall({
+            //     method: "getEvaReuslt",
+            //     param: {
+            //         evaObj : evaObj
+            //     },
+            //     async: false,
+            //     success: function (data) {
+            //         if (data != null) {
+            //             if(data.sumscore != null && data.sumscore != undefined){
+            //                 $('#sumscore').text(data.sumscore);
+            //             }
+            //             if(data.gradeLevel != null && data.gradeLevel != undefined){
+            //                 $('#gradeLevel').text(data.gradeLevel);
+            //             }
+            //         }
+            //     }
+            // });
+            //he_tao  查看评分界面,所有输入框不可编辑
+//             $("input").attr("disabled", "disabled"); //所有输入框不可编辑
+//             $("textarea").attr("disabled", "disabled"); //所有输入框不可编辑
+        } else if (entryType == 'viewEvaForm') {//查看评估表;
+            canEditTable = false;
+            // 考核结果表单允许查看附件,隐藏上传按钮 2019-09-03 liuzw
+            showAttachsOnly = true;
+
+            var perfPlan = shr.getUrlRequestParam("planId");
+            var planName = shr.getUrlRequestParam("planName");
+            isAudited = true;
+
+            //设置自己的面包屑
+            if (pageSource != undefined && pageSource == "EVALUCARDVIEV" && isOrg == "0") {//考核卡的面包屑
+                setTimeout(function () {
+                    var nvgStr = '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a></li><li><a id="perf_person_evalcard" href="#">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_23+
+                        '</a><span class="divider">/</span></li>'
+                        + '<li><a id="perfEvalCardPerson" href="#">' + personName + '</a><span class="divider">/</span></li>'
+                        +'<li class="active">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
+                        '</li>';
+
+                    $("#breadcrumb").children().remove();
+                    $("#breadcrumb").append($(nvgStr));
+                    $('#perf_person_evalcard').click(function () {
+                        that.reloadPage({
+                            uipk: 'com.kingdee.shr.perfweb.app.evalu.evalucard.list',
+                            serviceId: 'KAuskY/8RUGXUtikP5TmRPI9KRA=',
+                            inFrame: "true"
+                        })
+
+
+                    });
+                    $('#perfEvalCardPerson').click(function () {
+                        that.reloadPage({
+                            uipk: 'com.kingdee.shr.perfweb.app.evalu.evalucard',
+                            serviceId: 'KAuskY/8RUGXUtikP5TmRPI9KRA=',
+                            inFrame: "true",
+                            type: 'VIEW',
+                            personId: personId,
+                            pageSource: 'EVALUCARDVIEV'
+                        })
+
+                    });
+                    $("#breadcrumb").attr("style", "display: block;");
+                }, 500);
+            // 组织绩效考核卡
+            }else if(pageSource != undefined && pageSource == "EVALUCARDVIEV" && isOrg == "1"){
+                setTimeout(function() {
+                    //var nvgStr = '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a> </li><li><a id="perf_org_evalcard" href="#">绩效考核卡</a><span class="divider">/</span></li>'
+		    var nvgStr = '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a> </li><li><a id="perf_org_evalcard" href="#">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_23+'</a><span class="divider">/</span></li>'
+                        +'<li><a id="perfEvalCardOrg" href="#">' +adminOrgName+ '</a><span class="divider">/</span></li>'
+                        //+'<li class="active">考核结果</li>';
+			+'<li class="active">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+'</li>';
+
+                    $("#breadcrumb").children().remove();
+                    $("#breadcrumb").append($(nvgStr));
+                    $('#perf_org_evalcard').click(function(){
+                        that.reloadPage({
+                            uipk: 'com.kingdee.shr.perfweb.app.evalu.ORGevalucard.list',
+                            serviceId:'KAuskY/8RUGXUtikP5TmRPI9KRA=',
+                            inFrame:"true"
+                        })
+
+
+                    });
+                    $('#perfEvalCardOrg').click(function(){
+                        that.reloadPage({
+                            uipk: 'com.kingdee.shr.perfweb.app.evalu.ORGevalucard',
+                            serviceId:'KAuskY/8RUGXUtikP5TmRPI9KRA=',
+                            inFrame:"true",
+                            type:'VIEW',
+                            adminOrgid:adminOrgId,
+                            pageSource:'EVALUCARDVIEV'
+                        })
+
+                    });
+                    $("#breadcrumb").attr("style","display: block;");
+                }, 500);
+            } else if (pageSource != undefined && pageSource == "PERSONHISTORY") {//个人历史
+
+                setTimeout(function () {
+                    var nvgStr =
+                        // '<li><a id="evaPlanExecuteList" href="#">我的考核结果</a><span class="divider">/</span></li>';
+                        //                    +'<li><a id="evaPlanExecution" href="#">' +personName+ '</a><span class="divider">/</span></li>'
+                        '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a></li><li class="active">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
+                        '</li>';
+
+                    $("#breadcrumb").children().remove();
+                    $("#breadcrumb").append($(nvgStr));
+                    $("#breadcrumb").attr("style", "display: block;");
+//                    $('.switchbutton').css('top', 0);
+                }, 500);
+
+                // if (hideConfirmResultVal == 'true') {
+                //     hideConfirmResult = true;
+                // }
+                // if (hideAppealResultVal == 'true') {
+                //     hideAppealResult = true;
+                // }
+
+            } else if (pageSource != undefined && pageSource == "GROUPHISTORY") {//组织历史
+                setTimeout(function () {
+                    var perfPortalUrl = shr.getContextPath()
+                        + '/dynamic.do?uipk=com.kingdee.shr.perfweb.app.perfportal.core&inFrame=true&fromHeader=true&serviceId=fUjSqQK1RouZaEJUI2jH5vI9KRA%3D';
+
+                    var nvgStr = '<li class="homepage"><a href="' + perfPortalUrl + '" target="_parent">homepage</a><span class="divider">/</span> </li>'
+                        + '<li><a id="personalEvaCard" href="#">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_9+
+                        '</a><span class="divider">/</span></li><li class="active">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
+                        '</li>';
+                    $("#breadcrumb").children().remove();
+                    $("#breadcrumb").append($(nvgStr));
+                    $('#personalEvaCard').click(function () {
+                        that.reloadPage({
+                            uipk: "com.kingdee.shr.perfweb.app.evalu.evalucard",
+                            personId: personId,
+                            pageSource: "GROUPHISTORY",
+                            type: "VIEW"
+                        });
+                    });
+
+                }, 500);
+            } else{//默认的面包屑
+                var breadcrumb = $('#breadcrumb').shrBreadcrumb();
+                breadcrumb.shrBreadcrumb('pop');
+                breadcrumb.shrBreadcrumb('addItem', {name:
+                    shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_1,
+                        [planName])});
+
+                isAudited = shr.getUrlRequestParam("isAudited");
+            }
+
+
+            currentNodeLevel = "";
+            gradeTaskNode = "";
+            it.initRightContent();//右侧内容
+            // it.initPersonalInformation(); //评估对象个人信息
+            $('.content_right').css({
+                'width': '100%',
+                'margin-right': '0'
+            });
+
+            $('#processView').hide();
+            $('#perfHistory').hide();
+            $('#backTo').hide();
+            $('#backtoRema').hide();
+            $('#saveScore').hide();
+            $('#saveScore, #submitScore').hide();
+            //面谈
+            var interview = shr.getUrlRequestParam("interview");
+            // BT1440954-组织考核不显示“绩效面谈”按钮 modified by Janeou_xie
+            if (interview == 1 && isOrg == '0') {
+                $('#summaryInterview').show();
+            }
+            //BT1394720 (Q:之前为什么要隐藏?)
+            // $('#attachments').hide();
+            $('#submitScore').hide();
+            // var offsetleft = $('.informationBox').offset().left - $('.content_right').offset().left - 40;
+            var boxwidth = $('.workPhoto').length > 0 ? 27.84 : 32;
+            // $('.controlBtns').hide();
+            //$('.workInfo').append($('<span id="sumScoreShow">考核成绩:<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
+	        //$('.workInfo').append($('<span id="sumScoreShow">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_25+'<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
+            // $('.workInfo').append($('<span id="sumScoreShow" style="margin-left:' + (offsetleft) + 'px;width:'+boxwidth+'%">'+
+            $('.info-result-box').append($('<span id="sumScoreShow">'+
+                jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_25+
+                '<span id="sumscore"/></span><span id="gradeLevel" style="margin-left:10px" />'));
+	    // var hideReviseReasonVal = $("#hideReviseReason").text();
+            var hideReviseReason = false;
+            if (pageSource != undefined && pageSource == "PERSONHISTORY" && hideReviseReasonVal == 'true') {
+                hideReviseReason = true;
+            }
+            //增加修订原因
+            // BT1444170 查看评估表--列表模式,报错,上面考核成绩不显示,没有找到定义的地方,先默认为0
+            // var offsetleft = 0;
+            if (!hideReviseReason) {
+                 $('.info-result-box').append($('<span id="reviseReasonSpan">'+
+                    jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_50+
+                    '<span id="reviseReason" title=""></span>'));
+            }
+
+            // var hideReviseResultVal = $("#hideReviseResult").text();
+            var hideReviseResult = false;
+            if (pageSource != undefined && pageSource == "PERSONHISTORY" && hideReviseResultVal == 'true') {
+                hideReviseResult = true;
+            }
+            // if($('.workPhoto').length < 1){
+            //     $('#sumScoreShow').css('margin-left','1%');
+            // }
+
+            //屏蔽指标上的分数
+            $('span[name="indeicatorScore"]').hide();
+            $('span[name="scoreLable"]').hide();
+            $('.informationBox li:gt(' + showfieldnum + ')').hide();
+
+            //获取考核成绩
+            that.remoteCall({
+                method: "getEvaReuslt",
+                param: {
+                    evaObj: evaObj,
+                    isAudited: isAudited
+                },
+                async: false,
+                success: function (data) {
+                    if (data != null) {
+                        if (hideReviseResult) {
+                            if (data.realSumscore != null && data.realSumscore != undefined) {
+                                $('#sumscore').text(data.realSumscore);
+                            }
+                            if (data.realGradeLevel != null && data.realGradeLevel != undefined) {
+                                $('#gradeLevel').text(data.realGradeLevel);
+                            }
+                        } else {
+                            if (data.sumscore != null && data.sumscore != undefined) {
+                                $('#sumscore').text(data.sumscore);
+                            }
+                            if (data.gradeLevel != null && data.gradeLevel != undefined) {
+                                $('#gradeLevel').text(data.gradeLevel);
+                            }
+                        }
+
+                        if (data.reviseReason != null && data.reviseReason != undefined) {
+                            $('#reviseReason').text(data.reviseReason);
+                            $('#reviseReason').attr('title', data.reviseReason);
+                        }
+
+                        if (data.evaResultId) {
+                            evaResultId = data.evaResultId;
+                            // 屏蔽我的考核历史的结果确认和申诉按钮
+                            if (data.needConfirm && !hideConfirmResult && pageSource != undefined && pageSource == "PERSONHISTORY" && fromPage == "RESULTCONFIRM") {
+                                $('#confirmResult').show();
+                            }else{
+                            	$('#confirmResult').hide();
+                            }
+                            if (data.allowAppeal && !hideAppealResult && pageSource != undefined && pageSource == "PERSONHISTORY" && fromPage == "RESULTCONFIRM") {
+                                $('#appeal').show();
+                            }else{
+                            	$('#appeal').hide();
+                            }
+                        }
+                    }
+                }
+            });
+
+            //补丁18 绩效面谈处理
+            that.dealInterviewForm();
+
+        } else {//团队目标评分入口
+        	isTeamEvalu = 1;
+            it.initLeftList();//左侧列表
+            isInitLeftListCompleted = 1;
+            //切换列表后根据传入的节点实例id初始定位
+            if (isPageInit == 1) {
+                $("li[workerid='" + evaObj + "'][gradetasknode='" + initGradeTaskNode + "']").click();
+            } else {
+                $("li[workerid='" + evaObj + "'][gradetasknode='" + gradeTaskNode + "']").click();//指哪打哪
+            }
+
+            $('.view_manager_body').css('background', '#EDEFF4');
+            that.getDistributionInfo();
+        }
+
+
+        //第一节点隐藏"打回"按钮
+        if (currentNodeLevel == 1) {
+            $("#backTo").css("display", "none");
+        }
+        handleName = $('#ps-profile-set').find('span').text();
+        that.remoteCall({//附件数
+            method: "initialAttachment",
+            param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
+            async: true,
+            success: function (data) {
+                // 计算附件数量
+                var attachcount = data.length;
+                $('.attachcount').html(attachcount);
+            }
+        });
+
+        //获取页面自定义参数,是否展示处理人权重
+        if(hideNodeWeight == 'true'){
+            isShowHandlerWeight = 0;
+        }
+
+        //判断节点是否可被提交,模拟点击"展开他人评分"
+        var scoreObj = that.assembleScoreData();
+        var ids = new Array();
+        for (var i = 0; i < scoreObj.length; i++) {
+            ids.push(scoreObj[i].gradeTaskNode);
+        }
+        that.remoteCall({
+            method: "judgeIsCanSubmit",
+            param: {
+                gradeTaskNode: ids.toString(),
+                evaObj: evaObj,
+                scoreObj: JSON.stringify(scoreObj)
+            },
+            async: false,
+            success: function (data) {
+                if (data != null && data.canSubmit == false) {
+                    spreadothersFlag = true;
+                    //打开全部展开
+                    // $(".scoreItems").find("li").click();
+                    // $("#wholeComment").click();
+                    // $("div[class='spreadothers']").click();
+                    // $("div[class='spreadothers']").hide();
+
+                    //已提交的状态下隐藏“保存”和“提交”按钮
+                    $("#saveScore").hide();
+                    $("#submitScore").hide();
+                }
+            }
+        });
+        if (fromPage == "APPEAL") {
+            // 从申诉表单页面过来的隐藏确认按钮及申诉按钮
+            $("#appeal, #confirmResult").hide();
+        }
+
+        hideWeight();
+
+        var ch = $(window).height() - $('.view_manager_header').outerHeight() - $('#controlBtns').outerHeight() - $('.headercontain').height() + 'px';
+        if(top != self){
+            ch = parseInt($('#rightContentIframe',parent.document).css('min-height')) - $('.workInfoWrap').outerHeight() + 'px';
+        }
+        $('.centercontainer').css({
+            height: ch
+        });
+
+        //考核结果显示控制
+        if(typeof initScoreDetailResultShow == 'function') {
+            initScoreDetailResultShow();
+        }
+    },
+    //补丁18 绩效面谈表单
+    dealInterviewForm: function() {
+        that.remoteCall({
+            method: "getInterviewData",
+            param: {
+                evaResultId: evaResultId
+            },
+            async: true,
+            success: function (data) {
+                if(data.showInterview == '1') {
+                    interviewData = data;
+                    $('#viewInterviewForm').show();
+                }else {
+                    interviewData = {};
+                    //隐藏查看绩效面谈表单按钮
+                    $('#viewInterviewForm').hide();
+                }
+
+            }
+        });
+    },
+    viewInterviewForm: function() {
+        if(interviewData.showInterview == '1') {
+            var iid = interviewData.billId;
+            var planId = interviewData.planId;
+            var evaObjName = personName;
+            var uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.Interview.form';
+            var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk="
+                + uipk
+                + "&inFrame=true&billId=" + encodeURIComponent(iid)
+                + "&planId=" + encodeURIComponent(planId)
+                + "&evaObj=" + encodeURIComponent(evaObj)
+                + "&serviceId=" + encodeURIComponent(shr.getServiceId())
+                + '&editable&evaObjName='+evaObjName + '&shruicode=AF_PERF_PER&from=PRO'
+            );
+            window.open(safeUrl);
+        }else {
+            return;
+        }
+
+    },
+    /**
+     * yien
+     * 初始化用户自定义参数设置
+     */
+    initCustomParamList: function () {
+        //yien 20191122 天虹私包
+        // isShowLevelScoreRange = $("#isShowLevelScoreRange").html();
+        if (isShowLevelScoreRange == "false") {
+            isShowLevelScoreRange = 0;
+        }
+
+        if( isManualJudgeGrade==1) {
+            isEditGradesChange = 1; //如果是手工打等级方式,默认为手工修改过等级
+        }else if(_gscoreOrRate == '1' ||isEditGradesChange==1){
+            isEditGradesChange = 1;
+        }
+
+    },
+
+    // 表格内分数字段输入框,失去焦点时自动算分
+    bindGridScoreInputBlurEvent: function(){
+        $('.ui-jqgrid-btable input[type="text"][ctrlrole="text"]').live('blur',function(){
+            if(lastTable){
+                $(lastTable).jqGrid('editStop');
+            }
+        })
+    },
+    //
+    // // 表格区域滚动时隐藏下拉选择框的选项,否则会脱离选择框,因为.centercontainer设置了高度
+    bindWindowScrollEvent: function(){
+        $('.centercontainer').on('scroll',function(){
+            $('.dropdown-menu').hide();
+        })
+    },
+
+    /**
+     * 流程图
+     */
+    workFlowDiagram: function () {
+        $('#workFlowDiagram').unbind('click').bind('click', function () {
+            that.workFlowDiagramAction();
+        })
+    },
+
+    /**
+     * 审批意见
+     */
+    auditResult : function() {
+        $('#auditResult').unbind('click').bind('click', function () {
+            that.auditResultAction();
+        })
+    },
+    /**
+     * 查看流程图
+     */
+    workFlowDiagramAction: function() {
+        var billId = that.getTargetTransmitBill();
+        if(billId == '-1') {
+            //没有选择记录
+            return;
+        }
+        if(billId) {
+            that.getWorkFlowHelper().viewWorkFlowDiagram(billId);
+        }else {
+            //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
+            shr.showError({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_0});
+        }
+    },
+
+    /**
+     * 查看审批结果
+     */
+    auditResultAction: function() {
+        var billId = that.getTargetTransmitBill();
+        if(billId == '-1') {
+            //没有选择记录
+            return;
+        }
+        if(billId) {
+            that.getWorkFlowHelper().viewAuditResult(billId);
+        }else {
+            //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
+            shr.showError({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_0});
+        }
+    },
+
+    /**
+     * 根据评估对象获取审批单据id
+     */
+    getTargetTransmitBill: function() {
+        if(!evaObj) {
+            shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_1});
+            return "-1";
+        }
+        if(typeof that.targetBillIdMap[evaObj] == "undefined") {
+            that.remoteCall({
+//                handler: "com.kingdee.shr.perfweb.planexecute.handler.SuperiorUnTransmitListHandler",
+                method: 'getTargetTransmitBill',
+                async: false,
+                param: {
+                    "evaObj" : evaObj
+                },
+                success: function (data) {
+                    if(data.result == '200') {
+                        that.targetBillIdMap[evaObj] = data.billId;
+                    }
+                }
+            });
+        }
+
+        return that.targetBillIdMap[evaObj];
+    },
+
+    /**
+     * 任务列表
+     */
+    perfTaskList: function () {
+        $('#perfTaskList').unbind('click').bind('click', function () {
+            //alert("evaObj:"+evaObj);
+            var uipk = 'com.kingdee.shr.perfweb.app.base.perftask.evaObjPerfTask.list';
+            var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk="
+                + uipk + "&inFrame=true&evaObj=" + evaObj);
+            window.open(safeUrl);
+        })
+    },
+
+    /*
+ * 加载当前流程参数
+ * */
+    loadNodeParam: function () {
+        that.remoteCall({
+            method: "getNodeParam",
+            param: {
+                evaObj: evaObj,
+                gradeTaskNode: gradeTaskNode
+
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                    _needScore = data.needScore; //是否允许评分
+                    _wholeComment = data.wholeComment; //整体评语是否必录
+                    _perfGradeEvaluate = data.perfGradeEvaluate; //是否允许打等级
+                    _indicatorComment = data.indicatorComment; //是否必须打等级
+                }
+            }
+        });
+    },
+    /**
+     * 左侧列表
+     * @returns
+     */
+    initLeftList: function () {
+        //获取左侧列表数据
+        $('#content').html('');
+        $('#content').append(leftListHtml());
+        //var periodTmp = periodId;
+        var periodTmp = shr.getUrlRequestParam("periodId");
+        var element = $("#selectionList");
+        var dom = '<span class="up"></span>' +
+            '<div class="scrollBox scrollbarthin">' +
+            '<ul class="workerList">' +
+            '</ul>' +
+            '</div>' +
+            '<span class="down"></span>';
+        element.addClass('utilsSl-list').append(dom);
+        //clickObj.click();
+        //调用左侧人员列表utilsSelectionList.js插件
+        $('#selectionList').utilsSelectionList({
+            method: "getTeamTargetCommentListByPeriod",
+            listType: 'score',  //goals:我的目标; score: 个人评分;
+            isAsync: 1,
+            param: {                    //获取数据需要的参数
+                periodId: periodTmp, //考核周期id
+                page: 1,                //当前页数
+                rows: 50,           //rows 每页显示记录数
+                evaObj: evaObj,         //当前评估对象
+                personId: personId,
+                isTeamEvalu: isTeamEvalu,  //是否团队目标评分
+                personalScoreSearchIdList: personalScoreSearchIdList,
+                isOrg: isOrg
+            },
+            clickMenuEvent: function (e) {
+                //点击一条记录触发事件
+                if (isInitLeftListCompleted == 1|| isInitLeftCompleted == 1) {
+                    $.block.show();
+                    isFirstClickWholeComment = 1;
+                    isFirstInit = 0;
+                    //20191202 yien 记录当前的周期
+                    periodId = $(e).attr("period");
+                    _noPassVerifyArr = new Array(); //切换评估对象时清空校验不通过的数据
+                    evaObj = $(e).attr("workerid"); //當前評估對象所選id
+                    currentNodeLevel = $(e).attr("currentwflevel"); //选中评估对象当前所在流程级数
+                    gradeTaskNode = $(e).attr("gradetasknode"); //评估对象节点实例id
+                    it.initRightContent();//右侧内容
+                    // it.initPersonalInformation(true); //初始化个人信息
+                    it.getDistributionInfo();
+                    //第一节点隐藏"打回"按钮
+                    if (currentNodeLevel == 1) {
+                        $("#backTo").css("display", "none");
+                    }
+                    // it.setScoreBtnLocation();
+                    // that.perfScoreOthersScoreBox();
+                    hideWeight();
+                    that.loadNodeParam();
+                }
+            }
+        });
+    },
+    clickMenuEvent: function (e) {
+        isFirstClickWholeComment = 1;
+        isFirstInit = 0;
+    	//20191202 yien 记录当前的周期
+        periodId = $(e).attr("period");
+        evaObj = $(e).attr("workerid"); //當前評估對象所選id
+        currentNodeLevel = $(e).attr("currentwflevel"); //选中评估对象当前所在流程级数
+        gradeTaskNode = $(e).attr("gradetasknode"); //评估对象节点实例id
+        it.initRightContent();//右侧内容
+        // it.initPersonalInformation(true); //初始化个人信息
+        //第一节点隐藏"打回"按钮
+        if (currentNodeLevel == 1) {
+            $("#backTo").css("display", "none");
+        }
+    },
+    /**
+     * 模拟左侧列表人员名单数据
+     * @returns
+     */
+    loadingListData: function () {
+        var worksData = null;
+        that.remoteCall({
+            method: "getTeamTargetCommentListByPeriod",
+            param: {
+                period: periodId,
+                personId: personId
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                    worksData = data;
+                }
+            }
+        });
+        return worksData;
+    },
+
+    /**
+     * 展开员工基本信息
+     * @returns
+     */
+    spreadcontrol: function (e) {
+        var informationBoxMeg = {
+            length: showfieldnum,	//默认显示几个字段
+            spreadText: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,
+            packupText: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47
+        };
+        if($(e).hasClass('spread')){
+        	$('.informationBox').hide();
+            $(e).html(informationBoxMeg.spreadText);
+            $(e).removeClass('spread');
+        }else{
+            $('.informationBox').show();
+            $(e).html(informationBoxMeg.packupText);
+            $(e).addClass('spread');
+        }
+        it.setParentIframeHeight();
+    },
+    // 设置绩效工作台iframe高度
+    setParentIframeHeight: function(){
+        if(parent && parent.setIframeHeight){
+            var iframeid = 'rightContentIframe';
+            parent.setIframeHeight(iframeid);
+        }
+    },
+    /**
+     * 查看备注
+     * @returns
+     */
+    viewRema: function (e) {
+
+        var backReasonHTML = '<div id="backReasonDiv">' +
+            '<span style="width:560px"><textarea id="backReason" disabled="disabled"></textarea></span>' +
+            '</div>';
+        $(document.body).append(backReasonHTML);
+        $("#backReasonDiv").show();
+
+        that.remoteCall({
+            method: "getRema",
+            param: {
+                gradeTaskNode: gradeTaskNode
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                    $('#backReason').val(data.rema);
+                }
+            }
+        });
+
+        // 将弹出对话框弹出
+        $('#backReasonDiv').dialog({
+            title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_7,
+            autoOpen: true,
+            show: "blind",
+            width: 600,
+            height: 380,
+            resizable: true,
+            position: ['center', 'center'],
+            modal: true,
+            buttons: [{
+                text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_42,
+                click: function () {
+                    $(this).dialog("destroy").remove();
+                }
+            }]
+        });
+    },
+
+    /**
+     * 加载员工基本信息
+     * @param index
+     * @returns
+     */
+    initPersonalInformation: function (async) {
+    	if(null == async || '' == async){
+    		async = false;
+    	}
+        //加载员工基本信息
+        that.remoteCall({
+            method: "getPersonBaseOfGoals",
+            param: {
+                evaObj: evaObj,
+                periodId: periodId,
+                personId: personId,
+                personNumber: personNumber
+            },
+            async: async,
+            success: function (data) {
+                if (data != null) {
+                    globalPersonBaseData = data;
+                    $('.workInfo').html('').append(personalInformation(data));
+                    if($('.informationBox li').length == 0){
+                        $('#spread').hide();
+                    }
+                    if(isTeamEvalu == 1){
+                    	$('.workPhoto').remove();
+                    	// $('.workInfo').css("margin-left","-50px");
+                    }else{
+                    	if($('.workPhoto').length < 1){
+                        	$('.informationBox,.namebox').css({'width': '100%','margin-left': '0'});
+                        }
+                    }
+                    $('.attachcountbtn').unbind('click').bind('click',function(){
+                        $('#attachments').click();
+                    })
+                    it.uploadFileDialog();//上传附件
+                }
+                getAttachcount();
+            }
+        });
+    },
+    /**
+     * 右侧区域指标评分内容
+     * @returns
+     */
+    initRightContent: function () {
+        $('.content_right').remove();
+        $('#content').append(rightContentHtml()); //绩效目标评分的一些操作按钮
+        var ch = $(window).height() - $('.view_manager_header').outerHeight() - $('#controlBtns').outerHeight() - $('.headercontain').height() + 'px';
+        if(top != self){
+            ch = parseInt($('#workAreaDiv',parent.document).css('min-height')) - $('#controlBtns').outerHeight() + 'px';
+        }
+        $('.centercontainer').css({
+            height: ch
+        })
+        if(self != top || entryType == 'myselfEvalu' ||  entryType == 'viewEvaForm'){
+            $('.content_right').css({
+                'width': '100%',
+                'margin-right': '0'
+            });
+        }
+        $('.attachcountbtn').unbind('click').bind('click', function () {
+            $('#attachments').click();
+        })
+        it.initPersonalInformation(false);
+        it.bindWindowScrollEvent();     // 绑定滚动事件
+        it.initEvaPlanAndPerfRule(); //考核计划及考核规则信息
+        // it.initScoreItems();//加载左边菜单【左侧区域及指标】
+        it.uploadFileDialog();//上传附件
+        it.processView();//流程查看
+        it.perfHistory();//绩效历史查询
+        it.backTo();//打回
+        it.uploadFile();//上传附件
+        it.delFile();//删除附件
+//        it.switchListPage();    //切换页面
+        // $('#spread').click();
+        it.levelSwitchChange();
+        // it.templatePrint();//套打
+        it.perfTaskList();//任务列表
+        $('#summaryInterview').hide();
+        $('#summaryInterview').unbind('click').bind('click', function () {
+            //alert(evaObj);
+            /*var iid = '';
+            var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.report.handler.EvaResultSummaryInterviewListHandler&method=createInterviewByEvaObj";
+            shr.ajax({
+                type: "post",
+                async: false,
+                url: url,
+                data: {"evaObj": evaObj},
+                success: function (data) {
+                    if (data.iid) {
+                        iid = data.iid;
+                    }
+                }
+            });
+            if (iid) {
+                var uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.Interview.form';
+                var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk=" + uipk + "&inFrame=true&billId=" + iid );
+                window.open(safeUrl);
+            }*/
+
+            // bug-BT-00624090-从员工自助绩效面谈进入查看评估表单,按钮还在,但是使用不了
+            that.remoteCall({
+                method: "createInterviewByEvaObj",
+                param: {
+                    evaObj : evaObj
+                },
+                async: false,
+                success: function (data) {
+                    if (data.result === 'error') {
+                        shr.showError({message : data.summary})
+                    } else {
+                        var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.Interview.form";
+                        window.open(shr.safeUrl(shr.getContextPath() + '/dynamic.do?uipk=' + uipk +
+                            '&inFrame=true&method=view&billId=' + data.iid +
+                            "&shruicode=" + shr.getUrlRequestParam("shruicode")));
+                    }
+                }
+            });
+        })
+        //根据查看来源隐藏或显示按钮
+        if(viewMode == 'justViewReport') {
+            it.workFlowDiagram(); //流程图
+            it.auditResult(); //审批意见
+            //隐藏附件按钮
+            $("#attachments").hide();
+        }else {
+            //隐藏流程图 审批意见按钮
+            $('#auditResult').hide();
+            $('#workFlowDiagram').hide();
+        }
+        that.personHistoryParamControl();
+    },
+
+    // 等级切换时,更改选择框的title值
+    levelSwitchChange: function () {
+        $('select[name="_editGrades"],select[name="wholeGrade"]').die('change').live('change', function () {
+            $(this).attr('title', $(this).find("option:selected").text());
+            if($(this).find("option:selected").parent().attr("name") == 'wholeGrade'){
+            	isEditGradesChange = 1;
+            }
+            $('.workerList li.current').find("i[name='nodeGrade']").text($(this).val());
+        })
+
+        $('input[id$="gradeORrejection"],input[id$="nodeGrade"]').die('change').live('change', function () {
+        	calcTotoalScore(gradeTaskNode);
+        })
+    },
+
+    /**
+     * 页面切换
+     */
+    initCurrentPageByConfig: function () {
+        var it = this;
+        var param = {
+            evaObj: shr.getUrlRequestParam("evaObj"),
+            periodId: shr.getUrlRequestParam("periodId"),
+            personId: shr.getUrlRequestParam("personId"),
+            personNumber: shr.getUrlRequestParam("personNumber"),
+            entryType: shr.getUrlRequestParam("entryType") ,
+            gradeTaskNode : shr.getUrlRequestParam("gradeTaskNode"),
+            wfLevel : shr.getUrlRequestParam("wfLevel"),
+            personName: shr.getUrlRequestParam("personName"),
+            planId: shr.getUrlRequestParam("planId"),
+            planName: shr.getUrlRequestParam("planName"),
+            pageSource: shr.getUrlRequestParam("pageSource"),
+            viewMode: shr.getUrlRequestParam("viewMode"),
+            isAudited: shr.getUrlRequestParam("isAudited"),
+            personalScoreSearchIdList : shr.getUrlRequestParam("personalScoreSearchIdList"),
+            interview:shr.getUrlRequestParam("interview"),
+            fromPage:shr.getUrlRequestParam("fromPage"),
+            shruicode: shr.getUrlRequestParam("shruicode"),
+        }
+
+        var isFromWFBill = shr.getUrlRequestParam("isFromWFBill");
+        if (isFromWFBill && isFromWFBill == "true") {
+            // 工作流单据过来的进行后端转发
+            param.method = "viewPerfscore";
+            param.isFromWFBill = shr.getUrlRequestParam("isFromWFBill");
+            param.wfBillParentUipk = shr.getUrlRequestParam("wfBillParentUipk");
+            param.shrBillInWfId = shr.getUrlRequestParam("shrBillInWfId");
+            param.billId = shr.getUrlRequestParam("billId");
+            param.assigmentId = shr.getUrlRequestParam("assigmentId");
+            param.ProcInstId = shr.getUrlRequestParam("ProcInstId");
+            param.pageType = '1';   // 1:为概览模式 2:为列表模式
+            param.uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
+            this.reloadPage(param);
+        } else {
+            param.uipk = 'com.kingdee.shr.perfweb.app.perfscore.core';
+            this.reloadPage(param);
+        }
+    },
+
+    //加载考核计划、考核模式、考核规则信息
+    initEvaPlanAndPerfRule: function () {
+        that.remoteCall({
+            method: "compositeEvaObjectData",
+            param: {
+                evaObj: evaObj,
+                gradeTaskNode: gradeTaskNode,
+                entryType: entryType,
+                pageSource:pageSource
+            },
+            async: true,
+            success: function (data) {
+                if (data.result != null) {
+                    shr.showError({message: data.result});
+                } else {
+                    globalIndicatorData = data;
+                    _needScore = data.needScore;
+                    _gscoreOrRate = data.scoreOrRate;
+                    var perfGoalsHTML = juicer(perfGoalsTpl, data);
+                    var ruleHTML = juicer(ruleTpl, data);
+                    $(perfGoalsHTML).appendTo($('.centercontainer'));
+                    $('.info-wrap').append(ruleHTML);
+                    var evaluationdetails = juicer(evaluationdetailsTpl(), data);
+                    $(evaluationdetails).appendTo($('.instructions'));
+                    it.instructionsBox();   //弹出说明
+                    // 其他指标区域
+                    var indicatorDatalist = new Array();
+                    for(var i=0; i<globalIndicatorData.rows.evaAreaList.length; i++){
+                        var areadata = globalIndicatorData.rows.evaAreaList[i];
+                        // 组装区域说明字段
+                        globalIndicatorData.rows.evaAreaList[i].rema = getAreaRema(areadata.areaId);
+                    	if(areadata.evaIndicatorList || areadata.evaRecordList){
+                    		indicatorDatalist.push(areadata.evaIndicatorList || areadata.evaRecordList);
+                    	}
+                    }
+                   /* var indicatorData = indicatorDatalist[0];
+                    indicatorData.areaType = areadata.areaType;
+                    indicatorData.scoringWay = areadata.scoringWay;
+                    indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
+                    var indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
+                    $(indicatorDetailHTML).appendTo($('.content_right'));*/
+                    $('.fieldsboxhide,#splitDiv').css({
+                        height: $('.centercontainer').height() + 'px'
+                    })
+                    if($('.fieldsboxhide:visible').find('.field-line').length == 0){
+                        $('.fieldsboxhide:visible').find('.emptywrap').show();
+                    }
+                    it.setPersonInfoRema();
+                }
+                it.initScoreItems();
+            }
+        });
+    },
+
+    // 员工信息区域的区域说明显示到页面上
+    setPersonInfoRema: function(){
+        $.each(globalIndicatorData.areaBaseList,function(i,item){
+            if((item.areaType.value == '100' || item.areaType.value == '400') && item.rema){
+                var remaTpl = 
+                ['<div class="area-rema-box" area-id="${area.id}">',
+                    '<span>',jsBizMultLan.perfweb_evaluationdetailsJuicer_1586069239184_i18n_5,'</span>',
+                    '<pre area-id="${area.id}">${area.rema}</pre>',
+                    '<div class="area-rema-btn" onclick="showMoreRema(this,\'${area.id}\')">',
+                    jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,
+                    '</div>',
+                '</div>'].join("");
+                var remaHTML = juicer(remaTpl, {area: item});
+                $('.info-more-wrap').after(remaHTML)
+            }
+        })
+    },
+
+    /**
+     * 弹出说明
+     */
+    instructionsBox: function () {
+        $(".instructions").die('mouseover').live('mouseover', function () {
+            var box = $('.instructionsboxwrap');
+            box.stop().fadeIn();
+
+        });
+        $(".instructions").die('mouseout').live('mouseout', function () {
+            var box = $('.instructionsboxwrap');
+            box.stop().fadeOut();
+        });
+    },
+
+    /**
+     * 上传附件弹出框
+     */
+    uploadFileDialog: function () {
+        $('#attachments').unbind('click').bind('click', function () {
+            var html = juicer(uploadAttachmentsTpl, {uploadAttachSize:uploadAttachSize});
+            $(document.body).append(html);
+            $('#uploadFileBox').html('');
+
+            if (showAttachsOnly) {
+                $('.uploadfilebtn').hide();
+                //不给上传,应该同时也不给删除啊
+                $(".delfile").hide();
+            }
+
+            that.remoteCall({
+                method: "initialAttachment",
+                param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
+                async: true,
+                /*$.ajax({
+                    url: shr.getContextPath() + "/attachmentUpload.do?method=initialAttachment",
+                    data: {formId: evaObj},*/
+                success: function (data) {
+                    if (data) {
+                        for (var i = 0; i < data.length; i++) {
+                            var tempData = data[i];
+                            var url = that._assembleDownloadUrl(tempData.id, tempData.attachKey);
+                            var basetr = '<tr id="' + tempData.id + '" attachKey="' + tempData.attachKey + '">' +
+                                '<td class="textOverflow paddingbox">' + tempData.name + '.' + tempData.simpleName + '</td>' +
+                                '<td>' + tempData.creator + '</td>'+'<td>' + tempData.createTime + '</td>';
+                            var del = '';
+                            if (tempData.isSelf && tempData.isSelf == "true") {
+                                //del = '<span class="delfile linkstyle">删除</span>';
+				del = '<span class="delfile linkstyle">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_45+'</span>';
+                            }
+                            if (tempData.simpleName.toUpperCase() == "TXT" || tempData.simpleName.toUpperCase() == "PDF" || tempData.simpleName.toUpperCase() == "GIF" || tempData.simpleName.toUpperCase() == "JPG" || tempData.simpleName.toUpperCase() == "PNG" || tempData.simpleName.toUpperCase() == "BMP") {
+                                //basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">下载</a></td>' +
+                                basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
+                                    '</tr>';
+                            } else {
+                                //basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">下载</a></td>' +basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
+                                basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
+                                    '</tr>';
+                            }
+                            $('#uploadFileBox').append(basetr);
+                            //shr.setIframeHeight();
+                        }
+                    }
+                    //it.uploadFile();//上传附件
+                    $("#attachmentsDialog").dialog({
+                        autoOpen: true,
+                        show: "blind",
+                        width: 850,
+                        height: 500,
+                        title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_20,
+                        resizable: false,
+                        position: ['center', 100],
+                        modal: true,
+                        buttons: [{
+                            text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_41,
+                            click: function () {
+                                $(this).dialog('close');
+                                /**
+                                 * 这时要刷新附件数
+                                 */
+                                getAttachcount();
+                            }},{
+                            text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_40,
+                            click: function () {
+                                $(this).dialog('close');
+                            }
+                        }],
+                        close: function () {
+                            $('#attachmentsDialog').remove();
+                        }
+                    });
+                    if (showAttachsOnly) {
+                        //不给上传,应该同时也不给删除啊
+                        $(".delfile").hide();
+                    }
+                }
+            });
+
+        })
+    },
+
+    /**
+     * 获取上传文件的下载地址
+     * @param id
+     * @returns {string}
+     * @private
+     */
+    _assembleDownloadUrl: function (id, attachKey) {
+        // var params = {
+        //     method: 'download',
+        //     id: id,
+        //     serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+        //     key: attachKey
+        // }
+        // return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
+
+        var self = this;
+        var permItemId = "";
+        if(!self.isFromWF()){
+            permItemId = shr.getCurrentPagePermItemId();
+        }
+        var params = {
+            method: 'download',
+            id: id,
+            permItemId: permItemId,
+            billId:shr.getUrlRequestParam('billId'),
+            shruicode:shr.getShruicode(),
+            uipk:shr.getUrlRequestParam('uipk')
+            // assigmentId:self.getAssignmentId(),
+            // ProcInstId:self.getProcInstId()
+        }
+        return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
+    },
+
+    /**
+     * 上传文件
+     */
+    uploadFile: function (obj) {
+        /*$(document).on('change', '#uploadAttach', function (e) {*/
+        $('#uploadAttach').die('change').live('change', function (e) {
+            // 检测上传文件的类型
+            var acceptFileArr = ['doc', 'docx', 'xlsx', 'xls', 'jpg', 'jpeg', 'png', 'jpeg', 'pdf','zip','rar'];
+            var fileList = e.target.files;
+            var fileLength = e.target.files.length;
+            if (!fileLength || fileLength == 0) {
+                //shr.showWarning({message: "请选择要上传的文件 !"});
+		shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_01});
+                return false;
+            }
+            if (fileLength > 10) {
+                shr.showWarning({message: $.perfwebI18n.evaobjBatchAttachment.toomanyfiles});
+                return false;
+            }
+            var totalSize = 0;
+            for (var i = 0; i < fileLength; i++) {
+                var fileItem = fileList[i];
+                var filePath = fileItem.name;
+                var ext, idx;
+                if (filePath == '') {
+                    //shr.showWarning({message: "请选择要上传的文件 !"});
+		    shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_01});
+                    return false;
+                } else {
+                    idx = filePath.lastIndexOf(".");
+                    if (idx != -1) {
+                        ext = filePath.substr(idx + 1).toUpperCase();
+                        ext = ext.toLowerCase();
+                        if (!array_contain(acceptFileArr, ext)) {
+                            //shr.showWarning({message: "只能上传 .doc,.docx,.xlsx,.xls,.jpg,.jpeg,.png,.jpeg,.pdf 类型的文件!"});
+                            shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_1642579721_i18n_01});
+			    return false;
+                        }
+                    } else {
+                        shr.showWarning({message: ""});
+                        return false;
+                    }
+
+                    // 在这里限制文件大小,ie9要想获取文件大小,就要使用flash插件
+                    var size = fileItem.size;
+                    if (size / (1024 * 1024 * uploadAttachSize) > 1) {
+                        shr.showWarning({
+                            //message: "上传文件不能大于5M",
+			    message: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_bw0406_01,[uploadAttachSize]),
+                            hideAfter: 3
+                        });
+                        return false;
+                    }
+                    totalSize = totalSize + size;
+                }
+            }
+            if (totalSize / (1024 * 1024 * uploadAttachSize) > 1) {
+                shr.showWarning({
+                    //message: "上传文件不能大于5M",
+                    message: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_bw0406_01, [uploadAttachSize]),
+                    hideAfter: 3
+                });
+                return false;
+            }
+            that.uploadFileMulity(e);
+        })
+    },
+
+    uploadFileMulity: function (e) {
+        var fileObj = $(e.target);
+        var id = fileObj.attr("id");
+        $('#uploadFileBox').append('<image id="loadingGif" src="' + shr.getContextPath() + '/addon/perfweb/web/images/upload.gif"/>').show();
+        $.ajaxFileUpload({
+            // url: shr.getContextPath() +
+            // "/attachmentUpload.do?method=uploadAttachment",
+            // //用于文件上传的服务器端请求地址
+            url: that.dynamicPage_url + "?method=uploadAttachment&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam("shruicode"),
+            data: {boID: evaObj, gradeTaskNode: gradeTaskNode, type: '3'},  // type=3附件类型为评分
+            secureuri: false, // 是否需要安全协议,一般设置为false
+            fileElementId: id, // 文件上传域的ID
+            dataType: 'json', // 返回值类型 一般设置为json
+            success: function (results) {// 服务器成功响应处理函数
+                if (results && results.result == 'success') {
+                    $('#loadingGif').remove();
+                    if (results && results.data && results.data.length > 0) {
+                        for (var i = 0; i < results.data.length; i++) {
+                            var data = results.data[i];
+                            var url = that._assembleDownloadUrl(data.id, data.attachKey);
+                            // uploadFileEvent();
+                            var showDel = "";
+                            if (data.isSelf && data.isSelf == "true") {
+                                //showDel = '<span class="delfile linkstyle">删除</span>';
+				showDel = '<span class="delfile linkstyle">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_45+'</span>';
+                            }
+                            var tr = $('<tr id="' + data.id + '" attachKey="' + data.attachKey + '">' +
+                                '<td class="textOverflow paddingbox">' + data.filename + '</td>' +
+                                '<td>' + data.creator + '</td>' +
+                                '<td>' + data.createTime + '</td>' +
+                                //'<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">下载</a></td>' +
+				'<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
+                                '</tr>');
+                            $('#uploadFileBox').append(tr);
+                        }
+                    }
+                } else if (results && results.result == 'failed') {
+                    var failedMag = results.failedMag;
+                    var errMsg = $.perfwebI18n.evaobjBatchAttachment['PERFWEB_F_0021'];
+                    if(failedMag && $.perfwebI18n.evaobjBatchAttachment[failedMag]) {
+                        errMsg = $.perfwebI18n.evaobjBatchAttachment[failedMag];
+                    }else if(failedMag) {
+                        errMsg = failedMag;
+                    }
+                    shr.showError({
+                        message: errMsg
+                    });
+                    $('#loadingGif').remove();
+                }
+            }
+        });
+    },
+
+    /**
+     * 删除上传文件
+     */
+    delFile: function () {
+        $(document).on('click', '.delfile', function () {
+            var $del = $(this);
+            var $tr = $del.parent('td').parent('tr');
+            var attachId = $tr.attr('id');
+            var attachKey = $tr.attr('attachKey');
+            shr.showConfirm(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_43, function () {
+                that.remoteCall({
+                    method: "canAttachmentDelete",
+                    async: false,
+                    param: {attachmentId : attachId},
+                    success: function (result) {
+                        if (result && result.canDelete) {
+                            var formId = evaObj;
+                            var permItemId = "";
+                            var self = that;
+                            if(!self.isFromWF()){
+                                permItemId = shr.getCurrentPagePermItemId();
+                            }
+                            $.ajax({
+                                url: shr.getContextPath() + "/attachmentUpload.do?method=deleteAttachment",
+                                data: {boID: formId, attachId: attachId, key: attachKey,
+                                    permItemId: permItemId,
+                                    billId:shr.getUrlRequestParam('billId'),
+                                    shruicode:shr.getShruicode(),
+                                    uipk:shr.getUrlRequestParam('uipk')},
+                                success: function (msg) {
+                                    var tr = $del.parents('tr');
+                                    tr.remove();
+                                    getAttachcount();
+                                }
+                            });
+                        } else {
+                            shr.showWarning({
+                                message: jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_5,
+                                hideAfter: 3
+                            });
+                        }
+                    }
+                });
+
+
+            });
+        });
+    },
+
+    /**
+     * 流程查看
+     */
+    processView: function () {
+        $('#processView').unbind('click').bind('click', function () {
+            var html = $('<div id="processViewDialog"></div>');
+            $(document.body).append(html);
+            that.remoteCall({
+                method: "getProcessViewData",
+                async: false,
+                param: {gradeTaskNode: gradeTaskNode},
+                success: function (result) {
+                    console.log(result);
+                    var chart = "";
+                    if (result) {
+                        var datas = {};
+                        datas.data = (result.data)[0];
+                        datas.photo = result.photo;
+                        chart = juicer(generateProcessView(datas), '');
+                    }
+                    $('#processViewDialog').append(chart);
+                    $("#processViewDialog").dialog({
+                        autoOpen: true,
+                        show: "blind",
+                        width: 800,
+                        height: 450,
+                        title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_30,
+                        resizable: false,
+                        position: ['center', 'center'],
+                        modal: true,
+                        close: function () {
+                            $('#processViewDialog').remove();
+                        }
+                    });
+                }
+            });
+        })
+    },
+    /**
+     * 绩效考核历史弹出框
+     */
+    perfHistory: function () {
+        $('#perfHistory').unbind('click').bind('click', function () {
+            var html = juicer(perfHistoryTpl, '');
+            $(document.body).append(html);
+            $("#perfHistoryDialog").dialog({
+                autoOpen: true,
+                show: "blind",
+                width: 740,
+                height: 500,
+                title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_24,
+                resizable: false,
+                position: ['center', 'center'],
+                modal: true,
+                close: function () {
+                    $('#perfHistoryDialog').remove();
+                }
+            });
+            it.perfHistoryTable();
+        })
+    },
+
+    /**
+     * 初始化jqGrid表格
+     * @param obj
+     * @param options
+     */
+    initjqGridTable: function (obj, options) {
+        obj.jqGrid({
+            mtype: "POST",//提交方式
+            datatype: "json",
+            height: options.height,//高度,表格高度。可为数值、百分比或'auto'
+            width: options.width,//这个宽度不能为百分比
+            autowidth: true,
+            colNames: options.name,//'<span class="checkboxs selectallcheckbox"></span>'
+            colModel: options.model,
+            rownumbers: false,//添加左侧行号
+            sortname: 'number',
+            sortorder: 'asc',
+            sortable: true,
+            rowNum: 10,//每页显示记录数
+            multiselect: options.multiselect,//复选框
+            forceFit: true,//如果设置为true,改变列宽,相邻列也将调整以适应整体表格,将不会出现水平滚动条。
+            multiselectWidth: options.multiselectWidth,//复选框列宽度
+            shrinkToFit: options.shrinkToFit,//该项描述计算每列相对于表格宽度的初始宽度的类型。若为true,并且设置了列宽度,则每列的宽度根据定义宽度缩放。若为false,并且设置了列宽度,表格宽度为设置宽度,列宽度不会重新计算,使用colModel中定义的值
+            autoScroll: false,
+            hoverrows: true,
+            hidegrid: false,
+            url: that.dynamicPage_url + "?method=getPerfHistoryList&uipk=" + that.uipk,
+            postData: options.postData,
+            loadComplete: options.loadComplete
+        }).jqGrid('setFrozenColumns');//.jqGrid('setFrozenColumns')冻结列,不生效
+    },
+
+    /**
+     * 加载弹出框表格——绩效历史查询
+     */
+    perfHistoryTable: function () {
+        var options = {
+            name: [
+            jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_6,
+             jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_7,
+              jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_8,
+               jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_28,
+                jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_57,
+                 jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_13
+                 ],
+            model: [
+                {name: 'index', index: 'index', width: 30, align: "left", dataType: "int", sortable: true},
+                {name: 'periodName', index: 'periodName', width: 74, align: "left", dataType: "int", sortable: true},
+                {
+                    name: 'periodType.alias',
+                    index: 'periodType.alias',
+                    width: 74,
+                    align: "left",
+                    dataType: "int",
+                    sortable: true
+                },
+                {
+                    name: 'perfModel.name',
+                    index: 'perfModel.name',
+                    width: 74,
+                    align: "center",
+                    dataType: "int",
+                    sortable: true
+                },
+                {
+                    name: 'lastSumScore',
+                    index: 'lastSumScore',
+                    width: 74,
+                    align: "center",
+                    dataType: "int",
+                    sortable: true
+                },
+                {
+                    name: 'lastGradeLevel',
+                    index: 'lastGradeLevel',
+                    width: 74,
+                    align: "center",
+                    dataType: "int",
+                    sortable: true
+                },
+            ],
+            multiselect: false,
+            multiselectWidth: '',//复选框单元格宽度
+            shrinkToFit: true,//true没有滚动条,false有滚动条
+            width: 640,//这个宽度不能为百分比
+            height: 298,//高度,表格高度。可为数值、百分比或'auto'
+            postData: {
+                rows: 15,
+                page: 1,
+                sord: "DESC",
+                type: '5',
+                evaObj: evaObj
+            },
+            loadComplete: function (data) { //完成服务器请求后,回调函数
+                if (data.rows == undefined || data.records == 0) { //如果没有记录返回,追加提示信息,删除按钮不可用
+                    $('#perfHistorytab').find('.norecord td').eq(0).html('').append(
+                        '<div class="PromptEmptyData_td">' +
+                        '<div class="promptimg_td"></div>' +
+                        '<div class="prompttext">'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_22+
+                        '</div>' +
+                        '</div>'
+                    );//无数据时的提示样式
+                }
+            }
+        };
+        it.initjqGridTable($('#perfHistorytab'), options);
+        //it.loadingHistoryData($('#perfHistorytab'));
+    },
+
+    /**
+     * 加载jqGrid表格数据
+     * @param obj
+     */
+    loadingHistoryData: function (obj) {
+        // var data = [//测试数据
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        //     {
+        //         'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
+        //         'perfModel': 'KPI',
+        //         'scoreSystem': '五分制',
+        //         'totalScore': '4.8',
+        //         'level': 'A'
+        //     },
+        //     {
+        //         'perfPlan': '销售线考核计划(2015.01.01-12.31)',
+        //         'perfModel': 'PBC',
+        //         'scoreSystem': '十分制',
+        //         'totalScore': '8.9',
+        //         'level': 'B'
+        //     },
+        // ];
+        // for (var i = 0; i < data.length; i++) {
+        //     obj.jqGrid("addRowData", i, data[i]);
+        // }
+    },
+    /**
+     * 打回弹出框
+     */
+    backTo: function () {
+        $('#backTo').unbind('click').bind('click', function () {
+            //先校验是否允许打回
+            var flag = it.checkIsOpenF7();
+            if(flag){
+                var subWidgetOptions = {
+                    title: jsBizMultLan.perfweb_perfscore_1586254513646_i18n_53,
+                    uipk: "com.kingdee.shr.perfweb.app.base.evalrule.EvaluFormAreaBase.F7",
+                    //query:"com.kingdee.shr.perfweb.app.base.evalplan.AreaBaseWorkFlowQuery",
+                    multiselect: true,
+                    filter: "evaObj.id ='" + evaObj + "' and gradeTaskNode.taskStatus = '1'"
+                };
+                $("#backTo").shrPromptGrid(subWidgetOptions);
+                $("#backTo").shrPromptGrid("open");
+
+                $("#backTo").shrPromptGrid("option", {
+                    afterCommitClick: function (e, value) {
+                        var datas = value.datas;
+                        var ids = new Array();
+                        if(datas){
+                            for(var i = 0; i < datas.length; i++){
+                                ids.push(datas[i]["gradeTaskNode.id"]);
+                            }
+                            it.realBack(ids);
+                        }else{
+                            shr.showWarning({
+                                message: jsBizMultLan.perfweb_perfscore_1586254513646_i18n_40
+                            });
+                        }
+
+                    }
+                });
+            }else{
+                it.realBack(gradeTaskNode);
+            }
+        })
+    },
+
+    checkIsOpenF7 : function(){
+        var flag = '';
+        it.remoteCall({
+            method: "checkOpenF7",
+            param: {
+                evaObj: evaObj
+            },
+            async: false,
+            success: function (data) {
+                flag = data.flag;
+            }
+        });
+        return flag;
+    },
+    /**
+     * 打回弹出框
+     */
+    realBack: function (ids) {
+        var canBackTo = true;
+        var message = null;
+        that.remoteCall({
+            method: "judgeCanBackToUpLevel",
+            param: {
+                gradeTasknode: ids.toString()
+            },
+            async: false,
+            success: function (data) {
+                if (data.result != '200') {
+                    message = data.message;
+                    canBackTo = false;
+                }
+            }
+        });
+
+        if (!canBackTo) {
+            shr.showWarning({message: message});
+            return false;
+        }
+        var backHTML = '<div id="backToUpLevel">' +
+            '<p class="note-title">'+
+            '<span>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_7+
+            '</p>' +
+            '<p><span class="textareawrap">'+
+            '<textarea id="backReason" placeholder="'+
+            shr.formatMsg(jsBizMultLan.perf_perfscoreNew_202305061455_i18n_0,
+                [2000])+
+            '" style="width:650px!important;height:130px!important;"></textarea></span></p>'+
+            '<p class="note-title">'+
+            // '<span>通知方式:</span>'+
+            '<span>'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_1+'</span>'+
+            // '<p >通知上一节点评分人:</p>'+
+            '<span class="note-obj">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_0+'</span>'+
+            '</p>'+
+            '<div id="pickReminderDialog" >'+
+            '<div class="type-box">'+
+            '<div>'+
+            '<input id="msgReminder" type="checkbox" value="msg">'+
+            // '<label for="msgReminder" class ="checked">消息通知</label>'+
+            '<label for="msgReminder" class ="checked">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_2+
+            '</label>'+
+            '</div>'+
+            '<div>'+
+            '<input id="emailReminder" type="checkbox" value="email">'+
+            // '<label for="emailReminder">邮件</label>'+
+            '<label for="emailReminder">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_3+
+            '</label>'+
+            '</div>'+
+            '<div>'+
+            '<input id="SMSReminder" type="checkbox" value="sms">'+
+            // '<label for="SMSReminder">短信</label>'+
+            '<label for="SMSReminder">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_4+
+            '</label>'+
+            '</div>'+
+            '<div>'+
+            '<input id="cloudReminder" type="checkbox" value="msg">'+
+            // '<label for="msgReminder">通知</label>'+
+            '<label for="cloudReminder">'+jsBizMultLan.perf_perfscoreNew_bw0416_01+
+            '</label>'+
+            '</div>'+
+            '</div>'+
+            '</div>'+
+            '</div>';
+        $(document.body).append(backHTML);
+        $('#msgReminder, #emailReminder, #SMSReminder, #cloudReminder').shrCheckbox();
+        $('#msgReminder, #emailReminder, #SMSReminder,#cloudReminder').shrCheckbox('onChange', function(){
+            var id = $(this).attr('id');
+            if($(this).shrCheckbox('getValue')){
+                $('label[for="'+id+'"]').addClass('checked');
+            }else{
+                $('label[for="'+id+'"]').removeClass('checked');
+            }
+        });
+        $("#backToUpLevel").show();
+        // 将弹出对话框弹出
+        $('#backToUpLevel').dialog({
+            title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_5,
+            autoOpen: true,
+            show: "blind",
+            width: 700,
+            height: 406,
+            resizable: true,
+            position: ['center', 'center'],
+            modal: true,
+            buttons: [{
+                text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_42,
+                click: function () {
+                    var backReason = $("#backReason").val();
+                    var SMSType = "NOSEND";
+                    var emailType = "NOSEND";
+                    var portalType = "NOSEND";
+                    var yzjMsgType = "NOSEND";
+
+                    var meg = $('#megReminder').shrCheckbox('isSelected');
+                    var email = $('#emailReminder').shrCheckbox('isSelected');
+                    var SMS = $('#SMSReminder').shrCheckbox('isSelected');
+                    var yzj = $('#YZJReminder').shrCheckbox('isSelected');
+                    if (SMS) {
+                        SMSType = "SEND"
+                    }
+                    if (email) {
+                        emailType = "SEND"
+                    }
+                    if (meg) {
+                        portalType = "SEND"
+                    }
+                    if (yzj) {
+                        yzjMsgType = "SEND";
+                    }
+                    var _this = this;
+                    that.remoteCall({
+                        method: "backToUpLevel",
+                        param: {
+                            evaObjIds: evaObj,
+                            gradeTaskNodeIds: ids.toString(),
+                            backReason: backReason,
+                            SMSType: SMSType,
+                            emailType: emailType,
+                            portalType: portalType,
+                            yzjMsgType: yzjMsgType
+                        },
+                        async: false,
+                        success: function (data) {
+                            //打回成功刷新评估对象列表
+                            that.initLeftList();
+                            $(_this).dialog("destroy").remove();
+                            shr.showInfo({message: data.msg});
+                        }
+                    });
+                }},{
+                text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_40,
+                click: function () {
+                    $(this).dialog("destroy").remove();
+                }
+            }]
+        });
+    },
+
+
+    /**
+     * 个人评分菜单
+     */
+    initScoreItems: function () {
+        var scoreMenuHTML = null; //评分区域列表
+        // 加载区域指标表格部分
+        globalIndicatorData.entryType = entryType;
+        scoreMenuHTML = juicer(scoreTabsTpl, globalIndicatorData);
+        $(scoreMenuHTML).appendTo($('.scoreItems'));
+        // var hideNodeWeight = $('#hideNodeWeight').text();
+        if(hideNodeWeight === 'true'){  // 是否隐藏节点权重:{true:是;false:否}
+            $('span[name="snodeWeight"]').hide();
+        }else{
+        	$('span[name="snodeWeight"]').show();
+        }
+        that.submitScoreClickEvent(); //评分提交事件
+        that.saveScoreEvent(); //评分保存事件
+        it.delgoal(); //目标删除事件
+        it.scoreMenuListClick(); //指标点击事件
+        it.wholeCommentListener();
+        it.scoreInpListener();
+        $('div[name="editScoreDiv"] input[type="text"]').eq(0).focus().select();
+        it.initWholeComment();
+        it.initOthersScore();
+    },
+
+    /**
+     * 整体评价监听字数
+     */
+    wholeCommentListener: function () {
+        $('#wholeComment textarea').live('input propertychange', function () {
+            var objVal = $(this).val();
+            var msgShow = $(this).closest('div[name="editTextareaDivForWholeComment"]').find("span[id='WHOLECOMMENT']");
+            var errObj = new Object();
+            existInArrThenDelete(_noPassVerifyArr, errObj);
+
+            var commentLen = objVal.length;
+            msgShow.text(shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_35,
+                [2000,commentLen]));
+            msgShow.show();
+            _noPassVerifyArr.push(errObj);
+        })
+    },
+
+    /**
+     * 监听评分回车事件
+     */
+    scoreInpListener: function () {
+        $('div[name="editScoreDiv"] input[type="text"]').keydown(function (event) {
+            if (event.keyCode == 13) {
+                var current_index = $('div[name="editScoreDiv"] input[type="text"]').index($(this));
+                if (current_index == $('div[name="editScoreDiv"] input[type="text"]').length - 1) {
+                    $('div[name="editScoreDiv"] input[type="text"]').eq(0).focus().select();
+                } else {
+                    $('div[name="editScoreDiv"] input[type="text"]').eq(current_index + 1).focus().select();
+                }
+            }
+        })
+    },
+
+    //加载其他人评分
+    initOthersScore: function () {
+    	scoreparams = it.getCurrentScoreParams();
+        $('.scoretabwrap').each(function(i){
+            // 初始化指标表格
+            it.initScoreTab(i,scoreparams);
+        })
+        $('.scoretabs').each(function(index){
+            var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+            $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+        })
+        it.bindEvent();
+        it.initPerftips();
+    },
+    // 其他人评分信息列tips
+    initPerftips: function(){
+        $.perfTips.init({target:$('.expend-td-box')});
+    },
+
+    // 事件绑定
+    bindEvent: function(){
+        if (_needScore != "3") {
+            $("#totalScore").find("input").attr("disabled", "disabled");
+        }
+        // 查看其他人打分
+        // $('.view_other_btn').die('click').live('click',function(){
+        // 	var tabid = $(this).closest('table').attr('id');
+        //     var rowid = $(this).closest('tr').attr('id');
+        //     var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
+        //     var msgdata = it.getCurrentAndPrevScoreMsg(rowid);
+        //     it.openOtherScoreDialog(msgdata,rowData);
+        //     that.personHistoryParamControl();
+        // })
+        $('.expend-btn').die('click').live('click',function(){
+            // var ul = $(this).closest('td').find('ul');
+            // if(ul.hasClass('show-more')){
+            //     ul.removeClass('show-more');
+            // }else{
+            //     ul.addClass('show-more');
+            // }
+            var pre = $(this).closest('td').find('pre');
+            if(pre.hasClass('textOverflow3')){
+                pre.removeClass('textOverflow3');
+            }else{
+                pre.addClass('textOverflow3');
+            }
+        })
+        // 编辑指标评语字段
+//         $('.commentcell').die('click').live('click',function(){
+//             //打总分不能输入指标评语
+//             if (_needScore == '3') {
+//                 return;
+//             }
+//             var tabid = $(this).closest('table').attr('id');
+//             var rowid = $(this).closest('tr').attr('id');
+//             var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
+//             it.openCommentDialog(tabid,rowid,rowData);
+//         })
+        // 点击序号,查看指标其他字段
+        $('.scoretabs tr').die('click').live('click',function(){
+            var areaIndex = $(this).closest('table').attr('areaindex');
+            var areadata = globalIndicatorData.rows.evaAreaList[areaIndex];
+            var trIndex = $(this).index() - 1;
+            var indicatorDatalist = areadata.evaIndicatorList || areadata.evaRecordList;
+            var indicatorData = indicatorDatalist[trIndex];
+            var isClosedPrev = $('.fieldsboxhide:visible').hasClass('small');
+            indicatorData.areaType = areadata.areaType;
+            indicatorData.scoringWay = areadata.scoringWay;
+            indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
+            $('.fieldsboxhide').hide();
+            if($(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).length > 0){
+                // $('.fieldsboxhide[indid="'+indicatorData.FID+'"]').show();
+                _thisbox =  $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]'));
+                if(_thisbox.find('.field-line').length > 0){
+                    _thisbox.show();
+                }
+            }else{
+                indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
+                _thisbox = $(indicatorDetailHTML);
+                if(_thisbox.find('.field-line').length > 0){
+                    _thisbox.show();
+                    $(indicatorDetailHTML).appendTo($('.indicator-box'));
+                }
+                $('.fieldsboxhide').css({
+                    'height': $('.centercontainer').height() + 'px'
+                })
+                if(it.fixedboxWidth){
+                    $('.fieldsboxhide').css({
+                        'width': it.fixedboxWidth + 'px'
+                    })
+                }
+                // if($('.fieldsboxhide:visible').find('.field-line').length == 0){
+                //     $('.fieldsboxhide:visible').find('.emptywrap').show();
+                // }
+            }
+            var isClosedCurr = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).hasClass('small');
+            if(isClosedPrev){   // 其他信息是否展开控制
+                if(!isClosedCurr){
+                    $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).addClass('small');
+                }
+                $('.centercontainer').addClass('big');
+            }else{
+                if(isClosedCurr){
+                    $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).removeClass('small');
+                }
+                $('.centercontainer').removeClass('big');
+            }
+            $('.scoretabs').each(function(index){
+                var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+                $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+            })
+        })
+        // 指标其他字段框控制按钮点击事件
+        $('.fixedboxctrlbtn').die('click').live('click',function(){
+            var fixedbox = $(this).closest('.fieldsboxhide');
+            var centerbox = $('.centercontainer');
+            if($(this).hasClass('isclose')){
+                centerbox.removeClass('big');
+                fixedbox.removeClass('small');
+                $(this).removeClass('isclose');
+            }else{
+                centerbox.addClass('big');
+                fixedbox.addClass('small');
+                $(this).addClass('isclose');
+            }
+            $('.scoretabs').each(function(index){
+                var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+                $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+            })
+        })
+
+        it.bindDragEvent()
+
+    },
+
+    // 拖拽改变宽度事件
+    bindDragEvent: function(){
+        $("#splitDiv").mouseover(function(e) {
+            $(this).css("cursor", "e-resize");
+            $('.centercontainer').addClass('noselect');
+        });
+        $("#splitDiv").mousedown(function(e) {
+            $(this).css("cursor", "e-resize");
+            $("body").mousemove(function(eve) {
+                var _x = eve.pageX - $('.centercontainer').offset().left;
+                $(".centercontainer").animate({
+                    width: _x
+                }, 1);
+                $(".fieldsboxhide").animate({
+                    width: $('.content_right').width() - _x - 4
+                }, 1);
+                it.fixedboxWidth = $('.content_right').width() - _x - 4;
+                clearTextSelect()
+            })
+        });
+        $("body").mouseup(function(e) {
+            $(this).unbind("mousemove");
+            $(this).css("cursor", "default");
+            $('.scoretabs').each(function(index){
+                var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
+                $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
+            })
+            $('.centercontainer').removeClass('noselect');
+            // 由于jqgrid组件的savecell方法,会定位到被保存的单元格,所以自动算分的方式修改一下,否则点了评分 整体评价文本框就不能输入包含整体等级,所以注释掉一下代码
+            // var ariaDescribedby = $(e.target).attr('aria-describedby') || $(e.target).closest('td').attr('aria-describedby') || '';
+            // if(lastTable && $(e.target).closest('table').attr('id') != lastTable.substring(1) && !$(e.target).closest('div').hasClass('selectPage')&& !$(e.target).closest('ul').hasClass('messenger')){
+            //     $(lastTable).jqGrid("saveCell",lastrow,lastcell);
+            // }
+        });
+    },
+
+    // 组装重新组装目标数据结构
+    getTargetData: function(fieldList,item){
+        var targetData = [];
+        for(var i = 0; i < fieldList.length; i++){
+            targetData.push(fieldList[i]);
+            targetData[i].fieldvalue = item[fieldList[i].colName];
+        }
+        return targetData;
+    },
+
+    // 初始化查看其他人评分弹框
+    // openOtherScoreDialog: function(otherScoreList,rowData){
+    //     var hideNodeWeightVal = false;
+    //     if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
+    // 		// var hideNodeWeight = $("#hideNodeWeight").text(); //是否隐藏节点权重
+    // 		if(hideNodeWeight == 'true'){
+    // 			hideNodeWeightVal = true;
+    // 		}
+    // 	}
+    //     otherScoreList.currentGradeTaskNode=gradeTaskNode;
+    //     var otherScoreDialogHTML = juicer(otherScoreDialogTpl, {
+    //         list: otherScoreList,
+    //         hideNodeWeightVal: hideNodeWeightVal,
+    //         indicator: rowData.id+'Itag0',
+    //         isQualityIndicator: rowData.FQUALIORRATION,
+    //         isExistComment: rowData.hasOwnProperty('FCOMMENT') ? 1 : 0,
+    //         commentName: rowData.commentName,
+    //         isShowHandlerWeight: isShowHandlerWeight
+    //     });
+    //     $(document.body).append(otherScoreDialogHTML);
+    //     // 指标评语title显示设置
+    //     $('.commentbtn').unbind('mouseover').bind('mouseover', function(){
+    //         $('.commentbtn .evaluate').hide();
+    //         $(this).find('.evaluate').show();
+    //     })
+    //     $('.commentbtn').unbind('mouseout').bind('mouseout', function(){
+    //         $(this).find('.evaluate').hide();
+    //     })
+
+    //     var dialogtop = it.setDialogTopPos(500);
+	// 	$("#otherScoreDialog").dialog({
+	// 		autoOpen : true,
+	// 		// show : "blind",
+	// 		width : 800,
+	// 		height : 500,
+	// 		//title : "其他人评分",
+	// 		title : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_03,
+	// 		resizable : true,
+	// 		position : [ 'center', dialogtop ],
+	// 		modal : true,
+    //         buttons: [
+    //             {
+    //                 //'确定' : function() {
+    //                 text: $.perfwebI18n.perfwebMessageTool.msg1,
+    //                 click: function () {
+    //                     $(this).dialog('close');
+    //                 }
+    //             },
+    //             //'取消' : function() {
+    //             {
+    //                 text: $.perfwebI18n.perfwebMessageTool.msg2,
+    //                 click: function () {
+    //                     $(this).dialog('close');
+    //                 }
+    //             }
+    //         ],
+	// 		close : function(){
+	// 			$('#otherScoreDialog').remove();
+	// 		},
+	// 		open:function(event, ui){ //取消获取焦点
+	// 			$(this).parent().focus();
+	// 		}
+	// 	});
+    // },
+
+    // 打开指标评语弹框
+//     openCommentDialog: function(tabid,rowid,rowData){
+//         rowData.FCOMMENT = $(rowData.FCOMMENT)[0].innerHTML;
+//         var commentDialogHTML = juicer(commentDialogTpl, {
+//             list: rowData,
+//         });
+//         $(document.body).append(commentDialogHTML);
+//         $('textarea.commentwrap').unbind('input propertychange').bind('input propertychange', function() {
+//             targetCommentOnblur(this,'propertychange');
+//         });
+
+//         var dialogtop = it.setDialogTopPos(500);
+//         $("#commentDialog").dialog({
+// 			autoOpen : true,
+// 			// show : "blind",
+// 			width : 800,
+// 			height : 500,
+// 			title : rowData.commentName,
+// 			resizable : true,
+// 			position : [ 'center', dialogtop ],
+// 			modal : true,
+//             buttons: [
+//                 {
+//                     //'确定' : function() {
+//                     text: $.perfwebI18n.perfwebMessageTool.msg1,
+//                     click: function () {
+//                         var commentval = $('.commentwrap').val();
+//                         if (commentval) {
+//                             $('#' + tabid).jqGrid('setCell', rowid, 'FCOMMENT', commentval.trim());
+//                         } else {
+//                             $('#' + tabid).jqGrid('setCell', rowid, 'FCOMMENT', null);
+//                         }
+//                         $(this).dialog('close');
+//                     }
+//                 },
+//                 {
+//                     //'取消' : function() {
+//                     text: $.perfwebI18n.perfwebMessageTool.msg2,
+//                     click: function () {
+//                         $(this).dialog('close');
+//                     }
+//                 }],
+// 			close : function(){
+// 				$('#commentDialog').remove();
+// 			},
+// 			open:function(event, ui){ //取消获取焦点
+//                 $(this).parent().focus();
+//                 if(!canEditTable){
+//                     $('.commentwrap').attr('disabled',true);
+//                 }
+// 			}
+// 		});
+//     },
+
+    // 计算iframe内弹框竖直方向位置
+    setDialogTopPos: function(dialogHeight){
+        var dialogtop = 'center';
+        var winheight = $(window.top).height();
+        var winscrolltop = $(window.top).scrollTop();
+        if(self != top){
+            dialogtop = (winheight - dialogHeight)/2 + winscrolltop - 80;	// dialogHeight: 弹框高度 80:header高度
+        }
+        return dialogtop;
+    },
+
+    // 加载当前节点和之前节点的整体评价信息
+    initWholeComment: function () {
+        this.remoteCall({
+            method: "getCurrentAndPrevWholeComment",
+            param: {
+                evaObj: evaObj,
+                handlerId: personId,
+                currentNodeLevel: currentNodeLevel,
+                myType: myType,
+                gradeTaskNode: gradeTaskNode,
+                viewMode: viewMode,
+                isModifyScore: isModifyScore,
+                isShowAuditedWholeForm : isShowAuditedWholeForm,
+                isManualJudgeGrade : isManualJudgeGrade
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                	_wholeCommentIsMustArr = new Array();
+                	var dataLen = data.length;
+                	for(var i=0; i<dataLen; i++){
+                		var wholeCommentParam = new Object();
+                		wholeCommentParam.gradeTaskNode = data[i].gradeTaskNode;
+                		wholeCommentParam.wholeCommentIsMust = data[i].wholeCommentIsMust;
+                		_wholeCommentIsMustArr.push(wholeCommentParam);
+                	}
+
+                    if ($("#wholeComment").find(".details").children().length > 0) {
+                        $("#wholeComment").find(".details").empty();
+                        var $wholeCommentDiv = $('#wholeCommentDiv');
+                        if ($wholeCommentDiv && $wholeCommentDiv.length > 0) {
+                            $wholeCommentDiv.remove();
+                        }
+                    }
+                    that.createWholeCommentHtml(data); //生成整体评价区域
+                    that.personHistoryParamControl();
+                }
+            }
+        });
+    },
+
+    /*
+     * 组装评分数据
+     * @return scoreObj
+     * type: '1' 提交评分,需校验必填
+     * */
+    assembleScoreData: function (type) {
+        globalErrorMsg = [];
+        var dataList = new Array();
+        var scoreObj = new Object();
+        var htmlObj = $(".scoretabs");
+        var currentEdieTextArea = $("div[name='editTextareaDivForWholeComment']");
+        var indeicatorDatas = [];
+        var subAreaChecked = true;  // 加减分区域,区域上下限校验
+        var subAreaCheckedMsg = '';
+        for(var i = 0; i < htmlObj.length; i++){
+            var idata = $('#scoreTab_'+i).jqGrid('getRowData');
+            var _subAreaType = '';
+            var _areaAddSub = '';
+            var _areaAddSubDown = '';
+            var _areaAddSubUp = '';
+            var areaSumScore0 = 0;
+            for(var j = 0; j < idata.length; j++){
+                if(j == 0){
+                    _subAreaType = idata[j].subAreaType;
+                    _areaAddSub = idata[j].areaAddSub;
+                    _areaAddSubDown = idata[j].areaAddSubDown;
+                    _areaAddSubUp = idata[j].areaAddSubUp;
+                }
+                idata[j].tabIndex = i.toString();
+                indeicatorDatas.push(idata[j]);
+                if (_subAreaType == "1" && _areaAddSub == "1") {
+                    var s0 = idata[j].FSCORE;
+                    if (s0) {
+                        areaSumScore0 += parseFloat(s0);
+                    }
+                }
+            }
+            if ("" != _areaAddSubDown && parseFloat(_areaAddSubDown) > areaSumScore0) {
+                subAreaCheckedMsg = $.perfwebI18n.tableConstant.msg14 + _areaAddSubDown;
+                subAreaChecked = false;
+            }
+            if ("" != _areaAddSubUp && parseFloat(_areaAddSubUp) < areaSumScore0) {
+                subAreaCheckedMsg = $.perfwebI18n.tableConstant.msg15 + _areaAddSubUp;
+                subAreaChecked = false;
+            }
+            if(!subAreaChecked){
+                break;
+            }
+        }
+
+        if(!subAreaChecked){
+            shr.showWarning({
+                message: subAreaCheckedMsg,
+                hideAfter: 3
+            })
+            return false;
+        }
+
+        for (var n = 0; n < $("div[name='editTextareaDivForWholeComment']").size(); n++) {
+            var scoreObj = new Object();
+            var scoreList = new Array();
+            var currentEditTextareaDom = $("div[name='editTextareaDivForWholeComment']")[n];
+            var wholeComment = $(currentEditTextareaDom).find("textarea").val();
+            scoreObj.wholeComment = wholeComment;
+            for (var i = 0; i < indeicatorDatas.length; i++) {
+                // 考虑到会有同一个人处理并发评分的情况,因此增加节点Id的判断
+                if($(currentEditTextareaDom).attr('gradenode') == indeicatorDatas[i].gradeTaskNode){
+                    var scoreObject = new Object();
+                    var score = null;
+                    var nodeGrade = '';
+
+                    //BT1354967 yien_fan 打等级的定量指标显示分数
+                    //判断评分输入框是否存在,国贸需求,在不允许评分的情况下也显示指标评语
+                    if(_gneedScoreArr.length>=2){
+                        for(var m=0; m<_gneedScoreArr.length; m++){
+                            if(_gneedScoreArr[m].gradeTaskNode == indeicatorDatas[i].gradeTaskNode){
+                                _needScore = _gneedScoreArr[m].needScore;
+                                break;
+                            }
+                        }
+                    }
+                    if (_needScore == 1 || _needScore == 2|| _needScore == '3') {
+                        if (indeicatorDatas[i].FQUALIORRATION == '1' || _gscoreOrRate == 0 || (_gscoreOrRate == 1 && indeicatorDatas[i].subAreaType === '1')) {
+                            //判断是否为禁用的分数输入框
+                            var $score = '';
+                            score = indeicatorDatas[i].FSCORE; //取分数
+                            _gcanNegative = indeicatorDatas[i].canNegative; //取是否允许评负分
+                            //BT1354967 yien_fan 打等级的定量指标标志位特殊处理为打分
+                            scoreObject.scoreOrRate = 0;
+                            if (indeicatorDatas[i].FQUALIORRATION != 1 && indeicatorDatas[i].subAreaType !== '1') {   // 可编辑评分时才校验 加减分区域不校验是否允许为负参数
+                                var reg = /^\d+(\.\d{1,2})?$/;
+                                var reg2 = /^-\d+(\.\d{1,2})?$/;
+                                if (_gcanNegative == 1) {
+                                    if ("" != score && !reg2.test(score) && !reg.test(score) && score != undefined) {
+                                        scoreObj.scoreError = true;
+                                    }
+                                } else if ("" != score && !reg.test(score) && score != undefined) {
+                                    scoreObj.scoreError = true;
+                                }
+                            }
+                            // 如果是定量指标,没有评分公式,且打等级
+                            if(!indeicatorDatas[i].FSCORINGFORMULA && _gscoreOrRate == 1){
+                                // 打等级,则取等级
+                                scoreObject.scoreOrRate = 1;
+                                var valueExistFlag = indeicatorDatas[i].nodeGrade == undefined || indeicatorDatas[i].nodeGrade == null || indeicatorDatas[i].nodeGrade == "";
+                                nodeGrade = valueExistFlag ? "" : indeicatorDatas[i].nodeGrade.split("(")[0];; //取等级
+                            }
+                        } else {
+                            var valueExistFlag = indeicatorDatas[i].nodeGrade == undefined || indeicatorDatas[i].nodeGrade == null || indeicatorDatas[i].nodeGrade == "";
+                            nodeGrade = valueExistFlag ? "" : indeicatorDatas[i].nodeGrade.split("(")[0];; //取等级
+                        }
+                    }
+
+                    var comment = '';
+                    //判断指标评语框是否存在
+                    if (indeicatorDatas[i].FCOMMENT) {
+                        comment = $(indeicatorDatas[i].FCOMMENT).text();
+                    }
+
+                    var indicatorId = indeicatorDatas[i].id+'Itag0';
+                    scoreObject.score = score;
+                    scoreObject.nodeGrade = nodeGrade;
+                    scoreObject.comment = comment;
+                    scoreObject.actValue = $(indeicatorDatas[i].FACTUALCOMPLEVALUE).text();
+                    scoreObject.targetVale = $(indeicatorDatas[i].FTARGETVALUE).text();
+                    scoreObject.description = $(indeicatorDatas[i].FACTUALCOMPLETEDESC).text();
+                    scoreObject.actulCompleteTime = indeicatorDatas[i].FACTUALCOMPLETETIME;
+                    var FQUALIORRATION = indeicatorDatas[i].FQUALIORRATION;
+                    var FSCORINGFORMULA = indeicatorDatas[i].FSCORINGFORMULA;
+                    if(FQUALIORRATION === '1'){ // 新增无公式的判断,有公式不做校验
+                        if(!isNumberVerify2(scoreObject.actValue , 1)){
+                            scoreObj.actValError = true;
+                        }
+                        if(!isNumberVerify2(scoreObject.targetVale , 1)){
+                            scoreObj.targetValError = true;
+                        }
+                    }
+                    if (scoreObject.description && scoreObject.description.length > 2000) {
+                        scoreObj.desError = true;
+                    }
+
+                    //否决项评定
+                    var isRejection = indeicatorDatas[i].isRejection;
+                    scoreObject.isRejection = isRejection;
+                    if (isRejection == 1) {
+                        _gExistRejection = 1;
+                    }
+                    scoreObject.indicatorId = indicatorId;
+                    //如果打分方式没有进行特殊处理,则取考核规则的
+                    if (typeof  scoreObject.scoreOrRate == "undefined") {
+                        scoreObject.scoreOrRate = _gscoreOrRate;
+                    }
+                    // 扩展字段取值组装
+                    var extendInfo = {}
+                    for(var key in indeicatorDatas[i]){
+                        var colName = 'fillOverwrite_'+key;
+                        var colvalue = indeicatorDatas[i][key];
+                        var colAttr = $('#scoreTab_'+indeicatorDatas[i].tabIndex).getColProp(key);
+                        var classes = colAttr.classes;
+                        var td = $('#scoreTab_'+indeicatorDatas[i].tabIndex+ ' tr[id="'+indeicatorDatas[i].id+'"] td[aria-describedby="scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key+'"]');
+                        if(colvalue.indexOf('class="cell-height scrollbarthin"') > -1){
+                            colvalue = $(colvalue).text();
+                        }
+                        if(key.indexOf('FEXTEND') == 0){
+                            extendInfo[key] = {
+                                value: colvalue,
+                                fillOverwrite: indeicatorDatas[i][colName]
+                            }
+                        }
+                        if(type === '1' && ((classes && classes.indexOf('required') > -1) || td.hasClass('required')) && !colvalue && colAttr.editable && !td.hasClass('not-editable-cell') && !colAttr.hidden){
+                            globalErrorMsg.push({
+                                fid: indeicatorDatas[i].id,
+                                tabIndex: indeicatorDatas[i].tabIndex,
+                                colName: key,
+                                // msg: $('#jqgh_scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key).text()+'不能为空'
+                                msg: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_20220826_i18n_2 ,[$('#jqgh_scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key).text()])
+                            })
+                        }
+                    }
+                    scoreObject.extendInfo = extendInfo;
+                    scoreList.push(scoreObject);
+                }
+            }
+            scoreObj.scoreList = scoreList;
+            scoreObj.evaObj = evaObj;
+            scoreObj.gradeTaskNode = $(currentEditTextareaDom).attr('gradenode');
+            scoreObj.wholeGrade = $('[id="wholeGrade_' + scoreObj.gradeTaskNode + '"]').val();
+            scoreObj.isEditGrade = isEditGradesChange;
+            scoreObj.needScore=$('[id="wholeScore_' + scoreObj.gradeTaskNode+ '"]').attr("data-needScore");
+            scoreObj.sumScore = $('[id="wholeScore_' + scoreObj.gradeTaskNode+ '"]').val();
+            dataList.push(scoreObj);
+        }
+        return dataList;
+    },
+    /*
+     * 评分保存事件
+     * */
+    saveScoreEvent: function () {
+        $('#saveScore').unbind('click').bind('click', function () {
+            // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
+            $('.scoretabs').each(function(index,tab){
+                $(tab).jqGrid('editStop');
+            })
+            that.doSaveScore('1', 0);
+            //刷新正态分布列表
+            that.getDistributionInfo();
+        });
+    },
+    /*
+     * 保存打分
+     * @param isShowMsg 是否展示提示信息
+     * @param isEditGradesChange 是否下拉选引起的打分保存操作
+     * */
+    doSaveScore: function (isShowMsg, isEditGradesChange) {
+        if (_clicked) {
+            return;
+        }
+        _clicked = true;
+        //防止连击,设置过1s后点击才有效
+        setTimeout(function () {
+            _clicked = false;
+        }, 1000);
+
+        if (_noPassVerifyArr.length > 0) {
+            shr.showWarning({message: _noPassVerifyArr[0].errortext});
+            //自动点击第一条评分不通过的指标
+            $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
+            return false;
+        }
+//
+//        var canSubmit = false;
+//        var isAsync = false;
+        //组装评分数据
+        //组装评分数据
+        var scoreObj = that.assembleScoreData();
+        if(!scoreObj){
+            return false;
+        }
+        var ids = new Array();
+        for (var i = 0; i < scoreObj.length; i++) {
+            ids.push(scoreObj[i].gradeTaskNode);
+        }
+
+        if (scoreObj[0].targetValError) {
+            shr.showError({
+                //jsBizMultLan 请检查目标值值输入是否正确
+                message :jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
+                hideAfter: 3
+            });
+            return false;
+        }
+        if (scoreObj[0].actValError) {
+            shr.showError({
+                message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
+                hideAfter: 3
+            });
+            return false;
+        }
+        if (scoreObj[0].desError) {
+            shr.showError({
+                message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+            [2000]),
+                hideAfter: 3
+            });
+            return false;
+        }
+        //1、判断节点是否可被提交
+        that.remoteCall({
+            method: "judgeIsCanSubmit",
+            param: {
+                gradeTaskNode: ids.toString(),
+                evaObj: evaObj,
+                scoreObj: JSON.stringify(scoreObj)
+            },
+            async: false,
+            success: function (result) {
+                for (var i = 0; i < scoreObj.length; i++) {
+                    for (var j = 0; j < result.length; j++) {
+                        if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
+                            data = result[j];
+                        }
+                        if (data != null && data.canSubmit == true) {
+                            //保存评分
+                        } else {
+                            if (isShowMsg == '1') {
+                            	shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_11});
+                            }
+                            return false;
+                        }
+                    }
+                }
+
+                that.remoteCall({
+                    method: "saveScore",
+                    param: {
+                        needScore:_needScore,
+                        scoreObj: JSON.stringify(scoreObj)
+                    },
+                    async: false,
+                    success: function (data) {
+                        if (data != null && data.result == '200') {
+                            if (_needScore == "3") {
+                                shr.showInfo({message: $.perfwebI18n.commonMsg.msg3});
+                                //window.location.reload();
+                                //it.initLeftList();//左侧列表
+                                $("li[workerid='" + evaObj + "']").removeClass("current");
+                                $("li[workerid='" + evaObj + "']").click();
+                                return;
+                            }
+                            //$("li[workerid='"+evaObj+"']").click();//指哪打哪
+                            isFirstInit = 0;
+                           /* if (isEditGradesChange != 1) {
+                                it.initRightContent();//右侧内容
+                            }*/
+
+                            if (entryType == 'myview') {
+                                $('.content_right').css({
+                                    'width': '100%',
+                                    'margin-right': '0'
+                                });
+                            } else if (entryType == 'myselfEvalu') {//个人目标评分入口
+                                $('.content_right').css({
+                                    'width': '100%',
+                                    'margin-right': '0'
+                                });
+                            } else {//团队目标评分入口
+                                $('.view_manager_body').css('background', '#EDEFF4');
+                            }
+
+                           // it.initPersonalInformation(); //评估对象个人信息
+                            nodeSumScore = data.nodeSumScore;
+                            nodeGrade = data.nodeGrade;
+                            var sumScoreText = nodeSumScore;
+                            var nodeGradeText = nodeGrade;
+                            if (null != sumScoreText) {
+                            	if(data.gradetaskNode.length<2){
+                            		$("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeSumScore']").text(sumScoreText);
+                                    $("#totalScore").find("input").val(sumScoreText);
+                            	}
+                            	//TODO
+                                //$("#totalScore").text(sumScoreText);
+                            }
+                           if (null != nodeGradeText) {
+                            	if(data.gradetaskNode.length<2){
+                            	  for(var j=0; j<_gneedScoreArr.length;j++){
+                    	            if(data.gradetaskNode == _gneedScoreArr[j].gradeTaskNode){
+                    	               _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                    	               break;
+                    	            }
+                    	          }
+                    	          if(_perfGradeEvaluate != 0){
+                    	              $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeGrade']").text(nodeGradeText);
+                    	          }
+                                    $("select[id='wholeGrade_" +gradeTaskNode+ "']").val(nodeGradeText);
+                                }
+                            }
+
+                            var nodeSumScoreList = data.nodeSumScoreList;
+                            var gtnLen = nodeSumScoreList.length;
+                            for(var i=0; i<gtnLen; i++){
+                            	var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
+                            	// if(null != nsumscore && "" != nsumscore){
+                                    $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
+                                    $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
+                            	// }else{
+                            	// 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').val("");
+                            	// }
+                            }
+                            
+                            //第一节点隐藏"打回"按钮
+                            if (currentNodeLevel == 1) {
+                                $("#backTo").css("display", "none");
+                            }
+                            if (isShowMsg == '1') {
+                                shr.showInfo({message: data.msg});
+                            }
+                        } else {
+                            if (isShowMsg == '1') {
+                                shr.showWarning({message: data.msg});
+                            }
+                        }
+                    }
+                });
+            }
+        });
+        if (scoreObj.wholeComment != null && scoreObj.wholeComment != undefined && scoreObj.wholeComment.length > 2000) {
+            //shr.showWarning({message: '整体评价中的评价内容已超过最大长度2000个汉字,请重新输入!'});
+            shr.showWarning({message :shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,[2000])});
+	    return false;
+        }
+    },
+
+    /*
+     * 评分提交事件
+     * */
+    submitScoreClickEvent: function () {
+        $('#submitScore').unbind('click').bind('click', function () {
+            _gExistRejection = 0;
+            // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
+            $('.scoretabs').each(function(index,tab){
+                $(tab).jqGrid('editStop');
+            })
+            if (gradeTaskNode == '') {
+                shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_12});
+                return false;
+            }
+            if (_noPassVerifyArr.length > 0) {
+                shr.showWarning({message: _noPassVerifyArr[0].errortext});
+                //自动点击第一条评分不通过的指标
+                $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
+                return false;
+            }
+            //组装评分数据
+            var scoreObj = that.assembleScoreData('1');
+            if(!scoreObj){
+                return false;
+            }
+            //进行评分校验
+
+            if (scoreObj[0].scoreError == true) {
+                shr.showError({
+                    // message : '分数只能为整数或不超过2位的小数,请检查!',
+                    //12月补丁功能-天虹
+                    message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_31,
+                    hideAfter: 3
+                });
+                return false;
+            }
+            if (scoreObj[0].targetValError) {
+                shr.showError({
+                    message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
+                    hideAfter: 3
+                });
+                return false;
+            }
+            if (scoreObj[0].actValError) {
+                shr.showError({
+                    message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
+                    hideAfter: 3
+                });
+                return false;
+            }
+            if (scoreObj[0].desError) {
+                shr.showError({
+                    message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+                [2000]),
+                    hideAfter: 3
+                });
+                return false;
+            }
+            if(globalErrorMsg.length > 0){
+                for(var i=0; i<globalErrorMsg.length;i++){
+                    $('#scoreTab_'+globalErrorMsg[i].tabIndex).jqGrid('setCell', globalErrorMsg[i].fid, globalErrorMsg[i].colName, '', 'errorval');
+                }
+                
+                // shr.showWarning({message : '必填字段不能为空,请检查'});
+                shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_20220826_i18n_1});
+                return false;
+            }
+            //判断整体评价等级是否必填,如果必填则进行必录校验
+            var ids = new Array();
+            for (var i = 0; i < scoreObj.length; i++) {
+                ids.push(scoreObj[i].gradeTaskNode);
+            }
+
+            //打总分校验总分必填
+            if (_needScore == "3" && ($("#totalScore").find("input").val() == undefined || $("#totalScore").find("input").val().length < 1)) {
+                var flag = sumSocreOnblur($("#totalScore").find("input"));
+                if (!flag) {
+                    return;
+                }
+            }
+
+            var canSubmitFlag = false;
+            var scoremsg = '';
+            var confirmMsg = '';
+            var msg = '';
+            var matrixDetail = "";
+            var saveNodeSumScoreList;
+            var marginTop = -(document.body.clientHeight/3);
+			$.block.show({text :
+                //'数据处理中,请稍后...'
+                jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04
+                ,marginTop:marginTop});
+            //1、保存分数
+            that.remoteCall({
+                method: "saveScore",
+                param: {
+                    needScore:_needScore,
+                    scoreObj: JSON.stringify(scoreObj)
+                },
+                async: false,
+                success: function (data) {
+                    if (data != null && data.result == '200') {
+                        nodeSumScore = data.nodeSumScore;
+                        nodeGrade = data.nodeGrade;
+                        matrixDetail = data.detail;
+                        saveNodeSumScoreList = data.nodeSumScoreList;
+                        var nodeSumScoreList = data.nodeSumScoreList;
+                        var gtnLen = nodeSumScoreList.length;
+                        for(var i=0; i<gtnLen; i++){
+                        	var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
+                        	// if(null != nsumscore && "" != nsumscore){
+                                 $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
+                                 $($("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']")).text(nsumscore);
+                        	// }else{
+                        	// 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
+                        	// }
+                        }
+                    }
+                }
+            });
+
+            var needrResult = null;
+            //2、判断节点是否可被提交
+            that.remoteCall({
+                method: "judgeIsCanSubmit",
+                param: {
+                    gradeTaskNode: ids.toString(),
+                    evaObj: evaObj,
+                    scoreObj: JSON.stringify(scoreObj)
+                },
+                async: false,
+                success: function (result) {
+                	$.block.hide();
+                    canSubmitFlag=true;
+                     needrResult =result;
+                    for (var i = 0; i < scoreObj.length; i++) {
+                        var data = '';
+                        for (var j = 0; j < result.length; j++) {
+                            if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
+                                data = result[j];
+                            }
+                        }
+
+                        if (data != null && data.canSubmit == true) {
+                            if (scoreObj[i].wholeComment != null && scoreObj[i].wholeComment != undefined && scoreObj[i].wholeComment.length > 2000) {
+                                shr.showWarning({
+                                    message:
+                                        shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,
+                                            [2000])
+                                });
+                                return false;
+                            }
+                            //判断整体评语是否必录,如果必录则进行必录校验
+                            // BT-00580949 绩效管理--绩效工作台--考核目标填报、目标变更--编辑指标,评价标准填写数字,保存js会报错
+                            if (scoreObj[i].wholeComment == '' || scoreObj[i].wholeComment == undefined || (scoreObj[i].wholeComment+'').trim().length < 1) {
+                            	var wholeCommentIsMustLen = _wholeCommentIsMustArr.length;
+                                for(var m=0; m<wholeCommentIsMustLen; m++){
+                             		if(_wholeCommentIsMustArr[m].gradeTaskNode == scoreObj[i].gradeTaskNode 
+                             				&& _wholeCommentIsMustArr[m].wholeCommentIsMust == 1){
+                             			//shr.showWarning({message: '请填写当前节点整体评价中的评价内容!'});
+						shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_39});
+                                        $("#wholeComment").click();
+                                        $("#curWholeComment").focus();
+                                        canSubmitFlag = false;
+                                        return false;
+                             		}
+                                }
+                            }
+
+                            //指标评语是否必录校验,如果必录则提示并定位到其中一条未录评语的指标
+                            if(needrResult != null){
+                                for(var n=0; n<needrResult.length; n++){
+                                    if(needrResult[n].isTargetComment == '1' && needrResult[n].unvalidTargetID.length>0){
+                                        needrResult[n].unvalidTargetID.forEach(function(item){
+                                            $('.scoretabs').jqGrid('setCell', item, 'FCOMMENT', null, 'errorval');
+                                        })
+                                        shr.showWarning({message : needrResult[n].targetCommentMsg});
+                                        canSubmitFlag = false;
+                                        return false;
+                                    }
+                                }
+                            }
+
+                            //判断整体评价等级是否必填,如果必填则进行必录校验(矩阵考核需要根据节点进行判断)
+                            var needScoreSize = _gneedScoreArr.length;
+                            for(var j=0; j<needScoreSize; j++){
+                           	 if(_gneedScoreArr[j].gradeTaskNode == scoreObj[i].gradeTaskNode 
+                           			 && _gneedScoreArr[j].indicatorComment == 1
+                           			 && _gneedScoreArr[j].perfGradeEvaluate == 1){
+                           		 if (scoreObj[i].wholeGrade == '' || scoreObj[i].wholeGrade == undefined) {
+                                    //shr.showWarning({message: '请填写当前节点整体评价等级!'});
+				    shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_38});
+                                     canSubmitFlag = false;
+                                    return false;
+                                 }
+                           	  }
+                            }
+                        } else {
+                            shr.showWarning({message: data.msg});
+                            return;
+                        }
+                    }
+                    
+                	var resLen = result.length;
+                	var needMustCount = 0;
+                	for(var m=0; m<resLen; m++){
+                	  if(result[m].isNeedScore == '2' && result[m].unValidId.length>0){
+                		 needMustCount++;
+                		 shr.showWarning({message : result[m].msg});
+                		 $("li[numval='"+result[m].unValidId[0]+"']").mousedown();
+                		 canSubmitFlag =false;
+                		 return false;
+                	  }
+                	}
+                	if(needMustCount<1){
+                		for(var n=0; n<resLen; n++){
+                    		if(result[n].isNeedScore == '1' && result[n].unValidId.length>0){
+                    			msg += result[n].msg
+                    			$("li[numval='"+result[n].unValidId[0]+"']").mousedown();
+                    			break;
+                    		}
+                    	}
+                	}
+                    if(saveNodeSumScoreList != undefined && saveNodeSumScoreList != null && saveNodeSumScoreList.length >= 2){
+
+                        confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10;
+                        for(var i=0; i<saveNodeSumScoreList.length; i++){
+                            var scoremsg = '';
+                            //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
+                            if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
+                                if (saveNodeSumScoreList[i].nodeSumscore == null) {
+                                    saveNodeSumScoreList[i].nodeSumscore = "";
+                                }
+                                scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + saveNodeSumScoreList[i].nodeSumscore + ',';
+                            }
+                            if(matrixDetail != null && matrixDetail != ''){
+                                confirmMsg = matrixDetail;
+                            }else{
+                                confirmMsg += saveNodeSumScoreList[i].nodeHandlerName + scoremsg;
+                                //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
+                                for(var j=0; j<_gneedScoreArr.length;j++){
+                                    if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
+                                        _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                                        break;
+                                    }
+                                }
+                                if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
+                                    confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 + saveNodeSumScoreList[i].nodeGrade + ',';
+                                }
+                            }
+                        }
+                    }else{
+                        //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
+                        var scoremsg = '';
+                        if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
+                            if (nodeSumScore == null) {
+                                nodeSumScore = "";
+                            }
+                            scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + nodeSumScore + ',';
+                        }
+                        if(matrixDetail != null && matrixDetail != ''){
+                            confirmMsg = matrixDetail;
+                        }else{
+                            confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10 + scoremsg;
+                            //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
+                            for(var j=0; j<_gneedScoreArr.length;j++){
+                                if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
+                                    _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
+                                    break;
+                                }
+                            }
+                            if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
+                                confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 +nodeGrade + ',';
+                            }
+                        }
+                    }
+
+                    if(null != msg && msg != undefined && msg != 'undefined' && '' != msg){
+                    	confirmMsg +=  msg;
+                    }              
+                    if(_gExistRejection == 1){
+                    	//confirmMsg += '存在否决项,将直接影响绩效最终得分!';
+			confirmMsg += jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_9;
+                    }
+                    //confirmMsg += '您确认提交吗?';
+		    confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_33;
+                    if(!canSubmitFlag){
+                    	return false;
+                    }
+
+                    shr.showConfirm(confirmMsg, function () {
+                    	//$.block.show({text : '数据处理中,请稍后...',marginTop:marginTop});
+			$.block.show({text : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04,marginTop:marginTop});
+                        // var isAutoSubmitVal = $("#isAutoSubmit").text();
+                        // var isAutoSubmit = false;
+                        // if (isAutoSubmitVal == 'true') {
+                        //     isAutoSubmit = true;
+                        // }
+                        //3、提交
+                        that.remoteCall({
+                            method: "submitScore",
+                            param: {
+                                scoreObj: JSON.stringify(scoreObj),
+                                // isAutoSubmit: isAutoSubmit
+                            },
+                            async: false,
+                            success: function (data) {
+                            	$.block.hide();
+                                if (data != null && data.result == '200') {
+                                    scoreStatus = '2';
+                                    if (_gscoreOrRate == 0) {//评分
+                                        $("input[name='evaScore']").attr("disabled", "disabled");
+                                    } else {
+                                        $("select[name='_editGrades']").attr("disabled", "disabled");
+                                    }
+                                    if(!entryType){
+                                        $("li[workerid='" +evaObj+ "']").remove();
+                                        shr.showInfo({message: data.msg});
+                                        if ($('.workerList').find('li').length == 0) {
+                                            // ==================================================================================
+                                            /**
+                                             * 组织考核返回组织目标评价页面,个人考核返回团队个人目标评价页面
+                                             * modified by Janeou_xie 2020/11/12
+                                             */
+                                            if(isOrg == "1"){
+                                                that.reloadPage({
+                                                    uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore4Org.core',
+                                                    serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                                    personId : personId
+                                                })
+                                            }else {
+                                                that.reloadPage({
+                                                    uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore.core',
+                                                    serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                                    personId : personId
+                                                });
+                                            }
+                                            // ==================================================================================
+                                            return;
+                                        }else{
+                                        	 $(".workerList>li")[0].click();
+                                             evaObj = $($(".workerList>li")[0]).attr("workerid");
+                                        }
+                                     }else if(entryType = 'myselfEvalu'){
+                                     	shr.showInfo({message: data.msg});
+                                        that.reloadPage({
+                                           uipk: 'com.kingdee.shr.perfweb.app.perfportal.core',
+                                           serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
+                                        });
+                                     }
+                                } else {
+                                    shr.showWarning({message: data.msg});
+                                }
+                            }
+                        });
+                    });
+                }
+            });
+        });
+    },
+    //设置按钮及输入文本框灰选
+    setDisableStatus: function () {
+        $('#saveScore').attr("disabled", 'disabled'); //”保存“按钮置灰
+        $('#submitScore').attr("disabled", 'disabled'); //”提交“按钮置灰
+        $("#home-wrap input").attr("disabled", "disabled"); //所有输入框不可编辑
+        $("textarea").attr("disabled", "disabled"); //所有多行文本框不可编辑
+    },
+    /**
+     * 个人评分菜单点击事件(左侧区域指标点击)
+     */
+    scoreMenuListClick: function () {
+        var that = this;
+        $('.controller').unbind('click').bind('click', function () {
+            var content = $('#wholeComment').find('.scoreContentboxwrap');
+            var icon = $(this);
+            if ($(this).hasClass('controller_active')) {
+                content.slideUp(function () {
+                    icon.removeClass('controller_active');
+                    if (self != top) {
+                        parent.setIframeHeight('myHistoryIframe');
+                        parent.setIframeHeight('processedScoresIframe');
+                    }
+                });
+            } else {
+                content.slideDown(function () {
+                    if (self != top) {
+                        parent.setIframeHeight('myHistoryIframe');
+                        parent.setIframeHeight('processedScoresIframe');
+                    }
+                });
+                $(this).addClass('controller_active');
+            }
+        })
+        $('.btn-control').unbind('click').bind('click', function () {
+            var icon = $(this);
+            var areawrap = icon.closest('.scoreMenu');
+            var content = areawrap.find('.scoretabwrap');
+           
+            if (icon.hasClass('controller_active')) {
+                content.hide();
+                icon.removeClass('controller_active');
+                if (self != top) {
+                    parent.setIframeHeight('myHistoryIframe');
+                    parent.setIframeHeight('processedScoresIframe');
+                }
+                areawrap.addClass('areawrap-active');
+            } else {
+                content.show();
+                if (self != top) {
+                    parent.setIframeHeight('myHistoryIframe');
+                    parent.setIframeHeight('processedScoresIframe');
+                }
+                icon.addClass('controller_active');
+                areawrap.removeClass('areawrap-active');
+            }
+        })
+    },
+
+    //生成整体评价区域
+    createWholeCommentHtml: function (data) {
+        var wholeCommentHtml = '<div id="wholeCommentDiv" class="scoreContentboxWholeComment">';
+        var controlAreaHtml = '<div class="othersScoreBox">';
+        var currentWholeGrade = '';
+        _gneedScoreArr = new Array();
+        // var hideNodeWeight = $('#hideNodeWeight').text();
+
+        if (data != null && data.length > 0) {
+            var isShowWholeGrade = 0;
+            for (var i = 0; i < data.length; i++) {
+                var wholeCommentEdithtml = '';
+                var _data = data[i];
+                isShowWholeGrade = _data.isShowWholeGrade; //获取当前节点是否可显示总分和总体评价
+                _perfGradeEvaluate = _data.perfGradeEvaluate; //整体评价等级是否允许评定
+                var _needScore = _data.needScore; //是否允许评分
+                var needScoreObj = new Object();
+                needScoreObj.gradeTaskNode = _data.gradeTaskNode;
+                needScoreObj.needScore = _needScore;
+                needScoreObj.indicatorComment = _data.indicatorComment;
+                needScoreObj.perfGradeEvaluate = _perfGradeEvaluate;
+                _gneedScoreArr.push(needScoreObj);
+                 
+                if (data[i].canEdit == 1) { //当前节点可评价
+                	  currentIsShowWholeGrade = isShowWholeGrade; //记录当前评分人是否可评总体评价
+                      _perfGradeEvaluate = _data.perfGradeEvaluate;
+                      // 重新定义一个新的变量,标识当前任务节点能否打等级,_perfGradeEvaluate赋值,使用到的地方太多了,可能会出问题 modified by Janeou_xie
+                      isShowDistribution = _data.perfGradeEvaluate
+                      _wholeComment = _data.wholeCommentIsMust;
+                      //currentWholeGrade = data[i].wholeGrade;
+                      currentWholeGrade = _data.scoreToLevel;
+                      
+                    wholeCommentEdithtml = wholeCommentEdithtml
+                        + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
+                        + '<span class="left textOverflow">' +_data.nodeName;
+
+                    //yien 判断是否展示处理人权重
+                    if(hideNodeWeight != 'true'){  
+                        wholeCommentEdithtml += '('+_data.nodeWeight + '%)';
+                    }
+                    wholeCommentEdithtml = wholeCommentEdithtml + (_data.nodeHandlerName == '' ? ':' : ':'+_data.nodeHandlerName );
+                    wholeCommentEdithtml = wholeCommentEdithtml + '(' + _data.personNodeWeight + '%)';
+                    wholeCommentEdithtml += '</span>';
+
+                    //判断是否可评价总分和等级
+                    if (isShowWholeGrade) {
+                    	var wholeScoreTmp = '';
+                    	if(_needScore == '1' || _needScore == '2'|| _needScore == '3'){
+                    		wholeScoreTmp = _data.wholeScore;
+                    	}
+                        var disabledClass = 'disabled="disabled"';
+                        if (_needScore == '3') {
+                            disabledClass = '';
+                        }
+                        // 评分流程节点设置不能评分,则隐藏总分 modify by janeou
+                        //var totalScoreDiv = _needScore == '0' ? '':'<div class="right">总分:<span id="totalScore" ' +
+			var totalScoreDiv = _needScore == '0' ? '':'<div class="right">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58+'<span id="totalScore" ' +
+                            'gtnname="'+_data.gradeTaskNode+'"><input '+ disabledClass +' id ="wholeScore_' + _data.gradeTaskNode + '" data-needScore="'+_needScore+'" value="'+wholeScoreTmp+'"> '  + '</input></span>';
+                        totalScoreDiv = totalScoreDiv + '<div style="padding-left:1%"><span class="shorterinpwrap" id="MSG_SUMSCORE" style="max-width:300px;color:red"></span></div>';
+                        wholeCommentEdithtml += totalScoreDiv ;
+                        if (data[i].isVetoZero == 1) {
+                            //wholeCommentEdithtml += '<span class="vetomsg">存在否决项</span></div>';
+			    wholeCommentEdithtml += '<span class="vetomsg">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
+                        } else {
+                            //wholeCommentEdithtml += '<span class="vetomsg" style="display:none">存在否决项</span></div>';
+			    wholeCommentEdithtml += '<span class="vetomsg" style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
+                        }
+                        wholeCommentEdithtml += '<div name="editScoreDiv" class="row1 paddingbox">';
+
+                        if (_perfGradeEvaluate == '1') {//允许打整体评价等级
+                            //wholeCommentEdithtml = wholeCommentEdithtml + '<label>等级:</label><span class="selectwrap">';
+			    wholeCommentEdithtml = wholeCommentEdithtml + '<label>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap">';
+                        } else {
+                            //wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">等级:</label><span class="selectwrap" style="display:none">';
+			    wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap" style="display:none">';
+                        }
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<select name="wholeGrade" id ="wholeGrade_' + _data.gradeTaskNode + '">'
+                            + '<option id="blackOp"></option>';
+                        var levelSelectValue = _data.levelSelectVal; //等级下拉选值value
+                        var levelSelectKey = _data.levelSelectKey; //等级下拉选key
+                        var selectOptionArr = new Array();
+                        var selectOptionKeyArr = new Array();
+                        if (levelSelectValue != null && levelSelectValue != '') {
+                            selectOptionArr = levelSelectValue.split(",");
+                            selectOptionKeyArr = levelSelectKey.split(",");
+                        }
+                        for (var j = 0; j < selectOptionArr.length; j++) {
+                            //yien 20191122 天虹私包 
+                            var _selectOptionKeyArr = selectOptionKeyArr[j];
+                            var _selectOptionArr = selectOptionArr[j];
+                            //不显示分数范围
+                            if (isShowLevelScoreRange == 0) {
+                                _selectOptionArr = getLevelWidthoutScoreRange(_selectOptionArr);
+                            }
+                            wholeCommentEdithtml = wholeCommentEdithtml + '<option id="' + _selectOptionKeyArr + '" value="' + _selectOptionKeyArr + '" title="' + _selectOptionArr + '">' + (_selectOptionArr) + '</option>';
+                        }
+                        wholeCommentEdithtml = wholeCommentEdithtml + '</select>'
+                            + '</span>'
+                            + '</div>';
+                    }
+
+
+                    wholeCommentEdithtml = wholeCommentEdithtml + '<div name="editTextareaDivForWholeComment" gradeNode="' + _data.gradeTaskNode + '" class="row1 paddingbox longeditbox">'
+                        + '<label>'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
+                        '</label>';
+
+                    //yien:处理合并打分节点问题
+                    combineGradeTaskIds.push(_data.gradeTaskNode);
+
+                    if (_wholeComment == '1') {
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea id="curWholeComment" class="paddingbox required" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
+                        wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>';
+                    } else {
+                        wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea class="paddingbox" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
+                        wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>'
+                    }
+                    gradeTaskNode = _data.gradeTaskNode; //当前评估对象节点运行实例id
+                    scoreStatus = _data.scoreStatus;
+                    $('#wholeComment .details').append(wholeCommentEdithtml);
+
+                } else {
+                    if (_data.isVisible != '1') {
+                        continue;
+                    }
+                    controlAreaHtml = controlAreaHtml + '<div class="cutting_line">'
+                        + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
+                        + '<span class="left textOverflow">' +  _data.nodeName;
+                    //yien 增加判断是否展示处理人权重
+                    if(hideNodeWeight != 'true'){ 
+                        controlAreaHtml += '('+ _data.nodeWeight + '%)';
+                    }
+                    controlAreaHtml = controlAreaHtml + (data[i].nodeHandlerName == '' ? ':' : ':'+data[i].nodeHandlerName );
+                    controlAreaHtml = controlAreaHtml + '(' + _data.personNodeWeight + '%)';
+                    controlAreaHtml += '</span>';
+                    //判断是否显示总分和等级
+                    if (isShowWholeGrade) {
+                        //var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">总分:' + _data.wholeScore;
+			var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + _data.wholeScore;
+                        //如果节点不能评分,隐藏总分
+                        if (data[i].needScore == '0') {
+                            scoreDivHtml = '<div>';//增加一个div标签,不然格局有问题,打分过程中隐藏评分人参数失败
+                        }
+                        controlAreaHtml += scoreDivHtml;
+
+                        if (data[i].isVetoZero == 1) {
+                		controlAreaHtml += '<span style="margin-left:5px;color:red">'+
+	                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+
+	                        '</span></div>';
+                        } else {
+                            controlAreaHtml += '</div>';
+                        }
+                        controlAreaHtml += '<div name="editScoreDiv" class="row1 paddingbox" isself="' +_data.isSelf+ '">';
+                        if (_perfGradeEvaluate == '1') {//允许打整体评价等级
+                            controlAreaHtml = controlAreaHtml + '<label>'+
+                                jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+
+                                '</label>'
+                                + '<span style="float: left;">'
+                                + (data[i].wholeGrade)
+                                + '</span>'
+                        }
+                        controlAreaHtml = controlAreaHtml + '</div>';
+                    }
+                    controlAreaHtml = controlAreaHtml + '<div name="editTextareaDiv" class="row1 paddingbox">'
+                        + '<label>'+
+                        jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
+                        '</label>'
+                        + '<span class="longinpwrap evaluate"><textarea disabled="disabled" class="paddingbox" >' + _data.wholeComment + '</textarea></span>'
+                        + '</div></div>';
+                }
+            }
+        }
+        controlAreaHtml = controlAreaHtml + "</div>";
+
+        if (data.length == 1 && data[0].canEdit == 1) {
+            $('.controller').hide();
+        } else {
+            wholeCommentHtml = wholeCommentHtml + controlAreaHtml;
+            $(wholeCommentHtml).appendTo($('#wholeComment .scoreContentboxwrap'));
+            //$('#wholeComment .controller').click();
+        }
+        if (data) {
+            for (var i = 0; i < data.length; i++) {
+                if (data[i].scoreToLevel) {
+                    $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].scoreToLevel + "']").attr("selected", "selected");
+                } else {
+                    $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].wholeGrade + "']").attr("selected", "selected");
+                }
+                $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').attr('title', $('#wholeGrade').find("option:selected").text());
+            }
+        }
+        if (currentWholeGrade == '') {
+            blackOp = "blackOp";
+        }
+        that.spreadScore();
+        $('.spreadothers').trigger('click');
+        it.levelSwitchChange();
+        //整体评价中是否允许修改等级
+        if ( isManualJudgeGrade==2) {
+            $("[name='wholeGrade']").attr("disabled", "disabled");
+        }
+        //总分校验
+        $("#totalScore").find("input").blur(function () {
+            sumSocreOnblur(this);
+            /**
+             * 自动计算等级
+             */
+            var grade = $("#wholeComment").find("select").val();
+            if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
+              //  var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
+                //    "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
+                that.remoteCall({
+                    method: "getLeaveByScore",
+                    async: false,
+                    param: {
+                        nodeSumScore:  $(this).val(),
+                        id:gradeTaskNode,
+                        shruicode:shr.getUrlRequestParam("shruicode")
+                    },
+                   // data: {"nodeSumScore": $(this).val(), "id": gradeTaskNode},
+                    success: function (data) {
+                        //这里的结果类似 {data: "差E"}
+                        console.log(data);
+                        if (data.data) {
+                            $("#wholeComment").find("select").find('option').attr('selected', false);
+                            $("#wholeComment").find("select").find("option[value='" + data.data + "']").attr('selected', true);
+                            //$("#wholeComment").find("select").val(data.data);
+                            $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+                        }
+                    }
+                });
+            }
+
+        });
+
+        //考核结果显示控制
+        if(typeof initScoreDetailResultShow == 'function') {
+            initScoreDetailResultShow();
+        }
+    },
+
+    getScroeTipsContent: function(items,params){
+        var arr = [];
+        if(items.subAreaType == '1'){ // 加减分区域
+            if (_targetAddSub = "1") {  // 指标评分范围
+                if(items.targetAddSubDown && items.targetAddSubUp){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_01,
+                        [items.targetAddSubDown,items.targetAddSubUp]));
+                }else if(items.targetAddSubDown){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_02,
+                        [items.targetAddSubDown]));
+                }else if(items.targetAddSubUp){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_03,
+                        [items.targetAddSubUp]));
+                }
+            }
+            if(items.areaAddSub == "1"){   // 区域评分范围
+                if(items.areaAddSubDown && items.areaAddSubUp){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_04,
+                        [items.areaAddSubDown,items.areaAddSubUp]));
+                }else if(items.areaAddSubDown){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_05,
+                        [items.areaAddSubDown]));
+                }else if(items.areaAddSubUp){
+                    arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_06,
+                        [items.areaAddSubUp]));
+                }
+            }
+        }else{
+            var _gcanOverRang = params.canOverSumRange;
+                _gcanNegative = params.canNegative,
+                scoringWay = items.scoringWay,
+                _glowLimit = (params.lowLimit || params.lowLimit === 0) ? params.lowLimit.toString() : '',
+                _gupLimit = (params.uperLimit || params.uperLimit === 0) ? params.uperLimit.toString() : '',
+                _overRang = params.overRange;
+            if(_glowLimit && _gupLimit){
+                arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_07,
+                    [_glowLimit,_gupLimit]));
+            }else if(_glowLimit){
+                arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_08,
+                    [_glowLimit]));
+            }else if(_gupLimit){
+                arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_09,
+                    [_gupLimit]));
+            }
+            if(_gcanOverRang == '1'){//分数允许超出分制范围
+                arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_1625470317_2,
+                    [_overRang]))
+            }
+            if (_gcanNegative == '1') {//允许负分
+                arr.push(jsBizMultLan.perfweb_evaluationdetailsJuicer_1586069239184_i18n_11);
+            }
+        }
+        return arr.join(',');
+    },
+
+    _getCurrentScoreLevel: function(){
+        var curScoreMsg = {};
+        that.remoteCall({
+            method: "getCurrentScoreLevel",
+            async: false,
+            param: {
+                evaObj: evaObj
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                	curScoreMsg = data;
+                }
+            }
+        });
+        return curScoreMsg;
+    },
+    // 判断该区域是否有可以选是否存在字段的指标,没有就不显示该字段
+    judgeIsRejection: function(indicator){
+        var flag = false;
+        for(var j = 0; j < indicator.length; j++){
+            if(indicator[j].FREJECTION == 1){
+                flag = true;
+                break;
+            }
+        }
+        return flag;
+    },
+    // 判断该区域是否全部都是可以选是否存在字段的指标,没有就不显示该字段
+    judgeAllIsRejection: function(indicator){
+        var flag = true;
+        for(var j = 0; j < indicator.length; j++){
+            if(indicator[j].FREJECTION != 1){
+                flag = false;
+                break;
+            }
+        }
+        return flag;
+    },
+    // 指标评语是否必填
+    judgeCommentIsRequired: function(msgdata, area, tabIndex){
+        var isTargetComment = '';
+        for(var i = 0; i < msgdata.length; i++){
+            if(msgdata[i].gradeTaskNode == area[tabIndex].gradeTaskNodeId){
+                isTargetComment = msgdata[i].isTargetComment;
+                break;
+            }
+        }
+        return isTargetComment;
+    },
+    getGradeOption: function(curScoreMsg){
+        if(null != curScoreMsg){
+            var levelSelectValue = curScoreMsg.levelSelectVal; //等级下拉选
+            var levelSelectKey = curScoreMsg.levelSelectKey; //等级下拉选key
+            var selectOptionArr = new Array();
+            var selectOptionKeyArr = new Array();
+            if (levelSelectValue != null && levelSelectValue != '') {
+                selectOptionArr = levelSelectValue.split(",");
+                selectOptionKeyArr = levelSelectKey.split(",");
+            }
+            for(var i = 0; i < selectOptionArr.length; i ++){
+                var selectOptionArrItem = selectOptionArr[i];
+                if(isShowLevelScoreRange == 0 || isShowLevelScoreRange == false){
+                selectOptionArrItem = selectOptionArr[i].split("(")[0];
+                }
+                gradeOption[i] = {};
+                gradeOption[i]["value"] = selectOptionKeyArr[i];
+                gradeOption[i]["alias"] = selectOptionArrItem;
+                gradeOption[i]["isenum"] = false;
+            }
+        }
+    },
+
+    // 初始化区域指标表格
+    initScoreTab: function(tabIndex,msgdata){
+        var params = that._getGridParams(tabIndex,msgdata);
+        var _grid = $('#scoreTab_'+tabIndex);
+        var options = {
+            datatype: 'local',
+            data: params.tabData,
+            colNames: params.myName,
+            colModel: params.myModel,
+            multiSelect: false,
+            multiselectWidth: '',//复选框单元格宽度
+            shrinkToFit: params.shrinkToFit,//true没有滚动条,false有滚动条
+            rownumbers: true,
+            width: 640,//这个宽度不能为百分比
+            height: 298,//高度,表格高度。可为数值、百分比或'auto'
+            cellEdit: entryType == 'viewMyScoreForm' ? false : true,
+            cellsubmit: 'clientArray',
+            keyOptions:{    // 编辑最后一行的最后一个可编辑单元格时,回车不新增行,而是回到第一个可编辑单元格
+                addNewRowForLastCell: false,
+                loop: true
+            },
+            beforeEditCell: function(rowid, cellname, value, iRow, iCol){
+                that._beforeEditCell(rowid, cellname, value, iRow, iCol, _grid);
+            },
+            afterEditCell: function(rowid, cellname, value, iRow, iCol){
+                that._afterEditCell(rowid, cellname, value, iRow, iCol, _grid);
+            },
+            afterSaveCell: function(rowid, cellname, value, iRow, iCol){
+                that._afterSaveCell(rowid, cellname, value, iRow, iCol, _grid);
+            },
+            loadComplete: function (data) {
+                that._loadComplete(data, _grid, params.scoreTipsText);
+            }
+        };
+        _grid.jqGrid(options);
+    },
+    
+    _getGridParams: function(tabIndex,msgdata){
+        var area = globalIndicatorData.rows.evaAreaList;
+        var myModel = [];
+        var myName = [];
+        var indicator = area[tabIndex].evaIndicatorList || area[tabIndex].evaRecordList;
+        var areaNeedScore = area[tabIndex].needScore;
+        var fieldList = area[tabIndex].fieldList;
+        var tabData = [];
+        var isExistComment = 0;
+        var thisIsRejection = that.judgeIsRejection(indicator);    // 该区域指标是否含有否决项
+        var thisAllIsRejection = that.judgeAllIsRejection(indicator); // 该区域指标是否都是否决项
+        var scoreOrRate = globalIndicatorData.scoreOrRate;  // 0:打分,1:打等级
+        //var curScoreMsg = indicator.length > 0 ? it.getCurrentAndPrevScoreMsg(indicator[0].FID) : [];   // 当前节点打分信息
+        var curScoreMsg = that._getCurrentScoreLevel();
+        // 指标评语是否必填
+        var isTargetComment = that.judgeCommentIsRequired(msgdata, area, tabIndex);
+        var scoreTipsText = '';
+
+        that.getGradeOption(curScoreMsg);
+        // 打分字段单独处理
+        var myScoreName='';
+        var myScoreModel={};
+        for (var i = 0; i < fieldList.length; i++) {
+            var fieldName = fieldList[i].colName;
+            var fieldMaintenanceShow = fieldList[i].fieldMaintenanceShow;
+            var fieldShowLocation = fieldList[i].fieldShowLocation;
+            var fieldType = fieldList[i].fieldType;
+            var canEditField = canEditTable && fieldList[i].fieldMaintenanceStage !== '100';
+            var isHidden = fieldShowLocation === '10' ? false : true;
+            var fillOverwrite = '';
+            var required = fieldList[i].required && canEditField;
+            var classes = '';
+            if(fieldName === 'FCOMMENT'){
+                required = canEditField && isTargetComment === '1';
+            }else if(fieldName === 'FSCORE'){
+                required = canEditField && area[tabIndex].needScore === '2';
+            }
+            if(fieldName.indexOf('FEXTEND') > -1){  // 扩展字段匹配可维护流程级数
+                canEditField = canEditTable && (fieldMaintenanceShow === '0' || fieldMaintenanceShow === '1');
+                isHidden = fieldMaintenanceShow === '3';
+                fillOverwrite = fieldList[i].fillOverwrite;
+                required = canEditField && fieldMaintenanceShow === '1';
+            }
+            if(canEditTable && !canEditField){
+                classes = 'disabled';
+            }else if(required){
+                classes = 'required';
+            }
+
+            if(fieldName == 'FWEIGHT' && hideWeight()){
+                isHidden = true;
+            }
+            
+            // 分数
+            if(fieldName == "FSCORE"){  
+                if(!thisAllIsRejection){
+                    // 打分、选是否存在混合字段列
+                    if((scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')) && thisIsRejection){
+                        //myName.push('评分/是否存在');
+                        myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_05);
+                        myModel.push({
+                            name: 'scoreORrejection', 
+                            index: 'scoreORrejection', 
+                            width: 100, 
+                            align: "left", 
+                            sortable: true,
+                            editable: canEditField,
+                            required: required,
+                            classes: classes,
+                            hidden:entryType === 'viewEvaForm' ? true :false
+                        });
+                    }
+                    //参数控制打分字段隐藏显示
+                    if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY'){
+                        myScoreName=fieldList[i].showName;
+                        myScoreModel={
+                            name: fieldName,
+                            index: fieldName,
+                            width: 70,
+                            align: "left",
+                            sortable: true,
+                            editable: canEditField,
+                            required: required,
+                            classes: classes,
+                            // formatter: 'numberField'
+                            hidden: false, // 已评分默认显示评分列
+                        }
+                    }else if (scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')){
+                        myName.push(fieldList[i].showName+'\<span\ class="score-tips">\<\/span\>');
+                        myModel.push({
+                            name: fieldName,
+                            index: fieldName,
+                            width: 70,
+                            align: "left",
+                            sortable: true,
+                            editable: canEditField,
+                            required: required,
+                            classes: classes,
+                            // formatter: 'numberField'
+                            hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection ? true : false), // 既有打分又有否决项指标的区域,隐藏打分列,显示混合字段列
+                        });
+                    }
+                }
+                // 组装表格字段名称属性
+                if(scoreOrRate == 1 && !thisAllIsRejection && thisIsRejection && area[tabIndex].subAreaType !== '1'){ // 打等级、选是否存在混合字段列
+                    //myName.push('等级/是否存在');
+                    myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_06);
+                    myModel.push({
+                        name: 'gradeORrejection', 
+                        index: 'gradeORrejection', 
+                        width: 100, 
+                        align: "left", 
+                        sortable: true,
+                        editable: canEditTable,
+                        hidden:entryType === 'viewEvaForm' ? true :false
+                    });
+                }
+                if(scoreOrRate == 1 && !thisAllIsRejection && area[tabIndex].subAreaType !== '1'){ // 既有打等级又有否决项指标的区域,隐藏等级列,显示混合字段列
+                    //myName.push('等级');
+                    myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_07);
+                    myModel.push({
+                        name: 'nodeGrade',
+                        index: 'nodeGrade',
+                        width: 100,
+                        align: "left",
+                        sortable: true,
+                        editable: canEditTable,
+                        edittype: 'shrselect',
+                        editoptions: {
+                            selectJson: {
+                                data: gradeOption
+                            },
+                            enumSource: {
+                                data: gradeOption
+                            }
+                        },
+                        formatter: 'shrtext',
+                        hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection|| areaNeedScore=='0'  ? true : false)
+                    });
+                }
+            }
+            // 定性/定量、可见性、否决项
+            else if(fieldName == "FQUALIORRATION" || fieldName == 'FISVISIBLE' || fieldName == 'FREJECTION'){
+                myName.push(fieldList[i].showName);
+                myModel.push({name:fieldName, index:fieldName, width:10, hidden:true});
+                if(fieldName == "FREJECTION" && thisIsRejection){   // 否决项
+                    myName.push(
+                        //'是否存在'
+                        jsBizMultLan.perfweb_perfscoreNew_zw20210105_i18n_01
+                    );
+                    myModel.push({
+                        name: 'isRejection', 
+                        index: 'isRejection', 
+                        width: 100, 
+                        align: "left", 
+                        sortable: true,
+                        editable: canEditField,
+                        edittype: 'shrselect',
+                        required: required,
+                        classes: classes,
+                        editoptions: {
+                            selectJson: {
+                                //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}],
+                                data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}],
+                                onChange: function(){
+                                    var $this = $(this);
+                                    if($this.shrSelect('getValue').value == '1'){
+                                        //shr.showConfirm('若存在否决项,将直接影响最终得分,确定要选择吗?', function () {
+                        shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_08, function () {
+                                            calcTotoalScore(gradeTaskNode);
+                                        },function(){
+                                            $this.shrSelect('setValue','0');
+                                        });
+                                    }else{
+                                        setTimeout(function(){
+                                            calcTotoalScore(gradeTaskNode);
+                                        },100)
+                                    }
+                                }
+                            },
+                            enumSource: {
+                                //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
+                                data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}]
+                            }
+                        },
+                        formatter: 'shrselect',
+                        hidden: entryType === 'viewEvaForm' ? true : (thisAllIsRejection ? false : true),// 既有打等级或评分又有否决项指标的区域,隐藏否决项列,显示混合字段列
+                    });
+                }
+                if(fieldShowLocation === '10' && fieldName !== 'FREJECTION'){
+                    myName.push(fieldList[i].showName);
+                    myModel.push({
+                        name: fieldName+'Text', 
+                        index: fieldName+'Text', 
+                        width: 100, 
+                        align: "left", 
+                        sortable: true,
+                        classes: canEditTable ? 'disabled': '',
+                    });
+                }
+            }
+            // 评分公式,用于判断定量指标是否有评分公式
+            else if(fieldName == "FSCORINGFORMULA"){                   
+                myName.push(fieldList[i].showName);
+                myModel.push({
+                    name: fieldName,
+                    index: fieldName,
+                    width: 120,
+                    align: "left",
+                    sortable: true,
+                    editable: false,
+                    required: required,
+                    classes: classes,
+                    hidden: fieldShowLocation === '10' ? false : true
+                });
+            }
+            // 字段类型为是否、选择项
+            else if(fieldShowLocation === '10' && (fieldType == 'Boolean' || fieldType == 'Select')){
+                var fieldOptions = [];
+                if(fieldType == 'Boolean'){
+                    // [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
+                    fieldOptions = [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}];
+                }else{
+                    var options = fieldList[i].options;
+                    $.each(options,function(i,item){
+                        fieldOptions.push({
+                            value: item.key,
+                            alias: item.value
+                        })
+                    })
+                }
+                myName.push(fieldList[i].showName);
+                myModel.push({
+                    name: fieldName, 
+                    index: fieldName, 
+                    width: 100, 
+                    align: "left", 
+                    sortable: true,
+                    editable: canEditField,
+                    edittype: 'shrselect',
+                    required: required,
+                    classes: classes,
+                    editoptions: {
+                        selectJson: {
+                            data: fieldOptions,
+                            onChange: function(){
+                            }
+                        },
+                        enumSource: {
+                            data: fieldOptions
+                        }
+                    },
+                    formatter: 'shrselect',
+                    hidden: isHidden ,
+                });
+            }
+            // 字段类型为长文本 + 实际完成值、目标值 
+            else if(fieldShowLocation === '10' && (fieldType == 'LongText' || fieldName == 'FACTUALCOMPLEVALUE' || fieldName == 'FTARGETVALUE')){                        
+                isExistComment = fieldName == "FCOMMENT" ? 1 : 0;
+                var fw = 400;
+                if(fieldName == 'FNAME' || fieldName == 'FKEYITEM'){
+                    fw = 150;
+                }
+                myName.push(fieldList[i].showName);
+                myModel.push({
+                    name: fieldName, 
+                    index: fieldName, 
+                    width: fw, 
+                    align: "left", 
+                    sortable: true,
+                    editable: canEditField,
+                    edittype: 'wafTextArea',
+                    fillOverwrite: fillOverwrite,
+                    hidden: (entryType === 'viewEvaForm' && fieldName == "FCOMMENT") || isHidden ? true : false,
+                    required: required,
+                    classes: classes,
+                    formatter: function(val,msg){
+                        return '<div class="cell-height scrollbarthin">'+(val?val:'')+'</div>';
+                    }
+                });
+            }
+            // 字段类型为短文本、数字
+            else if(fieldShowLocation === '10' && (fieldType == 'Text' || fieldType == 'Number')){
+                myName.push(fieldList[i].showName+(fieldName == "FWEIGHT" ? '(%)' : ''));
+                myModel.push({
+                    name: fieldName,
+                    index: fieldName,
+                    width: fieldList[i].fieldType === 'Text' ? 120 : 90,
+                    align: "left",
+                    sortable: true,
+                    editable: canEditField,
+                    hidden: isHidden, 
+                    fieldType: fieldType,
+                    fillOverwrite: fillOverwrite,
+                    required: required,
+                    classes: classes,
+                    formatter: function(val,msg){
+                        var text = val;
+                        var fieldType = msg.colModel.fieldType;
+                        if(fieldType === 'Text'){
+                            text = '<div class="cell-height scrollbarthin">'+val+'</div>';
+                        }
+                        return text;
+                    }
+                });
+            }
+            // 字段类型为日期
+            else if(fieldShowLocation === '10' && (fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp')){
+                if(fieldShowLocation === '10'){
+                    myName.push(fieldList[i].showName);
+                    myModel.push({
+                        name: fieldName,
+                        index: fieldName,
+                        width: 100,
+                        align: "left",
+                        sortable: true,
+                        editable: canEditField,
+                        edittype: 'shrDateTimePicker',
+                        hidden : isHidden,
+                        fieldType: fieldType,
+                        required: required,
+                        classes: classes,
+                        editoptions: {
+                            datepickerjson: {
+                                ctrlType: fieldType
+                            }
+                        },
+                        formatter: function(val,msg){
+                            return window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType})
+                        }
+                    });
+                }
+            }
+            // 其他默认显示在列表的字段
+            else if(fieldShowLocation === '10'){       
+                var fw = 120;
+                if(fieldList[i].fieldType === 'LongText'){
+                    fw = 300;
+                }            
+                myName.push(fieldList[i].showName);
+                myModel.push({
+                    name: fieldName, 
+                    index: fieldName, 
+                    width:fw, 
+                    align: "left", 
+                    sortable: true,
+                    hidden: isHidden,
+                    fieldType: fieldType,
+                    classes: canEditTable ? 'disabled': '',
+                    formatter: function(val,msg){
+                        var text = val;
+                        var fieldType = msg.colModel.fieldType;
+                        if(typeof val === "object"){
+                            text = val.name;
+                        }else if(fieldType === 'Text' || fieldType === 'LongText' || fieldType === 'Unknown'){
+                            text = '<div class="cell-height scrollbarthin">'+val+'</div>';
+                        }else if(fieldType == 'Boolean'){
+                            text = val === '0' ? jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09 : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10;
+                        }else if(fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp'){
+                            text = window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType});
+                        }
+                        return text;
+                    }
+                });
+            }
+            // 扩展字段加上是否覆盖填写字段值
+            if(fieldName.indexOf('FEXTEND') > -1 && fieldShowLocation === '10'){
+                myName.push('fillOverwrite');
+                myModel.push({name:'fillOverwrite_'+fieldName, index:'fillOverwrite_'+fieldName, width:10, hidden:true});
+            }
+        }
+        //打分字段后置,放在操作前面
+        if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY' && !thisAllIsRejection){
+            myName.push(myScoreName);
+            myModel.push(myScoreModel);
+        }
+
+        var otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
+        //当前页面类型:评分页面:'1',查看考核历史页面:'2',专业应用查看评估表:'3'
+        if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
+            otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
+        }
+         else if(pageSource == undefined && viewMode ==undefined){
+            otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
+        }
+        else if(pageSource  !=undefined && (viewMode == 'viewEvaReport' || viewMode == 'viewAllEffective')){
+            otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
+        }
+
+        myName.push('FID','canEdit','canNegative','canVeto','gradeTaskNode','canOverSumRange','lowLimit','uperLimit','overRange',
+            //'操作'
+            /*jsBizMultLan.perf_perfscoreNewJuicer_1586255741045_i18n_2,*/otherFieldName,jsBizMultLan.perfweb_perfscore_1637291044_i18n_01,'subAreaType','areaAddSub','areaAddSubDown','areaAddSubUp','targetAddSub','targetAddSubDown','targetAddSubUp'
+        );
+        myModel.push(
+            {name:'id', index:'id', width:10, hidden:true},
+            {name:'canEdit', index:'canEdit', width:10, hidden:true},
+            {name:'canNegative', index:'canNegative', width:10, hidden:true},
+            {name:'canVeto', index:'canVeto', width:10, hidden:true},   // 判断是否可以打否决项canVeto = 2时可以
+            // {name:'otherScoreList', index:'otherScoreList', width:10, hidden:true},
+            {name:'gradeTaskNode', index:'gradeTaskNode', width:10, hidden:true},
+            {name:'canOverSumRange', index:'canOverSumRange', width:10, hidden:true},
+            {name:'lowLimit', index:'lowLimit', width:10, hidden:true},
+            {name:'uperLimit', index:'uperLimit', width:10, hidden:true},
+            {name:'overRange', index:'overRange', width:10, hidden:true},
+            // {name: 'operation', index: 'operation', width: 60, align: "center", sortable: false, formatter: function(){
+            //     //var btntext = '查看其他人评分';
+		    //     var btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_11;
+            //     if(entryType === 'viewEvaForm'){
+            //         //btntext = '查看评分详情';
+		    //         btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_12;
+            //     }
+            //     return '<a class="view_other_btn" href="javascript:;">'+btntext+'</a>'
+            // },},
+            {name:'preNodeScoreList', index:'preNodeScoreList', width:100, hidden:true},
+            {name:'nodeInfoList', index:'nodeInfoList', width:180, hidden: false,classes: canEditTable ? 'disabled': '',formatter: function(value,mmodel,rowData){
+                // hideUnselfScoring === 'true' ? true : false
+                var nodeInfoList = rowData.nodeInfoList ? JSON.parse(rowData.nodeInfoList) : [];
+                var flag = false;
+                $.each(nodeInfoList, function(i, data){
+                    if(hideUnselfScoring === "false" || (hideUnselfScoring === "true" && data.nodeHandlerId === personId)){
+                        if(data.comment){
+                            flag = true;
+                            return false;
+                        }
+                    }
+                })
+                var temp = [
+                    '<div class="expend-td-box cell-height scrollbarthin">',
+                    '<ul class="other-msg">',
+                    '{@each rows as item,i}',
+                        // BT-00650981 绩效工作台—组织/员工目标评分——列表页面:其他评分人信息 打等级的就显示等级,后面多一个“分”字
+                        // 判断是打等级还是打分,不同展示  jianyu_zhang 2022.02.10
+                        '{@if hideUnselfScoring === "false" || (hideUnselfScoring === "true" && item.nodeHandlerId === personId)}',
+                        '<li class="node-name">',
+                            '{@if item.nodeName}(${item.nodeName}){@/if}${item.handlerName}:',
+                            '{@if isRejection == 1 }',
+                                '${item.isRejection.alias} ',
+                            '{@else}',
+                                '{@if item.needScore != "0"}',// 增加评分展示控制,不评分的不展示分数(包括定量指标)
+                                    '{@if item.score !== undefined && item.score !== null && item.score !== ""}',
+                                         //分
+                                        '${item.score}'+ jsBizMultLan.perfweb_perfscoreNew_ht_20220419_20,
+                                    '{@else if item.gradeRank != undefined && item.gradeRank != null && item.gradeRank != ""}',
+                                        '${item.gradeRank}',
+                                    '{@/if}',
+                                '{@/if}',
+                            '{@/if}',
+                        '</li>',
+                        '{@/if}',
+                        //指标评语
+                        '{@if item.comment}',
+                        '<li>',
+                            '<span class="expend-td-comment-field" title="${item.comment}">'+jsBizMultLan.perfweb_perfscoreNew_ht_20220414_36+':</span>',
+                        '</li>',
+                        '<li class="expend-td-comment"><pre class="textOverflow3">${item.comment}</pre></li>',
+                        '{@/if}',
+                        '{@each fieldList as it,j}',
+                            '{@if it.colName.indexOf("FEXTEND") > -1 && it.fieldMaintenanceShow !== "3" && it.fillOverwrite === "0"}',
+                            '<li field-type="${it.fieldType}">',
+                                '<span class="" title="${it.showName}">${it.showName}:</span>',
+                                '{@if item[it.colName]}',
+                                '<pre class="textOverflow3">${item[it.colName]}</pre>',
+                                '{@/if}',
+                            '</li>',
+                            '{@/if}',
+                        '{@/each}',
+                        
+                    '{@/each}',
+                    '</ul>',
+                    '</div>',
+                    flag ? '<div class="expend-btn"></div>': ''
+                ].join('');
+                var tempDom = juicer(temp,{rows: nodeInfoList,isRejection: rowData.FREJECTION,hideUnselfScoring: pageSource === 'PERSONHISTORY'? 'false': hideUnselfScoring,personId: personId,fieldList: rowData.currIndiDetail.fieldList});
+                return tempDom;
+            }},
+            {name:'subAreaType', index:'subAreaType', width:10, hidden:true},
+            {name:'areaAddSub', index:'areaAddSub', width:10, hidden:true},
+            {name:'areaAddSubDown', index:'areaAddSubDown', width:10, hidden:true},
+            {name:'areaAddSubUp', index:'areaAddSubUp', width:10, hidden:true},
+            {name:'targetAddSub', index:'targetAddSub', width:10, hidden:true},
+            {name:'targetAddSubDown', index:'targetAddSubDown', width:10, hidden:true},
+            {name:'targetAddSubUp', index:'targetAddSubUp', width:10, hidden:true}
+        );
+        if(isExistComment == 1){
+            myName.push('commentName');     // 存储指标评语名称字段
+            myModel.push({name:'commentName', index:'commentName', width:10, hidden:true});
+        }
+        // 组装数据
+        var myData = that._getMyData(indicator,scoreOrRate,area,tabIndex,msgdata,fieldList,areaNeedScore);
+        tabData = myData.tabData;
+        scoreTipsText = myData.scoreTipsText;
+        
+        // var showFieldWidth = 0;
+        // myModel.forEach(function(item){
+        //     if(!item.hidden){
+        //         showFieldWidth += item.width;
+        //     }
+        // })
+        // var shrinkToFit = showFieldWidth < $('.scoretabwrap').eq(0).width() ? true : false;
+
+        var showFieldWidth = 0;
+        var show_count = 0,text_count = 0;
+        var tabwidth = $('.scoretabwrap').eq(0).width();
+        myModel.forEach(function(item){
+            if(!item.hidden){
+                showFieldWidth += item.width;
+                show_count ++;  // 默认显示字段个数
+                if(item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text')){
+                    text_count ++ ; // 文本类型字段个数
+                }
+            }
+        })
+        var shrinkToFit = showFieldWidth < tabwidth ? true : false;
+        if(shrinkToFit){
+            var w1 = tabwidth - showFieldWidth - 34 - show_count * 6;      // 可按比例分配宽度 34:复选框列 6:单元格左右内边距
+            var w2 = (w1/text_count).toFixed(2) - 6;           // 每个长文本可分配的宽度
+            if(w1 != 0){
+                myModel.forEach(function(item, i){
+                    if(!item.hidden && item.name != 'nodeInfoList' && (item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text'))){
+                        myModel[i].width = myModel[i].width + Number(w2); // 新列宽
+                    }
+                })
+            }
+        }
+
+        return {
+            tabData: tabData,
+            myName: myName,
+            myModel: myModel,
+            shrinkToFit: that.getShrinkToFit(shrinkToFit),
+            scoreTipsText: scoreTipsText
+        };   
+    },
+    // 二开扩展点,true没有滚动条,false有滚动条
+    getShrinkToFit: function(shrinkToFit){
+        return shrinkToFit;
+    },
+    _beforeEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
+        if(lastTable != _grid.attr('id')){
+            if(lastTable){
+                $('#'+lastTable).jqGrid('editStop');
+            }
+            lastTable = _grid.attr('id');
+        }
+    },
+    _afterEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
+        var rowData = _grid.jqGrid('getOriginalRowData',rowid);
+        var colAttr = _grid.getColProp(cellname);
+        var fieldType = colAttr.fieldType;
+        if(cellname == 'scoreORrejection' || cellname == 'gradeORrejection' || cellname == 'nodeGrade' || cellname == 'isRejection'){
+            if(rowData.FREJECTION == 1){
+                $('#'+iRow+'_'+cellname).shrSelect({
+                    id: iRow+'_'+cellname,
+                    //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}],
+                    data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}],
+                    value: rowData.isRejection,
+                    onChange: function(){
+                        var $this = $(this);
+                        if($this.shrSelect('getValue').value == '1'){
+                            //shr.showConfirm('若存在否决项,将直接影响最终得分,确定要选择吗?', function () {
+            shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_08, function () {
+                                _grid.jqGrid('setCell', rowData.id, 'isRejection','1');
+                                calcTotoalScore(gradeTaskNode);
+                                $('.vetomsg').show();
+                            },function(){
+                                $this.shrSelect('setValue','0');
+                                _grid.jqGrid('setCell', rowData.id, 'isRejection','0');
+                            });
+                        }else{
+                            setTimeout(function(){
+                                calcTotoalScore(gradeTaskNode);
+                                if(that.judgeWheatherThereisVetos()){
+                                    $('.vetomsg').show();  
+                                }else{
+                                    $('.vetomsg').hide();  
+                                }
+                            },100)
+                        }
+                    }
+                })
+            }else{
+                if(cellname == 'gradeORrejection' || cellname == 'nodeGrade'){
+                    var cellVal = '';
+                    $('#'+iRow+'_'+cellname).shrSelect({
+                        id: iRow+'_'+cellname,
+                        data: gradeOption,
+                        // value: cellVal,
+                        onChange: function(){}
+                    })
+                }
+            }
+        }
+        // if(cellname == 'FACTUALCOMPLETETIME'){
+        //     initDateEven(iRow+'_'+cellname,0);
+        // }
+        // 单元格有滚动条时编辑取值修改
+        if(value.indexOf('class="cell-height scrollbarthin"') > -1){
+            if(fieldType === 'Text'){
+                _grid.find('#'+iRow+'_'+cellname).attr('maxlength','');
+            }
+            _grid.find('#'+iRow+'_'+cellname).val($(value).text());
+        }
+    },
+    _afterSaveCell: function(rowid, cellname, value, iRow, iCol, _grid){
+        var rowData = _grid.jqGrid('getOriginalRowData',rowid);
+        if(rowData.FREJECTION == 1){
+            if(cellname == 'scoreORrejection'){
+                //_grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.scoreORrejection == '是' ? '1' : '0');
+                _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.scoreORrejection == jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10 ? '1' : '0');
+            }else if(cellname == 'gradeORrejection'){
+                //_grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.gradeORrejection == '是' ? '1' : '0');
+                _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.gradeORrejection == jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10 ? '1' : '0');
+            }
+            // that.judgeWheatherThereisVetos();
+        }else{
+            if(cellname == 'scoreORrejection'){
+                // 在此处校验分数是否合法
+                if(value == ''){
+                    _grid.jqGrid('setCell', rowData.id, 'FSCORE',null);
+                }else{
+                    _grid.jqGrid('setCell', rowData.id, 'FSCORE',rowData.scoreORrejection);
+                    inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid)
+                }
+            }else if(cellname == 'gradeORrejection' || cellname == 'nodeGrade'){
+                var cellAlias = '';
+                var cellValue = '';
+                for(var i = 0; i < gradeOption.length; i++){
+                    if(rowData.gradeORrejection == gradeOption[i].alias | rowData.nodeGrade == gradeOption[i].value){
+                        cellAlias = gradeOption[i].alias;
+                        cellValue = gradeOption[i].value;
+                        break;
+                    }
+                }
+                _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellValue);
+                // calcTotoalScore(gradeTaskNode);//[BT-01364238]打等级:算分,接口重复调用,注释掉
+                _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellAlias);
+            }
+            /*else if(cellname == 'nodeGrade'){//评等级情况下自动计算总分
+                calcTotoalScore(gradeTaskNode);
+            }*/
+        }
+        if(cellname == 'FACTUALCOMPLEVALUE' || cellname == 'FTARGETVALUE' || cellname == 'FACTUALCOMPLETEDESC' || cellname == 'FSCORE' || cellname == 'FCOMMENT' || cellname.indexOf('FEXTEND') > -1){
+            // 值校验
+            inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid)
+        }
+    },
+    _loadComplete: function (data, _grid, scoreTipsText) {
+        if(_grid.height() > 500){
+            _grid.jqGrid('setGridHeight',500);
+        }
+        _grid.closest('.scoretabwrap').find('.score-tips').perfTips({
+            content: scoreTipsText,
+            defaultWidth: 250,
+            defaultHeight: 80
+        })
+        var needScoreTmp = 0;
+        var perfGradeEvaluateTmp = 0;
+        for(var m=0; m<data.rows.length; m++){
+            for(var k=0; k<_gneedScoreArr.length; k++){
+                if(data.rows[m].gradeTaskNode == _gneedScoreArr[k].gradeTaskNode){
+                    needScoreTmp = _gneedScoreArr[k].needScore;
+                    perfGradeEvaluateTmp = _gneedScoreArr[k].perfGradeEvaluate;
+
+
+                    var rowData =  data.rows[m];
+                    var tmpMap = [];
+                    tmpMap['scoreORrejection'] = rowData.scoreORrejection;
+                    tmpMap['gradeORrejection'] = rowData.gradeORrejection;
+
+
+                    var tmpScore = null;
+                    if(rowData.FREJECTION == '1'){
+                        tmpScore = "";
+                    }
+                    if(needScoreTmp !=0 && rowData.FSCORE){
+                        tmpScore = parseFloat(rowData.FSCORE).toFixed(2);
+                    }
+                    if(!rowData.isCanEditActValue){
+                        _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLEVALUE',rowData.FACTUALCOMPLEVALUE, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FTARGETVALUE',rowData.FTARGETVALUE, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLETETIME',rowData.FACTUALCOMPLETETIME, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLETEDESC',rowData.FACTUALCOMPLETEDESC, 'not-editable-cell');
+                    }
+                    // 评分时定量指标时,分数输入框、等级选择框不可编辑
+                    if((entryType != 'viewMyScoreForm') && needScoreTmp == 0){
+                        if(rowData.FQUALIORRATION == 1){
+                            _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
+                            _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
+                            _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
+                            _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
+                        }else{
+                            if(needScoreTmp != 0){
+                                if(rowData.FSCORE){
+                                    _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore, 'not-editable-cell');
+                                    //_grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
+                                    _grid.jqGrid('setCell', rowData.id, 'nodeGrade',rowData.nodeGrade, 'not-editable-cell');
+                                }
+                                _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
+                                _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',rowData.scoreORrejection, 'not-editable-cell');
+                                _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.isRejection, 'not-editable-cell');
+                            }else{
+                                _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
+                                _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
+                                if(rowData.FREJECTION != 1){
+                                    _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
+                                }
+                                _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
+                            }
+                        }
+                        //BT-00543726 绩效工作台—个人目标评价 列表页面 定量指标没有公式是可以列表编辑的 跟概览保持一致 8612也要同步
+                    }else if(needScoreTmp == 0 && !$.isEmptyObject(rowData.FSCORINGFORMULA)){
+                        _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
+                    }
+                    if(needScoreTmp !=0 && !$.isEmptyObject(rowData.FSCORINGFORMULA)){
+                         _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',rowData.scoreORrejection, 'not-editable-cell');
+                         _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpScore, 'not-editable-cell');
+                         _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore, 'not-editable-cell');
+                         _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
+                         _grid.jqGrid('setCell', rowData.id, 'nodeGrade',tmpScore, 'not-editable-cell');
+                         //R20201111-1363
+                    }else if(needScoreTmp != 0 && $.isEmptyObject(rowData.FSCORINGFORMULA)){
+                        _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpMap['scoreORrejection']);
+                        _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore);
+                    }else{
+                        _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpMap['scoreORrejection'], 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore,'not-editable-cell');
+                    }
+                    _grid.jqGrid('setCell', rowData.id, 'FCOMMENT',rowData.FCOMMENT, 'commentcell');
+                    if (rowData.FREJECTION == 1 && rowData.canVeto != 2) {     // 是否决项,但不可编辑是否存在字段
+                        _grid.jqGrid('setCell', rowData.id, 'scoreORrejection', tmpMap['scoreORrejection'], 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'isRejection', rowData.isRejection, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'gradeORrejection', tmpMap['gradeORrejection'], 'not-editable-cell');
+                    }
+                    //if(rowData.FREJECTION != 1 && scoreOrRate == 1 && thisIsRejection && !thisAllIsRejection){
+                    if(rowData.gradeORrejection != null && rowData.gradeORrejection != undefined){
+                        var cellAlias = '';
+                        for(var j = 0; j < gradeOption.length; j++){
+                            if(rowData.gradeORrejection == gradeOption[j].value){
+                                cellAlias = gradeOption[j].alias;
+                                break;
+                            }
+                        }
+                        _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',cellAlias);
+                        _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.isRejection);
+                        _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellAlias);
+                    }
+
+                    //打总分的节点不能评分
+                    if (_needScore == '3') {
+                        _grid.jqGrid('setCell', rowData.id, 'scoreORrejection', tmpMap['scoreORrejection'], 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'isRejection', rowData.isRejection, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FSCORE', tmpScore, 'not-editable-cell');
+                        _grid.jqGrid('setCell', rowData.id, 'FCOMMENT', rowData.FCOMMENT, 'not-editable-cell');
+                        //_grid.find("td[aria-describedby='scoreTab_" + tabIndex + "_FSCORE']").addClass('disabled')
+                    }
+                }
+            }
+        }
+    },
+    // 组装数据
+    _getMyData: function(indicator,scoreOrRate,area,tabIndex,msgdata,fieldList,areaNeedScore){
+        var tabData = [];
+        var scoreTipsText = '';
+        for (var j = 0; j < indicator.length; j++) {
+            tabData[j] = {};
+            tabData[j]['FQUALIORRATION'] = indicator[j].FQUALIORRATION;
+            tabData[j]['FQUALIORRATIONText'] = indicator[j].FQUALIORRATION === '0' ? jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_15 : jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_16;
+            tabData[j]['FISVISIBLEText'] = indicator[j].FISVISIBLE === '0' ? jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_17 : jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_18;
+            if(indicator[j].FREJECTION == 1 && indicator[j]['isRejection']){   // 如果是否决项
+                tabData[j]['scoreORrejection'] = indicator[j]['isRejection'].alias;
+                tabData[j]['gradeORrejection'] = indicator[j]['isRejection'].alias;
+                tabData[j]['isRejection'] = indicator[j]['isRejection'].value;
+                tabData[j]['FREJECTIONText'] = indicator[j]['isRejection'].alias;
+            }else{
+                if(scoreOrRate == 0){
+                    tabData[j]['scoreORrejection'] = indicator[j]['targetScore'];
+                }else if(scoreOrRate == 1){
+                    tabData[j]['gradeORrejection'] = indicator[j]['gradeRank'];
+                }
+            }
+
+            // 加减分 
+            tabData[j]['subAreaType'] = area[tabIndex].subAreaType;
+            tabData[j]['areaAddSub'] = area[tabIndex].areaAddSub;
+            tabData[j]['areaAddSubDown'] = area[tabIndex].areaAddSubDown;
+            tabData[j]['areaAddSubUp'] = area[tabIndex].areaAddSubUp;
+            tabData[j]['targetAddSub'] = area[tabIndex].targetAddSub;
+            tabData[j]['targetAddSubDown'] = area[tabIndex].targetAddSubDown;
+            tabData[j]['targetAddSubUp'] = area[tabIndex].targetAddSubUp;
+            tabData[j]['isCanEditActValue'] = indicator[j].isCanEditActValue;
+            tabData[j]['id'] = indicator[j].FID;
+            tabData[j]['nodeGrade'] = indicator[j].gradeRank;
+            for(var i = 0; i < msgdata.length; i++){
+                // 从执行计划列表进入表单,目前后端无法传递正确的节点Id,先不做节点Id过滤
+                if(entryType == 'viewEvaForm' && msgdata[i].targetId == indicator[j].FID){
+                   tabData[j]['nodeInfoList'] =JSON.stringify(msgdata[i].nodeInfoList);
+                }
+            	if(entryType != 'viewMyScoreForm' && msgdata[i].canEdit != '1'){
+            		continue;
+            	}
+            	if(entryType == 'viewMyScoreForm' && msgdata[i].canEdit == '1'){
+            		continue;
+            	}
+            	// 考虑到会有同一个人处理并发评分的情况,因此增加了节点Id的判断
+                if(msgdata[i].targetId == indicator[j].FID && msgdata[i].gradeTaskNode == indicator[j].nodeTask){      // 为1才是当前节点评分信息,否则是其他人打分
+                    tabData[j]['canEdit'] = msgdata[i].canEdit;
+                    tabData[j]['canNegative'] = msgdata[i].canNegative;
+                    tabData[j]['gradeTaskNode'] = msgdata[i].gradeTaskNode;
+                    tabData[j]['canVeto'] = msgdata[i].canVeto;
+                    tabData[j]['canOverSumRange'] = msgdata[i].canOverSumRange;
+                    tabData[j]['lowLimit'] = msgdata[i].lowLimit;
+                    tabData[j]['uperLimit'] = msgdata[i].uperLimit;
+                    tabData[j]['overRange'] = msgdata[i].overRange;
+                    // 新增赋值,在已评分页面针对并发场景做赋值操作
+                    tabData[j]['nodeInfoList'] =JSON.stringify(msgdata[i].nodeInfoList);
+                    tabData[j]['preNodeScoreList'] = msgdata[i].nodeScoreList;
+                    tabData[j]['currIndiDetail'] = msgdata[i];
+                    tabData[j]['FCOMMENT'] = msgdata[i].fcomment;
+                }
+                if(entryType == 'viewMyScoreForm' && gradeTaskNode){
+                	tabData[j]['gradeTaskNode'] = gradeTaskNode;
+                }
+            }
+            // 组装评分字段tips文本
+            if(!scoreTipsText){
+                // 组装评分字段tips文本
+                var _params = {
+                    canOverSumRange: tabData[j]['canOverSumRange'],
+                    canNegative: tabData[j]['canNegative'],
+                    lowLimit: tabData[j]['lowLimit'],
+                    uperLimit: tabData[j]['uperLimit'],
+                    overRange: tabData[j]['overRange']
+                }
+                scoreTipsText = that.getScroeTipsContent(area[tabIndex], _params);
+            }
+
+            if(!tabData[j]['currIndiDetail']){
+                tabData[j]['currIndiDetail'] = {};
+            }
+            tabData[j]['currIndiDetail']['fieldList'] = fieldList;
+            for (var i = 0; i < fieldList.length; i++) {
+                var fieldName = fieldList[i].colName;
+                var fillOverwrite = fieldList[i].fillOverwrite;
+                if(fieldName == "FSCORE"){ // 分数
+                    // tabData[j][fieldName]  = indicator[j]["targetScore"]
+                    //yien 补丁11 改成获取指标汇总分数,和概览页面保持一致
+                    tabData[j][fieldName]  = indicator[j]["FSCORE"]
+                    if(pageSource == 'PERSONHISTORY' && indicator[j].FREJECTION == 1 && indicator[j]['isRejection']){
+                        tabData[j][fieldName] = null;
+                    }
+                    tabData[j]['FSCORE'] = pageSource=="PERSONHISTORY" ? tabData[j]['FSCORE'] :  (tabData[j]['currIndiDetail'].targetScore || '');
+                }else if(fieldName == "FCOMMENT"){        // 存储指标评语名称
+                    tabData[j]['commentName'] = fieldList[i].showName;
+                    // tabData[j][fieldName] = indicator[j][fieldName];
+                }else if(fieldName == "FREJECTION"){    // 否决项
+                    tabData[j][fieldName] = indicator[j].FREJECTION;
+                }else if(fieldName == "FREJECTION" && indicator[j].isRejection){    // 是否存在
+                	tabData[j]['isRejection'] = indicator[j].isRejection.value;
+                }else if(indicator[j].FREJECTION == 1 && fieldName == "FTARSCORE"){   // 否决项时,目标分值无值
+                    tabData[j][fieldName] = null;
+                }
+                // else if(fieldName == 'FACTUALCOMPLETETIME'){
+                //     tabData[j][fieldName] = indicator[j][fieldName] ? indicator[j][fieldName].substr(0 , 10) : indicator[j][fieldName];
+                // }
+                //BT-00543726 绩效工作台—个人目标评价 列表页面 定量指标没有公式是可以列表编辑的 跟概览保持一致 8612也要同步
+                else if(fieldName == 'FSCORINGFORMULA'){
+                    //BT-00653483 评分公式显示不正确,之前显示的是 indicator[j][fieldName].id   jianyu_zhang 2022.02.10
+                    tabData[j][fieldName] = $.isEmptyObject(indicator[j][fieldName]) ? '' : indicator[j][fieldName].name;
+                }
+                else if(fieldName.indexOf('FEXTEND') > -1 && fillOverwrite === '0'){
+                    tabData[j][fieldName] = tabData[j]['currIndiDetail'][fieldName] || '';
+                }
+                else{
+                    tabData[j][fieldName] = indicator[j][fieldName];
+                }
+                // 组装覆盖填写参数值
+                if(fieldName.indexOf('FEXTEND') > -1){
+                    tabData[j]['fillOverwrite_'+fieldName] = fillOverwrite;
+                }
+                
+            }
+            // tabData[j]['otherScoreList'] = JSON.stringify(msgdata);
+            // 区域节点为不评分,则不展示分数
+            if(areaNeedScore == "0" && pageSource !== 'PERSONHISTORY'){
+                tabData[j]['FSCORE'] = null;
+            }
+        }
+        var myData = {
+            tabData: tabData,
+            scoreTipsText: scoreTipsText
+        }
+        return myData;
+    },
+    // 判断是否存在否决项,存在显示整体评价处的提示,不存在隐藏
+    judgeWheatherThereisVetos: function(){
+        var htmlObj = $(".scoretabs");
+        var flag = false;   // 不存在否决项
+        for(var i = 0; i < htmlObj.length; i++){
+            var idata = $('#scoreTab_'+i).jqGrid('getRowData');
+            for(var j = 0; j < idata.length; j++){
+                if(idata[j].isRejection == 1){     // 是否决项
+                    flag = true;
+                    break;
+                }
+            }
+            if(flag){   // 存在否决项
+                break;
+            }
+        }
+        if(flag){
+            if($('#wholeComment .vetomsg').length == 0){
+                //$('#totalScore').after('<span class="vetomsg">存在否决项</span>');
+		$('#totalScore').after('<span class="vetomsg">'+jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_13+'</span>');
+            }else{
+                $('#wholeComment .vetomsg').show();
+            }
+        }else{
+            $('#wholeComment .vetomsg').hide();
+        }
+        return flag;
+    },
+
+    //加载当前节点和之前节点对选中目标的评分信息
+    getCurrentAndPrevScoreMsg: function(FID){
+        var msgdata = [];
+        that.remoteCall({
+            method: "getCurrentAndPrevScore",
+            async: false,
+            param: {
+                gradeTaskNode: gradeTaskNode,
+                evaObj: evaObj,
+                handlerId: personId,
+                currentNodeLevel: currentNodeLevel,
+                indicatorId: FID,
+                myType: myType,
+                viewMode: viewMode,
+                isModifyScore: isModifyScore
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                   msgdata = data;
+                }
+            }
+        });
+        return msgdata;
+    },
+    
+    //加载当前节点的评分参数
+    getCurrentScoreParams: function(){
+
+        //当前页面类型:评分页面:'1',查看考核历史页面:'2',专业应用查看评估表:'3'
+        var _currentPageType = '1';
+        if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
+            _currentPageType = '2';
+        }
+         else if(pageSource == undefined && viewMode ==undefined){
+            _currentPageType = '1';
+        }
+        else if(pageSource  !=undefined && (viewMode == 'viewEvaReport' || viewMode == 'viewAllEffective')){
+            _currentPageType = '3';
+        }
+
+        var params = [];
+        that.remoteCall({
+            method: "getCurrentScoreParams",
+            async: false,
+            param: {
+                gradeTaskNode: gradeTaskNode,
+                evaObj: evaObj,
+                viewMode: viewMode,
+                currentPageType:_currentPageType,
+                //yien BT-00646275 切换其他评估对象,返回来指标分数不展示了
+                combineGradeTaskIds:  combineGradeTaskIds.join(',')
+            },
+            async: false,
+            success: function (data) {
+                if (data != null) {
+                	params = data;
+                }
+            }
+        });
+        return params;
+    },
+
+    /**
+     * 删除一条指标
+     */
+    delgoal: function () {
+        $('.delgoal').unbind('click').bind('click', function () {
+            var parent = $(this).closest('li');
+            var list = $('.scoreMenuWrap li');
+            var index = $('.scoreMenuWrap li').index(parent);
+            var prev = list.eq(index - 1);
+            var next = list.eq(index + 1);
+            if ((index - 1) > -1) {                                     //有上一条数据
+                prev.click();
+            } else if ((index + 1) < $('.scoreMenuWrap li').length) {       //有下一条数据
+                next.click();
+            } else {                                                        //没有数据
+                $('.scoreContentbox').html('');
+                promptImages($('.scoreContentbox'),
+                    jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_32);
+            }
+            parent.remove();
+        })
+    },
+
+    /**
+     * 展开他人评分
+     */
+    spreadScore: function () {
+        $('.spreadothers').unbind('click').bind('click', function () {
+            if ($(this).hasClass('spreadbox')) {
+                $(this).prev('.othersScoreBox').hide();
+                $(this).removeClass('spreadbox');
+                //$(this).html('展开他人评分');
+		$(this).html(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_52);
+                if (self != top) {
+                    parent.setIframeHeight('myHistoryIframe');
+                }
+            } else {
+//              var height=$('.innerWrap').innerHeight();
+                $(this).prev('.othersScoreBox').show();
+                $(this).addClass('spreadbox');
+                $(this).html(
+                    //'收起'
+                    jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47
+                );
+                if (self != top) {
+                    parent.setIframeHeight('myHistoryIframe');
+                }
+            }
+        })
+    },
+    /*
+     * 个人考核历史参数控制
+     * */
+    personHistoryParamControl : function(){
+        //根据视图设置参数,对页面展示进行控制(我的考核历史) 
+        if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
+            // var hideUnselfScore = $("#hideUnselfScore").text();
+            if(hideUnselfScore == 'true'){
+                //参数控制 隐藏非本人节点打分、评语及否决项
+                $("input[name='evaScore'][isself='0']").closest('div.row1.paddingbox').hide();
+                //BT1436623 绩效工作台--我的考核历史--视图参数这些不起作用了
+                $("span[name='evaScore'][isself='0']").closest('div.row1.paddingbox').hide();
+
+                $("span[isveto='veto'][isself='0']").closest('div.row1.paddingbox').hide();//否决项
+            }
+
+            // var hideUnselfWholeScore = $("#hideUnselfWholeScore").text();
+            if(hideUnselfWholeScore == 'true'){
+                $("div[name='wholeScore'][isself='0']").hide();
+            }
+            // var hideUnselfWholeGrade = $("#hideUnselfWholeGrade").text();
+            if(hideUnselfWholeGrade == 'true'){
+                $("div[name='editScoreDiv'][isself='0']").hide();
+            }
+
+            //整体评价  连同评分人和评语一并隐藏hideUnselfWholeScore
+            if (hideUnselfWholeScore == 'true' && hideUnselfWholeGrade == 'true') {
+                $("div[name='wholeScore'][isself='0']").parent().hide();
+                $("div[name='editScoreDiv'][isself='0']").parent().hide();
+            }
+        }
+
+        //针对打分过程,隐藏非本人打分情况,自评或者他评时
+        if(pageSource==""&&(entryType==""||entryType=="myselfEvalu"||entryType=="viewMyScoreForm")){
+            if(hideUnselfScoring == 'true'){
+                $("label[name='nodeHandlerId']").each(function(j,item){
+                    if($(item).attr("value")!=personId){
+                        $(item).parent().hide();
+                    }
+                });
+            }
+
+            // var hideUnselfWholeScore = $("#hideUnselfWholeScore").text();
+            if(hideUnselfWholeScoring == 'true'){
+                $("label[name='WholenodeHandlerId']").each(function(j,item){
+                    if($(item).attr("value")!=personId){
+                        $(item).parent().children("div[name='wholeScore']").hide();
+                    }
+                });
+            }
+            // var hideUnselfWholeGrade = $("#hideUnselfWholeGrade").text();
+            if(hideUnselfWholeGrading == 'true'){
+                $("label[name='WholenodeHandlerId']").each(function(j,item){
+                    if($(item).attr("value")!=personId){
+                        $(item).parent().children("div[name='editScoreDiv']").hide();
+                    }
+                });
+            }
+
+            //整体评价  hideUnselfWholeCommenting
+            if(hideUnselfWholeCommenting == 'true'){
+                $("label[name='WholenodeHandlerId']").each(function(j,item){
+                    if($(item).attr("value")!=personId){
+                        $(item).parent().children("div[name='editTextareaDiv']").hide();
+                    }
+                });
+            }
+
+            //整体评价  hideUnselfWholeCommenting
+            if(hideUnselfWholeScoring == 'true'&&hideUnselfWholeGrading == 'true'&&hideUnselfWholeCommenting == 'true'){
+                $("label[name='WholenodeHandlerId']").each(function(j,item){
+                    if($(item).attr("value")!=personId){
+                        $(item).parent().hide();
+                    }
+                });
+            }
+        }
+        },
+
+    //正态分布信息
+    getDistributionInfo: function () {
+        if (isTeamEvalu != 1) {
+            return;
+        }
+        //正态分布信息
+        if (isShowDistribution == '1') {//必须打等级
+            that.remoteCall({
+                method: "getDistributionInfo",
+                param: {periodId: periodId},
+                async: true,
+                success: function (data) {
+                    if (data) {
+                        var perfPeriod = data.perfPeriod;
+                        var perfPlan = data.perfPlan;
+                        var all = data.all;
+                        var scored = data.scored;
+                        var distributionInfoDivDom = $("#distributionInfoDiv");
+                        distributionInfoDivDom.remove();
+
+                        var distributionInfoHtml = '<div id="distributionInfoDiv"><table class="table table-hover"     id="tablebox">\n' +
+                            '    <tr>\n' +
+                            '        <td colspan="12">'
+                            + perfPlan + ' ' + perfPeriod
+                            //+ ' 需评价' + all + '人, ' + '<span style="color: #00afff">已评分' + scored + '人</span>, ' + '已评分等级分布情况如下:'
+			    + shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_14, [all]) + '<span style="color: #00afff">'+shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_15, [scored])+'</span> ' + jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_16
+                        '</td>\n' +
+                        '    </tr>\n';
+                        if (data.leveStrMap) {
+                            distributionInfoHtml = distributionInfoHtml + '<tr>\n';
+                            $.each(data.leveStrMap, function (k, v) {
+                                distributionInfoHtml = distributionInfoHtml + '<td> ' + k + '(' + v + ') </td>\n';
+                            });
+                            distributionInfoHtml = distributionInfoHtml + '</tr>\n';
+                        }
+                        distributionInfoHtml = distributionInfoHtml + '</table></div>';
+                        // $(distributionInfoHtml).insertBefore($(".distributionInfo"));
+                        $('#content').prepend(distributionInfoHtml);
+                    }
+                    //console.log(data);
+                }
+            });
+        }
+    },
+    /**
+     * 初始化配置参数
+     */
+
+    initConfigData:function(){
+        isManualJudgeGrade= this.initData.isManualJudgeGrade;//单人评分页面-是否手工调整等级
+        isShowLevelScoreRange= this.initData.isShowLevelScoreRange;//单人评分页面-录入等级是否显示分数
+        // scoreLocate= this.initData.scoreLocate;// 单人评分页面-打分默认为定位位置
+        isShowAuditedWholeForm= this.initData.isShowAuditedWholeForm;//已评分列表-是否允许查看后续已审核节点评分详情
+        // isAutoSubmitVal= this.initData.isAutoSubmit;//单人评分页面-相邻节点同一人直接提交
+        // rateIsAutoCaluWholeGrade= this.initData.rateIsAutoCaluWholeGrade;//单人评分页面-是否自动计算整体评价等级
+        hideUnselfWholeGrade= this.initData.hideUnselfWholeGrade;//单人评分页面-是否隐藏非本人整体评价等级
+        hideUnselfWholeScore= this.initData.hideUnselfWholeScore;//单人评分页面-是否隐藏非本人整体评价总分
+        hideReviseResultVal= this.initData.hideReviseResult;//单人评分页面-是否隐藏修订结果
+        // hideConfirmResultVal= this.initData.hideConfirmResult;//单人评分页面-是否隐藏确认按钮及列表确认状态
+        hideUnselfScore= this.initData.hideUnselfScore;//单人评分页面-是否隐藏非本人节点得分或等级
+        hideReviseReasonVal= this.initData.hideReviseReason;//单人评分页面-是否隐藏修订原因
+        // scoreAndCommentDisplayMode= this.initData.scoreAndCommentDisplayMode;//单人评分页面-评分评语显示模式
+        // hideAppealResultVal= this.initData.hideAppealResult;//单人评分页面-是否隐藏申诉按钮及列表申诉状态
+        hideAppealResult= isOrg=="0"?this.initData.khjgqrAppeal:this.initData.zzkhjgqrAppeal;//单人评分页面-是否隐藏申诉按钮
+        hideConfirmResult= isOrg=="0"?this.initData.khjgqrConfirm:this.initData.zzkhjgqrConfirm;//单人评分页面-是否隐藏确认按钮
+
+        hideUnselfScoring =this.initData.hideUnselfScoring;//单人评分页面-是否隐藏非本人节点得分或等级(针对打分过程)
+        hideUnselfWholeGrading =this.initData.hideUnselfWholeGrading;//单人评分页面-是否隐藏非本人整体评价等级(针对打分过程)
+        hideUnselfWholeScoring=this.initData.hideUnselfWholeScoring;//单人评分页面-是否隐藏非本人整体评价总分(针对打分过程)
+        hideUnselfWholeCommenting=this.initData.hideUnselfWholeCommenting;//单人评分页面-是否隐藏非本人整体评价评论(针对打分过程)
+        if (isNumber(this.initData.uploadAttachSize)){
+            uploadAttachSize= this.initData.uploadAttachSize;//附件上传大小
+        }
+        //隐藏节点处理人权重
+        if (this.initData.hideHandlerWeight=='false'&&  pageSource=='PERSONHISTORY'){   //评分时的列表概览权重
+            hideNodeWeight ='false';
+        }
+        if (this.initData.hideNodeWeight =='false' && pageSource!='PERSONHISTORY'){   //我的考核历史列表概览权重
+            hideNodeWeight ='false';
+        }
+
+    }
+
+})
+
+//校验列表字段值
+function inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid) {
+    var tr = _grid[0].rows.namedItem(rowid),
+    td = tr.cells[iCol],
+    startGradeTaskNode = rowData.gradeTaskNode,flag = true;
+    var objVal = value;
+    var colAttr = _grid.getColProp(cellname);
+    var fieldType = colAttr.fieldType;
+    if (objVal) {
+        objVal = objVal.trim();
+    }
+   
+    var errObj = new Object();
+    var indicator = rowData.id;
+    errObj.indicator = indicator;
+    errObj.errorType = cellname;
+    existInArrThenDelete(_noPassVerifyArr, errObj);
+
+    var inputObj = $("input[indicator='" + indicator + "']");
+    _gcanOverRang = rowData.canOverSumRange;
+    _gcanNegative = rowData.canNegative;
+    _glowLimit = parseFloat(rowData.lowLimit);
+    _gupLimit = parseFloat(rowData.uperLimit);
+    _overRang = parseFloat(rowData.overRange);
+    _ftarscore= parseFloat(rowData.FTARSCORE);
+
+    _subAreaType = rowData.subAreaType;
+    _areaAddSub = rowData.areaAddSub;
+    _areaAddSubDown = rowData.areaAddSubDown;
+    _areaAddSubUp = rowData.areaAddSubUp;
+    _targetAddSub = rowData.targetAddSub;
+    _targetAddSubDown = rowData.targetAddSubDown;
+    _targetAddSubUp = rowData.targetAddSubUp;
+
+
+    // if(!objVal){
+    // 	return false;
+    // }
+    // objVal = Number(objVal);
+
+    if((cellname == 'FACTUALCOMPLEVALUE' || cellname == 'FTARGETVALUE') && rowData.FQUALIORRATION === '1'){     // 定量校验目标值和实际完成值字段类型为数值型
+        flag = isNumberVerify2(value,1);
+        if(!false){   // 定性指标可输入其他类型
+            //提示语
+            // 请输入最多两位小数的数字
+            errObj.errortext = jsBizMultLan.perfweb_perfscoreNew_20210926ht_20;
+        }
+    }else if(cellname == 'FACTUALCOMPLETEDESC' || cellname === 'FCOMMENT' || fieldType === 'Text' || fieldType === 'LongText'){
+        if(value.length > 2000){
+            flag = false;
+            errObj.errortext = shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+            [2000]);
+        }
+    }else if(cellname == 'scoreORrejection' || cellname == 'FSCORE'){  // 校验打分
+        objVal = Number(objVal);
+        var dataReg = /^(-?\d+)(\.\d+)?$/; //浮点数
+        if (!dataReg.test(objVal)) {
+            //errObj.errortext = '请输入数值!';
+            errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_36;
+            flag = false;
+        } else {
+            //加减分的特殊处理
+            if (_subAreaType == "1") {
+                var flag0 = true;
+                if (_targetAddSub = "1") {
+                    if (flag0 && "" != _targetAddSubDown && parseFloat(_targetAddSubDown) > objVal) {
+                        errObj.errortext = $.perfwebI18n.tableConstant.msg12 + _targetAddSubDown;
+                        flag0 = false;
+                    }
+                    if (flag0 && "" != _targetAddSubUp && parseFloat(_targetAddSubUp) < objVal) {
+                        errObj.errortext = $.perfwebI18n.tableConstant.msg13 + _targetAddSubUp;
+                        flag0 = false;
+                    }
+                }
+                if (_areaAddSub == "1") {
+                    var liList =  $(tr).parent().find("tr.ui-widget-content");
+                    var areaSumScore0 = 0;
+                    if (liList && liList.length > 0) {
+                        for (var ii = 0; ii < liList.length; ii++) {
+                            var td = liList[ii].cells[iCol];
+                            var s0 = $(td).text();
+                            if (s0) {
+                                areaSumScore0 += parseFloat(s0);
+                            }
+                        }
+                    }
+                    if (flag0 && "" != _areaAddSubDown && parseFloat(_areaAddSubDown) > areaSumScore0) {
+                        errObj.errortext = $.perfwebI18n.tableConstant.msg14 + _areaAddSubDown;
+                        flag0 = false;
+                    }
+                    if (flag0 && "" != _areaAddSubUp && parseFloat(_areaAddSubUp) < areaSumScore0) {
+                        errObj.errortext = $.perfwebI18n.tableConstant.msg15 + _areaAddSubUp;
+                        flag0 = false;
+                    }
+
+                }
+                if(objVal > 99999.99){
+                    errObj.errortext = shr.formatMsg($.perfwebI18n.tableConstant.msg20,[99999.99]) ;
+                    flag0 = false;
+                }
+                if(objVal < -99999.99){
+                    errObj.errortext = shr.formatMsg($.perfwebI18n.tableConstant.msg21,[-99999.99]) ;
+                    flag0 = false;
+                }
+                if (flag0) {
+                    $(td).removeClass("errorval");
+                    if (cellname == 'FSCORE') {
+                        calcTotoalScore(startGradeTaskNode);
+                    }
+                    _noPassVerifyArr = new Array();
+                } else {
+                    _grid.jqGrid('setCell', rowData.id, cellname, value, 'errorval');
+                    shr.showWarning({
+                        message: errObj.errortext,
+                        hideAfter: 3
+                    });
+                    _noPassVerifyArr.push(errObj);
+                }
+                return;
+            }
+
+
+            if (_gcanOverRang == 0) {//分数不能超出分制范围
+                if (_gcanNegative == 0) {//不允许负分
+                    var reg = /^\d+(\.\d{1,2})?$/;
+                    if (!reg.test(objVal)) {
+                        //errObj.errortext = '请输入正数,可带2位小数!';
+                errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_37;
+                        flag = false;
+                    } else {
+                        if (globalIndicatorData.scoringWay == 1) {
+                            var scoreLimit = rowData.FTARSCORE;
+                            if (scoreLimit && parseFloat(objVal) > parseFloat(scoreLimit)) {
+                                //errObj.errortext = '分数大于目标分值上限,请重新输入!';
+                    errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
+                                flag = false;
+                            }
+                        } else {
+                            if (objVal < _glowLimit) {
+                                //errObj.errortext = '分数小于分制控制的分数下限,请重新输入!';
+                    errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
+                                flag = false;
+                            } else if (objVal > _gupLimit) {
+                                //errObj.errortext = '分数大于分制控制的分数上限,请重新输入!';
+                    errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
+                                flag = false;
+                            }
+                        }
+                    }
+                } else {
+                    //允许为负分
+                    if (globalIndicatorData.scoringWay == 1) {
+                        var scoreLimit = rowData.FTARSCORE;
+                        if (scoreLimit && parseFloat(objVal) > parseFloat(scoreLimit)) {
+                            //errObj.errortext = '分数大于目标分值上限,请重新输入!';
+                            errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
+                            flag = false;
+                        }
+                    } else {
+                        if (objVal < _glowLimit && objVal > 0) {
+                            //errObj.errortext = '分数小于分制控制的分数下限,请重新输入!';
+                            errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
+                            flag = false;
+                        } else if (objVal > _gupLimit) {
+                            //errObj.errortext = '分数大于分制控制的分数上限,请重新输入!';
+                            errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
+                            flag = false;
+                        }
+                    }
+                }
+            } else {//可正向超出分制范围
+
+            if(_overRang != null || _overRang != undefined){//勾选参数,不维护超出上限,那么打分时输入值不控制
+                    if(globalIndicatorData.scoringWay == 1){
+                        //按分值评分,“允许评分超出分值范围,超出上限□%“
+                        var recordIndWeigVal = _ftarscore ; //指标分值
+                        var limitUp =  parseFloat((parseFloat(recordIndWeigVal)*(1+_overRang/100)).toFixed(2));
+                        var limitLow = 0 - parseFloat((parseFloat(recordIndWeigVal) * (_overRang / 100)).toFixed(2));
+                        if (isNumber(limitUp) && parseFloat(objVal) > limitUp) {
+                            errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
+                            flag = false;
+                        } else if (isNumber(limitLow) && objVal < limitLow) {
+                              errObj.errortext = jsBizMultLan.perf_perfscoreNew_1629278085_i18n_19;
+                              flag = false;
+                          }
+                    }
+                    else{
+
+                         var limitUp =  parseFloat((_gupLimit + (_gupLimit - _glowLimit)*(_overRang/100)).toFixed(2));
+                         var limitLow = parseFloat((_glowLimit - (_gupLimit - _glowLimit)*(_overRang/100)).toFixed(2));
+                        if ( objVal < limitLow) {
+                              // $(_this).focus();
+                              errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
+                              flag = false;
+                          } else if (objVal > limitUp) {
+                              // $(_this).focus();
+                              errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
+                              flag = false;
+                          }
+                        }
+               }
+
+                if (_gcanNegative == 0) {//不允许负分
+                    var reg = /^\d+(\.\d{1,2})?$/;
+                    if (!reg.test(objVal)) {
+                        //errObj.errortext = '请输入正数,可带2位小数!';
+                errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_37;
+                        flag = false;
+                    }
+                }
+            }
+        }
+    }else if(cellname.indexOf('FEXTEND') > -1){
+        if(fieldType === 'Number'){
+            flag = isNumberVerify(value,1);
+            if(!flag){
+                errObj.errortext = jsBizMultLan.perfweb_perfscoreNew_20210926ht_20;
+            }
+        }
+    }
+    
+    if(flag){
+        $(td).removeClass("errorval");
+        if(cellname == 'scoreORrejection' || cellname == 'FSCORE'){
+            calcTotoalScore(startGradeTaskNode);
+        }
+    }else{
+        _grid.jqGrid('setCell', rowData.id, cellname, value, 'errorval');
+        shr.showWarning({
+            message: errObj.errortext,
+            hideAfter: 3
+        });
+        _noPassVerifyArr.push(errObj);
+    }
+}
+
+function wholeCommentOnblur(_this) {
+    var objVal = $(_this).val();
+    var msgShow = $("span[id='WHOLECOMMENT']");
+    var errObj = new Object();
+    existInArrThenDelete(_noPassVerifyArr, errObj);
+
+    var commentLen = objVal.length;
+    if (commentLen > 2000) {//限制目标评价为2000个字符
+        $(_this).focus();
+        //msgShow.text('指标评语最大支持2000个字符,您目前已输入'+commentLen+'个字符!');
+        msgShow.text(
+            shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
+            [2000]));
+        msgShow.show();
+        _noPassVerifyArr.push(errObj);
+    } else {
+        msgShow.hide();
+    }
+}
+
+//目标评价长度校验
+function targetCommentOnblur(_this,eventName) {
+    var maxlength = 2000;
+    var objVal = $(_this).val();
+    var msgShow = $('span.showmsg');
+    var errObj = new Object();
+    var indicator = $(_this).attr("indicator");
+    errObj.indicator = indicator;
+    existInArrThenDelete(_noPassVerifyArr, errObj);
+
+    var commentLen = objVal.length;
+    if(eventName == 'propertychange'){ // propertychange事件
+        if (commentLen > maxlength) {//限制目标评价为2000个字符2000
+            $(_this).val(objVal.substr(0,maxlength));
+            objVal = $(_this).val();
+            commentLen = objVal.length;
+        }
+         msgShow.text(shr.formatMsg(jsBizMultLan.perfweb_perfscore_1586254513646_i18n_62,
+             [commentLen,maxlength-commentLen]));
+        msgShow.show();
+     }else{ // blur事件
+         msgShow.hide();
+     }
+}
+
+function existInArrThenDelete(arr, obj) {
+    for (var i = 0; i < arr.length; i++) {
+        if (arr[i].errorType) {
+            if (arr[i].indicator == obj.indicator && obj.errorType == arr[i].errorType) {
+                arr.splice(i, 1);
+            }
+        } else {
+            if (arr[i].indicator == obj.indicator) {
+                arr.splice(i, 1);
+            }
+        }
+    }
+    return;
+}
+
+//单击其他地方下拉选择框隐藏
+$(document).click(function (e) {
+    if (!$(e.target).hasClass('instructions') && !$(e.target).hasClass('instructionsboxwrap') && $(e.target).closest('.instructionsboxwrap').length < 1) {
+        $(".instructionsboxwrap").fadeOut();
+    }
+});
+
+//计算总分
+function calcTotoalScore(startGradeTaskNode) {
+    if (_noPassVerifyArr.length > 0) {
+        // shr.showWarning({message: _noPassVerifyArr[0].errortext});
+        // //自动点击第一条评分不通过的指标
+        // $("li[numval='" + _noPassVerifyArr[0].indicator + "']").click();
+        return false;
+    }
+    // $(lastTable).jqGrid("saveCell",lastrow,lastcell);
+    $('.scoretabs').each(function(index,tab){
+        $(tab).jqGrid('editStop');
+    })
+    var scoreObj = that.assembleScoreData();
+    if(!scoreObj){
+        return false;
+    }
+    var nodeSumScoreList;
+    //保存评分
+    that.remoteCall({
+        /* method: "calcTotalScore",
+         param: {
+             scoreObj: JSON.stringify(scoreObj)
+         },*/
+        method: "saveScore",
+        param: {
+            needScore:_needScore,
+            scoreObj: JSON.stringify(scoreObj)
+        },
+        async: false,  //不能使用异步,下面要使用结果数据计算等级
+        success: function (data) {
+            if (data != null && data.result == '200') {
+                nodeSumScore = data.nodeSumScore;
+                nodeGrade = data.nodeGrade;
+                matrixDetail = data.detail;
+                nodeSumScoreList = data.nodeSumScoreList;
+                var gtnLen = nodeSumScoreList.length;
+                for(var i=0; i<gtnLen; i++){
+                	var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
+                	// if(null != nsumscore && "" != nsumscore){
+                        $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
+                        $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
+                	// }else{
+                	// 	 //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
+                	// }
+                	var isVetoZero = nodeSumScoreList[i].isVetoZero;
+                	if(isVetoZero == '1'){
+                		$($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().show();
+                	}else{
+                		$($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().hide();
+                	}
+                	
+                	if(nodeSumScoreList[i].nodeGrade){
+                        $('[id="wholeGrade_' + nodeSumScoreList[i].gradeTaskNode+ '"]').find("option[id='" + nodeSumScoreList[i].nodeGrade + "']").attr("selected", "selected");
+                        $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeGrade']").text(nodeSumScoreList[i].nodeGrade);
+               	 	}
+                }
+            }
+        }
+    });
+    /**
+     * 自动计算等级
+     */
+    var grade = $("#wholeComment").find("select").val();
+    if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
+      //  var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
+     //       "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
+        if(nodeSumScoreList){
+            for(var i=0; i< nodeSumScoreList.length; i++){
+                that.remoteCall({
+                    method: "getLeaveByScore",
+                    async: false,
+                    param: {
+                        nodeSumScore: $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(),
+                        id: nodeSumScoreList[i].gradeTaskNode
+                    },
+                    //data: {"nodeSumScore":  $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(), "id": nodeSumScoreList[i].gradeTaskNode},
+                    success: function (data) {
+                        //这里的结果类似 {data: "差E"}
+                        console.log(data);
+                        if (data.data) {
+                            $("#wholeComment").find("select").find('option').attr('selected', false);
+                            $("#wholeComment").find("[id='wholeGrade_"+nodeSumScoreList[i].gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
+                            //$("#wholeComment").find("select").val(data.data);
+                            $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+                        }
+                    }
+                });
+            }
+        }else{
+            that.remoteCall({
+                method: "getLeaveByScore",
+                async: false,
+                param: {
+                    nodeSumScore:  $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(),
+                    id:gradeTaskNode
+                },
+                data: {"nodeSumScore":  $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(), "id": gradeTaskNode},
+                success: function (data) {
+                    //这里的结果类似 {data: "差E"}
+                    console.log(data);
+                    if (data.data) {
+                        $("#wholeComment").find("select").find('option').attr('selected', false);
+                        $("#wholeComment").find("[id='wholeGrade_"+gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
+                        //$("#wholeComment").find("select").val(data.data);
+                        $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
+                    }
+                }
+            });
+        }
+
+    }
+}
+
+//初始化定性定量下拉列表
+function initQualiOrRationSelectEven(indicatorId, isUnit) {
+    var qualiOrRationId = "FQUALIORRATION" + indicatorId;
+    // var $qualiOrRation = $('#' + qualiOrRationId);
+    var $qualiOrRation = $('input[id="' + qualiOrRationId + '"]');
+    // 初始化下拉选择框
+    var options = [
+        {value:0,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_16},
+        {value:1,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_15}
+    ];
+    var qualiOrRation = $qualiOrRation.val() ? $qualiOrRation.val() : 0;
+    $qualiOrRation.shrSelect({
+        // 'id': qualiOrRationId,
+        'id': encodeURIComponent(qualiOrRationId),
+        'data': options
+    });
+
+    //如果分组未下达,则绑定选中事件
+    if (isUnit != 1) {
+        $qualiOrRation.shrSelect("option", "onChange", function (e, value) {
+            var selectVal = value.selectVal;
+            // 判断是定性定量
+            if (selectVal == 0) {
+                //定性,屏蔽评分公式和单位
+                disableUnitAndFormulaTag(indicatorId);
+            } else if (selectVal == 1) {
+                //定量,打开评分公式和单位
+                // var $unit = $('#FUNIT' + indicatorId);
+                var $unit = $('input[id="' + 'FUNIT' + indicatorId + '"]');
+                // var $scoringFormula = $('#FSCORINGFORMULA' + indicatorId);
+                var $scoringFormula = $('input[id="' + 'FSCORINGFORMULA' + indicatorId + '"]');
+                if ($unit.attr('fname')) {
+                    $unit.removeAttr('disabled');
+                }
+                if ($scoringFormula.attr('fname')) {
+                    $scoringFormula.shrPromptBox('enable');
+                }
+            }
+
+        });
+    } else {
+        //屏蔽选择
+        $qualiOrRation.shrSelect('disable', true);
+    }
+
+    $qualiOrRation.shrSelect('setValue', qualiOrRation);
+}
+
+//初始化定性定量下拉列表
+function initIsVisibleSelectEven(indicatorId, isUnited) {
+    // 初始化下拉选择框
+    // var $isVisible = $('#FISVISIBLE' + indicatorId);
+    var $isVisible = $('input[id="' + 'FISVISIBLE' + indicatorId + '"]');
+    var options = [
+        {value:0,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_2},
+        {value:1,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_21}
+    ];
+    var selectedVal = $isVisible.val() ? $isVisible.val() : 0;
+    $isVisible.shrSelect({
+        // 'id': 'FISVISIBLE' + indicatorId,
+        'id': encodeURIComponent('FISVISIBLE' + indicatorId),
+        'data': options
+    });
+
+    $isVisible.shrSelect('setValue', selectedVal);
+
+    //如果是统一下达,则屏蔽选择按钮
+    if (isUnited == 1) {
+        $isVisible.shrSelect('disable', true);
+    }
+}
+
+/**
+ * 屏蔽单位和公式
+ */
+function disableUnitAndFormulaTag(indicatorId) {
+    // var $unit = $('#FUNIT' + indicatorId);
+    var $unit = $('input[id="' + 'FUNIT' + indicatorId + '"]');
+    // var $scoringFormula = $('#FSCORINGFORMULA' + indicatorId);
+    var $scoringFormula = $('input[id="' + 'FSCORINGFORMULA' + indicatorId + '"]');
+    if ($unit.attr('fname')) {
+        $unit.val('');
+        $unit.attr('disabled', 'disabled');
+    }
+    if ($scoringFormula.attr('fname')) {
+        $scoringFormula.shrPromptBox("setValue", '');
+        $scoringFormula.shrPromptBox('disable');
+    }
+}
+
+/**
+ * 初始化业绩日期
+ * 兼容IE
+ * @param indicateId
+ * @param isUnited
+ */
+function initDateEven(tagId , isUnited) {
+    // var $tag = $('#' + tagId);
+    var $tag = $('input[id="'+ tagId +'"]');
+    var selectedVal = $tag.val();
+    if(selectedVal) {
+        //截取日期部分
+        selectedVal = selectedVal.substr(0 , 10);
+        $tag.shrDateTimePicker({
+            // value: selectedVal,
+            isShowUTC:false,
+            ctrlType: 'Date'
+        });
+        $tag.shrDateTimePicker('setValue',selectedVal);
+    }else {
+        var currentDate = new Date();
+        var currentDateStr = currentDate.getFullYear();
+        if(currentDate.getMonth() < 9) {
+            currentDateStr += "-0" + (currentDate.getMonth() + 1);
+        }else {
+            currentDateStr += "-" + (currentDate.getMonth() + 1);
+        }
+        if(currentDate.getDate() < 10) {
+            currentDateStr += "-0" + currentDate.getDate();
+        }else {
+            currentDateStr += "-" + currentDate.getDate();
+        }
+        $tag.shrDateTimePicker({
+            // value: currentDateStr,
+            isShowUTC:false,
+            ctrlType: 'Date'
+        }); // 设置完成时间
+        $tag.shrDateTimePicker('setValue',currentDateStr)
+    }
+    if(isUnited == 1) {
+        //屏蔽选择
+        $tag.shrDateTimePicker('disable');
+    }
+}
+
+/**
+ * 初始化否决项
+ * @param tagObj
+ * @param isUnited
+ */
+function initRejection(tagId, isUnited) {
+    var $tag = $('input[id="' + tagId + '"]');
+    $tag.shrCheckbox();
+    var $tagHidden = $('input[id="HIDDEN_' + tagId + '"]');
+    var selectedVal = 0;
+    if ($tagHidden.length > 0) {
+        selectedVal = $tagHidden.val();
+    }
+    if (selectedVal != '') {
+        if (selectedVal == 1) {
+            $tag.shrCheckbox('check')
+        }
+    }
+    if (isUnited == 1) {
+        //屏蔽选择
+        $tag.attr({'readonly': 'true', 'disabled': 'disabled'});
+    }
+}
+
+/**
+ * 初始化否决项评分选择框
+ * @param targetId
+ */
+function initRejectionScore(targetId) {
+
+    var vetoVal = $('input[name="HIDDENVETO_' + targetId + '"][gradeNode="' + gradeTaskNode + '"]');
+    var selectedVal = 0;
+    var canEdit = 0;
+
+    var $tag = $('span[name="vetospan_' + targetId + '"]');
+    $tag.each(function (i, el) {
+        var inputObj = $($(el).parent().parent().find("input"));
+        selectedVal = inputObj.val();
+        if (!selectedVal) {
+            inputObj = $($(el).parent().parent().parent().find("input"));
+            selectedVal = inputObj.val();
+        }
+        canEdit = inputObj.attr("canEdit");
+        $(el).removeClass("radio-checked");
+        if (selectedVal != '' && selectedVal == 1) {
+            if ($(el).attr("data-value") == 1) {
+                $(el).addClass("radio-checked");
+            }
+            _gExistRejection = 1;
+        } else {
+            if ($(el).attr("data-value") == 0) {
+                $(el).addClass("radio-checked");
+            }
+        }
+        if (canEdit != 1) {
+            $(el).attr({'readonly': 'true', 'disabled': 'disabled'});
+        }
+    });
+
+}
+
+/**
+ * yien
+ * 返回没有分数范围的等级
+ * @param selectedKey
+ */
+function getLevelWidthoutScoreRange(selectedKey) {
+    if (typeof  selectedKey != "undefined") {
+        var endIndex = selectedKey.indexOf('(');
+        if (endIndex != -1) {
+            selectedKey = selectedKey.substr(0, endIndex);
+        }
+    }
+    return selectedKey;
+}
+
+/**
+ * 确认考核结果
+ */
+function confirm() {
+    /*var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler&method=confirm";
+    shr.ajax({
+        type: "post",
+        async: false,
+        url: url,
+        data: {id : evaResultId,isOrg: isOrg},
+        success: function (res) {
+            if (res.result === 'error') {
+                shr.showError({message : res.summary})
+            } else {
+                //shr.showInfo({message : '操作成功!'});
+		shr.showInfo({message: jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_10});
+            }
+        },
+        error: function (res) {
+            console.log('res', res)
+        }
+    });*/
+
+    // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
+    that.remoteCall({
+        method: "confirm",
+        param: {
+            id : evaResultId,
+            isOrg: isOrg
+        },
+        async: false,
+        success: function (data) {
+            if (data.result === 'error') {
+                shr.showError({message : data.summary})
+            } else {
+                shr.showInfo({message :  jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_10});
+                window.history.back(-1);//返回上一级列表
+            }
+        },
+    });
+}
+
+/**
+ * 确认考核结果
+ */
+function confirmResult() {
+    // 确认考核结果前检查是否有未提交的申诉单据
+    /*var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler&method=confirmCheck";
+    shr.ajax({
+        type: "post",
+        async: false,
+        url: url,
+        data: {id : evaResultId,isOrg: isOrg},
+        success: function (res) {
+            if (res.result === 'error') {
+                shr.showError({message : res.summary})
+            } else {
+                if (res && res.appealBillSaved == 1) {
+                    //shr.showConfirm('您存在未提交的申诉单据,确认后该申诉单据将作废!', function() {
+		    shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_17, function() {
+                        confirm();
+                    });
+                } else {
+                    confirm();
+                }
+            }
+        },
+        error: function (res) {
+            console.log('res', res)
+        }
+    });*/
+    // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
+    that.remoteCall({
+        method: "confirmCheck",
+        param: {
+            id : evaResultId,
+            isOrg: isOrg
+        },
+        async: false,
+        success: function (res) {
+            if (res.result === 'error') {
+                shr.showError({message : res.summary})
+            } else {
+                if (res && res.appealBillSaved == 1) {
+                    //shr.showConfirm('您存在未提交的申诉单据,确认后该申诉单据将作废!', function() {
+                    shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_17, function() {
+                        confirm();
+                    });
+                } else {
+                    confirm();
+                }
+            }
+        },
+    });
+}
+
+
+/**
+ * 申诉
+ */
+function appeal() {
+
+    //PBG169113 工作流 --审批中 -页面打不开
+    //BT1464136 组织考核历史--列表页面,点击申诉,报500
+    /*shr.callHandler({
+        handler:"com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler",
+        action:"appeal",
+        param: {
+            id : evaResultId,
+            isOrg: isOrg //补丁10 组织考核-yien
+        },
+        async: false,
+        success:function(data){
+            var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
+            if(isOrg == '1') {
+                uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill4Org.form";
+            }
+
+            var methodchagge= data.operateState ? data.operateState.toLowerCase():null;
+            if(methodchagge===null||methodchagge===undefined){
+                methodchagge= fromPage!='RESULTCONFIRM'?'view':'edit';
+            }
+            that.reloadPage({
+                uipk : uipk,
+                billId : data.billId,
+                method :  methodchagge,
+                isAddNew: data.isAddNew // yien 是否新增
+            });
+        }
+    });*/
+    // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
+    that.remoteCall({
+        method: "appeal",
+        param: {
+            id : evaResultId,
+            isOrg: isOrg //补丁10 组织考核-yien
+        },
+        async: false,
+        success: function (data) {
+            var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
+            if(isOrg == '1') {
+                uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill4Org.form";
+            }
+
+            var methodchagge= data.operateState ? data.operateState.toLowerCase():null;
+            if(methodchagge===null||methodchagge===undefined){
+                methodchagge= fromPage!='RESULTCONFIRM'?'view':'edit';
+            }
+            that.reloadPage({
+                uipk : uipk,
+                billId : data.billId,
+                method :  methodchagge,
+                isAddNew: data.isAddNew, // yien 是否新增
+                shruicode: shr.getUrlRequestParam("shruicode")
+            });
+        }
+    });
+}
+
+function getAttachcount() {
+    that.remoteCall({//附件数
+        method: "initialAttachment",
+        param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
+        async: true,
+        success: function (data) {
+            // 计算附件数量
+            var attachcount = data.length;
+            $('.attachcount').html(attachcount);
+        }
+    });
+}
+
+// 清空选中文本
+var clearTextSelect = 'getSelection' in window ? function(){
+    window.getSelection().removeAllRanges();
+} : function(){
+    document.selection.empty();
+};
+
+function array_contain(array, obj){
+    for (var i = 0; i < array.length; i++){
+        if (array[i] == obj)//如果要求数据类型也一致,这里可使用恒等号===
+            return true;
+    }
+    return false;
+}
+
+/**
+ * 判断是否为数字
+ * @param fieldVal
+ * @returns {boolean}
+ */
+function isNumber(fieldVal) {
+    var reg = /^\d+(\.\d+)?$/;
+    if (fieldVal) {
+        return reg.test(fieldVal);
+    } else if (parseFloat(fieldVal) == 0) {
+        return true;
+    }
+    return false;
+}
+
+//总分校验
+function sumSocreOnblur(_this) {
+    var errObj = new Object();
+    var objVal = $(_this).val();
+    var msgShow = $("span[id='MSG_SUMSCORE']");
+    msgShow.hide();
+    console.log(objVal);
+    var dataReg = /^(-?\d+)(\.\d{1,2})?$/; //浮点数
+    if (!dataReg.test(objVal)) {
+        //$(_this).focus();
+        errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_36;
+        msgShow.text(errObj.errortext);
+        msgShow.show();
+        return false;
+    }
+    return true;
+}
+
+
+/**
+ * 隐藏权重参数控制
+ */
+function hideWeight() {
+    var flag = false;   // 列表模式判断用
+    //团队目标评分  个人目标评分 已办已评分
+    if (isTeamEvalu == 1 || entryType == 'myselfEvalu' || entryType == 'viewMyScoreForm') {
+        if (globalIndicatorData && globalIndicatorData.scoringWay == 0) {//权重模式
+            if (that.initData && that.initData.hideWeight == "true") {
+                // $(".scoretabs").setGridParam().hideCol("FWEIGHT");
+                $(".grade.areaWeight").hide();
+                flag = true;
+            }
+        }
+    }
+    return flag;
+}
+
+/**
+ * 判断是否保留小数点后两位
+ * @param _fieldVal
+ * @param _type 1:整数或带两位小数;undefined/0:整数或带两位小数
+ * @returns {boolean}
+ */
+function isNumberVerify(_fieldVal , _type) {
+    var reg = /^\d+(\.\d{1,2})?$/;
+    if(1 == _type) {
+        reg = /^(-)?\d+(\.\d{1,2})?$/;
+    }
+
+    if(_fieldVal) {
+        return reg.test(_fieldVal);
+    }
+    return true;
+}
+
+function isNumberVerify2(_fieldVal , _type) {
+    var reg = /^\d+(\.\d{1,10})?$/;
+    if(1 == _type) {
+        reg = /^(-)?\d+(\.\d{1,10})?$/;
+    }
+
+    if(_fieldVal) {
+        return reg.test(_fieldVal);
+    }
+    return true;
+}
+
+$.extend($.jgrid, {
+    focusKnv: function($t){}
+})
+
+// 返回指定区域的区域说明数据
+var getAreaRema = function(areaId){
+    var rema = '';
+    globalIndicatorData.areaBaseList.forEach(function(item){
+        if(item.id === areaId){
+            rema = item.rema;
+            return false;
+        }
+    })
+	return rema;
+}
+
+// 控制查看更多区域说明信息
+function showMoreRema(e, areaId){
+    var remabox = $('.area-rema-box[area-id="'+areaId+'"]');
+    var textArr = [jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47]; // 展开、收起
+    if(remabox.hasClass('opened')){
+        remabox.removeClass('opened');
+        $(e).text(textArr[0]);
+    }else{
+        remabox.addClass('opened');
+        $(e).text(textArr[1]);
+    }
+}