perfscoreNewEx.js 86 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755
  1. /*
  2. *description : 单人评分拓展类
  3. *author :coyle
  4. *date :20241210
  5. */
  6. shr.defineClass("shr.perfweb.perfscoreNewEx", shr.perfweb.perfscoreNew, {
  7. initalizeDOM: function () {
  8. // 初始化JS环境
  9. it = this;
  10. that = this;
  11. shr.perfweb.perfscoreNewEx.superClass.initalizeDOM.call(this);
  12. },
  13. // 20241213等级切换时,更改选择框的title值
  14. levelSwitchChange: function () {
  15. $('select[name="_editGrades"],select[name="wholeGrade"]').die('change').live('change', function () {
  16. $(this).attr('title', $(this).find("option:selected").text());
  17. if($(this).find("option:selected").parent().attr("name") == 'wholeGrade'){
  18. isEditGradesChange = 1;
  19. }
  20. var selectTitle = $(this).val();
  21. $('.workerList li.current').find("i[name='nodeGrade']").text(selectTitle);
  22. //获取点击元素的id
  23. var selectId = $(this).attr('id');
  24. getDefaultScoreData(gradeTaskNode,selectTitle);
  25. })
  26. $('input[id$="gradeORrejection"],input[id$="nodeGrade"]').die('change').live('change', function () {
  27. calcTotoalScore(gradeTaskNode);
  28. })
  29. },
  30. /*
  31. * 评分保存事件
  32. * */
  33. saveScoreEvent: function () {
  34. var _self = this;
  35. $('#saveScore').unbind('click').bind('click', function () {
  36. let totalScoreVal = $("#totalScore").find("input").val();
  37. let selectTitle = $('select[name="_editGrades"],select[name="wholeGrade"]').val();
  38. var scoreObj = _self.assembleScoreData();
  39. if(!scoreObj && scoreObj[0] == null){
  40. return false;
  41. }
  42. let evaObjVal =scoreObj[0].evaObj;
  43. var issok = _checkScore(evaObjVal,selectTitle,totalScoreVal);
  44. if(issok){
  45. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
  46. $('.scoretabs').each(function(index,tab){
  47. $(tab).jqGrid('editStop');
  48. })
  49. that.doSaveScore('1', 0);
  50. //刷新正态分布列表
  51. that.getDistributionInfo();
  52. }else{
  53. shr.showWarning({
  54. message: "当前总分不在该等级范围内,请重新评分"
  55. ,hideAfter:5});
  56. }
  57. });
  58. },
  59. /*
  60. * 评分提交事件
  61. * */
  62. submitScoreClickEvent: function () {
  63. $('#submitScore').unbind('click').bind('click', function () {
  64. var _self = this;
  65. let totalScoreVal = $("#totalScore").find("input").val();
  66. let selectTitle = $('select[name="_editGrades"],select[name="wholeGrade"]').val();
  67. var scoreObj = that.assembleScoreData();
  68. if(!scoreObj && scoreObj[0] == null){
  69. return false;
  70. }
  71. let evaObjVal =scoreObj[0].evaObj;
  72. var issok = _checkScore(evaObjVal,selectTitle,totalScoreVal);
  73. if(!issok){
  74. shr.showWarning({
  75. message: "当前总分不在该等级范围内,请重新评分!"
  76. ,hideAfter:5});
  77. return false;
  78. }
  79. _gExistRejection = 0;
  80. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
  81. $('.scoretabs').each(function(index,tab){
  82. $(tab).jqGrid('editStop');
  83. })
  84. if (gradeTaskNode == '') {
  85. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_12});
  86. return false;
  87. }
  88. if (_noPassVerifyArr.length > 0) {
  89. shr.showWarning({message: _noPassVerifyArr[0].errortext});
  90. //自动点击第一条评分不通过的指标
  91. $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
  92. return false;
  93. }
  94. //组装评分数据
  95. var scoreObj = that.assembleScoreData('1');
  96. if(!scoreObj){
  97. return false;
  98. }
  99. //进行评分校验
  100. if (scoreObj[0].scoreError == true) {
  101. shr.showError({
  102. // message : '分数只能为整数或不超过2位的小数,请检查!',
  103. //12月补丁功能-天虹
  104. message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_31,
  105. hideAfter: 3
  106. });
  107. return false;
  108. }
  109. if (scoreObj[0].targetValError) {
  110. shr.showError({
  111. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
  112. hideAfter: 3
  113. });
  114. return false;
  115. }
  116. if (scoreObj[0].actValError) {
  117. shr.showError({
  118. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
  119. hideAfter: 3
  120. });
  121. return false;
  122. }
  123. if (scoreObj[0].desError) {
  124. shr.showError({
  125. message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  126. [2000]),
  127. hideAfter: 3
  128. });
  129. return false;
  130. }
  131. if(globalErrorMsg.length > 0){
  132. for(var i=0; i<globalErrorMsg.length;i++){
  133. $('#scoreTab_'+globalErrorMsg[i].tabIndex).jqGrid('setCell', globalErrorMsg[i].fid, globalErrorMsg[i].colName, '', 'errorval');
  134. }
  135. // shr.showWarning({message : '必填字段不能为空,请检查'});
  136. shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_20220826_i18n_1});
  137. return false;
  138. }
  139. //判断整体评价等级是否必填,如果必填则进行必录校验
  140. var ids = new Array();
  141. for (var i = 0; i < scoreObj.length; i++) {
  142. ids.push(scoreObj[i].gradeTaskNode);
  143. }
  144. //打总分校验总分必填
  145. if (_needScore == "3" && ($("#totalScore").find("input").val() == undefined || $("#totalScore").find("input").val().length < 1)) {
  146. var flag = sumSocreOnblur($("#totalScore").find("input"));
  147. if (!flag) {
  148. return;
  149. }
  150. }
  151. var canSubmitFlag = false;
  152. var scoremsg = '';
  153. var confirmMsg = '';
  154. var msg = '';
  155. var matrixDetail = "";
  156. var saveNodeSumScoreList;
  157. var marginTop = -(document.body.clientHeight/3);
  158. $.block.show({text :
  159. //'数据处理中,请稍后...'
  160. jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04
  161. ,marginTop:marginTop});
  162. //1、保存分数
  163. that.remoteCall({
  164. method: "saveScore",
  165. param: {
  166. needScore:_needScore,
  167. scoreObj: JSON.stringify(scoreObj)
  168. },
  169. async: false,
  170. success: function (data) {
  171. if (data != null && data.result == '200') {
  172. nodeSumScore = data.nodeSumScore;
  173. nodeGrade = data.nodeGrade;
  174. matrixDetail = data.detail;
  175. saveNodeSumScoreList = data.nodeSumScoreList;
  176. var nodeSumScoreList = data.nodeSumScoreList;
  177. var gtnLen = nodeSumScoreList.length;
  178. for(var i=0; i<gtnLen; i++){
  179. var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
  180. // if(null != nsumscore && "" != nsumscore){
  181. $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
  182. $($("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']")).text(nsumscore);
  183. // }else{
  184. // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
  185. // }
  186. }
  187. }
  188. }
  189. });
  190. var needrResult = null;
  191. //2、判断节点是否可被提交
  192. that.remoteCall({
  193. method: "judgeIsCanSubmit",
  194. param: {
  195. gradeTaskNode: ids.toString(),
  196. evaObj: evaObj,
  197. scoreObj: JSON.stringify(scoreObj)
  198. },
  199. async: false,
  200. success: function (result) {
  201. $.block.hide();
  202. canSubmitFlag=true;
  203. needrResult =result;
  204. for (var i = 0; i < scoreObj.length; i++) {
  205. var data = '';
  206. for (var j = 0; j < result.length; j++) {
  207. if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
  208. data = result[j];
  209. }
  210. }
  211. if (data != null && data.canSubmit == true) {
  212. if (scoreObj[i].wholeComment != null && scoreObj[i].wholeComment != undefined && scoreObj[i].wholeComment.length > 2000) {
  213. shr.showWarning({
  214. message:
  215. shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,
  216. [2000])
  217. });
  218. return false;
  219. }
  220. //判断整体评语是否必录,如果必录则进行必录校验
  221. // BT-00580949 绩效管理--绩效工作台--考核目标填报、目标变更--编辑指标,评价标准填写数字,保存js会报错
  222. if (scoreObj[i].wholeComment == '' || scoreObj[i].wholeComment == undefined || (scoreObj[i].wholeComment+'').trim().length < 1) {
  223. var wholeCommentIsMustLen = _wholeCommentIsMustArr.length;
  224. for(var m=0; m<wholeCommentIsMustLen; m++){
  225. if(_wholeCommentIsMustArr[m].gradeTaskNode == scoreObj[i].gradeTaskNode
  226. && _wholeCommentIsMustArr[m].wholeCommentIsMust == 1){
  227. //shr.showWarning({message: '请填写当前节点整体评价中的评价内容!'});
  228. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_39});
  229. $("#wholeComment").click();
  230. $("#curWholeComment").focus();
  231. canSubmitFlag = false;
  232. return false;
  233. }
  234. }
  235. }
  236. //指标评语是否必录校验,如果必录则提示并定位到其中一条未录评语的指标
  237. if(needrResult != null){
  238. for(var n=0; n<needrResult.length; n++){
  239. if(needrResult[n].isTargetComment == '1' && needrResult[n].unvalidTargetID.length>0){
  240. needrResult[n].unvalidTargetID.forEach(function(item){
  241. $('.scoretabs').jqGrid('setCell', item, 'FCOMMENT', null, 'errorval');
  242. })
  243. shr.showWarning({message : needrResult[n].targetCommentMsg});
  244. canSubmitFlag = false;
  245. return false;
  246. }
  247. }
  248. }
  249. //判断整体评价等级是否必填,如果必填则进行必录校验(矩阵考核需要根据节点进行判断)
  250. var needScoreSize = _gneedScoreArr.length;
  251. for(var j=0; j<needScoreSize; j++){
  252. if(_gneedScoreArr[j].gradeTaskNode == scoreObj[i].gradeTaskNode
  253. && _gneedScoreArr[j].indicatorComment == 1
  254. && _gneedScoreArr[j].perfGradeEvaluate == 1){
  255. if (scoreObj[i].wholeGrade == '' || scoreObj[i].wholeGrade == undefined) {
  256. //shr.showWarning({message: '请填写当前节点整体评价等级!'});
  257. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_38});
  258. canSubmitFlag = false;
  259. return false;
  260. }
  261. }
  262. }
  263. } else {
  264. shr.showWarning({message: data.msg});
  265. return;
  266. }
  267. }
  268. var resLen = result.length;
  269. var needMustCount = 0;
  270. for(var m=0; m<resLen; m++){
  271. if(result[m].isNeedScore == '2' && result[m].unValidId.length>0){
  272. needMustCount++;
  273. shr.showWarning({message : result[m].msg});
  274. $("li[numval='"+result[m].unValidId[0]+"']").mousedown();
  275. canSubmitFlag =false;
  276. return false;
  277. }
  278. }
  279. if(needMustCount<1){
  280. for(var n=0; n<resLen; n++){
  281. if(result[n].isNeedScore == '1' && result[n].unValidId.length>0){
  282. msg += result[n].msg
  283. $("li[numval='"+result[n].unValidId[0]+"']").mousedown();
  284. break;
  285. }
  286. }
  287. }
  288. if(saveNodeSumScoreList != undefined && saveNodeSumScoreList != null && saveNodeSumScoreList.length >= 2){
  289. confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10;
  290. for(var i=0; i<saveNodeSumScoreList.length; i++){
  291. var scoremsg = '';
  292. //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
  293. if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
  294. if (saveNodeSumScoreList[i].nodeSumscore == null) {
  295. saveNodeSumScoreList[i].nodeSumscore = "";
  296. }
  297. scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + saveNodeSumScoreList[i].nodeSumscore + ',';
  298. }
  299. if(matrixDetail != null && matrixDetail != ''){
  300. confirmMsg = matrixDetail;
  301. }else{
  302. confirmMsg += saveNodeSumScoreList[i].nodeHandlerName + scoremsg;
  303. //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
  304. for(var j=0; j<_gneedScoreArr.length;j++){
  305. if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
  306. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  307. break;
  308. }
  309. }
  310. if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
  311. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 + saveNodeSumScoreList[i].nodeGrade + ',';
  312. }
  313. }
  314. }
  315. }else{
  316. //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
  317. var scoremsg = '';
  318. if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
  319. if (nodeSumScore == null) {
  320. nodeSumScore = "";
  321. }
  322. scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + nodeSumScore + ',';
  323. }
  324. if(matrixDetail != null && matrixDetail != ''){
  325. confirmMsg = matrixDetail;
  326. }else{
  327. confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10 + scoremsg;
  328. //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
  329. for(var j=0; j<_gneedScoreArr.length;j++){
  330. if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
  331. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  332. break;
  333. }
  334. }
  335. if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
  336. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 +nodeGrade + ',';
  337. }
  338. }
  339. }
  340. if(null != msg && msg != undefined && msg != 'undefined' && '' != msg){
  341. confirmMsg += msg;
  342. }
  343. if(_gExistRejection == 1){
  344. //confirmMsg += '存在否决项,将直接影响绩效最终得分!';
  345. confirmMsg += jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_9;
  346. }
  347. //confirmMsg += '您确认提交吗?';
  348. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_33;
  349. if(!canSubmitFlag){
  350. return false;
  351. }
  352. shr.showConfirm(confirmMsg, function () {
  353. //$.block.show({text : '数据处理中,请稍后...',marginTop:marginTop});
  354. $.block.show({text : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04,marginTop:marginTop});
  355. // var isAutoSubmitVal = $("#isAutoSubmit").text();
  356. // var isAutoSubmit = false;
  357. // if (isAutoSubmitVal == 'true') {
  358. // isAutoSubmit = true;
  359. // }
  360. //3、提交
  361. that.remoteCall({
  362. method: "submitScore",
  363. param: {
  364. scoreObj: JSON.stringify(scoreObj),
  365. // isAutoSubmit: isAutoSubmit
  366. },
  367. async: false,
  368. success: function (data) {
  369. $.block.hide();
  370. if (data != null && data.result == '200') {
  371. scoreStatus = '2';
  372. if (_gscoreOrRate == 0) {//评分
  373. $("input[name='evaScore']").attr("disabled", "disabled");
  374. } else {
  375. $("select[name='_editGrades']").attr("disabled", "disabled");
  376. }
  377. if(!entryType){
  378. $("li[workerid='" +evaObj+ "']").remove();
  379. shr.showInfo({message: data.msg});
  380. if ($('.workerList').find('li').length == 0) {
  381. // ==================================================================================
  382. /**
  383. * 组织考核返回组织目标评价页面,个人考核返回团队个人目标评价页面
  384. * modified by Janeou_xie 2020/11/12
  385. */
  386. if(isOrg == "1"){
  387. that.reloadPage({
  388. uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore4Org.core',
  389. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  390. personId : personId
  391. })
  392. }else {
  393. that.reloadPage({
  394. uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore.core',
  395. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  396. personId : personId
  397. });
  398. }
  399. // ==================================================================================
  400. return;
  401. }else{
  402. $(".workerList>li")[0].click();
  403. evaObj = $($(".workerList>li")[0]).attr("workerid");
  404. }
  405. }else if(entryType = 'myselfEvalu'){
  406. shr.showInfo({message: data.msg});
  407. that.reloadPage({
  408. uipk: 'com.kingdee.shr.perfweb.app.perfportal.core',
  409. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  410. });
  411. }
  412. } else {
  413. shr.showWarning({message: data.msg});
  414. }
  415. }
  416. });
  417. });
  418. }
  419. });
  420. });
  421. },
  422. _getGridParams: function(tabIndex,msgdata){
  423. var area = globalIndicatorData.rows.evaAreaList;
  424. var myModel = [];
  425. var myName = [];
  426. var indicator = area[tabIndex].evaIndicatorList || area[tabIndex].evaRecordList;
  427. var areaNeedScore = area[tabIndex].needScore;
  428. var fieldList = area[tabIndex].fieldList;
  429. var tabData = [];
  430. var isExistComment = 0;
  431. var thisIsRejection = that.judgeIsRejection(indicator); // 该区域指标是否含有否决项
  432. var thisAllIsRejection = that.judgeAllIsRejection(indicator); // 该区域指标是否都是否决项
  433. var scoreOrRate = globalIndicatorData.scoreOrRate; // 0:打分,1:打等级
  434. //var curScoreMsg = indicator.length > 0 ? it.getCurrentAndPrevScoreMsg(indicator[0].FID) : []; // 当前节点打分信息
  435. var curScoreMsg = that._getCurrentScoreLevel();
  436. // 指标评语是否必填
  437. var isTargetComment = that.judgeCommentIsRequired(msgdata, area, tabIndex);
  438. var scoreTipsText = '';
  439. that.getGradeOption(curScoreMsg);
  440. // 打分字段单独处理
  441. var myScoreName='';
  442. var myScoreModel={};
  443. for (var i = 0; i < fieldList.length; i++) {
  444. var fieldName = fieldList[i].colName;
  445. var fieldMaintenanceShow = fieldList[i].fieldMaintenanceShow;
  446. var fieldShowLocation = fieldList[i].fieldShowLocation;
  447. var fieldType = fieldList[i].fieldType;
  448. var canEditField = canEditTable && fieldList[i].fieldMaintenanceStage !== '100';
  449. var isHidden = fieldShowLocation === '10' ? false : true;
  450. var fillOverwrite = '';
  451. var required = fieldList[i].required && canEditField;
  452. var classes = '';
  453. if(fieldName === 'FCOMMENT'){
  454. required = canEditField && isTargetComment === '1';
  455. }else if(fieldName === 'FSCORE'){
  456. required = canEditField && area[tabIndex].needScore === '2';
  457. }
  458. if(fieldName.indexOf('FEXTEND') > -1){ // 扩展字段匹配可维护流程级数
  459. canEditField = canEditTable && (fieldMaintenanceShow === '0' || fieldMaintenanceShow === '1');
  460. isHidden = fieldMaintenanceShow === '3';
  461. fillOverwrite = fieldList[i].fillOverwrite;
  462. required = canEditField && fieldMaintenanceShow === '1';
  463. }
  464. if(canEditTable && !canEditField){
  465. classes = 'disabled';
  466. }else if(required){
  467. classes = 'required';
  468. }
  469. if(fieldName == 'FWEIGHT' && hideWeight()){
  470. isHidden = true;
  471. }
  472. // 分数
  473. if(fieldName == "FSCORE"){
  474. if(!thisAllIsRejection){
  475. // 打分、选是否存在混合字段列
  476. if((scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')) && thisIsRejection){
  477. //myName.push('评分/是否存在');
  478. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_05);
  479. myModel.push({
  480. name: 'scoreORrejection',
  481. index: 'scoreORrejection',
  482. width: 100,
  483. align: "left",
  484. sortable: true,
  485. editable: canEditField,
  486. required: required,
  487. classes: classes,
  488. hidden:entryType === 'viewEvaForm' ? true :false
  489. });
  490. }
  491. //参数控制打分字段隐藏显示
  492. if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY'){
  493. myScoreName=fieldList[i].showName;
  494. myScoreModel={
  495. name: fieldName,
  496. index: fieldName,
  497. width: 70,
  498. align: "left",
  499. sortable: true,
  500. editable: canEditField,
  501. required: required,
  502. classes: classes,
  503. // formatter: 'numberField'
  504. // hidden: false // 已评分默认显示评分列
  505. hidden: true, // 20250310
  506. }
  507. }else if (scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')){
  508. myName.push(fieldList[i].showName+'\<span\ class="score-tips">\<\/span\>');
  509. myModel.push({
  510. name: fieldName,
  511. index: fieldName,
  512. width: 70,
  513. align: "left",
  514. sortable: true,
  515. editable: canEditField,
  516. required: required,
  517. classes: classes,
  518. // formatter: 'numberField'
  519. //hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection ? true : false), // 既有打分又有否决项指标的区域,隐藏打分列,显示混合字段列
  520. hidden: true, // 20250310
  521. });
  522. }
  523. }
  524. // 组装表格字段名称属性
  525. if(scoreOrRate == 1 && !thisAllIsRejection && thisIsRejection && area[tabIndex].subAreaType !== '1'){ // 打等级、选是否存在混合字段列
  526. //myName.push('等级/是否存在');
  527. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_06);
  528. myModel.push({
  529. name: 'gradeORrejection',
  530. index: 'gradeORrejection',
  531. width: 100,
  532. align: "left",
  533. sortable: true,
  534. editable: canEditTable,
  535. hidden:entryType === 'viewEvaForm' ? true :false
  536. });
  537. }
  538. if(scoreOrRate == 1 && !thisAllIsRejection && area[tabIndex].subAreaType !== '1'){ // 既有打等级又有否决项指标的区域,隐藏等级列,显示混合字段列
  539. //myName.push('等级');
  540. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_07);
  541. myModel.push({
  542. name: 'nodeGrade',
  543. index: 'nodeGrade',
  544. width: 100,
  545. align: "left",
  546. sortable: true,
  547. editable: canEditTable,
  548. edittype: 'shrselect',
  549. editoptions: {
  550. selectJson: {
  551. data: gradeOption
  552. },
  553. enumSource: {
  554. data: gradeOption
  555. }
  556. },
  557. formatter: 'shrtext',
  558. // hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection|| areaNeedScore=='0' ? true : false)
  559. hidden:true
  560. });
  561. }
  562. }
  563. // 定性/定量、可见性、否决项
  564. else if(fieldName == "FQUALIORRATION" || fieldName == 'FISVISIBLE' || fieldName == 'FREJECTION'){
  565. myName.push(fieldList[i].showName);
  566. myModel.push({name:fieldName, index:fieldName, width:10, hidden:true});
  567. if(fieldName == "FREJECTION" && thisIsRejection){ // 否决项
  568. myName.push(
  569. //'是否存在'
  570. jsBizMultLan.perfweb_perfscoreNew_zw20210105_i18n_01
  571. );
  572. myModel.push({
  573. name: 'isRejection',
  574. index: 'isRejection',
  575. width: 100,
  576. align: "left",
  577. sortable: true,
  578. editable: canEditField,
  579. edittype: 'shrselect',
  580. required: required,
  581. classes: classes,
  582. editoptions: {
  583. selectJson: {
  584. //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}],
  585. data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}],
  586. onChange: function(){
  587. var $this = $(this);
  588. if($this.shrSelect('getValue').value == '1'){
  589. //shr.showConfirm('若存在否决项,将直接影响最终得分,确定要选择吗?', function () {
  590. shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_08, function () {
  591. calcTotoalScore(gradeTaskNode);
  592. },function(){
  593. $this.shrSelect('setValue','0');
  594. });
  595. }else{
  596. setTimeout(function(){
  597. calcTotoalScore(gradeTaskNode);
  598. },100)
  599. }
  600. }
  601. },
  602. enumSource: {
  603. //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
  604. data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}]
  605. }
  606. },
  607. formatter: 'shrselect',
  608. hidden: entryType === 'viewEvaForm' ? true : (thisAllIsRejection ? false : true),// 既有打等级或评分又有否决项指标的区域,隐藏否决项列,显示混合字段列
  609. });
  610. }
  611. if(fieldShowLocation === '10' && fieldName !== 'FREJECTION'){
  612. myName.push(fieldList[i].showName);
  613. myModel.push({
  614. name: fieldName+'Text',
  615. index: fieldName+'Text',
  616. width: 100,
  617. align: "left",
  618. sortable: true,
  619. classes: canEditTable ? 'disabled': '',
  620. });
  621. }
  622. }
  623. // 评分公式,用于判断定量指标是否有评分公式
  624. else if(fieldName == "FSCORINGFORMULA"){
  625. myName.push(fieldList[i].showName);
  626. myModel.push({
  627. name: fieldName,
  628. index: fieldName,
  629. width: 120,
  630. align: "left",
  631. sortable: true,
  632. editable: false,
  633. required: required,
  634. classes: classes,
  635. hidden: fieldShowLocation === '10' ? false : true
  636. });
  637. }
  638. // 字段类型为是否、选择项
  639. else if(fieldShowLocation === '10' && (fieldType == 'Boolean' || fieldType == 'Select')){
  640. var fieldOptions = [];
  641. if(fieldType == 'Boolean'){
  642. // [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
  643. fieldOptions = [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}];
  644. }else{
  645. var options = fieldList[i].options;
  646. $.each(options,function(i,item){
  647. fieldOptions.push({
  648. value: item.key,
  649. alias: item.value
  650. })
  651. })
  652. }
  653. myName.push(fieldList[i].showName);
  654. myModel.push({
  655. name: fieldName,
  656. index: fieldName,
  657. width: 100,
  658. align: "left",
  659. sortable: true,
  660. editable: canEditField,
  661. edittype: 'shrselect',
  662. required: required,
  663. classes: classes,
  664. editoptions: {
  665. selectJson: {
  666. data: fieldOptions,
  667. onChange: function(){
  668. }
  669. },
  670. enumSource: {
  671. data: fieldOptions
  672. }
  673. },
  674. formatter: 'shrselect',
  675. hidden: isHidden ,
  676. });
  677. }
  678. // 字段类型为长文本 + 实际完成值、目标值
  679. else if(fieldShowLocation === '10' && (fieldType == 'LongText' || fieldName == 'FACTUALCOMPLEVALUE' || fieldName == 'FTARGETVALUE')){
  680. isExistComment = fieldName == "FCOMMENT" ? 1 : 0;
  681. var fw = 400;
  682. if(fieldName == 'FNAME' || fieldName == 'FKEYITEM'){
  683. fw = 150;
  684. }
  685. myName.push(fieldList[i].showName);
  686. myModel.push({
  687. name: fieldName,
  688. index: fieldName,
  689. width: fw,
  690. align: "left",
  691. sortable: true,
  692. editable: canEditField,
  693. edittype: 'wafTextArea',
  694. fillOverwrite: fillOverwrite,
  695. hidden: (entryType === 'viewEvaForm' && fieldName == "FCOMMENT") || isHidden ? true : false,
  696. required: required,
  697. classes: classes,
  698. formatter: function(val,msg){
  699. return '<div class="cell-height scrollbarthin">'+(val?val:'')+'</div>';
  700. }
  701. });
  702. }
  703. // 字段类型为短文本、数字
  704. else if(fieldShowLocation === '10' && (fieldType == 'Text' || fieldType == 'Number')){
  705. myName.push(fieldList[i].showName+(fieldName == "FWEIGHT" ? '(%)' : ''));
  706. myModel.push({
  707. name: fieldName,
  708. index: fieldName,
  709. width: fieldList[i].fieldType === 'Text' ? 120 : 90,
  710. align: "left",
  711. sortable: true,
  712. editable: canEditField,
  713. hidden: isHidden,
  714. fieldType: fieldType,
  715. fillOverwrite: fillOverwrite,
  716. required: required,
  717. classes: classes,
  718. formatter: function(val,msg){
  719. var text = val;
  720. var fieldType = msg.colModel.fieldType;
  721. if(fieldType === 'Text'){
  722. text = '<div class="cell-height scrollbarthin">'+val+'</div>';
  723. }
  724. return text;
  725. }
  726. });
  727. }
  728. // 字段类型为日期
  729. else if(fieldShowLocation === '10' && (fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp')){
  730. if(fieldShowLocation === '10'){
  731. myName.push(fieldList[i].showName);
  732. myModel.push({
  733. name: fieldName,
  734. index: fieldName,
  735. width: 100,
  736. align: "left",
  737. sortable: true,
  738. editable: canEditField,
  739. edittype: 'shrDateTimePicker',
  740. hidden : isHidden,
  741. fieldType: fieldType,
  742. required: required,
  743. classes: classes,
  744. editoptions: {
  745. datepickerjson: {
  746. ctrlType: fieldType
  747. }
  748. },
  749. formatter: function(val,msg){
  750. return window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType})
  751. }
  752. });
  753. }
  754. }
  755. // 其他默认显示在列表的字段
  756. else if(fieldShowLocation === '10'){
  757. var fw = 120;
  758. if(fieldList[i].fieldType === 'LongText'){
  759. fw = 300;
  760. }
  761. myName.push(fieldList[i].showName);
  762. myModel.push({
  763. name: fieldName,
  764. index: fieldName,
  765. width:fw,
  766. align: "left",
  767. sortable: true,
  768. hidden: isHidden,
  769. fieldType: fieldType,
  770. classes: canEditTable ? 'disabled': '',
  771. formatter: function(val,msg){
  772. var text = val;
  773. var fieldType = msg.colModel.fieldType;
  774. if(typeof val === "object"){
  775. text = val.name;
  776. }else if(fieldType === 'Text' || fieldType === 'LongText' || fieldType === 'Unknown'){
  777. text = '<div class="cell-height scrollbarthin">'+val+'</div>';
  778. }else if(fieldType == 'Boolean'){
  779. text = val === '0' ? jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09 : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10;
  780. }else if(fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp'){
  781. text = window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType});
  782. }
  783. return text;
  784. }
  785. });
  786. }
  787. // 扩展字段加上是否覆盖填写字段值
  788. if(fieldName.indexOf('FEXTEND') > -1 && fieldShowLocation === '10'){
  789. myName.push('fillOverwrite');
  790. myModel.push({name:'fillOverwrite_'+fieldName, index:'fillOverwrite_'+fieldName, width:10, hidden:true});
  791. }
  792. }
  793. //打分字段后置,放在操作前面
  794. if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY' && !thisAllIsRejection){
  795. myName.push(myScoreName);
  796. myModel.push(myScoreModel);
  797. }
  798. var otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
  799. //当前页面类型:评分页面:'1',查看考核历史页面:'2',专业应用查看评估表:'3'
  800. if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
  801. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
  802. }
  803. else if(pageSource == undefined && viewMode ==undefined){
  804. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
  805. }
  806. else if(pageSource !=undefined && (viewMode == 'viewEvaReport' || viewMode == 'viewAllEffective')){
  807. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
  808. }
  809. myName.push('FID','canEdit','canNegative','canVeto','gradeTaskNode','canOverSumRange','lowLimit','uperLimit','overRange',
  810. //'操作'
  811. /*jsBizMultLan.perf_perfscoreNewJuicer_1586255741045_i18n_2,*/otherFieldName,jsBizMultLan.perfweb_perfscore_1637291044_i18n_01,'subAreaType','areaAddSub','areaAddSubDown','areaAddSubUp','targetAddSub','targetAddSubDown','targetAddSubUp'
  812. );
  813. myModel.push(
  814. {name:'id', index:'id', width:10, hidden:true},
  815. {name:'canEdit', index:'canEdit', width:10, hidden:true},
  816. {name:'canNegative', index:'canNegative', width:10, hidden:true},
  817. {name:'canVeto', index:'canVeto', width:10, hidden:true}, // 判断是否可以打否决项canVeto = 2时可以
  818. // {name:'otherScoreList', index:'otherScoreList', width:10, hidden:true},
  819. {name:'gradeTaskNode', index:'gradeTaskNode', width:10, hidden:true},
  820. {name:'canOverSumRange', index:'canOverSumRange', width:10, hidden:true},
  821. {name:'lowLimit', index:'lowLimit', width:10, hidden:true},
  822. {name:'uperLimit', index:'uperLimit', width:10, hidden:true},
  823. {name:'overRange', index:'overRange', width:10, hidden:true},
  824. // {name: 'operation', index: 'operation', width: 60, align: "center", sortable: false, formatter: function(){
  825. // //var btntext = '查看其他人评分';
  826. // var btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_11;
  827. // if(entryType === 'viewEvaForm'){
  828. // //btntext = '查看评分详情';
  829. // btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_12;
  830. // }
  831. // return '<a class="view_other_btn" href="javascript:;">'+btntext+'</a>'
  832. // },},
  833. {name:'preNodeScoreList', index:'preNodeScoreList', width:100, hidden:true},
  834. //按项目需求隐藏其他人评分
  835. {name:'nodeInfoList', index:'nodeInfoList', width:180, hidden: true,classes: canEditTable ? 'disabled': '',formatter: function(value,mmodel,rowData){
  836. // hideUnselfScoring === 'true' ? true : false
  837. var nodeInfoList = rowData.nodeInfoList ? JSON.parse(rowData.nodeInfoList) : [];
  838. var flag = false;
  839. $.each(nodeInfoList, function(i, data){
  840. if(hideUnselfScoring === "false" || (hideUnselfScoring === "true" && data.nodeHandlerId === personId)){
  841. if(data.comment){
  842. flag = true;
  843. return false;
  844. }
  845. }
  846. })
  847. var temp = [
  848. '<div class="expend-td-box cell-height scrollbarthin">',
  849. '<ul class="other-msg">',
  850. '{@each rows as item,i}',
  851. // BT-00650981 绩效工作台—组织/员工目标评分——列表页面:其他评分人信息 打等级的就显示等级,后面多一个“分”字
  852. // 判断是打等级还是打分,不同展示 jianyu_zhang 2022.02.10
  853. '{@if hideUnselfScoring === "false" || (hideUnselfScoring === "true" && item.nodeHandlerId === personId)}',
  854. '<li class="node-name">',
  855. '{@if item.nodeName}(${item.nodeName}){@/if}${item.handlerName}:',
  856. '{@if isRejection == 1 }',
  857. '${item.isRejection.alias} ',
  858. '{@else}',
  859. '{@if item.needScore != "0"}',// 增加评分展示控制,不评分的不展示分数(包括定量指标)
  860. '{@if item.score !== undefined && item.score !== null && item.score !== ""}',
  861. //分
  862. '${item.score}'+ jsBizMultLan.perfweb_perfscoreNew_ht_20220419_20,
  863. '{@else if item.gradeRank != undefined && item.gradeRank != null && item.gradeRank != ""}',
  864. '${item.gradeRank}',
  865. '{@/if}',
  866. '{@/if}',
  867. '{@/if}',
  868. '</li>',
  869. '{@/if}',
  870. //指标评语
  871. '{@if item.comment}',
  872. '<li>',
  873. '<span class="expend-td-comment-field" title="${item.comment}">'+jsBizMultLan.perfweb_perfscoreNew_ht_20220414_36+':</span>',
  874. '</li>',
  875. '<li class="expend-td-comment"><pre class="textOverflow3">${item.comment}</pre></li>',
  876. '{@/if}',
  877. '{@each fieldList as it,j}',
  878. '{@if it.colName.indexOf("FEXTEND") > -1 && it.fieldMaintenanceShow !== "3" && it.fillOverwrite === "0"}',
  879. '<li field-type="${it.fieldType}">',
  880. '<span class="" title="${it.showName}">${it.showName}:</span>',
  881. '{@if item[it.colName]}',
  882. '<pre class="textOverflow3">${item[it.colName]}</pre>',
  883. '{@/if}',
  884. '</li>',
  885. '{@/if}',
  886. '{@/each}',
  887. '{@/each}',
  888. '</ul>',
  889. '</div>',
  890. flag ? '<div class="expend-btn"></div>': ''
  891. ].join('');
  892. var tempDom = juicer(temp,{rows: nodeInfoList,isRejection: rowData.FREJECTION,hideUnselfScoring: pageSource === 'PERSONHISTORY'? 'false': hideUnselfScoring,personId: personId,fieldList: rowData.currIndiDetail.fieldList});
  893. return tempDom;
  894. }},
  895. {name:'subAreaType', index:'subAreaType', width:10, hidden:true},
  896. {name:'areaAddSub', index:'areaAddSub', width:10, hidden:true},
  897. {name:'areaAddSubDown', index:'areaAddSubDown', width:10, hidden:true},
  898. {name:'areaAddSubUp', index:'areaAddSubUp', width:10, hidden:true},
  899. {name:'targetAddSub', index:'targetAddSub', width:10, hidden:true},
  900. {name:'targetAddSubDown', index:'targetAddSubDown', width:10, hidden:true},
  901. {name:'targetAddSubUp', index:'targetAddSubUp', width:10, hidden:true}
  902. );
  903. if(isExistComment == 1){
  904. myName.push('commentName'); // 存储指标评语名称字段
  905. myModel.push({name:'commentName', index:'commentName', width:10, hidden:true});
  906. }
  907. // 组装数据
  908. var myData = that._getMyData(indicator,scoreOrRate,area,tabIndex,msgdata,fieldList,areaNeedScore);
  909. tabData = myData.tabData;
  910. scoreTipsText = myData.scoreTipsText;
  911. // var showFieldWidth = 0;
  912. // myModel.forEach(function(item){
  913. // if(!item.hidden){
  914. // showFieldWidth += item.width;
  915. // }
  916. // })
  917. // var shrinkToFit = showFieldWidth < $('.scoretabwrap').eq(0).width() ? true : false;
  918. var showFieldWidth = 0;
  919. var show_count = 0,text_count = 0;
  920. var tabwidth = $('.scoretabwrap').eq(0).width();
  921. myModel.forEach(function(item){
  922. if(!item.hidden){
  923. showFieldWidth += item.width;
  924. show_count ++; // 默认显示字段个数
  925. if(item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text')){
  926. text_count ++ ; // 文本类型字段个数
  927. }
  928. }
  929. })
  930. var shrinkToFit = showFieldWidth < tabwidth ? true : false;
  931. if(shrinkToFit){
  932. var w1 = tabwidth - showFieldWidth - 34 - show_count * 6; // 可按比例分配宽度 34:复选框列 6:单元格左右内边距
  933. var w2 = (w1/text_count).toFixed(2) - 6; // 每个长文本可分配的宽度
  934. if(w1 != 0){
  935. myModel.forEach(function(item, i){
  936. if(!item.hidden && item.name != 'nodeInfoList' && (item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text'))){
  937. myModel[i].width = myModel[i].width + Number(w2); // 新列宽
  938. }
  939. })
  940. }
  941. }
  942. return {
  943. tabData: tabData,
  944. myName: myName,
  945. myModel: myModel,
  946. shrinkToFit: that.getShrinkToFit(shrinkToFit),
  947. scoreTipsText: scoreTipsText
  948. };
  949. },
  950. //生成整体评价区域
  951. createWholeCommentHtml: function (data) {
  952. var wholeCommentHtml = '<div id="wholeCommentDiv" class="scoreContentboxWholeComment">';
  953. var controlAreaHtml = '<div class="othersScoreBox">';
  954. var currentWholeGrade = '';
  955. _gneedScoreArr = new Array();
  956. // var hideNodeWeight = $('#hideNodeWeight').text();
  957. if (data != null && data.length > 0) {
  958. var isShowWholeGrade = 0;
  959. for (var i = 0; i < data.length; i++) {
  960. var wholeCommentEdithtml = '';
  961. var _data = data[i];
  962. //
  963. var selectOptionArr = _data.levelSelectVal;
  964. //selectOptionArr中所有"含"字去除 20241213
  965. var selectOptionArrWithoutScoreRange = new Array();
  966. for(var j=0;j<selectOptionArr.length;j++){
  967. if(selectOptionArr[j].indexOf("含") == -1){
  968. selectOptionArrWithoutScoreRange.push(selectOptionArr[j]);
  969. }
  970. }
  971. //将去除"含"字后的selectOptionArr赋值给_data.levelSelectVal
  972. _data.levelSelectVal = selectOptionArrWithoutScoreRange.join("");
  973. isShowWholeGrade = _data.isShowWholeGrade; //获取当前节点是否可显示总分和总体评价
  974. _perfGradeEvaluate = _data.perfGradeEvaluate; //整体评价等级是否允许评定
  975. var _needScore = _data.needScore; //是否允许评分
  976. var needScoreObj = new Object();
  977. needScoreObj.gradeTaskNode = _data.gradeTaskNode;
  978. needScoreObj.needScore = _needScore;
  979. needScoreObj.indicatorComment = _data.indicatorComment;
  980. needScoreObj.perfGradeEvaluate = _perfGradeEvaluate;
  981. _gneedScoreArr.push(needScoreObj);
  982. if (data[i].canEdit == 1) { //当前节点可评价
  983. currentIsShowWholeGrade = isShowWholeGrade; //记录当前评分人是否可评总体评价
  984. _perfGradeEvaluate = _data.perfGradeEvaluate;
  985. // 重新定义一个新的变量,标识当前任务节点能否打等级,_perfGradeEvaluate赋值,使用到的地方太多了,可能会出问题 modified by Janeou_xie
  986. isShowDistribution = _data.perfGradeEvaluate
  987. _wholeComment = _data.wholeCommentIsMust;
  988. //currentWholeGrade = data[i].wholeGrade;
  989. currentWholeGrade = _data.scoreToLevel;
  990. wholeCommentEdithtml = wholeCommentEdithtml
  991. + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
  992. + '<span class="left textOverflow">' +_data.nodeName;
  993. //yien 判断是否展示处理人权重
  994. if(hideNodeWeight != 'true'){
  995. wholeCommentEdithtml += '('+_data.nodeWeight + '%)';
  996. }
  997. wholeCommentEdithtml = wholeCommentEdithtml + (_data.nodeHandlerName == '' ? ':' : ':'+_data.nodeHandlerName );
  998. wholeCommentEdithtml = wholeCommentEdithtml + '(' + _data.personNodeWeight + '%)';
  999. wholeCommentEdithtml += '</span>';
  1000. //判断是否可评价总分和等级
  1001. if (isShowWholeGrade) {
  1002. var wholeScoreTmp = '';
  1003. if(_needScore == '1' || _needScore == '2'|| _needScore == '3'){
  1004. wholeScoreTmp = _data.wholeScore;
  1005. }
  1006. var disabledClass = 'disabled="disabled"';
  1007. if (_needScore == '3') {
  1008. disabledClass = '';
  1009. }
  1010. wholeCommentEdithtml += '<div name="editScoreDiv" class="row1 paddingbox">';
  1011. if (_perfGradeEvaluate == '1') {//允许打整体评价等级
  1012. //wholeCommentEdithtml = wholeCommentEdithtml + '<label>等级:</label><span class="selectwrap">';
  1013. wholeCommentEdithtml = wholeCommentEdithtml + '<label>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap">';
  1014. } else {
  1015. //wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">等级:</label><span class="selectwrap" style="display:none">';
  1016. wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap" style="display:none">';
  1017. }
  1018. wholeCommentEdithtml = wholeCommentEdithtml + '<select name="wholeGrade" id ="wholeGrade_' + _data.gradeTaskNode + '">'
  1019. + '<option id="blackOp"></option>';
  1020. var levelSelectValue = _data.levelSelectVal; //等级下拉选值value
  1021. var levelSelectKey = _data.levelSelectKey; //等级下拉选key
  1022. var selectOptionArr = new Array();
  1023. var selectOptionKeyArr = new Array();
  1024. if (levelSelectValue != null && levelSelectValue != '') {
  1025. selectOptionArr = levelSelectValue.split(",");
  1026. selectOptionKeyArr = levelSelectKey.split(",");
  1027. }
  1028. for (var j = 0; j < selectOptionArr.length; j++) {
  1029. //yien 20191122 天虹私包
  1030. var _selectOptionKeyArr = selectOptionKeyArr[j];
  1031. var _selectOptionArr = selectOptionArr[j];
  1032. //不显示分数范围
  1033. if (isShowLevelScoreRange == 0) {
  1034. _selectOptionArr = getLevelWidthoutScoreRange(_selectOptionArr);
  1035. }
  1036. wholeCommentEdithtml = wholeCommentEdithtml + '<option id="' + _selectOptionKeyArr + '" value="' + _selectOptionKeyArr + '" title="' + _selectOptionArr + '">' + (_selectOptionArr) + '</option>';
  1037. }
  1038. wholeCommentEdithtml = wholeCommentEdithtml + '</select>'
  1039. + '</span>';
  1040. // 评分流程节点设置不能评分,则隐藏总分 modify by janeou
  1041. //20241213 <input '+ disabledClass +' id ="wholeScore_' + _data.gradeTaskNode 去除 disabledClass
  1042. //var totalScoreDiv = _needScore == '0' ? '':'<div class="right">总分:<span id="totalScore" ' +
  1043. var totalScoreDiv = _needScore == '0' ? '':'<div class="right">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58+'<span id="totalScore" ' +
  1044. 'gtnname="'+_data.gradeTaskNode+'"><input id ="wholeScore_' + _data.gradeTaskNode + '" data-needScore="'+_needScore+'" value="'+wholeScoreTmp+'"> ' + '</input></span>';
  1045. totalScoreDiv = totalScoreDiv + '<div style="padding-left:1%"><span class="shorterinpwrap" id="MSG_SUMSCORE" style="max-width:300px;color:red"></span></div>';
  1046. wholeCommentEdithtml += totalScoreDiv ;
  1047. if (data[i].isVetoZero == 1) {
  1048. //wholeCommentEdithtml += '<span class="vetomsg">存在否决项</span></div>';
  1049. wholeCommentEdithtml += '<span class="vetomsg">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
  1050. } else {
  1051. //wholeCommentEdithtml += '<span class="vetomsg" style="display:none">存在否决项</span></div>';
  1052. wholeCommentEdithtml += '<span class="vetomsg" style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
  1053. }
  1054. wholeCommentEdithtml += '</div>';
  1055. }
  1056. wholeCommentEdithtml = wholeCommentEdithtml + '<div name="editTextareaDivForWholeComment" gradeNode="' + _data.gradeTaskNode + '" class="row1 paddingbox longeditbox">'
  1057. + '<label>'+
  1058. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
  1059. '</label>';
  1060. //yien:处理合并打分节点问题
  1061. combineGradeTaskIds.push(_data.gradeTaskNode);
  1062. if (_wholeComment == '1') {
  1063. wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea id="curWholeComment" class="paddingbox required" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
  1064. wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>';
  1065. } else {
  1066. wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea class="paddingbox" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
  1067. wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>'
  1068. }
  1069. gradeTaskNode = _data.gradeTaskNode; //当前评估对象节点运行实例id
  1070. scoreStatus = _data.scoreStatus;
  1071. $('#wholeComment .details').append(wholeCommentEdithtml);
  1072. } else {
  1073. if (_data.isVisible != '1') {
  1074. continue;
  1075. }
  1076. controlAreaHtml = controlAreaHtml + '<div class="cutting_line">'
  1077. + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
  1078. + '<span class="left textOverflow">' + _data.nodeName;
  1079. //yien 增加判断是否展示处理人权重
  1080. if(hideNodeWeight != 'true'){
  1081. controlAreaHtml += '('+ _data.nodeWeight + '%)';
  1082. }
  1083. controlAreaHtml = controlAreaHtml + (data[i].nodeHandlerName == '' ? ':' : ':'+data[i].nodeHandlerName );
  1084. controlAreaHtml = controlAreaHtml + '(' + _data.personNodeWeight + '%)';
  1085. controlAreaHtml += '</span>';
  1086. //判断是否显示总分和等级
  1087. if (isShowWholeGrade) {
  1088. //var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">总分:' + _data.wholeScore;
  1089. var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + _data.wholeScore;
  1090. //如果节点不能评分,隐藏总分
  1091. if (data[i].needScore == '0') {
  1092. scoreDivHtml = '<div>';//增加一个div标签,不然格局有问题,打分过程中隐藏评分人参数失败
  1093. }
  1094. controlAreaHtml += scoreDivHtml;
  1095. if (data[i].isVetoZero == 1) {
  1096. controlAreaHtml += '<span style="margin-left:5px;color:red">'+
  1097. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+
  1098. '</span></div>';
  1099. } else {
  1100. controlAreaHtml += '</div>';
  1101. }
  1102. controlAreaHtml += '<div name="editScoreDiv" class="row1 paddingbox" isself="' +_data.isSelf+ '">';
  1103. if (_perfGradeEvaluate == '1') {//允许打整体评价等级
  1104. controlAreaHtml = controlAreaHtml + '<label>'+
  1105. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+
  1106. '</label>'
  1107. + '<span style="float: left;">'
  1108. + (data[i].wholeGrade)
  1109. + '</span>'
  1110. }
  1111. controlAreaHtml = controlAreaHtml + '</div>';
  1112. }
  1113. controlAreaHtml = controlAreaHtml + '<div name="editTextareaDiv" class="row1 paddingbox">'
  1114. + '<label>'+
  1115. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
  1116. '</label>'
  1117. + '<span class="longinpwrap evaluate"><textarea disabled="disabled" class="paddingbox" >' + _data.wholeComment + '</textarea></span>'
  1118. + '</div></div>';
  1119. }
  1120. }
  1121. }
  1122. controlAreaHtml = controlAreaHtml + "</div>";
  1123. if (data.length == 1 && data[0].canEdit == 1) {
  1124. $('.controller').hide();
  1125. } else {
  1126. wholeCommentHtml = wholeCommentHtml + controlAreaHtml;
  1127. $(wholeCommentHtml).appendTo($('#wholeComment .scoreContentboxwrap'));
  1128. //$('#wholeComment .controller').click();
  1129. }
  1130. if (data) {
  1131. for (var i = 0; i < data.length; i++) {
  1132. if (data[i].scoreToLevel) {
  1133. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].scoreToLevel + "']").attr("selected", "selected");
  1134. } else {
  1135. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].wholeGrade + "']").attr("selected", "selected");
  1136. }
  1137. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').attr('title', $('#wholeGrade').find("option:selected").text());
  1138. }
  1139. }
  1140. if (currentWholeGrade == '') {
  1141. blackOp = "blackOp";
  1142. }
  1143. that.spreadScore();
  1144. $('.spreadothers').trigger('click');
  1145. it.levelSwitchChange();
  1146. //整体评价中是否允许修改等级
  1147. if ( isManualJudgeGrade==2) {
  1148. $("[name='wholeGrade']").attr("disabled", "disabled");
  1149. }
  1150. //总分校验
  1151. $("#totalScore").find("input").blur(function () {
  1152. sumSocreOnblur(this);
  1153. /**
  1154. * 自动计算等级
  1155. */
  1156. var grade = $("#wholeComment").find("select").val();
  1157. //20241214去除自动计算; 输入什么要什么
  1158. // if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
  1159. // // var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
  1160. // // "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
  1161. // that.remoteCall({
  1162. // method: "getLeaveByScore",
  1163. // async: false,
  1164. // param: {
  1165. // nodeSumScore: $(this).val(),
  1166. // id:gradeTaskNode,
  1167. // shruicode:shr.getUrlRequestParam("shruicode")
  1168. // },
  1169. // // data: {"nodeSumScore": $(this).val(), "id": gradeTaskNode},
  1170. // success: function (data) {
  1171. // //这里的结果类似 {data: "差E"}
  1172. // console.log(data);
  1173. // if (data.data) {
  1174. // $("#wholeComment").find("select").find('option').attr('selected', false);
  1175. // $("#wholeComment").find("select").find("option[value='" + data.data + "']").attr('selected', true);
  1176. // //$("#wholeComment").find("select").val(data.data);
  1177. // $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  1178. // }
  1179. // }
  1180. // });
  1181. // }
  1182. });
  1183. //考核结果显示控制
  1184. if(typeof initScoreDetailResultShow == 'function') {
  1185. initScoreDetailResultShow();
  1186. }
  1187. },
  1188. // 事件绑定
  1189. bindEvent: function(){
  1190. if (_needScore != "3") {
  1191. //20241213
  1192. // $("#totalScore").find("input").attr("disabled", "disabled");
  1193. }
  1194. // 查看其他人打分
  1195. // $('.view_other_btn').die('click').live('click',function(){
  1196. // var tabid = $(this).closest('table').attr('id');
  1197. // var rowid = $(this).closest('tr').attr('id');
  1198. // var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
  1199. // var msgdata = it.getCurrentAndPrevScoreMsg(rowid);
  1200. // it.openOtherScoreDialog(msgdata,rowData);
  1201. // that.personHistoryParamControl();
  1202. // })
  1203. $('.expend-btn').die('click').live('click',function(){
  1204. // var ul = $(this).closest('td').find('ul');
  1205. // if(ul.hasClass('show-more')){
  1206. // ul.removeClass('show-more');
  1207. // }else{
  1208. // ul.addClass('show-more');
  1209. // }
  1210. var pre = $(this).closest('td').find('pre');
  1211. if(pre.hasClass('textOverflow3')){
  1212. pre.removeClass('textOverflow3');
  1213. }else{
  1214. pre.addClass('textOverflow3');
  1215. }
  1216. })
  1217. // 编辑指标评语字段
  1218. // $('.commentcell').die('click').live('click',function(){
  1219. // //打总分不能输入指标评语
  1220. // if (_needScore == '3') {
  1221. // return;
  1222. // }
  1223. // var tabid = $(this).closest('table').attr('id');
  1224. // var rowid = $(this).closest('tr').attr('id');
  1225. // var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
  1226. // it.openCommentDialog(tabid,rowid,rowData);
  1227. // })
  1228. // 点击序号,查看指标其他字段
  1229. $('.scoretabs tr').die('click').live('click',function(){
  1230. var areaIndex = $(this).closest('table').attr('areaindex');
  1231. var areadata = globalIndicatorData.rows.evaAreaList[areaIndex];
  1232. var trIndex = $(this).index() - 1;
  1233. var indicatorDatalist = areadata.evaIndicatorList || areadata.evaRecordList;
  1234. var indicatorData = indicatorDatalist[trIndex];
  1235. var isClosedPrev = $('.fieldsboxhide:visible').hasClass('small');
  1236. indicatorData.areaType = areadata.areaType;
  1237. indicatorData.scoringWay = areadata.scoringWay;
  1238. indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
  1239. $('.fieldsboxhide').hide();
  1240. if($(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).length > 0){
  1241. // $('.fieldsboxhide[indid="'+indicatorData.FID+'"]').show();
  1242. _thisbox = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]'));
  1243. if(_thisbox.find('.field-line').length > 0){
  1244. _thisbox.show();
  1245. }
  1246. }else{
  1247. indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
  1248. _thisbox = $(indicatorDetailHTML);
  1249. if(_thisbox.find('.field-line').length > 0){
  1250. _thisbox.show();
  1251. $(indicatorDetailHTML).appendTo($('.indicator-box'));
  1252. }
  1253. $('.fieldsboxhide').css({
  1254. 'height': $('.centercontainer').height() + 'px'
  1255. })
  1256. if(it.fixedboxWidth){
  1257. $('.fieldsboxhide').css({
  1258. 'width': it.fixedboxWidth + 'px'
  1259. })
  1260. }
  1261. // if($('.fieldsboxhide:visible').find('.field-line').length == 0){
  1262. // $('.fieldsboxhide:visible').find('.emptywrap').show();
  1263. // }
  1264. }
  1265. var isClosedCurr = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).hasClass('small');
  1266. if(isClosedPrev){ // 其他信息是否展开控制
  1267. if(!isClosedCurr){
  1268. $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).addClass('small');
  1269. }
  1270. $('.centercontainer').addClass('big');
  1271. }else{
  1272. if(isClosedCurr){
  1273. $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).removeClass('small');
  1274. }
  1275. $('.centercontainer').removeClass('big');
  1276. }
  1277. $('.scoretabs').each(function(index){
  1278. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  1279. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  1280. })
  1281. })
  1282. // 指标其他字段框控制按钮点击事件
  1283. $('.fixedboxctrlbtn').die('click').live('click',function(){
  1284. var fixedbox = $(this).closest('.fieldsboxhide');
  1285. var centerbox = $('.centercontainer');
  1286. if($(this).hasClass('isclose')){
  1287. centerbox.removeClass('big');
  1288. fixedbox.removeClass('small');
  1289. $(this).removeClass('isclose');
  1290. }else{
  1291. centerbox.addClass('big');
  1292. fixedbox.addClass('small');
  1293. $(this).addClass('isclose');
  1294. }
  1295. $('.scoretabs').each(function(index){
  1296. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  1297. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  1298. })
  1299. })
  1300. it.bindDragEvent()
  1301. },
  1302. /*
  1303. * 保存打分
  1304. * @param isShowMsg 是否展示提示信息
  1305. * @param isEditGradesChange 是否下拉选引起的打分保存操作
  1306. * */
  1307. doSaveScore: function (isShowMsg, isEditGradesChange) {
  1308. if (_clicked) {
  1309. return;
  1310. }
  1311. _clicked = true;
  1312. //防止连击,设置过1s后点击才有效
  1313. setTimeout(function () {
  1314. _clicked = false;
  1315. }, 1000);
  1316. if (_noPassVerifyArr.length > 0) {
  1317. shr.showWarning({message: _noPassVerifyArr[0].errortext});
  1318. //自动点击第一条评分不通过的指标
  1319. $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
  1320. return false;
  1321. }
  1322. //
  1323. // var canSubmit = false;
  1324. // var isAsync = false;
  1325. //组装评分数据
  1326. //组装评分数据
  1327. var scoreObj = that.assembleScoreData();
  1328. if(!scoreObj){
  1329. return false;
  1330. }
  1331. var ids = new Array();
  1332. for (var i = 0; i < scoreObj.length; i++) {
  1333. ids.push(scoreObj[i].gradeTaskNode);
  1334. }
  1335. if (scoreObj[0].targetValError) {
  1336. shr.showError({
  1337. //jsBizMultLan 请检查目标值值输入是否正确
  1338. message :jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
  1339. hideAfter: 3
  1340. });
  1341. return false;
  1342. }
  1343. if (scoreObj[0].actValError) {
  1344. shr.showError({
  1345. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
  1346. hideAfter: 3
  1347. });
  1348. return false;
  1349. }
  1350. if (scoreObj[0].desError) {
  1351. shr.showError({
  1352. message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  1353. [2000]),
  1354. hideAfter: 3
  1355. });
  1356. return false;
  1357. }
  1358. //1、判断节点是否可被提交
  1359. that.remoteCall({
  1360. method: "judgeIsCanSubmit",
  1361. param: {
  1362. gradeTaskNode: ids.toString(),
  1363. evaObj: evaObj,
  1364. scoreObj: JSON.stringify(scoreObj)
  1365. },
  1366. async: false,
  1367. success: function (result) {
  1368. for (var i = 0; i < scoreObj.length; i++) {
  1369. for (var j = 0; j < result.length; j++) {
  1370. if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
  1371. data = result[j];
  1372. }
  1373. if (data != null && data.canSubmit == true) {
  1374. //保存评分
  1375. } else {
  1376. if (isShowMsg == '1') {
  1377. shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_11});
  1378. }
  1379. return false;
  1380. }
  1381. }
  1382. }
  1383. that.remoteCall({
  1384. method: "saveScore",
  1385. param: {
  1386. needScore:_needScore,
  1387. scoreObj: JSON.stringify(scoreObj)
  1388. },
  1389. async: false,
  1390. success: function (data) {
  1391. if (data != null && data.result == '200') {
  1392. if (_needScore == "3") {
  1393. shr.showInfo({message: $.perfwebI18n.commonMsg.msg3});
  1394. //window.location.reload();
  1395. //it.initLeftList();//左侧列表
  1396. $("li[workerid='" + evaObj + "']").removeClass("current");
  1397. $("li[workerid='" + evaObj + "']").click();
  1398. return;
  1399. }
  1400. //$("li[workerid='"+evaObj+"']").click();//指哪打哪
  1401. isFirstInit = 0;
  1402. /* if (isEditGradesChange != 1) {
  1403. it.initRightContent();//右侧内容
  1404. }*/
  1405. if (entryType == 'myview') {
  1406. $('.content_right').css({
  1407. 'width': '100%',
  1408. 'margin-right': '0'
  1409. });
  1410. } else if (entryType == 'myselfEvalu') {//个人目标评分入口
  1411. $('.content_right').css({
  1412. 'width': '100%',
  1413. 'margin-right': '0'
  1414. });
  1415. } else {//团队目标评分入口
  1416. $('.view_manager_body').css('background', '#EDEFF4');
  1417. }
  1418. // it.initPersonalInformation(); //评估对象个人信息
  1419. nodeSumScore = data.nodeSumScore;
  1420. nodeGrade = data.nodeGrade;
  1421. var sumScoreText = nodeSumScore;
  1422. var nodeGradeText = nodeGrade;
  1423. if (null != sumScoreText) {
  1424. if(data.gradetaskNode.length<2){
  1425. $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeSumScore']").text(sumScoreText);
  1426. $("#totalScore").find("input").val(sumScoreText);
  1427. }
  1428. //TODO
  1429. //$("#totalScore").text(sumScoreText);
  1430. }
  1431. if (null != nodeGradeText) {
  1432. if(data.gradetaskNode.length<2){
  1433. for(var j=0; j<_gneedScoreArr.length;j++){
  1434. if(data.gradetaskNode == _gneedScoreArr[j].gradeTaskNode){
  1435. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  1436. break;
  1437. }
  1438. }
  1439. if(_perfGradeEvaluate != 0){
  1440. $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeGrade']").text(nodeGradeText);
  1441. }
  1442. $("select[id='wholeGrade_" +gradeTaskNode+ "']").val(nodeGradeText);
  1443. }
  1444. }
  1445. // var nodeSumScoreList = data.nodeSumScoreList;
  1446. // var gtnLen = nodeSumScoreList.length;
  1447. // for(var i=0; i<gtnLen; i++){
  1448. // var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
  1449. // // if(null != nsumscore && "" != nsumscore){
  1450. // $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
  1451. // $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
  1452. // // }else{
  1453. // // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').val("");
  1454. // // }
  1455. // }
  1456. //第一节点隐藏"打回"按钮
  1457. if (currentNodeLevel == 1) {
  1458. $("#backTo").css("display", "none");
  1459. }
  1460. if (isShowMsg == '1') {
  1461. shr.showInfo({message: data.msg});
  1462. }
  1463. } else {
  1464. if (isShowMsg == '1') {
  1465. shr.showWarning({message: data.msg});
  1466. }
  1467. }
  1468. }
  1469. });
  1470. }
  1471. });
  1472. if (scoreObj.wholeComment != null && scoreObj.wholeComment != undefined && scoreObj.wholeComment.length > 2000) {
  1473. //shr.showWarning({message: '整体评价中的评价内容已超过最大长度2000个汉字,请重新输入!'});
  1474. shr.showWarning({message :shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,[2000])});
  1475. return false;
  1476. }
  1477. },
  1478. });
  1479. function getDefaultScoreData (gradeTaskNode,levelName){
  1480. // var that = this;
  1481. var scoreObj = that.assembleScoreData();
  1482. if(!scoreObj && scoreObj[0] == null){
  1483. return false;
  1484. }
  1485. let evaObjVal =scoreObj[0].evaObj;
  1486. that.remoteCall({
  1487. method: "getDefaultScore",
  1488. param: {
  1489. levelName:levelName,
  1490. evaObjVal: evaObjVal
  1491. },
  1492. async: false, //不能使用异步,下面要使用结果数据计算等级
  1493. success: function (data) {
  1494. if (data != null && data.default ) {
  1495. var newscore = data.default;
  1496. calcTotoalScore_cus(gradeTaskNode,newscore);
  1497. }
  1498. }
  1499. });
  1500. }
  1501. //计算总分
  1502. function calcTotoalScore_cus(startGradeTaskNode,newscore) {
  1503. if (_noPassVerifyArr.length > 0) {
  1504. // shr.showWarning({message: _noPassVerifyArr[0].errortext});
  1505. // //自动点击第一条评分不通过的指标
  1506. // $("li[numval='" + _noPassVerifyArr[0].indicator + "']").click();
  1507. return false;
  1508. }
  1509. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);
  1510. $('.scoretabs').each(function(index,tab){
  1511. $(tab).jqGrid('editStop');
  1512. })
  1513. var scoreObj = that.assembleScoreData();
  1514. if(!scoreObj){
  1515. return false;
  1516. }
  1517. //组装评分数据 二开 202412 改造
  1518. scoreObj[0].sumScore = newscore;
  1519. var nodeSumScoreList;
  1520. //保存评分
  1521. that.remoteCall({
  1522. /* method: "calcTotalScore",
  1523. param: {
  1524. scoreObj: JSON.stringify(scoreObj)
  1525. },*/
  1526. method: "saveScore",
  1527. param: {
  1528. needScore:_needScore,
  1529. scoreObj: JSON.stringify(scoreObj)
  1530. },
  1531. async: false, //不能使用异步,下面要使用结果数据计算等级
  1532. success: function (data) {
  1533. if (data != null && data.result == '200') {
  1534. nodeSumScore = data.nodeSumScore;
  1535. nodeGrade = data.nodeGrade;
  1536. matrixDetail = data.detail;
  1537. nodeSumScoreList = data.nodeSumScoreList;
  1538. var gtnLen = nodeSumScoreList.length;
  1539. for(var i=0; i<gtnLen; i++){
  1540. // var nsumscore = nsumscore == "" ? nsumscore.toFixed(2) : '';
  1541. // if(null != nsumscore && "" != nsumscore){
  1542. //newscore转为数值类型
  1543. //newscore = parseFloat(newscore);
  1544. var newscore_num = newscore == "" ? newscore : Number(newscore);
  1545. nodeSumScoreList[i].nodeSumscore = newscore_num;
  1546. $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(newscore_num);
  1547. $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(newscore_num);
  1548. // }else{
  1549. // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
  1550. // }
  1551. var isVetoZero = nodeSumScoreList[i].isVetoZero;
  1552. if(isVetoZero == '1'){
  1553. $($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().show();
  1554. }else{
  1555. $($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().hide();
  1556. }
  1557. if(nodeSumScoreList[i].nodeGrade){
  1558. $('[id="wholeGrade_' + nodeSumScoreList[i].gradeTaskNode+ '"]').find("option[id='" + nodeSumScoreList[i].nodeGrade + "']").attr("selected", "selected");
  1559. $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeGrade']").text(nodeSumScoreList[i].nodeGrade);
  1560. }
  1561. }
  1562. }
  1563. }
  1564. });
  1565. /**
  1566. * 自动计算等级
  1567. */
  1568. //202412 不自动计算等级 定制
  1569. // var grade = $("#wholeComment").find("select").val();
  1570. // if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
  1571. // // var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
  1572. // // "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
  1573. // if(nodeSumScoreList){
  1574. // for(var i=0; i< nodeSumScoreList.length; i++){
  1575. // that.remoteCall({
  1576. // method: "getLeaveByScore",
  1577. // async: false,
  1578. // param: {
  1579. // nodeSumScore: $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(),
  1580. // id: nodeSumScoreList[i].gradeTaskNode
  1581. // },
  1582. // //data: {"nodeSumScore": $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(), "id": nodeSumScoreList[i].gradeTaskNode},
  1583. // success: function (data) {
  1584. // //这里的结果类似 {data: "差E"}
  1585. // console.log(data);
  1586. // if (data.data) {
  1587. // $("#wholeComment").find("select").find('option').attr('selected', false);
  1588. // $("#wholeComment").find("[id='wholeGrade_"+nodeSumScoreList[i].gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
  1589. // //$("#wholeComment").find("select").val(data.data);
  1590. // $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  1591. // }
  1592. // }
  1593. // });
  1594. // }
  1595. // }else{
  1596. // that.remoteCall({
  1597. // method: "getLeaveByScore",
  1598. // async: false,
  1599. // param: {
  1600. // nodeSumScore: $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(),
  1601. // id:gradeTaskNode
  1602. // },
  1603. // data: {"nodeSumScore": $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(), "id": gradeTaskNode},
  1604. // success: function (data) {
  1605. // //这里的结果类似 {data: "差E"}
  1606. // console.log(data);
  1607. // if (data.data) {
  1608. // $("#wholeComment").find("select").find('option').attr('selected', false);
  1609. // $("#wholeComment").find("[id='wholeGrade_"+gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
  1610. // //$("#wholeComment").find("select").val(data.data);
  1611. // $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  1612. // }
  1613. // }
  1614. // });
  1615. // }
  1616. // }
  1617. }
  1618. function _checkScore (evaObjVal,selectTitle,totalScoreVal) {
  1619. // var _self = this;
  1620. let issok = true;
  1621. if( "" == selectTitle || undefined == totalScoreVal ){
  1622. return issok;
  1623. }
  1624. that.remoteCall({
  1625. method: "checkGradeHas",
  1626. param: {
  1627. levelName:selectTitle,
  1628. scoreVal:totalScoreVal,
  1629. evaObjVal: evaObjVal
  1630. },
  1631. async: false, //不能使用异步,下面要使用结果数据计算等级
  1632. success: function (data) {
  1633. if (data != null && data.has != null ) {
  1634. issok = data.has == 0 ? false : true;
  1635. }
  1636. },
  1637. error:function(response){
  1638. console.log(response);
  1639. }
  1640. });
  1641. return issok;
  1642. }