perfscoreNew.js 265 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769
  1. /*
  2. *description : 单人评分
  3. *author :caiwei_li
  4. *date :2017/08/01
  5. */
  6. var isAutoSubmitVal,hideUnselfWholeGrade,hideUnselfWholeScore,hideReviseResultVal,hideUnselfScore,hideHandlerWeight,hideReviseReasonVal,hideUnselfScoring,hideUnselfWholeGrading,hideUnselfWholeScoring
  7. ,hideUnselfWholeCommenting; //参数配置
  8. var hideNodeWeight= "true";
  9. var globalPersonBaseData = null; //员工
  10. var evaObj = null; //当前评估对象id
  11. var periodId = null; //当前评估对象所在考核周期id
  12. var personId = null; //当前登录用户对应的员工id
  13. var personNumber = null; //当前评估对象对应的职员编码
  14. var showfieldnum = 5; //员工信息区域默认显示6个字段
  15. var isShowAuditedWholeForm = 0; //我已处理的评分 已评分列表-是否允许查看后续已审核节点评分详情
  16. var entryType = null; //标志是从哪里进入评分页面:myselfEvalu-我的考核自评
  17. var that = null;
  18. var globalIndicatorData = null; //指标数据
  19. var CREATE_INDICATOR = 1; //1:创建指标明细
  20. var SWITCH_INDICATOR = 0; //0:切换指标明细
  21. var currentNum = 0;
  22. var curIndecatorType = null; //当前指标类型
  23. var currentNodeLevel = 1; //当前节点层级
  24. var gradeTaskNode = ''; //当前节点运行实例id
  25. var scoreStatus = ''; //节点评分状态
  26. var _gscoreOrRate = 0; //评分还是打等级[0:评分;1:打等级]
  27. var _glowLimit = 0; //分数下限
  28. var _gupLimit = 0; //分数上限
  29. var _overRang ; //超过分数上限
  30. var _ftarscore = 0; //超过分数上限
  31. var _gcanNegative = 0; //可否打负分[0:不可;1:可以]
  32. var _gcanRate = 0; //是否可以评分[0:不可;1:可以]
  33. var _gcanOverRang = 0; //是否允许评分超出分制范围[0:不可;1:可以]
  34. var _needScore = 0; //是否允许评分
  35. var _wholeComment = 0; //整体评语是否必录
  36. var _perfGradeEvaluate = 0; //是否允许打等级
  37. var isShowDistribution = '0'; // 是否显示正态分布
  38. var _indicatorComment = 0; //是否必须打等级
  39. var _noPassVerifyArr = new Array(); //评分校验信息数组
  40. var _gcanSaveFlag = true; //评分是否通过校验的标识
  41. var isFirstInit = 0; //第一条指标初始化标志
  42. var handleName; //当前登陆人姓名
  43. var nodeSumScore = 0; //当前节点总分
  44. var nodeGrade = ""; //当前节点等级
  45. var spreadothersFlag = false; //是否默认展开他人评分
  46. var selectedIndicatorId = ''; //当前点击的指标的id
  47. var _clicked = false;
  48. var pageSource = "";//标注请求的来源、EVALUCARDVIEV:请求为考核卡界面请求
  49. var personName = '';
  50. var myType = "INIT";
  51. var viewMode = ""; //用于做扩展业务处理,目前用户已发送列表查看评估表
  52. var rows = 8; //左侧列表默认显示8条数据
  53. var page = 1; //默认第一页
  54. var isPageInit = 1;
  55. var initGradeTaskNode = '';
  56. var currentIsShowWholeGrade = 0; //当前处理人是否能打整体评价
  57. var isShowHandlerWeight = 1; //是否展示处理人的权重
  58. var isTeamEvalu = 0; //是否团队目标评分[0:否;1:是]
  59. //yien 20191122 天虹私包
  60. var isShowLevelScoreRange = 1; //是否显示等级的分数范围
  61. var isManualJudgeGrade = 0; //是否手工调整体等级
  62. var rateIsAutoCaluWholeGrade = 0; //打等级时是否自动计算整体评价等级【0:不自动计算;1:自动计算】 注:不再使用,使用isManualJudgeGrade一个参数控制
  63. var _gExistRejection = 0; //是否存在否决项
  64. var isEditGradesChange = 0; //是否手工选了整体评价等级
  65. var isModifyScore = 0; //是否有修改过指标得分
  66. var submitMsg = null; //提交打分时后台组装的提示信息
  67. var submitNodeGrade = null; //提交时等级
  68. var submitNodeSumScore = null; //提交时节点总分
  69. var errorType = ['0', '1']; //[0:指标得分;1:指标评语]
  70. var evaResultId = "";
  71. var hideConfirmResult = false;
  72. var hideAppealResult = false;
  73. var hideConfirmResultVal = "";
  74. var hideAppealResultVal = "";
  75. var isAudited = false; //是否已审核
  76. var showAttachsOnly = false; // 是否仅显示上传附件但不允许上传
  77. var _gneedScoreArr = new Array(); //评分参数数组
  78. var isInitLeftListCompleted = 0; //左侧评估对象列表是否已加载
  79. var personalScoreSearchIdList = "";
  80. var sourcePeriod = null; //团队目标评分传入的周期id
  81. var _gneedScoreArr = new Array(); //评分参数数组
  82. var _wholeCommentIsMustArr = new Array(); //整体评价是否必录-支持矩阵
  83. var fromPage;
  84. var _gRadio = null;
  85. var gradeOption = [] // 等级下拉框option
  86. var canEditTable = true; // 默认表格可以编辑
  87. var lastTable = '';
  88. var lastrow = '';
  89. var lastcell = '';
  90. var scoreparams = null; //指标评分参数
  91. // 组织考核标识
  92. var isOrg = "0";
  93. var uploadAttachSize=10; //附件上传大小
  94. //yien:合并打分节点的任务实例
  95. var combineGradeTaskIds = [];
  96. // 新增校验信息记录对象,用于提交时校验字段必填
  97. var globalErrorMsg = [];
  98. var interviewData = {}; //补丁18
  99. shr.defineClass("shr.perfweb.perfscoreNew", shr.framework.List, {
  100. targetBillIdMap: {}, //暂存目标流程单据
  101. fixedboxWidth: '',
  102. initalizeDOM: function () {
  103. var defaultPage = this.initData.scoreDefaultPage;
  104. if(defaultPage == 'overview'){
  105. this.initCurrentPageByConfig();
  106. }
  107. // 初始化JS环境
  108. it = this;
  109. that = this;
  110. shr.perfweb.perfscoreNew.superClass.initalizeDOM.call(this);
  111. evaObj = shr.getUrlRequestParam("evaObj");
  112. periodId = shr.getUrlRequestParam("periodId");
  113. sourcePeriod = periodId;
  114. personId = shr.getUrlRequestParam("personId");
  115. personNumber = shr.getUrlRequestParam("personNumber");
  116. entryType = shr.getUrlRequestParam("entryType");
  117. pageSource = shr.getUrlRequestParam("pageSource");
  118. personName = shr.getUrlRequestParam("personName");
  119. viewMode = shr.getUrlRequestParam("viewMode");
  120. initGradeTaskNode = gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
  121. personalScoreSearchIdList = shr.getUrlRequestParam("personalScoreSearchIdList");
  122. fromPage = shr.getUrlRequestParam("fromPage");
  123. // hideConfirmResultVal = $("#hideConfirmResult").text();
  124. // hideAppealResultVal = $("#hideAppealResult").text();
  125. var reqRows = shr.getUrlRequestParam("rows");
  126. if(null != reqRows && reqRows != undefined){
  127. rows = reqRows;
  128. }
  129. var reqPage = shr.getUrlRequestParam("page");
  130. if(null != reqPage && reqPage != undefined){
  131. page = reqPage;
  132. }
  133. this.initConfigData();//初始化参数配置
  134. //代码还原-yien
  135. that.bindGridScoreInputBlurEvent();
  136. //yien 20191122 天虹私包
  137. that.initCustomParamList();
  138. //获取页面自定义参数,是否展示处理人权重
  139. if (hideNodeWeight == 'true') {
  140. isShowHandlerWeight = 0;
  141. }
  142. if(entryType == 'myview'){
  143. // currentNodeLevel = shr.getUrlRequestParam("wfLevel");
  144. // gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
  145. // it.initRightContent();//右侧内容
  146. // it.initPersonalInformation(); //评估对象个人信息
  147. it.initLeftList();//左侧列表
  148. isInitLeftListCompleted = 1;
  149. $(".content_left").remove();
  150. $('#saveScore, #submitScore').hide();
  151. $('.content_right').css({
  152. 'width': '100%',
  153. 'margin-right': '0'
  154. });
  155. } else if (entryType == 'myselfEvalu') {//个人目标评分入口
  156. currentNodeLevel = shr.getUrlRequestParam("wfLevel");
  157. gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
  158. it.initRightContent();//右侧内容
  159. // it.initPersonalInformation(); //评估对象个人信息
  160. $('.content_right').css({
  161. 'width': '100%',
  162. 'margin-right': '0'
  163. });
  164. } else if (entryType == 'viewMyScoreForm') {//查看我参与评分的界面;
  165. if(isShowAuditedWholeForm == 'true'){
  166. isShowAuditedWholeForm = 1;
  167. }
  168. canEditTable = false;
  169. // 考核结果表单允许查看附件,隐藏上传按钮 2019-09-03 liuzw
  170. showAttachsOnly = true;
  171. myType = "VIEW";
  172. currentNodeLevel = '2';// shr.getUrlRequestParam("wfLevel");
  173. gradeTaskNode = shr.getUrlRequestParam("gradeTaskNode");
  174. it.initRightContent();//右侧内容
  175. // it.initPersonalInformation(); //评估对象个人信息
  176. $('.content_right').css({
  177. 'width': '100%',
  178. 'margin-right': '0'
  179. });
  180. $('#processView').hide();
  181. $('#perfHistory').hide();
  182. $('#backTo').hide();
  183. $('#backtoRema').hide();
  184. $('#saveScore').hide();
  185. $('#saveScore, #submitScore, .view_manager_header').hide();
  186. //BT1394720 (Q:之前为什么要隐藏?)
  187. // $('#attachments').hide();
  188. $('#submitScore').hide();
  189. // $('.workInfoWrap').append($('<span id="sumScoreShow" style="margin-left:'+$('.informationBox').offset().left - 40+'px">考核成绩:<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
  190. // $('#controlBtns').prepend($('<span id="sumScoreShow">考核成绩:<span id="sumscore" style="margin-left:10px"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
  191. //屏蔽指标上的分数
  192. $('span[name="indeicatorScore"]').hide();
  193. $('span[name="scoreLable"]').hide();
  194. $('.informationBox li:gt(' + showfieldnum + ')').hide();
  195. //获取考核成绩
  196. // that.remoteCall({
  197. // method: "getEvaReuslt",
  198. // param: {
  199. // evaObj : evaObj
  200. // },
  201. // async: false,
  202. // success: function (data) {
  203. // if (data != null) {
  204. // if(data.sumscore != null && data.sumscore != undefined){
  205. // $('#sumscore').text(data.sumscore);
  206. // }
  207. // if(data.gradeLevel != null && data.gradeLevel != undefined){
  208. // $('#gradeLevel').text(data.gradeLevel);
  209. // }
  210. // }
  211. // }
  212. // });
  213. //he_tao 查看评分界面,所有输入框不可编辑
  214. // $("input").attr("disabled", "disabled"); //所有输入框不可编辑
  215. // $("textarea").attr("disabled", "disabled"); //所有输入框不可编辑
  216. } else if (entryType == 'viewEvaForm') {//查看评估表;
  217. canEditTable = false;
  218. // 考核结果表单允许查看附件,隐藏上传按钮 2019-09-03 liuzw
  219. showAttachsOnly = true;
  220. var perfPlan = shr.getUrlRequestParam("planId");
  221. var planName = shr.getUrlRequestParam("planName");
  222. isAudited = true;
  223. //设置自己的面包屑
  224. if (pageSource != undefined && pageSource == "EVALUCARDVIEV" && isOrg == "0") {//考核卡的面包屑
  225. setTimeout(function () {
  226. var nvgStr = '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a></li><li><a id="perf_person_evalcard" href="#">'+
  227. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_23+
  228. '</a><span class="divider">/</span></li>'
  229. + '<li><a id="perfEvalCardPerson" href="#">' + personName + '</a><span class="divider">/</span></li>'
  230. +'<li class="active">'+
  231. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
  232. '</li>';
  233. $("#breadcrumb").children().remove();
  234. $("#breadcrumb").append($(nvgStr));
  235. $('#perf_person_evalcard').click(function () {
  236. that.reloadPage({
  237. uipk: 'com.kingdee.shr.perfweb.app.evalu.evalucard.list',
  238. serviceId: 'KAuskY/8RUGXUtikP5TmRPI9KRA=',
  239. inFrame: "true"
  240. })
  241. });
  242. $('#perfEvalCardPerson').click(function () {
  243. that.reloadPage({
  244. uipk: 'com.kingdee.shr.perfweb.app.evalu.evalucard',
  245. serviceId: 'KAuskY/8RUGXUtikP5TmRPI9KRA=',
  246. inFrame: "true",
  247. type: 'VIEW',
  248. personId: personId,
  249. pageSource: 'EVALUCARDVIEV'
  250. })
  251. });
  252. $("#breadcrumb").attr("style", "display: block;");
  253. }, 500);
  254. // 组织绩效考核卡
  255. }else if(pageSource != undefined && pageSource == "EVALUCARDVIEV" && isOrg == "1"){
  256. setTimeout(function() {
  257. //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>'
  258. 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>'
  259. +'<li><a id="perfEvalCardOrg" href="#">' +adminOrgName+ '</a><span class="divider">/</span></li>'
  260. //+'<li class="active">考核结果</li>';
  261. +'<li class="active">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+'</li>';
  262. $("#breadcrumb").children().remove();
  263. $("#breadcrumb").append($(nvgStr));
  264. $('#perf_org_evalcard').click(function(){
  265. that.reloadPage({
  266. uipk: 'com.kingdee.shr.perfweb.app.evalu.ORGevalucard.list',
  267. serviceId:'KAuskY/8RUGXUtikP5TmRPI9KRA=',
  268. inFrame:"true"
  269. })
  270. });
  271. $('#perfEvalCardOrg').click(function(){
  272. that.reloadPage({
  273. uipk: 'com.kingdee.shr.perfweb.app.evalu.ORGevalucard',
  274. serviceId:'KAuskY/8RUGXUtikP5TmRPI9KRA=',
  275. inFrame:"true",
  276. type:'VIEW',
  277. adminOrgid:adminOrgId,
  278. pageSource:'EVALUCARDVIEV'
  279. })
  280. });
  281. $("#breadcrumb").attr("style","display: block;");
  282. }, 500);
  283. } else if (pageSource != undefined && pageSource == "PERSONHISTORY") {//个人历史
  284. setTimeout(function () {
  285. var nvgStr =
  286. // '<li><a id="evaPlanExecuteList" href="#">我的考核结果</a><span class="divider">/</span></li>';
  287. //        +'<li><a id="evaPlanExecution" href="#">' +personName+ '</a><span class="divider">/</span></li>'
  288. '<li class="homepage"><a href="' + shr.getContextPath() + '/home.do" target="_parent">homepage</a></li><li class="active">'+
  289. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
  290. '</li>';
  291. $("#breadcrumb").children().remove();
  292. $("#breadcrumb").append($(nvgStr));
  293. $("#breadcrumb").attr("style", "display: block;");
  294. // $('.switchbutton').css('top', 0);
  295. }, 500);
  296. // if (hideConfirmResultVal == 'true') {
  297. // hideConfirmResult = true;
  298. // }
  299. // if (hideAppealResultVal == 'true') {
  300. // hideAppealResult = true;
  301. // }
  302. } else if (pageSource != undefined && pageSource == "GROUPHISTORY") {//组织历史
  303. setTimeout(function () {
  304. var perfPortalUrl = shr.getContextPath()
  305. + '/dynamic.do?uipk=com.kingdee.shr.perfweb.app.perfportal.core&inFrame=true&fromHeader=true&serviceId=fUjSqQK1RouZaEJUI2jH5vI9KRA%3D';
  306. var nvgStr = '<li class="homepage"><a href="' + perfPortalUrl + '" target="_parent">homepage</a><span class="divider">/</span> </li>'
  307. + '<li><a id="personalEvaCard" href="#">'+
  308. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_9+
  309. '</a><span class="divider">/</span></li><li class="active">'+
  310. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_27+
  311. '</li>';
  312. $("#breadcrumb").children().remove();
  313. $("#breadcrumb").append($(nvgStr));
  314. $('#personalEvaCard').click(function () {
  315. that.reloadPage({
  316. uipk: "com.kingdee.shr.perfweb.app.evalu.evalucard",
  317. personId: personId,
  318. pageSource: "GROUPHISTORY",
  319. type: "VIEW"
  320. });
  321. });
  322. }, 500);
  323. } else{//默认的面包屑
  324. var breadcrumb = $('#breadcrumb').shrBreadcrumb();
  325. breadcrumb.shrBreadcrumb('pop');
  326. breadcrumb.shrBreadcrumb('addItem', {name:
  327. shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_1,
  328. [planName])});
  329. isAudited = shr.getUrlRequestParam("isAudited");
  330. }
  331. currentNodeLevel = "";
  332. gradeTaskNode = "";
  333. it.initRightContent();//右侧内容
  334. // it.initPersonalInformation(); //评估对象个人信息
  335. $('.content_right').css({
  336. 'width': '100%',
  337. 'margin-right': '0'
  338. });
  339. $('#processView').hide();
  340. $('#perfHistory').hide();
  341. $('#backTo').hide();
  342. $('#backtoRema').hide();
  343. $('#saveScore').hide();
  344. $('#saveScore, #submitScore').hide();
  345. //面谈
  346. var interview = shr.getUrlRequestParam("interview");
  347. // BT1440954-组织考核不显示“绩效面谈”按钮 modified by Janeou_xie
  348. if (interview == 1 && isOrg == '0') {
  349. $('#summaryInterview').show();
  350. }
  351. //BT1394720 (Q:之前为什么要隐藏?)
  352. // $('#attachments').hide();
  353. $('#submitScore').hide();
  354. // var offsetleft = $('.informationBox').offset().left - $('.content_right').offset().left - 40;
  355. var boxwidth = $('.workPhoto').length > 0 ? 27.84 : 32;
  356. // $('.controlBtns').hide();
  357. //$('.workInfo').append($('<span id="sumScoreShow">考核成绩:<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
  358. //$('.workInfo').append($('<span id="sumScoreShow">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_25+'<span id="sumscore"/><span id="gradeLevel" style="margin-left:10px" /></span>'));
  359. // $('.workInfo').append($('<span id="sumScoreShow" style="margin-left:' + (offsetleft) + 'px;width:'+boxwidth+'%">'+
  360. $('.info-result-box').append($('<span id="sumScoreShow">'+
  361. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_25+
  362. '<span id="sumscore"/></span><span id="gradeLevel" style="margin-left:10px" />'));
  363. // var hideReviseReasonVal = $("#hideReviseReason").text();
  364. var hideReviseReason = false;
  365. if (pageSource != undefined && pageSource == "PERSONHISTORY" && hideReviseReasonVal == 'true') {
  366. hideReviseReason = true;
  367. }
  368. //增加修订原因
  369. // BT1444170 查看评估表--列表模式,报错,上面考核成绩不显示,没有找到定义的地方,先默认为0
  370. // var offsetleft = 0;
  371. if (!hideReviseReason) {
  372. $('.info-result-box').append($('<span id="reviseReasonSpan">'+
  373. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_50+
  374. '<span id="reviseReason" title=""></span>'));
  375. }
  376. // var hideReviseResultVal = $("#hideReviseResult").text();
  377. var hideReviseResult = false;
  378. if (pageSource != undefined && pageSource == "PERSONHISTORY" && hideReviseResultVal == 'true') {
  379. hideReviseResult = true;
  380. }
  381. // if($('.workPhoto').length < 1){
  382. // $('#sumScoreShow').css('margin-left','1%');
  383. // }
  384. //屏蔽指标上的分数
  385. $('span[name="indeicatorScore"]').hide();
  386. $('span[name="scoreLable"]').hide();
  387. $('.informationBox li:gt(' + showfieldnum + ')').hide();
  388. //获取考核成绩
  389. that.remoteCall({
  390. method: "getEvaReuslt",
  391. param: {
  392. evaObj: evaObj,
  393. isAudited: isAudited
  394. },
  395. async: false,
  396. success: function (data) {
  397. if (data != null) {
  398. if (hideReviseResult) {
  399. if (data.realSumscore != null && data.realSumscore != undefined) {
  400. $('#sumscore').text(data.realSumscore);
  401. }
  402. if (data.realGradeLevel != null && data.realGradeLevel != undefined) {
  403. $('#gradeLevel').text(data.realGradeLevel);
  404. }
  405. } else {
  406. if (data.sumscore != null && data.sumscore != undefined) {
  407. $('#sumscore').text(data.sumscore);
  408. }
  409. if (data.gradeLevel != null && data.gradeLevel != undefined) {
  410. $('#gradeLevel').text(data.gradeLevel);
  411. }
  412. }
  413. if (data.reviseReason != null && data.reviseReason != undefined) {
  414. $('#reviseReason').text(data.reviseReason);
  415. $('#reviseReason').attr('title', data.reviseReason);
  416. }
  417. if (data.evaResultId) {
  418. evaResultId = data.evaResultId;
  419. // 屏蔽我的考核历史的结果确认和申诉按钮
  420. if (data.needConfirm && !hideConfirmResult && pageSource != undefined && pageSource == "PERSONHISTORY" && fromPage == "RESULTCONFIRM") {
  421. $('#confirmResult').show();
  422. }else{
  423. $('#confirmResult').hide();
  424. }
  425. if (data.allowAppeal && !hideAppealResult && pageSource != undefined && pageSource == "PERSONHISTORY" && fromPage == "RESULTCONFIRM") {
  426. $('#appeal').show();
  427. }else{
  428. $('#appeal').hide();
  429. }
  430. }
  431. }
  432. }
  433. });
  434. //补丁18 绩效面谈处理
  435. that.dealInterviewForm();
  436. } else {//团队目标评分入口
  437. isTeamEvalu = 1;
  438. it.initLeftList();//左侧列表
  439. isInitLeftListCompleted = 1;
  440. //切换列表后根据传入的节点实例id初始定位
  441. if (isPageInit == 1) {
  442. $("li[workerid='" + evaObj + "'][gradetasknode='" + initGradeTaskNode + "']").click();
  443. } else {
  444. $("li[workerid='" + evaObj + "'][gradetasknode='" + gradeTaskNode + "']").click();//指哪打哪
  445. }
  446. $('.view_manager_body').css('background', '#EDEFF4');
  447. that.getDistributionInfo();
  448. }
  449. //第一节点隐藏"打回"按钮
  450. if (currentNodeLevel == 1) {
  451. $("#backTo").css("display", "none");
  452. }
  453. handleName = $('#ps-profile-set').find('span').text();
  454. that.remoteCall({//附件数
  455. method: "initialAttachment",
  456. param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
  457. async: true,
  458. success: function (data) {
  459. // 计算附件数量
  460. var attachcount = data.length;
  461. $('.attachcount').html(attachcount);
  462. }
  463. });
  464. //获取页面自定义参数,是否展示处理人权重
  465. if(hideNodeWeight == 'true'){
  466. isShowHandlerWeight = 0;
  467. }
  468. //判断节点是否可被提交,模拟点击"展开他人评分"
  469. var scoreObj = that.assembleScoreData();
  470. var ids = new Array();
  471. for (var i = 0; i < scoreObj.length; i++) {
  472. ids.push(scoreObj[i].gradeTaskNode);
  473. }
  474. that.remoteCall({
  475. method: "judgeIsCanSubmit",
  476. param: {
  477. gradeTaskNode: ids.toString(),
  478. evaObj: evaObj,
  479. scoreObj: JSON.stringify(scoreObj)
  480. },
  481. async: false,
  482. success: function (data) {
  483. if (data != null && data.canSubmit == false) {
  484. spreadothersFlag = true;
  485. //打开全部展开
  486. // $(".scoreItems").find("li").click();
  487. // $("#wholeComment").click();
  488. // $("div[class='spreadothers']").click();
  489. // $("div[class='spreadothers']").hide();
  490. //已提交的状态下隐藏“保存”和“提交”按钮
  491. $("#saveScore").hide();
  492. $("#submitScore").hide();
  493. }
  494. }
  495. });
  496. if (fromPage == "APPEAL") {
  497. // 从申诉表单页面过来的隐藏确认按钮及申诉按钮
  498. $("#appeal, #confirmResult").hide();
  499. }
  500. hideWeight();
  501. var ch = $(window).height() - $('.view_manager_header').outerHeight() - $('#controlBtns').outerHeight() - $('.headercontain').height() + 'px';
  502. if(top != self){
  503. ch = parseInt($('#rightContentIframe',parent.document).css('min-height')) - $('.workInfoWrap').outerHeight() + 'px';
  504. }
  505. $('.centercontainer').css({
  506. height: ch
  507. });
  508. //考核结果显示控制
  509. if(typeof initScoreDetailResultShow == 'function') {
  510. initScoreDetailResultShow();
  511. }
  512. },
  513. //补丁18 绩效面谈表单
  514. dealInterviewForm: function() {
  515. that.remoteCall({
  516. method: "getInterviewData",
  517. param: {
  518. evaResultId: evaResultId
  519. },
  520. async: true,
  521. success: function (data) {
  522. if(data.showInterview == '1') {
  523. interviewData = data;
  524. $('#viewInterviewForm').show();
  525. }else {
  526. interviewData = {};
  527. //隐藏查看绩效面谈表单按钮
  528. $('#viewInterviewForm').hide();
  529. }
  530. }
  531. });
  532. },
  533. viewInterviewForm: function() {
  534. if(interviewData.showInterview == '1') {
  535. var iid = interviewData.billId;
  536. var planId = interviewData.planId;
  537. var evaObjName = personName;
  538. var uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.Interview.form';
  539. var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk="
  540. + uipk
  541. + "&inFrame=true&billId=" + encodeURIComponent(iid)
  542. + "&planId=" + encodeURIComponent(planId)
  543. + "&evaObj=" + encodeURIComponent(evaObj)
  544. + "&serviceId=" + encodeURIComponent(shr.getServiceId())
  545. + '&editable&evaObjName='+evaObjName + '&shruicode=AF_PERF_PER&from=PRO'
  546. );
  547. window.open(safeUrl);
  548. }else {
  549. return;
  550. }
  551. },
  552. /**
  553. * yien
  554. * 初始化用户自定义参数设置
  555. */
  556. initCustomParamList: function () {
  557. //yien 20191122 天虹私包
  558. // isShowLevelScoreRange = $("#isShowLevelScoreRange").html();
  559. if (isShowLevelScoreRange == "false") {
  560. isShowLevelScoreRange = 0;
  561. }
  562. if( isManualJudgeGrade==1) {
  563. isEditGradesChange = 1; //如果是手工打等级方式,默认为手工修改过等级
  564. }else if(_gscoreOrRate == '1' ||isEditGradesChange==1){
  565. isEditGradesChange = 1;
  566. }
  567. },
  568. // 表格内分数字段输入框,失去焦点时自动算分
  569. bindGridScoreInputBlurEvent: function(){
  570. $('.ui-jqgrid-btable input[type="text"][ctrlrole="text"]').live('blur',function(){
  571. if(lastTable){
  572. $(lastTable).jqGrid('editStop');
  573. }
  574. })
  575. },
  576. //
  577. // // 表格区域滚动时隐藏下拉选择框的选项,否则会脱离选择框,因为.centercontainer设置了高度
  578. bindWindowScrollEvent: function(){
  579. $('.centercontainer').on('scroll',function(){
  580. $('.dropdown-menu').hide();
  581. })
  582. },
  583. /**
  584. * 流程图
  585. */
  586. workFlowDiagram: function () {
  587. $('#workFlowDiagram').unbind('click').bind('click', function () {
  588. that.workFlowDiagramAction();
  589. })
  590. },
  591. /**
  592. * 审批意见
  593. */
  594. auditResult : function() {
  595. $('#auditResult').unbind('click').bind('click', function () {
  596. that.auditResultAction();
  597. })
  598. },
  599. /**
  600. * 查看流程图
  601. */
  602. workFlowDiagramAction: function() {
  603. var billId = that.getTargetTransmitBill();
  604. if(billId == '-1') {
  605. //没有选择记录
  606. return;
  607. }
  608. if(billId) {
  609. that.getWorkFlowHelper().viewWorkFlowDiagram(billId);
  610. }else {
  611. //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  612. shr.showError({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_0});
  613. }
  614. },
  615. /**
  616. * 查看审批结果
  617. */
  618. auditResultAction: function() {
  619. var billId = that.getTargetTransmitBill();
  620. if(billId == '-1') {
  621. //没有选择记录
  622. return;
  623. }
  624. if(billId) {
  625. that.getWorkFlowHelper().viewAuditResult(billId);
  626. }else {
  627. //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  628. shr.showError({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_0});
  629. }
  630. },
  631. /**
  632. * 根据评估对象获取审批单据id
  633. */
  634. getTargetTransmitBill: function() {
  635. if(!evaObj) {
  636. shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_1593331244239_i18n_1});
  637. return "-1";
  638. }
  639. if(typeof that.targetBillIdMap[evaObj] == "undefined") {
  640. that.remoteCall({
  641. // handler: "com.kingdee.shr.perfweb.planexecute.handler.SuperiorUnTransmitListHandler",
  642. method: 'getTargetTransmitBill',
  643. async: false,
  644. param: {
  645. "evaObj" : evaObj
  646. },
  647. success: function (data) {
  648. if(data.result == '200') {
  649. that.targetBillIdMap[evaObj] = data.billId;
  650. }
  651. }
  652. });
  653. }
  654. return that.targetBillIdMap[evaObj];
  655. },
  656. /**
  657. * 任务列表
  658. */
  659. perfTaskList: function () {
  660. $('#perfTaskList').unbind('click').bind('click', function () {
  661. //alert("evaObj:"+evaObj);
  662. var uipk = 'com.kingdee.shr.perfweb.app.base.perftask.evaObjPerfTask.list';
  663. var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk="
  664. + uipk + "&inFrame=true&evaObj=" + evaObj);
  665. window.open(safeUrl);
  666. })
  667. },
  668. /*
  669. * 加载当前流程参数
  670. * */
  671. loadNodeParam: function () {
  672. that.remoteCall({
  673. method: "getNodeParam",
  674. param: {
  675. evaObj: evaObj,
  676. gradeTaskNode: gradeTaskNode
  677. },
  678. async: false,
  679. success: function (data) {
  680. if (data != null) {
  681. _needScore = data.needScore; //是否允许评分
  682. _wholeComment = data.wholeComment; //整体评语是否必录
  683. _perfGradeEvaluate = data.perfGradeEvaluate; //是否允许打等级
  684. _indicatorComment = data.indicatorComment; //是否必须打等级
  685. }
  686. }
  687. });
  688. },
  689. /**
  690. * 左侧列表
  691. * @returns
  692. */
  693. initLeftList: function () {
  694. //获取左侧列表数据
  695. $('#content').html('');
  696. $('#content').append(leftListHtml());
  697. //var periodTmp = periodId;
  698. var periodTmp = shr.getUrlRequestParam("periodId");
  699. var element = $("#selectionList");
  700. var dom = '<span class="up"></span>' +
  701. '<div class="scrollBox scrollbarthin">' +
  702. '<ul class="workerList">' +
  703. '</ul>' +
  704. '</div>' +
  705. '<span class="down"></span>';
  706. element.addClass('utilsSl-list').append(dom);
  707. //clickObj.click();
  708. //调用左侧人员列表utilsSelectionList.js插件
  709. $('#selectionList').utilsSelectionList({
  710. method: "getTeamTargetCommentListByPeriod",
  711. listType: 'score', //goals:我的目标; score: 个人评分;
  712. isAsync: 1,
  713. param: { //获取数据需要的参数
  714. periodId: periodTmp, //考核周期id
  715. page: 1, //当前页数
  716. rows: 50, //rows 每页显示记录数
  717. evaObj: evaObj, //当前评估对象
  718. personId: personId,
  719. isTeamEvalu: isTeamEvalu, //是否团队目标评分
  720. personalScoreSearchIdList: personalScoreSearchIdList,
  721. isOrg: isOrg
  722. },
  723. clickMenuEvent: function (e) {
  724. //点击一条记录触发事件
  725. if (isInitLeftListCompleted == 1|| isInitLeftCompleted == 1) {
  726. $.block.show();
  727. isFirstClickWholeComment = 1;
  728. isFirstInit = 0;
  729. //20191202 yien 记录当前的周期
  730. periodId = $(e).attr("period");
  731. _noPassVerifyArr = new Array(); //切换评估对象时清空校验不通过的数据
  732. evaObj = $(e).attr("workerid"); //當前評估對象所選id
  733. currentNodeLevel = $(e).attr("currentwflevel"); //选中评估对象当前所在流程级数
  734. gradeTaskNode = $(e).attr("gradetasknode"); //评估对象节点实例id
  735. it.initRightContent();//右侧内容
  736. // it.initPersonalInformation(true); //初始化个人信息
  737. it.getDistributionInfo();
  738. //第一节点隐藏"打回"按钮
  739. if (currentNodeLevel == 1) {
  740. $("#backTo").css("display", "none");
  741. }
  742. // it.setScoreBtnLocation();
  743. // that.perfScoreOthersScoreBox();
  744. hideWeight();
  745. that.loadNodeParam();
  746. }
  747. }
  748. });
  749. },
  750. clickMenuEvent: function (e) {
  751. isFirstClickWholeComment = 1;
  752. isFirstInit = 0;
  753. //20191202 yien 记录当前的周期
  754. periodId = $(e).attr("period");
  755. evaObj = $(e).attr("workerid"); //當前評估對象所選id
  756. currentNodeLevel = $(e).attr("currentwflevel"); //选中评估对象当前所在流程级数
  757. gradeTaskNode = $(e).attr("gradetasknode"); //评估对象节点实例id
  758. it.initRightContent();//右侧内容
  759. // it.initPersonalInformation(true); //初始化个人信息
  760. //第一节点隐藏"打回"按钮
  761. if (currentNodeLevel == 1) {
  762. $("#backTo").css("display", "none");
  763. }
  764. },
  765. /**
  766. * 模拟左侧列表人员名单数据
  767. * @returns
  768. */
  769. loadingListData: function () {
  770. var worksData = null;
  771. that.remoteCall({
  772. method: "getTeamTargetCommentListByPeriod",
  773. param: {
  774. period: periodId,
  775. personId: personId
  776. },
  777. async: false,
  778. success: function (data) {
  779. if (data != null) {
  780. worksData = data;
  781. }
  782. }
  783. });
  784. return worksData;
  785. },
  786. /**
  787. * 展开员工基本信息
  788. * @returns
  789. */
  790. spreadcontrol: function (e) {
  791. var informationBoxMeg = {
  792. length: showfieldnum, //默认显示几个字段
  793. spreadText: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,
  794. packupText: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47
  795. };
  796. if($(e).hasClass('spread')){
  797. $('.informationBox').hide();
  798. $(e).html(informationBoxMeg.spreadText);
  799. $(e).removeClass('spread');
  800. }else{
  801. $('.informationBox').show();
  802. $(e).html(informationBoxMeg.packupText);
  803. $(e).addClass('spread');
  804. }
  805. it.setParentIframeHeight();
  806. },
  807. // 设置绩效工作台iframe高度
  808. setParentIframeHeight: function(){
  809. if(parent && parent.setIframeHeight){
  810. var iframeid = 'rightContentIframe';
  811. parent.setIframeHeight(iframeid);
  812. }
  813. },
  814. /**
  815. * 查看备注
  816. * @returns
  817. */
  818. viewRema: function (e) {
  819. var backReasonHTML = '<div id="backReasonDiv">' +
  820. '<span style="width:560px"><textarea id="backReason" disabled="disabled"></textarea></span>' +
  821. '</div>';
  822. $(document.body).append(backReasonHTML);
  823. $("#backReasonDiv").show();
  824. that.remoteCall({
  825. method: "getRema",
  826. param: {
  827. gradeTaskNode: gradeTaskNode
  828. },
  829. async: false,
  830. success: function (data) {
  831. if (data != null) {
  832. $('#backReason').val(data.rema);
  833. }
  834. }
  835. });
  836. // 将弹出对话框弹出
  837. $('#backReasonDiv').dialog({
  838. title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_7,
  839. autoOpen: true,
  840. show: "blind",
  841. width: 600,
  842. height: 380,
  843. resizable: true,
  844. position: ['center', 'center'],
  845. modal: true,
  846. buttons: [{
  847. text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_42,
  848. click: function () {
  849. $(this).dialog("destroy").remove();
  850. }
  851. }]
  852. });
  853. },
  854. /**
  855. * 加载员工基本信息
  856. * @param index
  857. * @returns
  858. */
  859. initPersonalInformation: function (async) {
  860. if(null == async || '' == async){
  861. async = false;
  862. }
  863. //加载员工基本信息
  864. that.remoteCall({
  865. method: "getPersonBaseOfGoals",
  866. param: {
  867. evaObj: evaObj,
  868. periodId: periodId,
  869. personId: personId,
  870. personNumber: personNumber
  871. },
  872. async: async,
  873. success: function (data) {
  874. if (data != null) {
  875. globalPersonBaseData = data;
  876. $('.workInfo').html('').append(personalInformation(data));
  877. if($('.informationBox li').length == 0){
  878. $('#spread').hide();
  879. }
  880. if(isTeamEvalu == 1){
  881. $('.workPhoto').remove();
  882. // $('.workInfo').css("margin-left","-50px");
  883. }else{
  884. if($('.workPhoto').length < 1){
  885. $('.informationBox,.namebox').css({'width': '100%','margin-left': '0'});
  886. }
  887. }
  888. $('.attachcountbtn').unbind('click').bind('click',function(){
  889. $('#attachments').click();
  890. })
  891. it.uploadFileDialog();//上传附件
  892. }
  893. getAttachcount();
  894. }
  895. });
  896. },
  897. /**
  898. * 右侧区域指标评分内容
  899. * @returns
  900. */
  901. initRightContent: function () {
  902. $('.content_right').remove();
  903. $('#content').append(rightContentHtml()); //绩效目标评分的一些操作按钮
  904. var ch = $(window).height() - $('.view_manager_header').outerHeight() - $('#controlBtns').outerHeight() - $('.headercontain').height() + 'px';
  905. if(top != self){
  906. ch = parseInt($('#workAreaDiv',parent.document).css('min-height')) - $('#controlBtns').outerHeight() + 'px';
  907. }
  908. $('.centercontainer').css({
  909. height: ch
  910. })
  911. if(self != top || entryType == 'myselfEvalu' || entryType == 'viewEvaForm'){
  912. $('.content_right').css({
  913. 'width': '100%',
  914. 'margin-right': '0'
  915. });
  916. }
  917. $('.attachcountbtn').unbind('click').bind('click', function () {
  918. $('#attachments').click();
  919. })
  920. it.initPersonalInformation(false);
  921. it.bindWindowScrollEvent(); // 绑定滚动事件
  922. it.initEvaPlanAndPerfRule(); //考核计划及考核规则信息
  923. // it.initScoreItems();//加载左边菜单【左侧区域及指标】
  924. it.uploadFileDialog();//上传附件
  925. it.processView();//流程查看
  926. it.perfHistory();//绩效历史查询
  927. it.backTo();//打回
  928. it.uploadFile();//上传附件
  929. it.delFile();//删除附件
  930. // it.switchListPage(); //切换页面
  931. // $('#spread').click();
  932. it.levelSwitchChange();
  933. // it.templatePrint();//套打
  934. it.perfTaskList();//任务列表
  935. $('#summaryInterview').hide();
  936. $('#summaryInterview').unbind('click').bind('click', function () {
  937. //alert(evaObj);
  938. /*var iid = '';
  939. var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.report.handler.EvaResultSummaryInterviewListHandler&method=createInterviewByEvaObj";
  940. shr.ajax({
  941. type: "post",
  942. async: false,
  943. url: url,
  944. data: {"evaObj": evaObj},
  945. success: function (data) {
  946. if (data.iid) {
  947. iid = data.iid;
  948. }
  949. }
  950. });
  951. if (iid) {
  952. var uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.Interview.form';
  953. var safeUrl = shr.safeUrl(shr.getContextPath() + "/dynamic.do?uipk=" + uipk + "&inFrame=true&billId=" + iid );
  954. window.open(safeUrl);
  955. }*/
  956. // bug-BT-00624090-从员工自助绩效面谈进入查看评估表单,按钮还在,但是使用不了
  957. that.remoteCall({
  958. method: "createInterviewByEvaObj",
  959. param: {
  960. evaObj : evaObj
  961. },
  962. async: false,
  963. success: function (data) {
  964. if (data.result === 'error') {
  965. shr.showError({message : data.summary})
  966. } else {
  967. var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.Interview.form";
  968. window.open(shr.safeUrl(shr.getContextPath() + '/dynamic.do?uipk=' + uipk +
  969. '&inFrame=true&method=view&billId=' + data.iid +
  970. "&shruicode=" + shr.getUrlRequestParam("shruicode")));
  971. }
  972. }
  973. });
  974. })
  975. //根据查看来源隐藏或显示按钮
  976. if(viewMode == 'justViewReport') {
  977. it.workFlowDiagram(); //流程图
  978. it.auditResult(); //审批意见
  979. //隐藏附件按钮
  980. $("#attachments").hide();
  981. }else {
  982. //隐藏流程图 审批意见按钮
  983. $('#auditResult').hide();
  984. $('#workFlowDiagram').hide();
  985. }
  986. that.personHistoryParamControl();
  987. },
  988. // 等级切换时,更改选择框的title值
  989. levelSwitchChange: function () {
  990. $('select[name="_editGrades"],select[name="wholeGrade"]').die('change').live('change', function () {
  991. $(this).attr('title', $(this).find("option:selected").text());
  992. if($(this).find("option:selected").parent().attr("name") == 'wholeGrade'){
  993. isEditGradesChange = 1;
  994. }
  995. $('.workerList li.current').find("i[name='nodeGrade']").text($(this).val());
  996. })
  997. $('input[id$="gradeORrejection"],input[id$="nodeGrade"]').die('change').live('change', function () {
  998. calcTotoalScore(gradeTaskNode);
  999. })
  1000. },
  1001. /**
  1002. * 页面切换
  1003. */
  1004. initCurrentPageByConfig: function () {
  1005. var it = this;
  1006. var param = {
  1007. evaObj: shr.getUrlRequestParam("evaObj"),
  1008. periodId: shr.getUrlRequestParam("periodId"),
  1009. personId: shr.getUrlRequestParam("personId"),
  1010. personNumber: shr.getUrlRequestParam("personNumber"),
  1011. entryType: shr.getUrlRequestParam("entryType") ,
  1012. gradeTaskNode : shr.getUrlRequestParam("gradeTaskNode"),
  1013. wfLevel : shr.getUrlRequestParam("wfLevel"),
  1014. personName: shr.getUrlRequestParam("personName"),
  1015. planId: shr.getUrlRequestParam("planId"),
  1016. planName: shr.getUrlRequestParam("planName"),
  1017. pageSource: shr.getUrlRequestParam("pageSource"),
  1018. viewMode: shr.getUrlRequestParam("viewMode"),
  1019. isAudited: shr.getUrlRequestParam("isAudited"),
  1020. personalScoreSearchIdList : shr.getUrlRequestParam("personalScoreSearchIdList"),
  1021. interview:shr.getUrlRequestParam("interview"),
  1022. fromPage:shr.getUrlRequestParam("fromPage"),
  1023. shruicode: shr.getUrlRequestParam("shruicode"),
  1024. }
  1025. var isFromWFBill = shr.getUrlRequestParam("isFromWFBill");
  1026. if (isFromWFBill && isFromWFBill == "true") {
  1027. // 工作流单据过来的进行后端转发
  1028. param.method = "viewPerfscore";
  1029. param.isFromWFBill = shr.getUrlRequestParam("isFromWFBill");
  1030. param.wfBillParentUipk = shr.getUrlRequestParam("wfBillParentUipk");
  1031. param.shrBillInWfId = shr.getUrlRequestParam("shrBillInWfId");
  1032. param.billId = shr.getUrlRequestParam("billId");
  1033. param.assigmentId = shr.getUrlRequestParam("assigmentId");
  1034. param.ProcInstId = shr.getUrlRequestParam("ProcInstId");
  1035. param.pageType = '1'; // 1:为概览模式 2:为列表模式
  1036. param.uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
  1037. this.reloadPage(param);
  1038. } else {
  1039. param.uipk = 'com.kingdee.shr.perfweb.app.perfscore.core';
  1040. this.reloadPage(param);
  1041. }
  1042. },
  1043. //加载考核计划、考核模式、考核规则信息
  1044. initEvaPlanAndPerfRule: function () {
  1045. that.remoteCall({
  1046. method: "compositeEvaObjectData",
  1047. param: {
  1048. evaObj: evaObj,
  1049. gradeTaskNode: gradeTaskNode,
  1050. entryType: entryType,
  1051. pageSource:pageSource
  1052. },
  1053. async: true,
  1054. success: function (data) {
  1055. if (data.result != null) {
  1056. shr.showError({message: data.result});
  1057. } else {
  1058. globalIndicatorData = data;
  1059. _needScore = data.needScore;
  1060. _gscoreOrRate = data.scoreOrRate;
  1061. var perfGoalsHTML = juicer(perfGoalsTpl, data);
  1062. var ruleHTML = juicer(ruleTpl, data);
  1063. $(perfGoalsHTML).appendTo($('.centercontainer'));
  1064. $('.info-wrap').append(ruleHTML);
  1065. var evaluationdetails = juicer(evaluationdetailsTpl(), data);
  1066. $(evaluationdetails).appendTo($('.instructions'));
  1067. it.instructionsBox(); //弹出说明
  1068. // 其他指标区域
  1069. var indicatorDatalist = new Array();
  1070. for(var i=0; i<globalIndicatorData.rows.evaAreaList.length; i++){
  1071. var areadata = globalIndicatorData.rows.evaAreaList[i];
  1072. // 组装区域说明字段
  1073. globalIndicatorData.rows.evaAreaList[i].rema = getAreaRema(areadata.areaId);
  1074. if(areadata.evaIndicatorList || areadata.evaRecordList){
  1075. indicatorDatalist.push(areadata.evaIndicatorList || areadata.evaRecordList);
  1076. }
  1077. }
  1078. /* var indicatorData = indicatorDatalist[0];
  1079. indicatorData.areaType = areadata.areaType;
  1080. indicatorData.scoringWay = areadata.scoringWay;
  1081. indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
  1082. var indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
  1083. $(indicatorDetailHTML).appendTo($('.content_right'));*/
  1084. $('.fieldsboxhide,#splitDiv').css({
  1085. height: $('.centercontainer').height() + 'px'
  1086. })
  1087. if($('.fieldsboxhide:visible').find('.field-line').length == 0){
  1088. $('.fieldsboxhide:visible').find('.emptywrap').show();
  1089. }
  1090. it.setPersonInfoRema();
  1091. }
  1092. it.initScoreItems();
  1093. }
  1094. });
  1095. },
  1096. // 员工信息区域的区域说明显示到页面上
  1097. setPersonInfoRema: function(){
  1098. $.each(globalIndicatorData.areaBaseList,function(i,item){
  1099. if((item.areaType.value == '100' || item.areaType.value == '400') && item.rema){
  1100. var remaTpl =
  1101. ['<div class="area-rema-box" area-id="${area.id}">',
  1102. '<span>',jsBizMultLan.perfweb_evaluationdetailsJuicer_1586069239184_i18n_5,'</span>',
  1103. '<pre area-id="${area.id}">${area.rema}</pre>',
  1104. '<div class="area-rema-btn" onclick="showMoreRema(this,\'${area.id}\')">',
  1105. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,
  1106. '</div>',
  1107. '</div>'].join("");
  1108. var remaHTML = juicer(remaTpl, {area: item});
  1109. $('.info-more-wrap').after(remaHTML)
  1110. }
  1111. })
  1112. },
  1113. /**
  1114. * 弹出说明
  1115. */
  1116. instructionsBox: function () {
  1117. $(".instructions").die('mouseover').live('mouseover', function () {
  1118. var box = $('.instructionsboxwrap');
  1119. box.stop().fadeIn();
  1120. });
  1121. $(".instructions").die('mouseout').live('mouseout', function () {
  1122. var box = $('.instructionsboxwrap');
  1123. box.stop().fadeOut();
  1124. });
  1125. },
  1126. /**
  1127. * 上传附件弹出框
  1128. */
  1129. uploadFileDialog: function () {
  1130. $('#attachments').unbind('click').bind('click', function () {
  1131. var html = juicer(uploadAttachmentsTpl, {uploadAttachSize:uploadAttachSize});
  1132. $(document.body).append(html);
  1133. $('#uploadFileBox').html('');
  1134. if (showAttachsOnly) {
  1135. $('.uploadfilebtn').hide();
  1136. //不给上传,应该同时也不给删除啊
  1137. $(".delfile").hide();
  1138. }
  1139. that.remoteCall({
  1140. method: "initialAttachment",
  1141. param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
  1142. async: true,
  1143. /*$.ajax({
  1144. url: shr.getContextPath() + "/attachmentUpload.do?method=initialAttachment",
  1145. data: {formId: evaObj},*/
  1146. success: function (data) {
  1147. if (data) {
  1148. for (var i = 0; i < data.length; i++) {
  1149. var tempData = data[i];
  1150. var url = that._assembleDownloadUrl(tempData.id, tempData.attachKey);
  1151. var basetr = '<tr id="' + tempData.id + '" attachKey="' + tempData.attachKey + '">' +
  1152. '<td class="textOverflow paddingbox">' + tempData.name + '.' + tempData.simpleName + '</td>' +
  1153. '<td>' + tempData.creator + '</td>'+'<td>' + tempData.createTime + '</td>';
  1154. var del = '';
  1155. if (tempData.isSelf && tempData.isSelf == "true") {
  1156. //del = '<span class="delfile linkstyle">删除</span>';
  1157. del = '<span class="delfile linkstyle">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_45+'</span>';
  1158. }
  1159. 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") {
  1160. //basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">下载</a></td>' +
  1161. basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
  1162. '</tr>';
  1163. } else {
  1164. //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>' +
  1165. basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
  1166. '</tr>';
  1167. }
  1168. $('#uploadFileBox').append(basetr);
  1169. //shr.setIframeHeight();
  1170. }
  1171. }
  1172. //it.uploadFile();//上传附件
  1173. $("#attachmentsDialog").dialog({
  1174. autoOpen: true,
  1175. show: "blind",
  1176. width: 850,
  1177. height: 500,
  1178. title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_20,
  1179. resizable: false,
  1180. position: ['center', 100],
  1181. modal: true,
  1182. buttons: [{
  1183. text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_41,
  1184. click: function () {
  1185. $(this).dialog('close');
  1186. /**
  1187. * 这时要刷新附件数
  1188. */
  1189. getAttachcount();
  1190. }},{
  1191. text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_40,
  1192. click: function () {
  1193. $(this).dialog('close');
  1194. }
  1195. }],
  1196. close: function () {
  1197. $('#attachmentsDialog').remove();
  1198. }
  1199. });
  1200. if (showAttachsOnly) {
  1201. //不给上传,应该同时也不给删除啊
  1202. $(".delfile").hide();
  1203. }
  1204. }
  1205. });
  1206. })
  1207. },
  1208. /**
  1209. * 获取上传文件的下载地址
  1210. * @param id
  1211. * @returns {string}
  1212. * @private
  1213. */
  1214. _assembleDownloadUrl: function (id, attachKey) {
  1215. // var params = {
  1216. // method: 'download',
  1217. // id: id,
  1218. // serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  1219. // key: attachKey
  1220. // }
  1221. // return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
  1222. var self = this;
  1223. var permItemId = "";
  1224. if(!self.isFromWF()){
  1225. permItemId = shr.getCurrentPagePermItemId();
  1226. }
  1227. var params = {
  1228. method: 'download',
  1229. id: id,
  1230. permItemId: permItemId,
  1231. billId:shr.getUrlRequestParam('billId'),
  1232. shruicode:shr.getShruicode(),
  1233. uipk:shr.getUrlRequestParam('uipk')
  1234. // assigmentId:self.getAssignmentId(),
  1235. // ProcInstId:self.getProcInstId()
  1236. }
  1237. return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
  1238. },
  1239. /**
  1240. * 上传文件
  1241. */
  1242. uploadFile: function (obj) {
  1243. /*$(document).on('change', '#uploadAttach', function (e) {*/
  1244. $('#uploadAttach').die('change').live('change', function (e) {
  1245. // 检测上传文件的类型
  1246. var acceptFileArr = ['doc', 'docx', 'xlsx', 'xls', 'jpg', 'jpeg', 'png', 'jpeg', 'pdf','zip','rar'];
  1247. var fileList = e.target.files;
  1248. var fileLength = e.target.files.length;
  1249. if (!fileLength || fileLength == 0) {
  1250. //shr.showWarning({message: "请选择要上传的文件 !"});
  1251. shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_01});
  1252. return false;
  1253. }
  1254. if (fileLength > 10) {
  1255. shr.showWarning({message: $.perfwebI18n.evaobjBatchAttachment.toomanyfiles});
  1256. return false;
  1257. }
  1258. var totalSize = 0;
  1259. for (var i = 0; i < fileLength; i++) {
  1260. var fileItem = fileList[i];
  1261. var filePath = fileItem.name;
  1262. var ext, idx;
  1263. if (filePath == '') {
  1264. //shr.showWarning({message: "请选择要上传的文件 !"});
  1265. shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_01});
  1266. return false;
  1267. } else {
  1268. idx = filePath.lastIndexOf(".");
  1269. if (idx != -1) {
  1270. ext = filePath.substr(idx + 1).toUpperCase();
  1271. ext = ext.toLowerCase();
  1272. if (!array_contain(acceptFileArr, ext)) {
  1273. //shr.showWarning({message: "只能上传 .doc,.docx,.xlsx,.xls,.jpg,.jpeg,.png,.jpeg,.pdf 类型的文件!"});
  1274. shr.showWarning({message: jsBizMultLan.perfweb_perfscoreNew_1642579721_i18n_01});
  1275. return false;
  1276. }
  1277. } else {
  1278. shr.showWarning({message: ""});
  1279. return false;
  1280. }
  1281. // 在这里限制文件大小,ie9要想获取文件大小,就要使用flash插件
  1282. var size = fileItem.size;
  1283. if (size / (1024 * 1024 * uploadAttachSize) > 1) {
  1284. shr.showWarning({
  1285. //message: "上传文件不能大于5M",
  1286. message: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_bw0406_01,[uploadAttachSize]),
  1287. hideAfter: 3
  1288. });
  1289. return false;
  1290. }
  1291. totalSize = totalSize + size;
  1292. }
  1293. }
  1294. if (totalSize / (1024 * 1024 * uploadAttachSize) > 1) {
  1295. shr.showWarning({
  1296. //message: "上传文件不能大于5M",
  1297. message: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_bw0406_01, [uploadAttachSize]),
  1298. hideAfter: 3
  1299. });
  1300. return false;
  1301. }
  1302. that.uploadFileMulity(e);
  1303. })
  1304. },
  1305. uploadFileMulity: function (e) {
  1306. var fileObj = $(e.target);
  1307. var id = fileObj.attr("id");
  1308. $('#uploadFileBox').append('<image id="loadingGif" src="' + shr.getContextPath() + '/addon/perfweb/web/images/upload.gif"/>').show();
  1309. $.ajaxFileUpload({
  1310. // url: shr.getContextPath() +
  1311. // "/attachmentUpload.do?method=uploadAttachment",
  1312. // //用于文件上传的服务器端请求地址
  1313. url: that.dynamicPage_url + "?method=uploadAttachment&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam("shruicode"),
  1314. data: {boID: evaObj, gradeTaskNode: gradeTaskNode, type: '3'}, // type=3附件类型为评分
  1315. secureuri: false, // 是否需要安全协议,一般设置为false
  1316. fileElementId: id, // 文件上传域的ID
  1317. dataType: 'json', // 返回值类型 一般设置为json
  1318. success: function (results) {// 服务器成功响应处理函数
  1319. if (results && results.result == 'success') {
  1320. $('#loadingGif').remove();
  1321. if (results && results.data && results.data.length > 0) {
  1322. for (var i = 0; i < results.data.length; i++) {
  1323. var data = results.data[i];
  1324. var url = that._assembleDownloadUrl(data.id, data.attachKey);
  1325. // uploadFileEvent();
  1326. var showDel = "";
  1327. if (data.isSelf && data.isSelf == "true") {
  1328. //showDel = '<span class="delfile linkstyle">删除</span>';
  1329. showDel = '<span class="delfile linkstyle">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_45+'</span>';
  1330. }
  1331. var tr = $('<tr id="' + data.id + '" attachKey="' + data.attachKey + '">' +
  1332. '<td class="textOverflow paddingbox">' + data.filename + '</td>' +
  1333. '<td>' + data.creator + '</td>' +
  1334. '<td>' + data.createTime + '</td>' +
  1335. //'<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">下载</a></td>' +
  1336. '<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_49+'</a></td>' +
  1337. '</tr>');
  1338. $('#uploadFileBox').append(tr);
  1339. }
  1340. }
  1341. } else if (results && results.result == 'failed') {
  1342. var failedMag = results.failedMag;
  1343. var errMsg = $.perfwebI18n.evaobjBatchAttachment['PERFWEB_F_0021'];
  1344. if(failedMag && $.perfwebI18n.evaobjBatchAttachment[failedMag]) {
  1345. errMsg = $.perfwebI18n.evaobjBatchAttachment[failedMag];
  1346. }else if(failedMag) {
  1347. errMsg = failedMag;
  1348. }
  1349. shr.showError({
  1350. message: errMsg
  1351. });
  1352. $('#loadingGif').remove();
  1353. }
  1354. }
  1355. });
  1356. },
  1357. /**
  1358. * 删除上传文件
  1359. */
  1360. delFile: function () {
  1361. $(document).on('click', '.delfile', function () {
  1362. var $del = $(this);
  1363. var $tr = $del.parent('td').parent('tr');
  1364. var attachId = $tr.attr('id');
  1365. var attachKey = $tr.attr('attachKey');
  1366. shr.showConfirm(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_43, function () {
  1367. that.remoteCall({
  1368. method: "canAttachmentDelete",
  1369. async: false,
  1370. param: {attachmentId : attachId},
  1371. success: function (result) {
  1372. if (result && result.canDelete) {
  1373. var formId = evaObj;
  1374. var permItemId = "";
  1375. var self = that;
  1376. if(!self.isFromWF()){
  1377. permItemId = shr.getCurrentPagePermItemId();
  1378. }
  1379. $.ajax({
  1380. url: shr.getContextPath() + "/attachmentUpload.do?method=deleteAttachment",
  1381. data: {boID: formId, attachId: attachId, key: attachKey,
  1382. permItemId: permItemId,
  1383. billId:shr.getUrlRequestParam('billId'),
  1384. shruicode:shr.getShruicode(),
  1385. uipk:shr.getUrlRequestParam('uipk')},
  1386. success: function (msg) {
  1387. var tr = $del.parents('tr');
  1388. tr.remove();
  1389. getAttachcount();
  1390. }
  1391. });
  1392. } else {
  1393. shr.showWarning({
  1394. message: jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_5,
  1395. hideAfter: 3
  1396. });
  1397. }
  1398. }
  1399. });
  1400. });
  1401. });
  1402. },
  1403. /**
  1404. * 流程查看
  1405. */
  1406. processView: function () {
  1407. $('#processView').unbind('click').bind('click', function () {
  1408. var html = $('<div id="processViewDialog"></div>');
  1409. $(document.body).append(html);
  1410. that.remoteCall({
  1411. method: "getProcessViewData",
  1412. async: false,
  1413. param: {gradeTaskNode: gradeTaskNode},
  1414. success: function (result) {
  1415. console.log(result);
  1416. var chart = "";
  1417. if (result) {
  1418. var datas = {};
  1419. datas.data = (result.data)[0];
  1420. datas.photo = result.photo;
  1421. chart = juicer(generateProcessView(datas), '');
  1422. }
  1423. $('#processViewDialog').append(chart);
  1424. $("#processViewDialog").dialog({
  1425. autoOpen: true,
  1426. show: "blind",
  1427. width: 800,
  1428. height: 450,
  1429. title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_30,
  1430. resizable: false,
  1431. position: ['center', 'center'],
  1432. modal: true,
  1433. close: function () {
  1434. $('#processViewDialog').remove();
  1435. }
  1436. });
  1437. }
  1438. });
  1439. })
  1440. },
  1441. /**
  1442. * 绩效考核历史弹出框
  1443. */
  1444. perfHistory: function () {
  1445. $('#perfHistory').unbind('click').bind('click', function () {
  1446. var html = juicer(perfHistoryTpl, '');
  1447. $(document.body).append(html);
  1448. $("#perfHistoryDialog").dialog({
  1449. autoOpen: true,
  1450. show: "blind",
  1451. width: 740,
  1452. height: 500,
  1453. title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_24,
  1454. resizable: false,
  1455. position: ['center', 'center'],
  1456. modal: true,
  1457. close: function () {
  1458. $('#perfHistoryDialog').remove();
  1459. }
  1460. });
  1461. it.perfHistoryTable();
  1462. })
  1463. },
  1464. /**
  1465. * 初始化jqGrid表格
  1466. * @param obj
  1467. * @param options
  1468. */
  1469. initjqGridTable: function (obj, options) {
  1470. obj.jqGrid({
  1471. mtype: "POST",//提交方式
  1472. datatype: "json",
  1473. height: options.height,//高度,表格高度。可为数值、百分比或'auto'
  1474. width: options.width,//这个宽度不能为百分比
  1475. autowidth: true,
  1476. colNames: options.name,//'<span class="checkboxs selectallcheckbox"></span>'
  1477. colModel: options.model,
  1478. rownumbers: false,//添加左侧行号
  1479. sortname: 'number',
  1480. sortorder: 'asc',
  1481. sortable: true,
  1482. rowNum: 10,//每页显示记录数
  1483. multiselect: options.multiselect,//复选框
  1484. forceFit: true,//如果设置为true,改变列宽,相邻列也将调整以适应整体表格,将不会出现水平滚动条。
  1485. multiselectWidth: options.multiselectWidth,//复选框列宽度
  1486. shrinkToFit: options.shrinkToFit,//该项描述计算每列相对于表格宽度的初始宽度的类型。若为true,并且设置了列宽度,则每列的宽度根据定义宽度缩放。若为false,并且设置了列宽度,表格宽度为设置宽度,列宽度不会重新计算,使用colModel中定义的值
  1487. autoScroll: false,
  1488. hoverrows: true,
  1489. hidegrid: false,
  1490. url: that.dynamicPage_url + "?method=getPerfHistoryList&uipk=" + that.uipk,
  1491. postData: options.postData,
  1492. loadComplete: options.loadComplete
  1493. }).jqGrid('setFrozenColumns');//.jqGrid('setFrozenColumns')冻结列,不生效
  1494. },
  1495. /**
  1496. * 加载弹出框表格——绩效历史查询
  1497. */
  1498. perfHistoryTable: function () {
  1499. var options = {
  1500. name: [
  1501. jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_6,
  1502. jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_7,
  1503. jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_8,
  1504. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_28,
  1505. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_57,
  1506. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_13
  1507. ],
  1508. model: [
  1509. {name: 'index', index: 'index', width: 30, align: "left", dataType: "int", sortable: true},
  1510. {name: 'periodName', index: 'periodName', width: 74, align: "left", dataType: "int", sortable: true},
  1511. {
  1512. name: 'periodType.alias',
  1513. index: 'periodType.alias',
  1514. width: 74,
  1515. align: "left",
  1516. dataType: "int",
  1517. sortable: true
  1518. },
  1519. {
  1520. name: 'perfModel.name',
  1521. index: 'perfModel.name',
  1522. width: 74,
  1523. align: "center",
  1524. dataType: "int",
  1525. sortable: true
  1526. },
  1527. {
  1528. name: 'lastSumScore',
  1529. index: 'lastSumScore',
  1530. width: 74,
  1531. align: "center",
  1532. dataType: "int",
  1533. sortable: true
  1534. },
  1535. {
  1536. name: 'lastGradeLevel',
  1537. index: 'lastGradeLevel',
  1538. width: 74,
  1539. align: "center",
  1540. dataType: "int",
  1541. sortable: true
  1542. },
  1543. ],
  1544. multiselect: false,
  1545. multiselectWidth: '',//复选框单元格宽度
  1546. shrinkToFit: true,//true没有滚动条,false有滚动条
  1547. width: 640,//这个宽度不能为百分比
  1548. height: 298,//高度,表格高度。可为数值、百分比或'auto'
  1549. postData: {
  1550. rows: 15,
  1551. page: 1,
  1552. sord: "DESC",
  1553. type: '5',
  1554. evaObj: evaObj
  1555. },
  1556. loadComplete: function (data) { //完成服务器请求后,回调函数
  1557. if (data.rows == undefined || data.records == 0) { //如果没有记录返回,追加提示信息,删除按钮不可用
  1558. $('#perfHistorytab').find('.norecord td').eq(0).html('').append(
  1559. '<div class="PromptEmptyData_td">' +
  1560. '<div class="promptimg_td"></div>' +
  1561. '<div class="prompttext">'+
  1562. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_22+
  1563. '</div>' +
  1564. '</div>'
  1565. );//无数据时的提示样式
  1566. }
  1567. }
  1568. };
  1569. it.initjqGridTable($('#perfHistorytab'), options);
  1570. //it.loadingHistoryData($('#perfHistorytab'));
  1571. },
  1572. /**
  1573. * 加载jqGrid表格数据
  1574. * @param obj
  1575. */
  1576. loadingHistoryData: function (obj) {
  1577. // var data = [//测试数据
  1578. // {
  1579. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1580. // 'perfModel': 'KPI',
  1581. // 'scoreSystem': '五分制',
  1582. // 'totalScore': '4.8',
  1583. // 'level': 'A'
  1584. // },
  1585. // {
  1586. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1587. // 'perfModel': 'PBC',
  1588. // 'scoreSystem': '十分制',
  1589. // 'totalScore': '8.9',
  1590. // 'level': 'B'
  1591. // },
  1592. // {
  1593. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1594. // 'perfModel': 'KPI',
  1595. // 'scoreSystem': '五分制',
  1596. // 'totalScore': '4.8',
  1597. // 'level': 'A'
  1598. // },
  1599. // {
  1600. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1601. // 'perfModel': 'PBC',
  1602. // 'scoreSystem': '十分制',
  1603. // 'totalScore': '8.9',
  1604. // 'level': 'B'
  1605. // },
  1606. // {
  1607. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1608. // 'perfModel': 'KPI',
  1609. // 'scoreSystem': '五分制',
  1610. // 'totalScore': '4.8',
  1611. // 'level': 'A'
  1612. // },
  1613. // {
  1614. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1615. // 'perfModel': 'PBC',
  1616. // 'scoreSystem': '十分制',
  1617. // 'totalScore': '8.9',
  1618. // 'level': 'B'
  1619. // },
  1620. // {
  1621. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1622. // 'perfModel': 'KPI',
  1623. // 'scoreSystem': '五分制',
  1624. // 'totalScore': '4.8',
  1625. // 'level': 'A'
  1626. // },
  1627. // {
  1628. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1629. // 'perfModel': 'PBC',
  1630. // 'scoreSystem': '十分制',
  1631. // 'totalScore': '8.9',
  1632. // 'level': 'B'
  1633. // },
  1634. // {
  1635. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1636. // 'perfModel': 'KPI',
  1637. // 'scoreSystem': '五分制',
  1638. // 'totalScore': '4.8',
  1639. // 'level': 'A'
  1640. // },
  1641. // {
  1642. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1643. // 'perfModel': 'PBC',
  1644. // 'scoreSystem': '十分制',
  1645. // 'totalScore': '8.9',
  1646. // 'level': 'B'
  1647. // },
  1648. // {
  1649. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1650. // 'perfModel': 'KPI',
  1651. // 'scoreSystem': '五分制',
  1652. // 'totalScore': '4.8',
  1653. // 'level': 'A'
  1654. // },
  1655. // {
  1656. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1657. // 'perfModel': 'PBC',
  1658. // 'scoreSystem': '十分制',
  1659. // 'totalScore': '8.9',
  1660. // 'level': 'B'
  1661. // },
  1662. // {
  1663. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1664. // 'perfModel': 'KPI',
  1665. // 'scoreSystem': '五分制',
  1666. // 'totalScore': '4.8',
  1667. // 'level': 'A'
  1668. // },
  1669. // {
  1670. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1671. // 'perfModel': 'PBC',
  1672. // 'scoreSystem': '十分制',
  1673. // 'totalScore': '8.9',
  1674. // 'level': 'B'
  1675. // },
  1676. // {
  1677. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1678. // 'perfModel': 'KPI',
  1679. // 'scoreSystem': '五分制',
  1680. // 'totalScore': '4.8',
  1681. // 'level': 'A'
  1682. // },
  1683. // {
  1684. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1685. // 'perfModel': 'PBC',
  1686. // 'scoreSystem': '十分制',
  1687. // 'totalScore': '8.9',
  1688. // 'level': 'B'
  1689. // },
  1690. // {
  1691. // 'perfPlan': '总部骨干员工升迁考核(2014.01.01-01.31)',
  1692. // 'perfModel': 'KPI',
  1693. // 'scoreSystem': '五分制',
  1694. // 'totalScore': '4.8',
  1695. // 'level': 'A'
  1696. // },
  1697. // {
  1698. // 'perfPlan': '销售线考核计划(2015.01.01-12.31)',
  1699. // 'perfModel': 'PBC',
  1700. // 'scoreSystem': '十分制',
  1701. // 'totalScore': '8.9',
  1702. // 'level': 'B'
  1703. // },
  1704. // ];
  1705. // for (var i = 0; i < data.length; i++) {
  1706. // obj.jqGrid("addRowData", i, data[i]);
  1707. // }
  1708. },
  1709. /**
  1710. * 打回弹出框
  1711. */
  1712. backTo: function () {
  1713. $('#backTo').unbind('click').bind('click', function () {
  1714. //先校验是否允许打回
  1715. var flag = it.checkIsOpenF7();
  1716. if(flag){
  1717. var subWidgetOptions = {
  1718. title: jsBizMultLan.perfweb_perfscore_1586254513646_i18n_53,
  1719. uipk: "com.kingdee.shr.perfweb.app.base.evalrule.EvaluFormAreaBase.F7",
  1720. //query:"com.kingdee.shr.perfweb.app.base.evalplan.AreaBaseWorkFlowQuery",
  1721. multiselect: true,
  1722. filter: "evaObj.id ='" + evaObj + "' and gradeTaskNode.taskStatus = '1'"
  1723. };
  1724. $("#backTo").shrPromptGrid(subWidgetOptions);
  1725. $("#backTo").shrPromptGrid("open");
  1726. $("#backTo").shrPromptGrid("option", {
  1727. afterCommitClick: function (e, value) {
  1728. var datas = value.datas;
  1729. var ids = new Array();
  1730. if(datas){
  1731. for(var i = 0; i < datas.length; i++){
  1732. ids.push(datas[i]["gradeTaskNode.id"]);
  1733. }
  1734. it.realBack(ids);
  1735. }else{
  1736. shr.showWarning({
  1737. message: jsBizMultLan.perfweb_perfscore_1586254513646_i18n_40
  1738. });
  1739. }
  1740. }
  1741. });
  1742. }else{
  1743. it.realBack(gradeTaskNode);
  1744. }
  1745. })
  1746. },
  1747. checkIsOpenF7 : function(){
  1748. var flag = '';
  1749. it.remoteCall({
  1750. method: "checkOpenF7",
  1751. param: {
  1752. evaObj: evaObj
  1753. },
  1754. async: false,
  1755. success: function (data) {
  1756. flag = data.flag;
  1757. }
  1758. });
  1759. return flag;
  1760. },
  1761. /**
  1762. * 打回弹出框
  1763. */
  1764. realBack: function (ids) {
  1765. var canBackTo = true;
  1766. var message = null;
  1767. that.remoteCall({
  1768. method: "judgeCanBackToUpLevel",
  1769. param: {
  1770. gradeTasknode: ids.toString()
  1771. },
  1772. async: false,
  1773. success: function (data) {
  1774. if (data.result != '200') {
  1775. message = data.message;
  1776. canBackTo = false;
  1777. }
  1778. }
  1779. });
  1780. if (!canBackTo) {
  1781. shr.showWarning({message: message});
  1782. return false;
  1783. }
  1784. var backHTML = '<div id="backToUpLevel">' +
  1785. '<p class="note-title">'+
  1786. '<span>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_7+
  1787. '</p>' +
  1788. '<p><span class="textareawrap">'+
  1789. '<textarea id="backReason" placeholder="'+
  1790. shr.formatMsg(jsBizMultLan.perf_perfscoreNew_202305061455_i18n_0,
  1791. [2000])+
  1792. '" style="width:650px!important;height:130px!important;"></textarea></span></p>'+
  1793. '<p class="note-title">'+
  1794. // '<span>通知方式:</span>'+
  1795. '<span>'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_1+'</span>'+
  1796. // '<p >通知上一节点评分人:</p>'+
  1797. '<span class="note-obj">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_0+'</span>'+
  1798. '</p>'+
  1799. '<div id="pickReminderDialog" >'+
  1800. '<div class="type-box">'+
  1801. '<div>'+
  1802. '<input id="msgReminder" type="checkbox" value="msg">'+
  1803. // '<label for="msgReminder" class ="checked">消息通知</label>'+
  1804. '<label for="msgReminder" class ="checked">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_2+
  1805. '</label>'+
  1806. '</div>'+
  1807. '<div>'+
  1808. '<input id="emailReminder" type="checkbox" value="email">'+
  1809. // '<label for="emailReminder">邮件</label>'+
  1810. '<label for="emailReminder">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_3+
  1811. '</label>'+
  1812. '</div>'+
  1813. '<div>'+
  1814. '<input id="SMSReminder" type="checkbox" value="sms">'+
  1815. // '<label for="SMSReminder">短信</label>'+
  1816. '<label for="SMSReminder">'+jsBizMultLan.perf_perfscoreNew_b10_15626131368_4+
  1817. '</label>'+
  1818. '</div>'+
  1819. '<div>'+
  1820. '<input id="cloudReminder" type="checkbox" value="msg">'+
  1821. // '<label for="msgReminder">通知</label>'+
  1822. '<label for="cloudReminder">'+jsBizMultLan.perf_perfscoreNew_bw0416_01+
  1823. '</label>'+
  1824. '</div>'+
  1825. '</div>'+
  1826. '</div>'+
  1827. '</div>';
  1828. $(document.body).append(backHTML);
  1829. $('#msgReminder, #emailReminder, #SMSReminder, #cloudReminder').shrCheckbox();
  1830. $('#msgReminder, #emailReminder, #SMSReminder,#cloudReminder').shrCheckbox('onChange', function(){
  1831. var id = $(this).attr('id');
  1832. if($(this).shrCheckbox('getValue')){
  1833. $('label[for="'+id+'"]').addClass('checked');
  1834. }else{
  1835. $('label[for="'+id+'"]').removeClass('checked');
  1836. }
  1837. });
  1838. $("#backToUpLevel").show();
  1839. // 将弹出对话框弹出
  1840. $('#backToUpLevel').dialog({
  1841. title: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_5,
  1842. autoOpen: true,
  1843. show: "blind",
  1844. width: 700,
  1845. height: 406,
  1846. resizable: true,
  1847. position: ['center', 'center'],
  1848. modal: true,
  1849. buttons: [{
  1850. text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_42,
  1851. click: function () {
  1852. var backReason = $("#backReason").val();
  1853. var SMSType = "NOSEND";
  1854. var emailType = "NOSEND";
  1855. var portalType = "NOSEND";
  1856. var yzjMsgType = "NOSEND";
  1857. var meg = $('#megReminder').shrCheckbox('isSelected');
  1858. var email = $('#emailReminder').shrCheckbox('isSelected');
  1859. var SMS = $('#SMSReminder').shrCheckbox('isSelected');
  1860. var yzj = $('#YZJReminder').shrCheckbox('isSelected');
  1861. if (SMS) {
  1862. SMSType = "SEND"
  1863. }
  1864. if (email) {
  1865. emailType = "SEND"
  1866. }
  1867. if (meg) {
  1868. portalType = "SEND"
  1869. }
  1870. if (yzj) {
  1871. yzjMsgType = "SEND";
  1872. }
  1873. var _this = this;
  1874. that.remoteCall({
  1875. method: "backToUpLevel",
  1876. param: {
  1877. evaObjIds: evaObj,
  1878. gradeTaskNodeIds: ids.toString(),
  1879. backReason: backReason,
  1880. SMSType: SMSType,
  1881. emailType: emailType,
  1882. portalType: portalType,
  1883. yzjMsgType: yzjMsgType
  1884. },
  1885. async: false,
  1886. success: function (data) {
  1887. //打回成功刷新评估对象列表
  1888. that.initLeftList();
  1889. $(_this).dialog("destroy").remove();
  1890. shr.showInfo({message: data.msg});
  1891. }
  1892. });
  1893. }},{
  1894. text:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_40,
  1895. click: function () {
  1896. $(this).dialog("destroy").remove();
  1897. }
  1898. }]
  1899. });
  1900. },
  1901. /**
  1902. * 个人评分菜单
  1903. */
  1904. initScoreItems: function () {
  1905. var scoreMenuHTML = null; //评分区域列表
  1906. // 加载区域指标表格部分
  1907. globalIndicatorData.entryType = entryType;
  1908. scoreMenuHTML = juicer(scoreTabsTpl, globalIndicatorData);
  1909. $(scoreMenuHTML).appendTo($('.scoreItems'));
  1910. // var hideNodeWeight = $('#hideNodeWeight').text();
  1911. if(hideNodeWeight === 'true'){ // 是否隐藏节点权重:{true:是;false:否}
  1912. $('span[name="snodeWeight"]').hide();
  1913. }else{
  1914. $('span[name="snodeWeight"]').show();
  1915. }
  1916. that.submitScoreClickEvent(); //评分提交事件
  1917. that.saveScoreEvent(); //评分保存事件
  1918. it.delgoal(); //目标删除事件
  1919. it.scoreMenuListClick(); //指标点击事件
  1920. it.wholeCommentListener();
  1921. it.scoreInpListener();
  1922. $('div[name="editScoreDiv"] input[type="text"]').eq(0).focus().select();
  1923. it.initWholeComment();
  1924. it.initOthersScore();
  1925. },
  1926. /**
  1927. * 整体评价监听字数
  1928. */
  1929. wholeCommentListener: function () {
  1930. $('#wholeComment textarea').live('input propertychange', function () {
  1931. var objVal = $(this).val();
  1932. var msgShow = $(this).closest('div[name="editTextareaDivForWholeComment"]').find("span[id='WHOLECOMMENT']");
  1933. var errObj = new Object();
  1934. existInArrThenDelete(_noPassVerifyArr, errObj);
  1935. var commentLen = objVal.length;
  1936. msgShow.text(shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_35,
  1937. [2000,commentLen]));
  1938. msgShow.show();
  1939. _noPassVerifyArr.push(errObj);
  1940. })
  1941. },
  1942. /**
  1943. * 监听评分回车事件
  1944. */
  1945. scoreInpListener: function () {
  1946. $('div[name="editScoreDiv"] input[type="text"]').keydown(function (event) {
  1947. if (event.keyCode == 13) {
  1948. var current_index = $('div[name="editScoreDiv"] input[type="text"]').index($(this));
  1949. if (current_index == $('div[name="editScoreDiv"] input[type="text"]').length - 1) {
  1950. $('div[name="editScoreDiv"] input[type="text"]').eq(0).focus().select();
  1951. } else {
  1952. $('div[name="editScoreDiv"] input[type="text"]').eq(current_index + 1).focus().select();
  1953. }
  1954. }
  1955. })
  1956. },
  1957. //加载其他人评分
  1958. initOthersScore: function () {
  1959. scoreparams = it.getCurrentScoreParams();
  1960. $('.scoretabwrap').each(function(i){
  1961. // 初始化指标表格
  1962. it.initScoreTab(i,scoreparams);
  1963. })
  1964. $('.scoretabs').each(function(index){
  1965. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  1966. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  1967. })
  1968. it.bindEvent();
  1969. it.initPerftips();
  1970. },
  1971. // 其他人评分信息列tips
  1972. initPerftips: function(){
  1973. $.perfTips.init({target:$('.expend-td-box')});
  1974. },
  1975. // 事件绑定
  1976. bindEvent: function(){
  1977. if (_needScore != "3") {
  1978. $("#totalScore").find("input").attr("disabled", "disabled");
  1979. }
  1980. // 查看其他人打分
  1981. // $('.view_other_btn').die('click').live('click',function(){
  1982. // var tabid = $(this).closest('table').attr('id');
  1983. // var rowid = $(this).closest('tr').attr('id');
  1984. // var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
  1985. // var msgdata = it.getCurrentAndPrevScoreMsg(rowid);
  1986. // it.openOtherScoreDialog(msgdata,rowData);
  1987. // that.personHistoryParamControl();
  1988. // })
  1989. $('.expend-btn').die('click').live('click',function(){
  1990. // var ul = $(this).closest('td').find('ul');
  1991. // if(ul.hasClass('show-more')){
  1992. // ul.removeClass('show-more');
  1993. // }else{
  1994. // ul.addClass('show-more');
  1995. // }
  1996. var pre = $(this).closest('td').find('pre');
  1997. if(pre.hasClass('textOverflow3')){
  1998. pre.removeClass('textOverflow3');
  1999. }else{
  2000. pre.addClass('textOverflow3');
  2001. }
  2002. })
  2003. // 编辑指标评语字段
  2004. // $('.commentcell').die('click').live('click',function(){
  2005. // //打总分不能输入指标评语
  2006. // if (_needScore == '3') {
  2007. // return;
  2008. // }
  2009. // var tabid = $(this).closest('table').attr('id');
  2010. // var rowid = $(this).closest('tr').attr('id');
  2011. // var rowData = $('#'+tabid).jqGrid('getOriginalRowData',rowid);
  2012. // it.openCommentDialog(tabid,rowid,rowData);
  2013. // })
  2014. // 点击序号,查看指标其他字段
  2015. $('.scoretabs tr').die('click').live('click',function(){
  2016. var areaIndex = $(this).closest('table').attr('areaindex');
  2017. var areadata = globalIndicatorData.rows.evaAreaList[areaIndex];
  2018. var trIndex = $(this).index() - 1;
  2019. var indicatorDatalist = areadata.evaIndicatorList || areadata.evaRecordList;
  2020. var indicatorData = indicatorDatalist[trIndex];
  2021. var isClosedPrev = $('.fieldsboxhide:visible').hasClass('small');
  2022. indicatorData.areaType = areadata.areaType;
  2023. indicatorData.scoringWay = areadata.scoringWay;
  2024. indicatorData.fieldslist = it.getTargetData(areadata.fieldList, indicatorData);
  2025. $('.fieldsboxhide').hide();
  2026. if($(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).length > 0){
  2027. // $('.fieldsboxhide[indid="'+indicatorData.FID+'"]').show();
  2028. _thisbox = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]'));
  2029. if(_thisbox.find('.field-line').length > 0){
  2030. _thisbox.show();
  2031. }
  2032. }else{
  2033. indicatorDetailHTML = juicer(indicatorDetailTpl, {rows:[indicatorData]});
  2034. _thisbox = $(indicatorDetailHTML);
  2035. if(_thisbox.find('.field-line').length > 0){
  2036. _thisbox.show();
  2037. $(indicatorDetailHTML).appendTo($('.indicator-box'));
  2038. }
  2039. $('.fieldsboxhide').css({
  2040. 'height': $('.centercontainer').height() + 'px'
  2041. })
  2042. if(it.fixedboxWidth){
  2043. $('.fieldsboxhide').css({
  2044. 'width': it.fixedboxWidth + 'px'
  2045. })
  2046. }
  2047. // if($('.fieldsboxhide:visible').find('.field-line').length == 0){
  2048. // $('.fieldsboxhide:visible').find('.emptywrap').show();
  2049. // }
  2050. }
  2051. var isClosedCurr = $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).hasClass('small');
  2052. if(isClosedPrev){ // 其他信息是否展开控制
  2053. if(!isClosedCurr){
  2054. $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).addClass('small');
  2055. }
  2056. $('.centercontainer').addClass('big');
  2057. }else{
  2058. if(isClosedCurr){
  2059. $(shr.xssFilter('.fieldsboxhide[indid="'+indicatorData.FID+'"]')).removeClass('small');
  2060. }
  2061. $('.centercontainer').removeClass('big');
  2062. }
  2063. $('.scoretabs').each(function(index){
  2064. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  2065. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  2066. })
  2067. })
  2068. // 指标其他字段框控制按钮点击事件
  2069. $('.fixedboxctrlbtn').die('click').live('click',function(){
  2070. var fixedbox = $(this).closest('.fieldsboxhide');
  2071. var centerbox = $('.centercontainer');
  2072. if($(this).hasClass('isclose')){
  2073. centerbox.removeClass('big');
  2074. fixedbox.removeClass('small');
  2075. $(this).removeClass('isclose');
  2076. }else{
  2077. centerbox.addClass('big');
  2078. fixedbox.addClass('small');
  2079. $(this).addClass('isclose');
  2080. }
  2081. $('.scoretabs').each(function(index){
  2082. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  2083. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  2084. })
  2085. })
  2086. it.bindDragEvent()
  2087. },
  2088. // 拖拽改变宽度事件
  2089. bindDragEvent: function(){
  2090. $("#splitDiv").mouseover(function(e) {
  2091. $(this).css("cursor", "e-resize");
  2092. $('.centercontainer').addClass('noselect');
  2093. });
  2094. $("#splitDiv").mousedown(function(e) {
  2095. $(this).css("cursor", "e-resize");
  2096. $("body").mousemove(function(eve) {
  2097. var _x = eve.pageX - $('.centercontainer').offset().left;
  2098. $(".centercontainer").animate({
  2099. width: _x
  2100. }, 1);
  2101. $(".fieldsboxhide").animate({
  2102. width: $('.content_right').width() - _x - 4
  2103. }, 1);
  2104. it.fixedboxWidth = $('.content_right').width() - _x - 4;
  2105. clearTextSelect()
  2106. })
  2107. });
  2108. $("body").mouseup(function(e) {
  2109. $(this).unbind("mousemove");
  2110. $(this).css("cursor", "default");
  2111. $('.scoretabs').each(function(index){
  2112. var shrinkToFit = $(this).jqGrid('getGridParam','shrinkToFit');
  2113. $(this).jqGrid('setGridWidth',$('.scoretabwrap').eq(0).width(),shrinkToFit);
  2114. })
  2115. $('.centercontainer').removeClass('noselect');
  2116. // 由于jqgrid组件的savecell方法,会定位到被保存的单元格,所以自动算分的方式修改一下,否则点了评分 整体评价文本框就不能输入包含整体等级,所以注释掉一下代码
  2117. // var ariaDescribedby = $(e.target).attr('aria-describedby') || $(e.target).closest('td').attr('aria-describedby') || '';
  2118. // if(lastTable && $(e.target).closest('table').attr('id') != lastTable.substring(1) && !$(e.target).closest('div').hasClass('selectPage')&& !$(e.target).closest('ul').hasClass('messenger')){
  2119. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);
  2120. // }
  2121. });
  2122. },
  2123. // 组装重新组装目标数据结构
  2124. getTargetData: function(fieldList,item){
  2125. var targetData = [];
  2126. for(var i = 0; i < fieldList.length; i++){
  2127. targetData.push(fieldList[i]);
  2128. targetData[i].fieldvalue = item[fieldList[i].colName];
  2129. }
  2130. return targetData;
  2131. },
  2132. // 初始化查看其他人评分弹框
  2133. // openOtherScoreDialog: function(otherScoreList,rowData){
  2134. // var hideNodeWeightVal = false;
  2135. // if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
  2136. // // var hideNodeWeight = $("#hideNodeWeight").text(); //是否隐藏节点权重
  2137. // if(hideNodeWeight == 'true'){
  2138. // hideNodeWeightVal = true;
  2139. // }
  2140. // }
  2141. // otherScoreList.currentGradeTaskNode=gradeTaskNode;
  2142. // var otherScoreDialogHTML = juicer(otherScoreDialogTpl, {
  2143. // list: otherScoreList,
  2144. // hideNodeWeightVal: hideNodeWeightVal,
  2145. // indicator: rowData.id+'Itag0',
  2146. // isQualityIndicator: rowData.FQUALIORRATION,
  2147. // isExistComment: rowData.hasOwnProperty('FCOMMENT') ? 1 : 0,
  2148. // commentName: rowData.commentName,
  2149. // isShowHandlerWeight: isShowHandlerWeight
  2150. // });
  2151. // $(document.body).append(otherScoreDialogHTML);
  2152. // // 指标评语title显示设置
  2153. // $('.commentbtn').unbind('mouseover').bind('mouseover', function(){
  2154. // $('.commentbtn .evaluate').hide();
  2155. // $(this).find('.evaluate').show();
  2156. // })
  2157. // $('.commentbtn').unbind('mouseout').bind('mouseout', function(){
  2158. // $(this).find('.evaluate').hide();
  2159. // })
  2160. // var dialogtop = it.setDialogTopPos(500);
  2161. // $("#otherScoreDialog").dialog({
  2162. // autoOpen : true,
  2163. // // show : "blind",
  2164. // width : 800,
  2165. // height : 500,
  2166. // //title : "其他人评分",
  2167. // title : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_03,
  2168. // resizable : true,
  2169. // position : [ 'center', dialogtop ],
  2170. // modal : true,
  2171. // buttons: [
  2172. // {
  2173. // //'确定' : function() {
  2174. // text: $.perfwebI18n.perfwebMessageTool.msg1,
  2175. // click: function () {
  2176. // $(this).dialog('close');
  2177. // }
  2178. // },
  2179. // //'取消' : function() {
  2180. // {
  2181. // text: $.perfwebI18n.perfwebMessageTool.msg2,
  2182. // click: function () {
  2183. // $(this).dialog('close');
  2184. // }
  2185. // }
  2186. // ],
  2187. // close : function(){
  2188. // $('#otherScoreDialog').remove();
  2189. // },
  2190. // open:function(event, ui){ //取消获取焦点
  2191. // $(this).parent().focus();
  2192. // }
  2193. // });
  2194. // },
  2195. // 打开指标评语弹框
  2196. // openCommentDialog: function(tabid,rowid,rowData){
  2197. // rowData.FCOMMENT = $(rowData.FCOMMENT)[0].innerHTML;
  2198. // var commentDialogHTML = juicer(commentDialogTpl, {
  2199. // list: rowData,
  2200. // });
  2201. // $(document.body).append(commentDialogHTML);
  2202. // $('textarea.commentwrap').unbind('input propertychange').bind('input propertychange', function() {
  2203. // targetCommentOnblur(this,'propertychange');
  2204. // });
  2205. // var dialogtop = it.setDialogTopPos(500);
  2206. // $("#commentDialog").dialog({
  2207. // autoOpen : true,
  2208. // // show : "blind",
  2209. // width : 800,
  2210. // height : 500,
  2211. // title : rowData.commentName,
  2212. // resizable : true,
  2213. // position : [ 'center', dialogtop ],
  2214. // modal : true,
  2215. // buttons: [
  2216. // {
  2217. // //'确定' : function() {
  2218. // text: $.perfwebI18n.perfwebMessageTool.msg1,
  2219. // click: function () {
  2220. // var commentval = $('.commentwrap').val();
  2221. // if (commentval) {
  2222. // $('#' + tabid).jqGrid('setCell', rowid, 'FCOMMENT', commentval.trim());
  2223. // } else {
  2224. // $('#' + tabid).jqGrid('setCell', rowid, 'FCOMMENT', null);
  2225. // }
  2226. // $(this).dialog('close');
  2227. // }
  2228. // },
  2229. // {
  2230. // //'取消' : function() {
  2231. // text: $.perfwebI18n.perfwebMessageTool.msg2,
  2232. // click: function () {
  2233. // $(this).dialog('close');
  2234. // }
  2235. // }],
  2236. // close : function(){
  2237. // $('#commentDialog').remove();
  2238. // },
  2239. // open:function(event, ui){ //取消获取焦点
  2240. // $(this).parent().focus();
  2241. // if(!canEditTable){
  2242. // $('.commentwrap').attr('disabled',true);
  2243. // }
  2244. // }
  2245. // });
  2246. // },
  2247. // 计算iframe内弹框竖直方向位置
  2248. setDialogTopPos: function(dialogHeight){
  2249. var dialogtop = 'center';
  2250. var winheight = $(window.top).height();
  2251. var winscrolltop = $(window.top).scrollTop();
  2252. if(self != top){
  2253. dialogtop = (winheight - dialogHeight)/2 + winscrolltop - 80; // dialogHeight: 弹框高度 80:header高度
  2254. }
  2255. return dialogtop;
  2256. },
  2257. // 加载当前节点和之前节点的整体评价信息
  2258. initWholeComment: function () {
  2259. this.remoteCall({
  2260. method: "getCurrentAndPrevWholeComment",
  2261. param: {
  2262. evaObj: evaObj,
  2263. handlerId: personId,
  2264. currentNodeLevel: currentNodeLevel,
  2265. myType: myType,
  2266. gradeTaskNode: gradeTaskNode,
  2267. viewMode: viewMode,
  2268. isModifyScore: isModifyScore,
  2269. isShowAuditedWholeForm : isShowAuditedWholeForm,
  2270. isManualJudgeGrade : isManualJudgeGrade
  2271. },
  2272. async: false,
  2273. success: function (data) {
  2274. if (data != null) {
  2275. _wholeCommentIsMustArr = new Array();
  2276. var dataLen = data.length;
  2277. for(var i=0; i<dataLen; i++){
  2278. var wholeCommentParam = new Object();
  2279. wholeCommentParam.gradeTaskNode = data[i].gradeTaskNode;
  2280. wholeCommentParam.wholeCommentIsMust = data[i].wholeCommentIsMust;
  2281. _wholeCommentIsMustArr.push(wholeCommentParam);
  2282. }
  2283. if ($("#wholeComment").find(".details").children().length > 0) {
  2284. $("#wholeComment").find(".details").empty();
  2285. var $wholeCommentDiv = $('#wholeCommentDiv');
  2286. if ($wholeCommentDiv && $wholeCommentDiv.length > 0) {
  2287. $wholeCommentDiv.remove();
  2288. }
  2289. }
  2290. that.createWholeCommentHtml(data); //生成整体评价区域
  2291. that.personHistoryParamControl();
  2292. }
  2293. }
  2294. });
  2295. },
  2296. /*
  2297. * 组装评分数据
  2298. * @return scoreObj
  2299. * type: '1' 提交评分,需校验必填
  2300. * */
  2301. assembleScoreData: function (type) {
  2302. globalErrorMsg = [];
  2303. var dataList = new Array();
  2304. var scoreObj = new Object();
  2305. var htmlObj = $(".scoretabs");
  2306. var currentEdieTextArea = $("div[name='editTextareaDivForWholeComment']");
  2307. var indeicatorDatas = [];
  2308. var subAreaChecked = true; // 加减分区域,区域上下限校验
  2309. var subAreaCheckedMsg = '';
  2310. for(var i = 0; i < htmlObj.length; i++){
  2311. var idata = $('#scoreTab_'+i).jqGrid('getRowData');
  2312. var _subAreaType = '';
  2313. var _areaAddSub = '';
  2314. var _areaAddSubDown = '';
  2315. var _areaAddSubUp = '';
  2316. var areaSumScore0 = 0;
  2317. for(var j = 0; j < idata.length; j++){
  2318. if(j == 0){
  2319. _subAreaType = idata[j].subAreaType;
  2320. _areaAddSub = idata[j].areaAddSub;
  2321. _areaAddSubDown = idata[j].areaAddSubDown;
  2322. _areaAddSubUp = idata[j].areaAddSubUp;
  2323. }
  2324. idata[j].tabIndex = i.toString();
  2325. indeicatorDatas.push(idata[j]);
  2326. if (_subAreaType == "1" && _areaAddSub == "1") {
  2327. var s0 = idata[j].FSCORE;
  2328. if (s0) {
  2329. areaSumScore0 += parseFloat(s0);
  2330. }
  2331. }
  2332. }
  2333. if ("" != _areaAddSubDown && parseFloat(_areaAddSubDown) > areaSumScore0) {
  2334. subAreaCheckedMsg = $.perfwebI18n.tableConstant.msg14 + _areaAddSubDown;
  2335. subAreaChecked = false;
  2336. }
  2337. if ("" != _areaAddSubUp && parseFloat(_areaAddSubUp) < areaSumScore0) {
  2338. subAreaCheckedMsg = $.perfwebI18n.tableConstant.msg15 + _areaAddSubUp;
  2339. subAreaChecked = false;
  2340. }
  2341. if(!subAreaChecked){
  2342. break;
  2343. }
  2344. }
  2345. if(!subAreaChecked){
  2346. shr.showWarning({
  2347. message: subAreaCheckedMsg,
  2348. hideAfter: 3
  2349. })
  2350. return false;
  2351. }
  2352. for (var n = 0; n < $("div[name='editTextareaDivForWholeComment']").size(); n++) {
  2353. var scoreObj = new Object();
  2354. var scoreList = new Array();
  2355. var currentEditTextareaDom = $("div[name='editTextareaDivForWholeComment']")[n];
  2356. var wholeComment = $(currentEditTextareaDom).find("textarea").val();
  2357. scoreObj.wholeComment = wholeComment;
  2358. for (var i = 0; i < indeicatorDatas.length; i++) {
  2359. // 考虑到会有同一个人处理并发评分的情况,因此增加节点Id的判断
  2360. if($(currentEditTextareaDom).attr('gradenode') == indeicatorDatas[i].gradeTaskNode){
  2361. var scoreObject = new Object();
  2362. var score = null;
  2363. var nodeGrade = '';
  2364. //BT1354967 yien_fan 打等级的定量指标显示分数
  2365. //判断评分输入框是否存在,国贸需求,在不允许评分的情况下也显示指标评语
  2366. if(_gneedScoreArr.length>=2){
  2367. for(var m=0; m<_gneedScoreArr.length; m++){
  2368. if(_gneedScoreArr[m].gradeTaskNode == indeicatorDatas[i].gradeTaskNode){
  2369. _needScore = _gneedScoreArr[m].needScore;
  2370. break;
  2371. }
  2372. }
  2373. }
  2374. if (_needScore == 1 || _needScore == 2|| _needScore == '3') {
  2375. if (indeicatorDatas[i].FQUALIORRATION == '1' || _gscoreOrRate == 0 || (_gscoreOrRate == 1 && indeicatorDatas[i].subAreaType === '1')) {
  2376. //判断是否为禁用的分数输入框
  2377. var $score = '';
  2378. score = indeicatorDatas[i].FSCORE; //取分数
  2379. _gcanNegative = indeicatorDatas[i].canNegative; //取是否允许评负分
  2380. //BT1354967 yien_fan 打等级的定量指标标志位特殊处理为打分
  2381. scoreObject.scoreOrRate = 0;
  2382. if (indeicatorDatas[i].FQUALIORRATION != 1 && indeicatorDatas[i].subAreaType !== '1') { // 可编辑评分时才校验 加减分区域不校验是否允许为负参数
  2383. var reg = /^\d+(\.\d{1,2})?$/;
  2384. var reg2 = /^-\d+(\.\d{1,2})?$/;
  2385. if (_gcanNegative == 1) {
  2386. if ("" != score && !reg2.test(score) && !reg.test(score) && score != undefined) {
  2387. scoreObj.scoreError = true;
  2388. }
  2389. } else if ("" != score && !reg.test(score) && score != undefined) {
  2390. scoreObj.scoreError = true;
  2391. }
  2392. }
  2393. // 如果是定量指标,没有评分公式,且打等级
  2394. if(!indeicatorDatas[i].FSCORINGFORMULA && _gscoreOrRate == 1){
  2395. // 打等级,则取等级
  2396. scoreObject.scoreOrRate = 1;
  2397. var valueExistFlag = indeicatorDatas[i].nodeGrade == undefined || indeicatorDatas[i].nodeGrade == null || indeicatorDatas[i].nodeGrade == "";
  2398. nodeGrade = valueExistFlag ? "" : indeicatorDatas[i].nodeGrade.split("(")[0];; //取等级
  2399. }
  2400. } else {
  2401. var valueExistFlag = indeicatorDatas[i].nodeGrade == undefined || indeicatorDatas[i].nodeGrade == null || indeicatorDatas[i].nodeGrade == "";
  2402. nodeGrade = valueExistFlag ? "" : indeicatorDatas[i].nodeGrade.split("(")[0];; //取等级
  2403. }
  2404. }
  2405. var comment = '';
  2406. //判断指标评语框是否存在
  2407. if (indeicatorDatas[i].FCOMMENT) {
  2408. comment = $(indeicatorDatas[i].FCOMMENT).text();
  2409. }
  2410. var indicatorId = indeicatorDatas[i].id+'Itag0';
  2411. scoreObject.score = score;
  2412. scoreObject.nodeGrade = nodeGrade;
  2413. scoreObject.comment = comment;
  2414. scoreObject.actValue = $(indeicatorDatas[i].FACTUALCOMPLEVALUE).text();
  2415. scoreObject.targetVale = $(indeicatorDatas[i].FTARGETVALUE).text();
  2416. scoreObject.description = $(indeicatorDatas[i].FACTUALCOMPLETEDESC).text();
  2417. scoreObject.actulCompleteTime = indeicatorDatas[i].FACTUALCOMPLETETIME;
  2418. var FQUALIORRATION = indeicatorDatas[i].FQUALIORRATION;
  2419. var FSCORINGFORMULA = indeicatorDatas[i].FSCORINGFORMULA;
  2420. if(FQUALIORRATION === '1'){ // 新增无公式的判断,有公式不做校验
  2421. if(!isNumberVerify2(scoreObject.actValue , 1)){
  2422. scoreObj.actValError = true;
  2423. }
  2424. if(!isNumberVerify2(scoreObject.targetVale , 1)){
  2425. scoreObj.targetValError = true;
  2426. }
  2427. }
  2428. if (scoreObject.description && scoreObject.description.length > 2000) {
  2429. scoreObj.desError = true;
  2430. }
  2431. //否决项评定
  2432. var isRejection = indeicatorDatas[i].isRejection;
  2433. scoreObject.isRejection = isRejection;
  2434. if (isRejection == 1) {
  2435. _gExistRejection = 1;
  2436. }
  2437. scoreObject.indicatorId = indicatorId;
  2438. //如果打分方式没有进行特殊处理,则取考核规则的
  2439. if (typeof scoreObject.scoreOrRate == "undefined") {
  2440. scoreObject.scoreOrRate = _gscoreOrRate;
  2441. }
  2442. // 扩展字段取值组装
  2443. var extendInfo = {}
  2444. for(var key in indeicatorDatas[i]){
  2445. var colName = 'fillOverwrite_'+key;
  2446. var colvalue = indeicatorDatas[i][key];
  2447. var colAttr = $('#scoreTab_'+indeicatorDatas[i].tabIndex).getColProp(key);
  2448. var classes = colAttr.classes;
  2449. var td = $('#scoreTab_'+indeicatorDatas[i].tabIndex+ ' tr[id="'+indeicatorDatas[i].id+'"] td[aria-describedby="scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key+'"]');
  2450. if(colvalue.indexOf('class="cell-height scrollbarthin"') > -1){
  2451. colvalue = $(colvalue).text();
  2452. }
  2453. if(key.indexOf('FEXTEND') == 0){
  2454. extendInfo[key] = {
  2455. value: colvalue,
  2456. fillOverwrite: indeicatorDatas[i][colName]
  2457. }
  2458. }
  2459. if(type === '1' && ((classes && classes.indexOf('required') > -1) || td.hasClass('required')) && !colvalue && colAttr.editable && !td.hasClass('not-editable-cell') && !colAttr.hidden){
  2460. globalErrorMsg.push({
  2461. fid: indeicatorDatas[i].id,
  2462. tabIndex: indeicatorDatas[i].tabIndex,
  2463. colName: key,
  2464. // msg: $('#jqgh_scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key).text()+'不能为空'
  2465. msg: shr.formatMsg(jsBizMultLan.perf_perfscoreNew_20220826_i18n_2 ,[$('#jqgh_scoreTab_'+indeicatorDatas[i].tabIndex+'_'+key).text()])
  2466. })
  2467. }
  2468. }
  2469. scoreObject.extendInfo = extendInfo;
  2470. scoreList.push(scoreObject);
  2471. }
  2472. }
  2473. scoreObj.scoreList = scoreList;
  2474. scoreObj.evaObj = evaObj;
  2475. scoreObj.gradeTaskNode = $(currentEditTextareaDom).attr('gradenode');
  2476. scoreObj.wholeGrade = $('[id="wholeGrade_' + scoreObj.gradeTaskNode + '"]').val();
  2477. scoreObj.isEditGrade = isEditGradesChange;
  2478. scoreObj.needScore=$('[id="wholeScore_' + scoreObj.gradeTaskNode+ '"]').attr("data-needScore");
  2479. scoreObj.sumScore = $('[id="wholeScore_' + scoreObj.gradeTaskNode+ '"]').val();
  2480. dataList.push(scoreObj);
  2481. }
  2482. return dataList;
  2483. },
  2484. /*
  2485. * 评分保存事件
  2486. * */
  2487. saveScoreEvent: function () {
  2488. $('#saveScore').unbind('click').bind('click', function () {
  2489. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
  2490. $('.scoretabs').each(function(index,tab){
  2491. $(tab).jqGrid('editStop');
  2492. })
  2493. that.doSaveScore('1', 0);
  2494. //刷新正态分布列表
  2495. that.getDistributionInfo();
  2496. });
  2497. },
  2498. /*
  2499. * 保存打分
  2500. * @param isShowMsg 是否展示提示信息
  2501. * @param isEditGradesChange 是否下拉选引起的打分保存操作
  2502. * */
  2503. doSaveScore: function (isShowMsg, isEditGradesChange) {
  2504. if (_clicked) {
  2505. return;
  2506. }
  2507. _clicked = true;
  2508. //防止连击,设置过1s后点击才有效
  2509. setTimeout(function () {
  2510. _clicked = false;
  2511. }, 1000);
  2512. if (_noPassVerifyArr.length > 0) {
  2513. shr.showWarning({message: _noPassVerifyArr[0].errortext});
  2514. //自动点击第一条评分不通过的指标
  2515. $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
  2516. return false;
  2517. }
  2518. //
  2519. // var canSubmit = false;
  2520. // var isAsync = false;
  2521. //组装评分数据
  2522. //组装评分数据
  2523. var scoreObj = that.assembleScoreData();
  2524. if(!scoreObj){
  2525. return false;
  2526. }
  2527. var ids = new Array();
  2528. for (var i = 0; i < scoreObj.length; i++) {
  2529. ids.push(scoreObj[i].gradeTaskNode);
  2530. }
  2531. if (scoreObj[0].targetValError) {
  2532. shr.showError({
  2533. //jsBizMultLan 请检查目标值值输入是否正确
  2534. message :jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
  2535. hideAfter: 3
  2536. });
  2537. return false;
  2538. }
  2539. if (scoreObj[0].actValError) {
  2540. shr.showError({
  2541. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
  2542. hideAfter: 3
  2543. });
  2544. return false;
  2545. }
  2546. if (scoreObj[0].desError) {
  2547. shr.showError({
  2548. message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  2549. [2000]),
  2550. hideAfter: 3
  2551. });
  2552. return false;
  2553. }
  2554. //1、判断节点是否可被提交
  2555. that.remoteCall({
  2556. method: "judgeIsCanSubmit",
  2557. param: {
  2558. gradeTaskNode: ids.toString(),
  2559. evaObj: evaObj,
  2560. scoreObj: JSON.stringify(scoreObj)
  2561. },
  2562. async: false,
  2563. success: function (result) {
  2564. for (var i = 0; i < scoreObj.length; i++) {
  2565. for (var j = 0; j < result.length; j++) {
  2566. if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
  2567. data = result[j];
  2568. }
  2569. if (data != null && data.canSubmit == true) {
  2570. //保存评分
  2571. } else {
  2572. if (isShowMsg == '1') {
  2573. shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_11});
  2574. }
  2575. return false;
  2576. }
  2577. }
  2578. }
  2579. that.remoteCall({
  2580. method: "saveScore",
  2581. param: {
  2582. needScore:_needScore,
  2583. scoreObj: JSON.stringify(scoreObj)
  2584. },
  2585. async: false,
  2586. success: function (data) {
  2587. if (data != null && data.result == '200') {
  2588. if (_needScore == "3") {
  2589. shr.showInfo({message: $.perfwebI18n.commonMsg.msg3});
  2590. //window.location.reload();
  2591. //it.initLeftList();//左侧列表
  2592. $("li[workerid='" + evaObj + "']").removeClass("current");
  2593. $("li[workerid='" + evaObj + "']").click();
  2594. return;
  2595. }
  2596. //$("li[workerid='"+evaObj+"']").click();//指哪打哪
  2597. isFirstInit = 0;
  2598. /* if (isEditGradesChange != 1) {
  2599. it.initRightContent();//右侧内容
  2600. }*/
  2601. if (entryType == 'myview') {
  2602. $('.content_right').css({
  2603. 'width': '100%',
  2604. 'margin-right': '0'
  2605. });
  2606. } else if (entryType == 'myselfEvalu') {//个人目标评分入口
  2607. $('.content_right').css({
  2608. 'width': '100%',
  2609. 'margin-right': '0'
  2610. });
  2611. } else {//团队目标评分入口
  2612. $('.view_manager_body').css('background', '#EDEFF4');
  2613. }
  2614. // it.initPersonalInformation(); //评估对象个人信息
  2615. nodeSumScore = data.nodeSumScore;
  2616. nodeGrade = data.nodeGrade;
  2617. var sumScoreText = nodeSumScore;
  2618. var nodeGradeText = nodeGrade;
  2619. if (null != sumScoreText) {
  2620. if(data.gradetaskNode.length<2){
  2621. $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeSumScore']").text(sumScoreText);
  2622. $("#totalScore").find("input").val(sumScoreText);
  2623. }
  2624. //TODO
  2625. //$("#totalScore").text(sumScoreText);
  2626. }
  2627. if (null != nodeGradeText) {
  2628. if(data.gradetaskNode.length<2){
  2629. for(var j=0; j<_gneedScoreArr.length;j++){
  2630. if(data.gradetaskNode == _gneedScoreArr[j].gradeTaskNode){
  2631. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  2632. break;
  2633. }
  2634. }
  2635. if(_perfGradeEvaluate != 0){
  2636. $("li[workerid='" + evaObj + "'][gradeTaskNode='" + gradeTaskNode + "']").find("i[name='nodeGrade']").text(nodeGradeText);
  2637. }
  2638. $("select[id='wholeGrade_" +gradeTaskNode+ "']").val(nodeGradeText);
  2639. }
  2640. }
  2641. var nodeSumScoreList = data.nodeSumScoreList;
  2642. var gtnLen = nodeSumScoreList.length;
  2643. for(var i=0; i<gtnLen; i++){
  2644. var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
  2645. // if(null != nsumscore && "" != nsumscore){
  2646. $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
  2647. $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
  2648. // }else{
  2649. // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').val("");
  2650. // }
  2651. }
  2652. //第一节点隐藏"打回"按钮
  2653. if (currentNodeLevel == 1) {
  2654. $("#backTo").css("display", "none");
  2655. }
  2656. if (isShowMsg == '1') {
  2657. shr.showInfo({message: data.msg});
  2658. }
  2659. } else {
  2660. if (isShowMsg == '1') {
  2661. shr.showWarning({message: data.msg});
  2662. }
  2663. }
  2664. }
  2665. });
  2666. }
  2667. });
  2668. if (scoreObj.wholeComment != null && scoreObj.wholeComment != undefined && scoreObj.wholeComment.length > 2000) {
  2669. //shr.showWarning({message: '整体评价中的评价内容已超过最大长度2000个汉字,请重新输入!'});
  2670. shr.showWarning({message :shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,[2000])});
  2671. return false;
  2672. }
  2673. },
  2674. /*
  2675. * 评分提交事件
  2676. * */
  2677. submitScoreClickEvent: function () {
  2678. $('#submitScore').unbind('click').bind('click', function () {
  2679. _gExistRejection = 0;
  2680. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);// 防止评分未校验就保存了
  2681. $('.scoretabs').each(function(index,tab){
  2682. $(tab).jqGrid('editStop');
  2683. })
  2684. if (gradeTaskNode == '') {
  2685. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_12});
  2686. return false;
  2687. }
  2688. if (_noPassVerifyArr.length > 0) {
  2689. shr.showWarning({message: _noPassVerifyArr[0].errortext});
  2690. //自动点击第一条评分不通过的指标
  2691. $("input[indicator='" + _noPassVerifyArr[0].indicator + "']").focus();
  2692. return false;
  2693. }
  2694. //组装评分数据
  2695. var scoreObj = that.assembleScoreData('1');
  2696. if(!scoreObj){
  2697. return false;
  2698. }
  2699. //进行评分校验
  2700. if (scoreObj[0].scoreError == true) {
  2701. shr.showError({
  2702. // message : '分数只能为整数或不超过2位的小数,请检查!',
  2703. //12月补丁功能-天虹
  2704. message : jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_31,
  2705. hideAfter: 3
  2706. });
  2707. return false;
  2708. }
  2709. if (scoreObj[0].targetValError) {
  2710. shr.showError({
  2711. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_01,
  2712. hideAfter: 3
  2713. });
  2714. return false;
  2715. }
  2716. if (scoreObj[0].actValError) {
  2717. shr.showError({
  2718. message : jsBizMultLan.perfweb_perfscoreNew_20210917ht_02,
  2719. hideAfter: 3
  2720. });
  2721. return false;
  2722. }
  2723. if (scoreObj[0].desError) {
  2724. shr.showError({
  2725. message : shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  2726. [2000]),
  2727. hideAfter: 3
  2728. });
  2729. return false;
  2730. }
  2731. if(globalErrorMsg.length > 0){
  2732. for(var i=0; i<globalErrorMsg.length;i++){
  2733. $('#scoreTab_'+globalErrorMsg[i].tabIndex).jqGrid('setCell', globalErrorMsg[i].fid, globalErrorMsg[i].colName, '', 'errorval');
  2734. }
  2735. // shr.showWarning({message : '必填字段不能为空,请检查'});
  2736. shr.showWarning({message : jsBizMultLan.perf_perfscoreNew_20220826_i18n_1});
  2737. return false;
  2738. }
  2739. //判断整体评价等级是否必填,如果必填则进行必录校验
  2740. var ids = new Array();
  2741. for (var i = 0; i < scoreObj.length; i++) {
  2742. ids.push(scoreObj[i].gradeTaskNode);
  2743. }
  2744. //打总分校验总分必填
  2745. if (_needScore == "3" && ($("#totalScore").find("input").val() == undefined || $("#totalScore").find("input").val().length < 1)) {
  2746. var flag = sumSocreOnblur($("#totalScore").find("input"));
  2747. if (!flag) {
  2748. return;
  2749. }
  2750. }
  2751. var canSubmitFlag = false;
  2752. var scoremsg = '';
  2753. var confirmMsg = '';
  2754. var msg = '';
  2755. var matrixDetail = "";
  2756. var saveNodeSumScoreList;
  2757. var marginTop = -(document.body.clientHeight/3);
  2758. $.block.show({text :
  2759. //'数据处理中,请稍后...'
  2760. jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04
  2761. ,marginTop:marginTop});
  2762. //1、保存分数
  2763. that.remoteCall({
  2764. method: "saveScore",
  2765. param: {
  2766. needScore:_needScore,
  2767. scoreObj: JSON.stringify(scoreObj)
  2768. },
  2769. async: false,
  2770. success: function (data) {
  2771. if (data != null && data.result == '200') {
  2772. nodeSumScore = data.nodeSumScore;
  2773. nodeGrade = data.nodeGrade;
  2774. matrixDetail = data.detail;
  2775. saveNodeSumScoreList = data.nodeSumScoreList;
  2776. var nodeSumScoreList = data.nodeSumScoreList;
  2777. var gtnLen = nodeSumScoreList.length;
  2778. for(var i=0; i<gtnLen; i++){
  2779. var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
  2780. // if(null != nsumscore && "" != nsumscore){
  2781. $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
  2782. $($("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']")).text(nsumscore);
  2783. // }else{
  2784. // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
  2785. // }
  2786. }
  2787. }
  2788. }
  2789. });
  2790. var needrResult = null;
  2791. //2、判断节点是否可被提交
  2792. that.remoteCall({
  2793. method: "judgeIsCanSubmit",
  2794. param: {
  2795. gradeTaskNode: ids.toString(),
  2796. evaObj: evaObj,
  2797. scoreObj: JSON.stringify(scoreObj)
  2798. },
  2799. async: false,
  2800. success: function (result) {
  2801. $.block.hide();
  2802. canSubmitFlag=true;
  2803. needrResult =result;
  2804. for (var i = 0; i < scoreObj.length; i++) {
  2805. var data = '';
  2806. for (var j = 0; j < result.length; j++) {
  2807. if (result[j].nodeId = scoreObj[i].gradeTaskNode) {
  2808. data = result[j];
  2809. }
  2810. }
  2811. if (data != null && data.canSubmit == true) {
  2812. if (scoreObj[i].wholeComment != null && scoreObj[i].wholeComment != undefined && scoreObj[i].wholeComment.length > 2000) {
  2813. shr.showWarning({
  2814. message:
  2815. shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_53,
  2816. [2000])
  2817. });
  2818. return false;
  2819. }
  2820. //判断整体评语是否必录,如果必录则进行必录校验
  2821. // BT-00580949 绩效管理--绩效工作台--考核目标填报、目标变更--编辑指标,评价标准填写数字,保存js会报错
  2822. if (scoreObj[i].wholeComment == '' || scoreObj[i].wholeComment == undefined || (scoreObj[i].wholeComment+'').trim().length < 1) {
  2823. var wholeCommentIsMustLen = _wholeCommentIsMustArr.length;
  2824. for(var m=0; m<wholeCommentIsMustLen; m++){
  2825. if(_wholeCommentIsMustArr[m].gradeTaskNode == scoreObj[i].gradeTaskNode
  2826. && _wholeCommentIsMustArr[m].wholeCommentIsMust == 1){
  2827. //shr.showWarning({message: '请填写当前节点整体评价中的评价内容!'});
  2828. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_39});
  2829. $("#wholeComment").click();
  2830. $("#curWholeComment").focus();
  2831. canSubmitFlag = false;
  2832. return false;
  2833. }
  2834. }
  2835. }
  2836. //指标评语是否必录校验,如果必录则提示并定位到其中一条未录评语的指标
  2837. if(needrResult != null){
  2838. for(var n=0; n<needrResult.length; n++){
  2839. if(needrResult[n].isTargetComment == '1' && needrResult[n].unvalidTargetID.length>0){
  2840. needrResult[n].unvalidTargetID.forEach(function(item){
  2841. $('.scoretabs').jqGrid('setCell', item, 'FCOMMENT', null, 'errorval');
  2842. })
  2843. shr.showWarning({message : needrResult[n].targetCommentMsg});
  2844. canSubmitFlag = false;
  2845. return false;
  2846. }
  2847. }
  2848. }
  2849. //判断整体评价等级是否必填,如果必填则进行必录校验(矩阵考核需要根据节点进行判断)
  2850. var needScoreSize = _gneedScoreArr.length;
  2851. for(var j=0; j<needScoreSize; j++){
  2852. if(_gneedScoreArr[j].gradeTaskNode == scoreObj[i].gradeTaskNode
  2853. && _gneedScoreArr[j].indicatorComment == 1
  2854. && _gneedScoreArr[j].perfGradeEvaluate == 1){
  2855. if (scoreObj[i].wholeGrade == '' || scoreObj[i].wholeGrade == undefined) {
  2856. //shr.showWarning({message: '请填写当前节点整体评价等级!'});
  2857. shr.showWarning({message: jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_38});
  2858. canSubmitFlag = false;
  2859. return false;
  2860. }
  2861. }
  2862. }
  2863. } else {
  2864. shr.showWarning({message: data.msg});
  2865. return;
  2866. }
  2867. }
  2868. var resLen = result.length;
  2869. var needMustCount = 0;
  2870. for(var m=0; m<resLen; m++){
  2871. if(result[m].isNeedScore == '2' && result[m].unValidId.length>0){
  2872. needMustCount++;
  2873. shr.showWarning({message : result[m].msg});
  2874. $("li[numval='"+result[m].unValidId[0]+"']").mousedown();
  2875. canSubmitFlag =false;
  2876. return false;
  2877. }
  2878. }
  2879. if(needMustCount<1){
  2880. for(var n=0; n<resLen; n++){
  2881. if(result[n].isNeedScore == '1' && result[n].unValidId.length>0){
  2882. msg += result[n].msg
  2883. $("li[numval='"+result[n].unValidId[0]+"']").mousedown();
  2884. break;
  2885. }
  2886. }
  2887. }
  2888. if(saveNodeSumScoreList != undefined && saveNodeSumScoreList != null && saveNodeSumScoreList.length >= 2){
  2889. confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10;
  2890. for(var i=0; i<saveNodeSumScoreList.length; i++){
  2891. var scoremsg = '';
  2892. //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
  2893. if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
  2894. if (saveNodeSumScoreList[i].nodeSumscore == null) {
  2895. saveNodeSumScoreList[i].nodeSumscore = "";
  2896. }
  2897. scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + saveNodeSumScoreList[i].nodeSumscore + ',';
  2898. }
  2899. if(matrixDetail != null && matrixDetail != ''){
  2900. confirmMsg = matrixDetail;
  2901. }else{
  2902. confirmMsg += saveNodeSumScoreList[i].nodeHandlerName + scoremsg;
  2903. //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
  2904. for(var j=0; j<_gneedScoreArr.length;j++){
  2905. if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
  2906. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  2907. break;
  2908. }
  2909. }
  2910. if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
  2911. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 + saveNodeSumScoreList[i].nodeGrade + ',';
  2912. }
  2913. }
  2914. }
  2915. }else{
  2916. //12月补丁功能-天虹,如果流程设置为不评分,则不提示评分信息
  2917. var scoremsg = '';
  2918. if (_needScore == '1' || _needScore == '2'|| _needScore == '3') {
  2919. if (nodeSumScore == null) {
  2920. nodeSumScore = "";
  2921. }
  2922. scoremsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + nodeSumScore + ',';
  2923. }
  2924. if(matrixDetail != null && matrixDetail != ''){
  2925. confirmMsg = matrixDetail;
  2926. }else{
  2927. confirmMsg = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_10 + scoremsg;
  2928. //BT1422884 绩效工作台--评分--流程中勾选了不评等级,列表模式下提交时还是显示了等级(1.176 yanju_zhang)
  2929. for(var j=0; j<_gneedScoreArr.length;j++){
  2930. if(data.nodeId== _gneedScoreArr[j].gradeTaskNode){
  2931. _perfGradeEvaluate = _gneedScoreArr[j].perfGradeEvaluate;
  2932. break;
  2933. }
  2934. }
  2935. if(currentIsShowWholeGrade == 1 && _perfGradeEvaluate == 1){
  2936. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14 +nodeGrade + ',';
  2937. }
  2938. }
  2939. }
  2940. if(null != msg && msg != undefined && msg != 'undefined' && '' != msg){
  2941. confirmMsg += msg;
  2942. }
  2943. if(_gExistRejection == 1){
  2944. //confirmMsg += '存在否决项,将直接影响绩效最终得分!';
  2945. confirmMsg += jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_9;
  2946. }
  2947. //confirmMsg += '您确认提交吗?';
  2948. confirmMsg += jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_33;
  2949. if(!canSubmitFlag){
  2950. return false;
  2951. }
  2952. shr.showConfirm(confirmMsg, function () {
  2953. //$.block.show({text : '数据处理中,请稍后...',marginTop:marginTop});
  2954. $.block.show({text : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_04,marginTop:marginTop});
  2955. // var isAutoSubmitVal = $("#isAutoSubmit").text();
  2956. // var isAutoSubmit = false;
  2957. // if (isAutoSubmitVal == 'true') {
  2958. // isAutoSubmit = true;
  2959. // }
  2960. //3、提交
  2961. that.remoteCall({
  2962. method: "submitScore",
  2963. param: {
  2964. scoreObj: JSON.stringify(scoreObj),
  2965. // isAutoSubmit: isAutoSubmit
  2966. },
  2967. async: false,
  2968. success: function (data) {
  2969. $.block.hide();
  2970. if (data != null && data.result == '200') {
  2971. scoreStatus = '2';
  2972. if (_gscoreOrRate == 0) {//评分
  2973. $("input[name='evaScore']").attr("disabled", "disabled");
  2974. } else {
  2975. $("select[name='_editGrades']").attr("disabled", "disabled");
  2976. }
  2977. if(!entryType){
  2978. $("li[workerid='" +evaObj+ "']").remove();
  2979. shr.showInfo({message: data.msg});
  2980. if ($('.workerList').find('li').length == 0) {
  2981. // ==================================================================================
  2982. /**
  2983. * 组织考核返回组织目标评价页面,个人考核返回团队个人目标评价页面
  2984. * modified by Janeou_xie 2020/11/12
  2985. */
  2986. if(isOrg == "1"){
  2987. that.reloadPage({
  2988. uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore4Org.core',
  2989. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  2990. personId : personId
  2991. })
  2992. }else {
  2993. that.reloadPage({
  2994. uipk: 'com.kingdee.shr.perfweb.app.perfBatchScore.core',
  2995. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  2996. personId : personId
  2997. });
  2998. }
  2999. // ==================================================================================
  3000. return;
  3001. }else{
  3002. $(".workerList>li")[0].click();
  3003. evaObj = $($(".workerList>li")[0]).attr("workerid");
  3004. }
  3005. }else if(entryType = 'myselfEvalu'){
  3006. shr.showInfo({message: data.msg});
  3007. that.reloadPage({
  3008. uipk: 'com.kingdee.shr.perfweb.app.perfportal.core',
  3009. serviceId : decodeURIComponent("fUjSqQK1RouZaEJUI2jH5vI9KRA%3D"),
  3010. });
  3011. }
  3012. } else {
  3013. shr.showWarning({message: data.msg});
  3014. }
  3015. }
  3016. });
  3017. });
  3018. }
  3019. });
  3020. });
  3021. },
  3022. //设置按钮及输入文本框灰选
  3023. setDisableStatus: function () {
  3024. $('#saveScore').attr("disabled", 'disabled'); //”保存“按钮置灰
  3025. $('#submitScore').attr("disabled", 'disabled'); //”提交“按钮置灰
  3026. $("#home-wrap input").attr("disabled", "disabled"); //所有输入框不可编辑
  3027. $("textarea").attr("disabled", "disabled"); //所有多行文本框不可编辑
  3028. },
  3029. /**
  3030. * 个人评分菜单点击事件(左侧区域指标点击)
  3031. */
  3032. scoreMenuListClick: function () {
  3033. var that = this;
  3034. $('.controller').unbind('click').bind('click', function () {
  3035. var content = $('#wholeComment').find('.scoreContentboxwrap');
  3036. var icon = $(this);
  3037. if ($(this).hasClass('controller_active')) {
  3038. content.slideUp(function () {
  3039. icon.removeClass('controller_active');
  3040. if (self != top) {
  3041. parent.setIframeHeight('myHistoryIframe');
  3042. parent.setIframeHeight('processedScoresIframe');
  3043. }
  3044. });
  3045. } else {
  3046. content.slideDown(function () {
  3047. if (self != top) {
  3048. parent.setIframeHeight('myHistoryIframe');
  3049. parent.setIframeHeight('processedScoresIframe');
  3050. }
  3051. });
  3052. $(this).addClass('controller_active');
  3053. }
  3054. })
  3055. $('.btn-control').unbind('click').bind('click', function () {
  3056. var icon = $(this);
  3057. var areawrap = icon.closest('.scoreMenu');
  3058. var content = areawrap.find('.scoretabwrap');
  3059. if (icon.hasClass('controller_active')) {
  3060. content.hide();
  3061. icon.removeClass('controller_active');
  3062. if (self != top) {
  3063. parent.setIframeHeight('myHistoryIframe');
  3064. parent.setIframeHeight('processedScoresIframe');
  3065. }
  3066. areawrap.addClass('areawrap-active');
  3067. } else {
  3068. content.show();
  3069. if (self != top) {
  3070. parent.setIframeHeight('myHistoryIframe');
  3071. parent.setIframeHeight('processedScoresIframe');
  3072. }
  3073. icon.addClass('controller_active');
  3074. areawrap.removeClass('areawrap-active');
  3075. }
  3076. })
  3077. },
  3078. //生成整体评价区域
  3079. createWholeCommentHtml: function (data) {
  3080. var wholeCommentHtml = '<div id="wholeCommentDiv" class="scoreContentboxWholeComment">';
  3081. var controlAreaHtml = '<div class="othersScoreBox">';
  3082. var currentWholeGrade = '';
  3083. _gneedScoreArr = new Array();
  3084. // var hideNodeWeight = $('#hideNodeWeight').text();
  3085. if (data != null && data.length > 0) {
  3086. var isShowWholeGrade = 0;
  3087. for (var i = 0; i < data.length; i++) {
  3088. var wholeCommentEdithtml = '';
  3089. var _data = data[i];
  3090. isShowWholeGrade = _data.isShowWholeGrade; //获取当前节点是否可显示总分和总体评价
  3091. _perfGradeEvaluate = _data.perfGradeEvaluate; //整体评价等级是否允许评定
  3092. var _needScore = _data.needScore; //是否允许评分
  3093. var needScoreObj = new Object();
  3094. needScoreObj.gradeTaskNode = _data.gradeTaskNode;
  3095. needScoreObj.needScore = _needScore;
  3096. needScoreObj.indicatorComment = _data.indicatorComment;
  3097. needScoreObj.perfGradeEvaluate = _perfGradeEvaluate;
  3098. _gneedScoreArr.push(needScoreObj);
  3099. if (data[i].canEdit == 1) { //当前节点可评价
  3100. currentIsShowWholeGrade = isShowWholeGrade; //记录当前评分人是否可评总体评价
  3101. _perfGradeEvaluate = _data.perfGradeEvaluate;
  3102. // 重新定义一个新的变量,标识当前任务节点能否打等级,_perfGradeEvaluate赋值,使用到的地方太多了,可能会出问题 modified by Janeou_xie
  3103. isShowDistribution = _data.perfGradeEvaluate
  3104. _wholeComment = _data.wholeCommentIsMust;
  3105. //currentWholeGrade = data[i].wholeGrade;
  3106. currentWholeGrade = _data.scoreToLevel;
  3107. wholeCommentEdithtml = wholeCommentEdithtml
  3108. + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
  3109. + '<span class="left textOverflow">' +_data.nodeName;
  3110. //yien 判断是否展示处理人权重
  3111. if(hideNodeWeight != 'true'){
  3112. wholeCommentEdithtml += '('+_data.nodeWeight + '%)';
  3113. }
  3114. wholeCommentEdithtml = wholeCommentEdithtml + (_data.nodeHandlerName == '' ? ':' : ':'+_data.nodeHandlerName );
  3115. wholeCommentEdithtml = wholeCommentEdithtml + '(' + _data.personNodeWeight + '%)';
  3116. wholeCommentEdithtml += '</span>';
  3117. //判断是否可评价总分和等级
  3118. if (isShowWholeGrade) {
  3119. var wholeScoreTmp = '';
  3120. if(_needScore == '1' || _needScore == '2'|| _needScore == '3'){
  3121. wholeScoreTmp = _data.wholeScore;
  3122. }
  3123. var disabledClass = 'disabled="disabled"';
  3124. if (_needScore == '3') {
  3125. disabledClass = '';
  3126. }
  3127. // 评分流程节点设置不能评分,则隐藏总分 modify by janeou
  3128. //var totalScoreDiv = _needScore == '0' ? '':'<div class="right">总分:<span id="totalScore" ' +
  3129. var totalScoreDiv = _needScore == '0' ? '':'<div class="right">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58+'<span id="totalScore" ' +
  3130. 'gtnname="'+_data.gradeTaskNode+'"><input '+ disabledClass +' id ="wholeScore_' + _data.gradeTaskNode + '" data-needScore="'+_needScore+'" value="'+wholeScoreTmp+'"> ' + '</input></span>';
  3131. totalScoreDiv = totalScoreDiv + '<div style="padding-left:1%"><span class="shorterinpwrap" id="MSG_SUMSCORE" style="max-width:300px;color:red"></span></div>';
  3132. wholeCommentEdithtml += totalScoreDiv ;
  3133. if (data[i].isVetoZero == 1) {
  3134. //wholeCommentEdithtml += '<span class="vetomsg">存在否决项</span></div>';
  3135. wholeCommentEdithtml += '<span class="vetomsg">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
  3136. } else {
  3137. //wholeCommentEdithtml += '<span class="vetomsg" style="display:none">存在否决项</span></div>';
  3138. wholeCommentEdithtml += '<span class="vetomsg" style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+'</span></div>';
  3139. }
  3140. wholeCommentEdithtml += '<div name="editScoreDiv" class="row1 paddingbox">';
  3141. if (_perfGradeEvaluate == '1') {//允许打整体评价等级
  3142. //wholeCommentEdithtml = wholeCommentEdithtml + '<label>等级:</label><span class="selectwrap">';
  3143. wholeCommentEdithtml = wholeCommentEdithtml + '<label>'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap">';
  3144. } else {
  3145. //wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">等级:</label><span class="selectwrap" style="display:none">';
  3146. wholeCommentEdithtml = wholeCommentEdithtml + '<label style="display:none">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+'</label><span class="selectwrap" style="display:none">';
  3147. }
  3148. wholeCommentEdithtml = wholeCommentEdithtml + '<select name="wholeGrade" id ="wholeGrade_' + _data.gradeTaskNode + '">'
  3149. + '<option id="blackOp"></option>';
  3150. var levelSelectValue = _data.levelSelectVal; //等级下拉选值value
  3151. var levelSelectKey = _data.levelSelectKey; //等级下拉选key
  3152. var selectOptionArr = new Array();
  3153. var selectOptionKeyArr = new Array();
  3154. if (levelSelectValue != null && levelSelectValue != '') {
  3155. selectOptionArr = levelSelectValue.split(",");
  3156. selectOptionKeyArr = levelSelectKey.split(",");
  3157. }
  3158. for (var j = 0; j < selectOptionArr.length; j++) {
  3159. //yien 20191122 天虹私包
  3160. var _selectOptionKeyArr = selectOptionKeyArr[j];
  3161. var _selectOptionArr = selectOptionArr[j];
  3162. //不显示分数范围
  3163. if (isShowLevelScoreRange == 0) {
  3164. _selectOptionArr = getLevelWidthoutScoreRange(_selectOptionArr);
  3165. }
  3166. wholeCommentEdithtml = wholeCommentEdithtml + '<option id="' + _selectOptionKeyArr + '" value="' + _selectOptionKeyArr + '" title="' + _selectOptionArr + '">' + (_selectOptionArr) + '</option>';
  3167. }
  3168. wholeCommentEdithtml = wholeCommentEdithtml + '</select>'
  3169. + '</span>'
  3170. + '</div>';
  3171. }
  3172. wholeCommentEdithtml = wholeCommentEdithtml + '<div name="editTextareaDivForWholeComment" gradeNode="' + _data.gradeTaskNode + '" class="row1 paddingbox longeditbox">'
  3173. + '<label>'+
  3174. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
  3175. '</label>';
  3176. //yien:处理合并打分节点问题
  3177. combineGradeTaskIds.push(_data.gradeTaskNode);
  3178. if (_wholeComment == '1') {
  3179. wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea id="curWholeComment" class="paddingbox required" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
  3180. wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>';
  3181. } else {
  3182. wholeCommentEdithtml = wholeCommentEdithtml + '<span class="longinpwrap evaluate"><textarea class="paddingbox" onblur="wholeCommentOnblur(this)">' + data[i].wholeComment + '</textarea></span>';
  3183. wholeCommentEdithtml += '<span class="shorterinpwrap" id="WHOLECOMMENT" style="width:300px;color:red;padding-left:75px;display: none;font-size: 12px;"></span>'
  3184. }
  3185. gradeTaskNode = _data.gradeTaskNode; //当前评估对象节点运行实例id
  3186. scoreStatus = _data.scoreStatus;
  3187. $('#wholeComment .details').append(wholeCommentEdithtml);
  3188. } else {
  3189. if (_data.isVisible != '1') {
  3190. continue;
  3191. }
  3192. controlAreaHtml = controlAreaHtml + '<div class="cutting_line">'
  3193. + '<label name ="WholenodeHandlerId" value="' +data[i].nodeHandler+ '"></label>'
  3194. + '<span class="left textOverflow">' + _data.nodeName;
  3195. //yien 增加判断是否展示处理人权重
  3196. if(hideNodeWeight != 'true'){
  3197. controlAreaHtml += '('+ _data.nodeWeight + '%)';
  3198. }
  3199. controlAreaHtml = controlAreaHtml + (data[i].nodeHandlerName == '' ? ':' : ':'+data[i].nodeHandlerName );
  3200. controlAreaHtml = controlAreaHtml + '(' + _data.personNodeWeight + '%)';
  3201. controlAreaHtml += '</span>';
  3202. //判断是否显示总分和等级
  3203. if (isShowWholeGrade) {
  3204. //var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">总分:' + _data.wholeScore;
  3205. var scoreDivHtml = '<div name="wholeScore" class="right" isself="' +_data.isSelf+ '">'+jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_58 + _data.wholeScore;
  3206. //如果节点不能评分,隐藏总分
  3207. if (data[i].needScore == '0') {
  3208. scoreDivHtml = '<div>';//增加一个div标签,不然格局有问题,打分过程中隐藏评分人参数失败
  3209. }
  3210. controlAreaHtml += scoreDivHtml;
  3211. if (data[i].isVetoZero == 1) {
  3212. controlAreaHtml += '<span style="margin-left:5px;color:red">'+
  3213. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_3+
  3214. '</span></div>';
  3215. } else {
  3216. controlAreaHtml += '</div>';
  3217. }
  3218. controlAreaHtml += '<div name="editScoreDiv" class="row1 paddingbox" isself="' +_data.isSelf+ '">';
  3219. if (_perfGradeEvaluate == '1') {//允许打整体评价等级
  3220. controlAreaHtml = controlAreaHtml + '<label>'+
  3221. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_14+
  3222. '</label>'
  3223. + '<span style="float: left;">'
  3224. + (data[i].wholeGrade)
  3225. + '</span>'
  3226. }
  3227. controlAreaHtml = controlAreaHtml + '</div>';
  3228. }
  3229. controlAreaHtml = controlAreaHtml + '<div name="editTextareaDiv" class="row1 paddingbox">'
  3230. + '<label>'+
  3231. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_34+
  3232. '</label>'
  3233. + '<span class="longinpwrap evaluate"><textarea disabled="disabled" class="paddingbox" >' + _data.wholeComment + '</textarea></span>'
  3234. + '</div></div>';
  3235. }
  3236. }
  3237. }
  3238. controlAreaHtml = controlAreaHtml + "</div>";
  3239. if (data.length == 1 && data[0].canEdit == 1) {
  3240. $('.controller').hide();
  3241. } else {
  3242. wholeCommentHtml = wholeCommentHtml + controlAreaHtml;
  3243. $(wholeCommentHtml).appendTo($('#wholeComment .scoreContentboxwrap'));
  3244. //$('#wholeComment .controller').click();
  3245. }
  3246. if (data) {
  3247. for (var i = 0; i < data.length; i++) {
  3248. if (data[i].scoreToLevel) {
  3249. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].scoreToLevel + "']").attr("selected", "selected");
  3250. } else {
  3251. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').find("option[id='" + data[i].wholeGrade + "']").attr("selected", "selected");
  3252. }
  3253. $('[id="wholeGrade_' + data[i].gradeTaskNode + '"]').attr('title', $('#wholeGrade').find("option:selected").text());
  3254. }
  3255. }
  3256. if (currentWholeGrade == '') {
  3257. blackOp = "blackOp";
  3258. }
  3259. that.spreadScore();
  3260. $('.spreadothers').trigger('click');
  3261. it.levelSwitchChange();
  3262. //整体评价中是否允许修改等级
  3263. if ( isManualJudgeGrade==2) {
  3264. $("[name='wholeGrade']").attr("disabled", "disabled");
  3265. }
  3266. //总分校验
  3267. $("#totalScore").find("input").blur(function () {
  3268. sumSocreOnblur(this);
  3269. /**
  3270. * 自动计算等级
  3271. */
  3272. var grade = $("#wholeComment").find("select").val();
  3273. if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
  3274. // var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
  3275. // "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
  3276. that.remoteCall({
  3277. method: "getLeaveByScore",
  3278. async: false,
  3279. param: {
  3280. nodeSumScore: $(this).val(),
  3281. id:gradeTaskNode,
  3282. shruicode:shr.getUrlRequestParam("shruicode")
  3283. },
  3284. // data: {"nodeSumScore": $(this).val(), "id": gradeTaskNode},
  3285. success: function (data) {
  3286. //这里的结果类似 {data: "差E"}
  3287. console.log(data);
  3288. if (data.data) {
  3289. $("#wholeComment").find("select").find('option').attr('selected', false);
  3290. $("#wholeComment").find("select").find("option[value='" + data.data + "']").attr('selected', true);
  3291. //$("#wholeComment").find("select").val(data.data);
  3292. $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  3293. }
  3294. }
  3295. });
  3296. }
  3297. });
  3298. //考核结果显示控制
  3299. if(typeof initScoreDetailResultShow == 'function') {
  3300. initScoreDetailResultShow();
  3301. }
  3302. },
  3303. getScroeTipsContent: function(items,params){
  3304. var arr = [];
  3305. if(items.subAreaType == '1'){ // 加减分区域
  3306. if (_targetAddSub = "1") { // 指标评分范围
  3307. if(items.targetAddSubDown && items.targetAddSubUp){
  3308. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_01,
  3309. [items.targetAddSubDown,items.targetAddSubUp]));
  3310. }else if(items.targetAddSubDown){
  3311. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_02,
  3312. [items.targetAddSubDown]));
  3313. }else if(items.targetAddSubUp){
  3314. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_03,
  3315. [items.targetAddSubUp]));
  3316. }
  3317. }
  3318. if(items.areaAddSub == "1"){ // 区域评分范围
  3319. if(items.areaAddSubDown && items.areaAddSubUp){
  3320. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_04,
  3321. [items.areaAddSubDown,items.areaAddSubUp]));
  3322. }else if(items.areaAddSubDown){
  3323. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_05,
  3324. [items.areaAddSubDown]));
  3325. }else if(items.areaAddSubUp){
  3326. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_06,
  3327. [items.areaAddSubUp]));
  3328. }
  3329. }
  3330. }else{
  3331. var _gcanOverRang = params.canOverSumRange;
  3332. _gcanNegative = params.canNegative,
  3333. scoringWay = items.scoringWay,
  3334. _glowLimit = (params.lowLimit || params.lowLimit === 0) ? params.lowLimit.toString() : '',
  3335. _gupLimit = (params.uperLimit || params.uperLimit === 0) ? params.uperLimit.toString() : '',
  3336. _overRang = params.overRange;
  3337. if(_glowLimit && _gupLimit){
  3338. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_07,
  3339. [_glowLimit,_gupLimit]));
  3340. }else if(_glowLimit){
  3341. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_08,
  3342. [_glowLimit]));
  3343. }else if(_gupLimit){
  3344. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_yw20230307_09,
  3345. [_gupLimit]));
  3346. }
  3347. if(_gcanOverRang == '1'){//分数允许超出分制范围
  3348. arr.push(shr.formatMsg(jsBizMultLan.perfweb_perfscoreNew_i18n_1625470317_2,
  3349. [_overRang]))
  3350. }
  3351. if (_gcanNegative == '1') {//允许负分
  3352. arr.push(jsBizMultLan.perfweb_evaluationdetailsJuicer_1586069239184_i18n_11);
  3353. }
  3354. }
  3355. return arr.join(',');
  3356. },
  3357. _getCurrentScoreLevel: function(){
  3358. var curScoreMsg = {};
  3359. that.remoteCall({
  3360. method: "getCurrentScoreLevel",
  3361. async: false,
  3362. param: {
  3363. evaObj: evaObj
  3364. },
  3365. async: false,
  3366. success: function (data) {
  3367. if (data != null) {
  3368. curScoreMsg = data;
  3369. }
  3370. }
  3371. });
  3372. return curScoreMsg;
  3373. },
  3374. // 判断该区域是否有可以选是否存在字段的指标,没有就不显示该字段
  3375. judgeIsRejection: function(indicator){
  3376. var flag = false;
  3377. for(var j = 0; j < indicator.length; j++){
  3378. if(indicator[j].FREJECTION == 1){
  3379. flag = true;
  3380. break;
  3381. }
  3382. }
  3383. return flag;
  3384. },
  3385. // 判断该区域是否全部都是可以选是否存在字段的指标,没有就不显示该字段
  3386. judgeAllIsRejection: function(indicator){
  3387. var flag = true;
  3388. for(var j = 0; j < indicator.length; j++){
  3389. if(indicator[j].FREJECTION != 1){
  3390. flag = false;
  3391. break;
  3392. }
  3393. }
  3394. return flag;
  3395. },
  3396. // 指标评语是否必填
  3397. judgeCommentIsRequired: function(msgdata, area, tabIndex){
  3398. var isTargetComment = '';
  3399. for(var i = 0; i < msgdata.length; i++){
  3400. if(msgdata[i].gradeTaskNode == area[tabIndex].gradeTaskNodeId){
  3401. isTargetComment = msgdata[i].isTargetComment;
  3402. break;
  3403. }
  3404. }
  3405. return isTargetComment;
  3406. },
  3407. getGradeOption: function(curScoreMsg){
  3408. if(null != curScoreMsg){
  3409. var levelSelectValue = curScoreMsg.levelSelectVal; //等级下拉选
  3410. var levelSelectKey = curScoreMsg.levelSelectKey; //等级下拉选key
  3411. var selectOptionArr = new Array();
  3412. var selectOptionKeyArr = new Array();
  3413. if (levelSelectValue != null && levelSelectValue != '') {
  3414. selectOptionArr = levelSelectValue.split(",");
  3415. selectOptionKeyArr = levelSelectKey.split(",");
  3416. }
  3417. for(var i = 0; i < selectOptionArr.length; i ++){
  3418. var selectOptionArrItem = selectOptionArr[i];
  3419. if(isShowLevelScoreRange == 0 || isShowLevelScoreRange == false){
  3420. selectOptionArrItem = selectOptionArr[i].split("(")[0];
  3421. }
  3422. gradeOption[i] = {};
  3423. gradeOption[i]["value"] = selectOptionKeyArr[i];
  3424. gradeOption[i]["alias"] = selectOptionArrItem;
  3425. gradeOption[i]["isenum"] = false;
  3426. }
  3427. }
  3428. },
  3429. // 初始化区域指标表格
  3430. initScoreTab: function(tabIndex,msgdata){
  3431. var params = that._getGridParams(tabIndex,msgdata);
  3432. var _grid = $('#scoreTab_'+tabIndex);
  3433. var options = {
  3434. datatype: 'local',
  3435. data: params.tabData,
  3436. colNames: params.myName,
  3437. colModel: params.myModel,
  3438. multiSelect: false,
  3439. multiselectWidth: '',//复选框单元格宽度
  3440. shrinkToFit: params.shrinkToFit,//true没有滚动条,false有滚动条
  3441. rownumbers: true,
  3442. width: 640,//这个宽度不能为百分比
  3443. height: 298,//高度,表格高度。可为数值、百分比或'auto'
  3444. cellEdit: entryType == 'viewMyScoreForm' ? false : true,
  3445. cellsubmit: 'clientArray',
  3446. keyOptions:{ // 编辑最后一行的最后一个可编辑单元格时,回车不新增行,而是回到第一个可编辑单元格
  3447. addNewRowForLastCell: false,
  3448. loop: true
  3449. },
  3450. beforeEditCell: function(rowid, cellname, value, iRow, iCol){
  3451. that._beforeEditCell(rowid, cellname, value, iRow, iCol, _grid);
  3452. },
  3453. afterEditCell: function(rowid, cellname, value, iRow, iCol){
  3454. that._afterEditCell(rowid, cellname, value, iRow, iCol, _grid);
  3455. },
  3456. afterSaveCell: function(rowid, cellname, value, iRow, iCol){
  3457. that._afterSaveCell(rowid, cellname, value, iRow, iCol, _grid);
  3458. },
  3459. loadComplete: function (data) {
  3460. that._loadComplete(data, _grid, params.scoreTipsText);
  3461. }
  3462. };
  3463. _grid.jqGrid(options);
  3464. },
  3465. _getGridParams: function(tabIndex,msgdata){
  3466. var area = globalIndicatorData.rows.evaAreaList;
  3467. var myModel = [];
  3468. var myName = [];
  3469. var indicator = area[tabIndex].evaIndicatorList || area[tabIndex].evaRecordList;
  3470. var areaNeedScore = area[tabIndex].needScore;
  3471. var fieldList = area[tabIndex].fieldList;
  3472. var tabData = [];
  3473. var isExistComment = 0;
  3474. var thisIsRejection = that.judgeIsRejection(indicator); // 该区域指标是否含有否决项
  3475. var thisAllIsRejection = that.judgeAllIsRejection(indicator); // 该区域指标是否都是否决项
  3476. var scoreOrRate = globalIndicatorData.scoreOrRate; // 0:打分,1:打等级
  3477. //var curScoreMsg = indicator.length > 0 ? it.getCurrentAndPrevScoreMsg(indicator[0].FID) : []; // 当前节点打分信息
  3478. var curScoreMsg = that._getCurrentScoreLevel();
  3479. // 指标评语是否必填
  3480. var isTargetComment = that.judgeCommentIsRequired(msgdata, area, tabIndex);
  3481. var scoreTipsText = '';
  3482. that.getGradeOption(curScoreMsg);
  3483. // 打分字段单独处理
  3484. var myScoreName='';
  3485. var myScoreModel={};
  3486. for (var i = 0; i < fieldList.length; i++) {
  3487. var fieldName = fieldList[i].colName;
  3488. var fieldMaintenanceShow = fieldList[i].fieldMaintenanceShow;
  3489. var fieldShowLocation = fieldList[i].fieldShowLocation;
  3490. var fieldType = fieldList[i].fieldType;
  3491. var canEditField = canEditTable && fieldList[i].fieldMaintenanceStage !== '100';
  3492. var isHidden = fieldShowLocation === '10' ? false : true;
  3493. var fillOverwrite = '';
  3494. var required = fieldList[i].required && canEditField;
  3495. var classes = '';
  3496. if(fieldName === 'FCOMMENT'){
  3497. required = canEditField && isTargetComment === '1';
  3498. }else if(fieldName === 'FSCORE'){
  3499. required = canEditField && area[tabIndex].needScore === '2';
  3500. }
  3501. if(fieldName.indexOf('FEXTEND') > -1){ // 扩展字段匹配可维护流程级数
  3502. canEditField = canEditTable && (fieldMaintenanceShow === '0' || fieldMaintenanceShow === '1');
  3503. isHidden = fieldMaintenanceShow === '3';
  3504. fillOverwrite = fieldList[i].fillOverwrite;
  3505. required = canEditField && fieldMaintenanceShow === '1';
  3506. }
  3507. if(canEditTable && !canEditField){
  3508. classes = 'disabled';
  3509. }else if(required){
  3510. classes = 'required';
  3511. }
  3512. if(fieldName == 'FWEIGHT' && hideWeight()){
  3513. isHidden = true;
  3514. }
  3515. // 分数
  3516. if(fieldName == "FSCORE"){
  3517. if(!thisAllIsRejection){
  3518. // 打分、选是否存在混合字段列
  3519. if((scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')) && thisIsRejection){
  3520. //myName.push('评分/是否存在');
  3521. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_05);
  3522. myModel.push({
  3523. name: 'scoreORrejection',
  3524. index: 'scoreORrejection',
  3525. width: 100,
  3526. align: "left",
  3527. sortable: true,
  3528. editable: canEditField,
  3529. required: required,
  3530. classes: classes,
  3531. hidden:entryType === 'viewEvaForm' ? true :false
  3532. });
  3533. }
  3534. //参数控制打分字段隐藏显示
  3535. if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY'){
  3536. myScoreName=fieldList[i].showName;
  3537. myScoreModel={
  3538. name: fieldName,
  3539. index: fieldName,
  3540. width: 70,
  3541. align: "left",
  3542. sortable: true,
  3543. editable: canEditField,
  3544. required: required,
  3545. classes: classes,
  3546. // formatter: 'numberField'
  3547. hidden: false, // 已评分默认显示评分列
  3548. }
  3549. }else if (scoreOrRate == 0 || (scoreOrRate == 1 && area[tabIndex].subAreaType == '1')){
  3550. myName.push(fieldList[i].showName+'\<span\ class="score-tips">\<\/span\>');
  3551. myModel.push({
  3552. name: fieldName,
  3553. index: fieldName,
  3554. width: 70,
  3555. align: "left",
  3556. sortable: true,
  3557. editable: canEditField,
  3558. required: required,
  3559. classes: classes,
  3560. // formatter: 'numberField'
  3561. hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection ? true : false), // 既有打分又有否决项指标的区域,隐藏打分列,显示混合字段列
  3562. });
  3563. }
  3564. }
  3565. // 组装表格字段名称属性
  3566. if(scoreOrRate == 1 && !thisAllIsRejection && thisIsRejection && area[tabIndex].subAreaType !== '1'){ // 打等级、选是否存在混合字段列
  3567. //myName.push('等级/是否存在');
  3568. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_06);
  3569. myModel.push({
  3570. name: 'gradeORrejection',
  3571. index: 'gradeORrejection',
  3572. width: 100,
  3573. align: "left",
  3574. sortable: true,
  3575. editable: canEditTable,
  3576. hidden:entryType === 'viewEvaForm' ? true :false
  3577. });
  3578. }
  3579. if(scoreOrRate == 1 && !thisAllIsRejection && area[tabIndex].subAreaType !== '1'){ // 既有打等级又有否决项指标的区域,隐藏等级列,显示混合字段列
  3580. //myName.push('等级');
  3581. myName.push(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_07);
  3582. myModel.push({
  3583. name: 'nodeGrade',
  3584. index: 'nodeGrade',
  3585. width: 100,
  3586. align: "left",
  3587. sortable: true,
  3588. editable: canEditTable,
  3589. edittype: 'shrselect',
  3590. editoptions: {
  3591. selectJson: {
  3592. data: gradeOption
  3593. },
  3594. enumSource: {
  3595. data: gradeOption
  3596. }
  3597. },
  3598. formatter: 'shrtext',
  3599. hidden: entryType === 'viewEvaForm' ? true : (thisIsRejection|| areaNeedScore=='0' ? true : false)
  3600. });
  3601. }
  3602. }
  3603. // 定性/定量、可见性、否决项
  3604. else if(fieldName == "FQUALIORRATION" || fieldName == 'FISVISIBLE' || fieldName == 'FREJECTION'){
  3605. myName.push(fieldList[i].showName);
  3606. myModel.push({name:fieldName, index:fieldName, width:10, hidden:true});
  3607. if(fieldName == "FREJECTION" && thisIsRejection){ // 否决项
  3608. myName.push(
  3609. //'是否存在'
  3610. jsBizMultLan.perfweb_perfscoreNew_zw20210105_i18n_01
  3611. );
  3612. myModel.push({
  3613. name: 'isRejection',
  3614. index: 'isRejection',
  3615. width: 100,
  3616. align: "left",
  3617. sortable: true,
  3618. editable: canEditField,
  3619. edittype: 'shrselect',
  3620. required: required,
  3621. classes: classes,
  3622. editoptions: {
  3623. selectJson: {
  3624. //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}],
  3625. data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}],
  3626. onChange: function(){
  3627. var $this = $(this);
  3628. if($this.shrSelect('getValue').value == '1'){
  3629. //shr.showConfirm('若存在否决项,将直接影响最终得分,确定要选择吗?', function () {
  3630. shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_08, function () {
  3631. calcTotoalScore(gradeTaskNode);
  3632. },function(){
  3633. $this.shrSelect('setValue','0');
  3634. });
  3635. }else{
  3636. setTimeout(function(){
  3637. calcTotoalScore(gradeTaskNode);
  3638. },100)
  3639. }
  3640. }
  3641. },
  3642. enumSource: {
  3643. //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
  3644. data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}]
  3645. }
  3646. },
  3647. formatter: 'shrselect',
  3648. hidden: entryType === 'viewEvaForm' ? true : (thisAllIsRejection ? false : true),// 既有打等级或评分又有否决项指标的区域,隐藏否决项列,显示混合字段列
  3649. });
  3650. }
  3651. if(fieldShowLocation === '10' && fieldName !== 'FREJECTION'){
  3652. myName.push(fieldList[i].showName);
  3653. myModel.push({
  3654. name: fieldName+'Text',
  3655. index: fieldName+'Text',
  3656. width: 100,
  3657. align: "left",
  3658. sortable: true,
  3659. classes: canEditTable ? 'disabled': '',
  3660. });
  3661. }
  3662. }
  3663. // 评分公式,用于判断定量指标是否有评分公式
  3664. else if(fieldName == "FSCORINGFORMULA"){
  3665. myName.push(fieldList[i].showName);
  3666. myModel.push({
  3667. name: fieldName,
  3668. index: fieldName,
  3669. width: 120,
  3670. align: "left",
  3671. sortable: true,
  3672. editable: false,
  3673. required: required,
  3674. classes: classes,
  3675. hidden: fieldShowLocation === '10' ? false : true
  3676. });
  3677. }
  3678. // 字段类型为是否、选择项
  3679. else if(fieldShowLocation === '10' && (fieldType == 'Boolean' || fieldType == 'Select')){
  3680. var fieldOptions = [];
  3681. if(fieldType == 'Boolean'){
  3682. // [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}]
  3683. fieldOptions = [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}];
  3684. }else{
  3685. var options = fieldList[i].options;
  3686. $.each(options,function(i,item){
  3687. fieldOptions.push({
  3688. value: item.key,
  3689. alias: item.value
  3690. })
  3691. })
  3692. }
  3693. myName.push(fieldList[i].showName);
  3694. myModel.push({
  3695. name: fieldName,
  3696. index: fieldName,
  3697. width: 100,
  3698. align: "left",
  3699. sortable: true,
  3700. editable: canEditField,
  3701. edittype: 'shrselect',
  3702. required: required,
  3703. classes: classes,
  3704. editoptions: {
  3705. selectJson: {
  3706. data: fieldOptions,
  3707. onChange: function(){
  3708. }
  3709. },
  3710. enumSource: {
  3711. data: fieldOptions
  3712. }
  3713. },
  3714. formatter: 'shrselect',
  3715. hidden: isHidden ,
  3716. });
  3717. }
  3718. // 字段类型为长文本 + 实际完成值、目标值
  3719. else if(fieldShowLocation === '10' && (fieldType == 'LongText' || fieldName == 'FACTUALCOMPLEVALUE' || fieldName == 'FTARGETVALUE')){
  3720. isExistComment = fieldName == "FCOMMENT" ? 1 : 0;
  3721. var fw = 400;
  3722. if(fieldName == 'FNAME' || fieldName == 'FKEYITEM'){
  3723. fw = 150;
  3724. }
  3725. myName.push(fieldList[i].showName);
  3726. myModel.push({
  3727. name: fieldName,
  3728. index: fieldName,
  3729. width: fw,
  3730. align: "left",
  3731. sortable: true,
  3732. editable: canEditField,
  3733. edittype: 'wafTextArea',
  3734. fillOverwrite: fillOverwrite,
  3735. hidden: (entryType === 'viewEvaForm' && fieldName == "FCOMMENT") || isHidden ? true : false,
  3736. required: required,
  3737. classes: classes,
  3738. formatter: function(val,msg){
  3739. return '<div class="cell-height scrollbarthin">'+(val?val:'')+'</div>';
  3740. }
  3741. });
  3742. }
  3743. // 字段类型为短文本、数字
  3744. else if(fieldShowLocation === '10' && (fieldType == 'Text' || fieldType == 'Number')){
  3745. myName.push(fieldList[i].showName+(fieldName == "FWEIGHT" ? '(%)' : ''));
  3746. myModel.push({
  3747. name: fieldName,
  3748. index: fieldName,
  3749. width: fieldList[i].fieldType === 'Text' ? 120 : 90,
  3750. align: "left",
  3751. sortable: true,
  3752. editable: canEditField,
  3753. hidden: isHidden,
  3754. fieldType: fieldType,
  3755. fillOverwrite: fillOverwrite,
  3756. required: required,
  3757. classes: classes,
  3758. formatter: function(val,msg){
  3759. var text = val;
  3760. var fieldType = msg.colModel.fieldType;
  3761. if(fieldType === 'Text'){
  3762. text = '<div class="cell-height scrollbarthin">'+val+'</div>';
  3763. }
  3764. return text;
  3765. }
  3766. });
  3767. }
  3768. // 字段类型为日期
  3769. else if(fieldShowLocation === '10' && (fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp')){
  3770. if(fieldShowLocation === '10'){
  3771. myName.push(fieldList[i].showName);
  3772. myModel.push({
  3773. name: fieldName,
  3774. index: fieldName,
  3775. width: 100,
  3776. align: "left",
  3777. sortable: true,
  3778. editable: canEditField,
  3779. edittype: 'shrDateTimePicker',
  3780. hidden : isHidden,
  3781. fieldType: fieldType,
  3782. required: required,
  3783. classes: classes,
  3784. editoptions: {
  3785. datepickerjson: {
  3786. ctrlType: fieldType
  3787. }
  3788. },
  3789. formatter: function(val,msg){
  3790. return window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType})
  3791. }
  3792. });
  3793. }
  3794. }
  3795. // 其他默认显示在列表的字段
  3796. else if(fieldShowLocation === '10'){
  3797. var fw = 120;
  3798. if(fieldList[i].fieldType === 'LongText'){
  3799. fw = 300;
  3800. }
  3801. myName.push(fieldList[i].showName);
  3802. myModel.push({
  3803. name: fieldName,
  3804. index: fieldName,
  3805. width:fw,
  3806. align: "left",
  3807. sortable: true,
  3808. hidden: isHidden,
  3809. fieldType: fieldType,
  3810. classes: canEditTable ? 'disabled': '',
  3811. formatter: function(val,msg){
  3812. var text = val;
  3813. var fieldType = msg.colModel.fieldType;
  3814. if(typeof val === "object"){
  3815. text = val.name;
  3816. }else if(fieldType === 'Text' || fieldType === 'LongText' || fieldType === 'Unknown'){
  3817. text = '<div class="cell-height scrollbarthin">'+val+'</div>';
  3818. }else if(fieldType == 'Boolean'){
  3819. text = val === '0' ? jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09 : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10;
  3820. }else if(fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp'){
  3821. text = window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType});
  3822. }
  3823. return text;
  3824. }
  3825. });
  3826. }
  3827. // 扩展字段加上是否覆盖填写字段值
  3828. if(fieldName.indexOf('FEXTEND') > -1 && fieldShowLocation === '10'){
  3829. myName.push('fillOverwrite');
  3830. myModel.push({name:'fillOverwrite_'+fieldName, index:'fillOverwrite_'+fieldName, width:10, hidden:true});
  3831. }
  3832. }
  3833. //打分字段后置,放在操作前面
  3834. if (hideUnselfScore=='false' && pageSource == 'PERSONHISTORY' && !thisAllIsRejection){
  3835. myName.push(myScoreName);
  3836. myModel.push(myScoreModel);
  3837. }
  3838. var otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
  3839. //当前页面类型:评分页面:'1',查看考核历史页面:'2',专业应用查看评估表:'3'
  3840. if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
  3841. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
  3842. }
  3843. else if(pageSource == undefined && viewMode ==undefined){
  3844. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_01 ;
  3845. }
  3846. else if(pageSource !=undefined && (viewMode == 'viewEvaReport' || viewMode == 'viewAllEffective')){
  3847. otherFieldName = jsBizMultLan.perfweb_perfscore_1637291044_i18n_02 ;
  3848. }
  3849. myName.push('FID','canEdit','canNegative','canVeto','gradeTaskNode','canOverSumRange','lowLimit','uperLimit','overRange',
  3850. //'操作'
  3851. /*jsBizMultLan.perf_perfscoreNewJuicer_1586255741045_i18n_2,*/otherFieldName,jsBizMultLan.perfweb_perfscore_1637291044_i18n_01,'subAreaType','areaAddSub','areaAddSubDown','areaAddSubUp','targetAddSub','targetAddSubDown','targetAddSubUp'
  3852. );
  3853. myModel.push(
  3854. {name:'id', index:'id', width:10, hidden:true},
  3855. {name:'canEdit', index:'canEdit', width:10, hidden:true},
  3856. {name:'canNegative', index:'canNegative', width:10, hidden:true},
  3857. {name:'canVeto', index:'canVeto', width:10, hidden:true}, // 判断是否可以打否决项canVeto = 2时可以
  3858. // {name:'otherScoreList', index:'otherScoreList', width:10, hidden:true},
  3859. {name:'gradeTaskNode', index:'gradeTaskNode', width:10, hidden:true},
  3860. {name:'canOverSumRange', index:'canOverSumRange', width:10, hidden:true},
  3861. {name:'lowLimit', index:'lowLimit', width:10, hidden:true},
  3862. {name:'uperLimit', index:'uperLimit', width:10, hidden:true},
  3863. {name:'overRange', index:'overRange', width:10, hidden:true},
  3864. // {name: 'operation', index: 'operation', width: 60, align: "center", sortable: false, formatter: function(){
  3865. // //var btntext = '查看其他人评分';
  3866. // var btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_11;
  3867. // if(entryType === 'viewEvaForm'){
  3868. // //btntext = '查看评分详情';
  3869. // btntext = jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_12;
  3870. // }
  3871. // return '<a class="view_other_btn" href="javascript:;">'+btntext+'</a>'
  3872. // },},
  3873. {name:'preNodeScoreList', index:'preNodeScoreList', width:100, hidden:true},
  3874. {name:'nodeInfoList', index:'nodeInfoList', width:180, hidden: false,classes: canEditTable ? 'disabled': '',formatter: function(value,mmodel,rowData){
  3875. // hideUnselfScoring === 'true' ? true : false
  3876. var nodeInfoList = rowData.nodeInfoList ? JSON.parse(rowData.nodeInfoList) : [];
  3877. var flag = false;
  3878. $.each(nodeInfoList, function(i, data){
  3879. if(hideUnselfScoring === "false" || (hideUnselfScoring === "true" && data.nodeHandlerId === personId)){
  3880. if(data.comment){
  3881. flag = true;
  3882. return false;
  3883. }
  3884. }
  3885. })
  3886. var temp = [
  3887. '<div class="expend-td-box cell-height scrollbarthin">',
  3888. '<ul class="other-msg">',
  3889. '{@each rows as item,i}',
  3890. // BT-00650981 绩效工作台—组织/员工目标评分——列表页面:其他评分人信息 打等级的就显示等级,后面多一个“分”字
  3891. // 判断是打等级还是打分,不同展示 jianyu_zhang 2022.02.10
  3892. '{@if hideUnselfScoring === "false" || (hideUnselfScoring === "true" && item.nodeHandlerId === personId)}',
  3893. '<li class="node-name">',
  3894. '{@if item.nodeName}(${item.nodeName}){@/if}${item.handlerName}:',
  3895. '{@if isRejection == 1 }',
  3896. '${item.isRejection.alias} ',
  3897. '{@else}',
  3898. '{@if item.needScore != "0"}',// 增加评分展示控制,不评分的不展示分数(包括定量指标)
  3899. '{@if item.score !== undefined && item.score !== null && item.score !== ""}',
  3900. //分
  3901. '${item.score}'+ jsBizMultLan.perfweb_perfscoreNew_ht_20220419_20,
  3902. '{@else if item.gradeRank != undefined && item.gradeRank != null && item.gradeRank != ""}',
  3903. '${item.gradeRank}',
  3904. '{@/if}',
  3905. '{@/if}',
  3906. '{@/if}',
  3907. '</li>',
  3908. '{@/if}',
  3909. //指标评语
  3910. '{@if item.comment}',
  3911. '<li>',
  3912. '<span class="expend-td-comment-field" title="${item.comment}">'+jsBizMultLan.perfweb_perfscoreNew_ht_20220414_36+':</span>',
  3913. '</li>',
  3914. '<li class="expend-td-comment"><pre class="textOverflow3">${item.comment}</pre></li>',
  3915. '{@/if}',
  3916. '{@each fieldList as it,j}',
  3917. '{@if it.colName.indexOf("FEXTEND") > -1 && it.fieldMaintenanceShow !== "3" && it.fillOverwrite === "0"}',
  3918. '<li field-type="${it.fieldType}">',
  3919. '<span class="" title="${it.showName}">${it.showName}:</span>',
  3920. '{@if item[it.colName]}',
  3921. '<pre class="textOverflow3">${item[it.colName]}</pre>',
  3922. '{@/if}',
  3923. '</li>',
  3924. '{@/if}',
  3925. '{@/each}',
  3926. '{@/each}',
  3927. '</ul>',
  3928. '</div>',
  3929. flag ? '<div class="expend-btn"></div>': ''
  3930. ].join('');
  3931. var tempDom = juicer(temp,{rows: nodeInfoList,isRejection: rowData.FREJECTION,hideUnselfScoring: pageSource === 'PERSONHISTORY'? 'false': hideUnselfScoring,personId: personId,fieldList: rowData.currIndiDetail.fieldList});
  3932. return tempDom;
  3933. }},
  3934. {name:'subAreaType', index:'subAreaType', width:10, hidden:true},
  3935. {name:'areaAddSub', index:'areaAddSub', width:10, hidden:true},
  3936. {name:'areaAddSubDown', index:'areaAddSubDown', width:10, hidden:true},
  3937. {name:'areaAddSubUp', index:'areaAddSubUp', width:10, hidden:true},
  3938. {name:'targetAddSub', index:'targetAddSub', width:10, hidden:true},
  3939. {name:'targetAddSubDown', index:'targetAddSubDown', width:10, hidden:true},
  3940. {name:'targetAddSubUp', index:'targetAddSubUp', width:10, hidden:true}
  3941. );
  3942. if(isExistComment == 1){
  3943. myName.push('commentName'); // 存储指标评语名称字段
  3944. myModel.push({name:'commentName', index:'commentName', width:10, hidden:true});
  3945. }
  3946. // 组装数据
  3947. var myData = that._getMyData(indicator,scoreOrRate,area,tabIndex,msgdata,fieldList,areaNeedScore);
  3948. tabData = myData.tabData;
  3949. scoreTipsText = myData.scoreTipsText;
  3950. // var showFieldWidth = 0;
  3951. // myModel.forEach(function(item){
  3952. // if(!item.hidden){
  3953. // showFieldWidth += item.width;
  3954. // }
  3955. // })
  3956. // var shrinkToFit = showFieldWidth < $('.scoretabwrap').eq(0).width() ? true : false;
  3957. var showFieldWidth = 0;
  3958. var show_count = 0,text_count = 0;
  3959. var tabwidth = $('.scoretabwrap').eq(0).width();
  3960. myModel.forEach(function(item){
  3961. if(!item.hidden){
  3962. showFieldWidth += item.width;
  3963. show_count ++; // 默认显示字段个数
  3964. if(item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text')){
  3965. text_count ++ ; // 文本类型字段个数
  3966. }
  3967. }
  3968. })
  3969. var shrinkToFit = showFieldWidth < tabwidth ? true : false;
  3970. if(shrinkToFit){
  3971. var w1 = tabwidth - showFieldWidth - 34 - show_count * 6; // 可按比例分配宽度 34:复选框列 6:单元格左右内边距
  3972. var w2 = (w1/text_count).toFixed(2) - 6; // 每个长文本可分配的宽度
  3973. if(w1 != 0){
  3974. myModel.forEach(function(item, i){
  3975. if(!item.hidden && item.name != 'nodeInfoList' && (item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text'))){
  3976. myModel[i].width = myModel[i].width + Number(w2); // 新列宽
  3977. }
  3978. })
  3979. }
  3980. }
  3981. return {
  3982. tabData: tabData,
  3983. myName: myName,
  3984. myModel: myModel,
  3985. shrinkToFit: that.getShrinkToFit(shrinkToFit),
  3986. scoreTipsText: scoreTipsText
  3987. };
  3988. },
  3989. // 二开扩展点,true没有滚动条,false有滚动条
  3990. getShrinkToFit: function(shrinkToFit){
  3991. return shrinkToFit;
  3992. },
  3993. _beforeEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
  3994. if(lastTable != _grid.attr('id')){
  3995. if(lastTable){
  3996. $('#'+lastTable).jqGrid('editStop');
  3997. }
  3998. lastTable = _grid.attr('id');
  3999. }
  4000. },
  4001. _afterEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
  4002. var rowData = _grid.jqGrid('getOriginalRowData',rowid);
  4003. var colAttr = _grid.getColProp(cellname);
  4004. var fieldType = colAttr.fieldType;
  4005. if(cellname == 'scoreORrejection' || cellname == 'gradeORrejection' || cellname == 'nodeGrade' || cellname == 'isRejection'){
  4006. if(rowData.FREJECTION == 1){
  4007. $('#'+iRow+'_'+cellname).shrSelect({
  4008. id: iRow+'_'+cellname,
  4009. //data: [{value:"0",alias:"否",isenum:false},{value:"1",alias:"是",isenum:false}],
  4010. data: [{value:"0",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09,isenum:false},{value:"1",alias:jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10,isenum:false}],
  4011. value: rowData.isRejection,
  4012. onChange: function(){
  4013. var $this = $(this);
  4014. if($this.shrSelect('getValue').value == '1'){
  4015. //shr.showConfirm('若存在否决项,将直接影响最终得分,确定要选择吗?', function () {
  4016. shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_08, function () {
  4017. _grid.jqGrid('setCell', rowData.id, 'isRejection','1');
  4018. calcTotoalScore(gradeTaskNode);
  4019. $('.vetomsg').show();
  4020. },function(){
  4021. $this.shrSelect('setValue','0');
  4022. _grid.jqGrid('setCell', rowData.id, 'isRejection','0');
  4023. });
  4024. }else{
  4025. setTimeout(function(){
  4026. calcTotoalScore(gradeTaskNode);
  4027. if(that.judgeWheatherThereisVetos()){
  4028. $('.vetomsg').show();
  4029. }else{
  4030. $('.vetomsg').hide();
  4031. }
  4032. },100)
  4033. }
  4034. }
  4035. })
  4036. }else{
  4037. if(cellname == 'gradeORrejection' || cellname == 'nodeGrade'){
  4038. var cellVal = '';
  4039. $('#'+iRow+'_'+cellname).shrSelect({
  4040. id: iRow+'_'+cellname,
  4041. data: gradeOption,
  4042. // value: cellVal,
  4043. onChange: function(){}
  4044. })
  4045. }
  4046. }
  4047. }
  4048. // if(cellname == 'FACTUALCOMPLETETIME'){
  4049. // initDateEven(iRow+'_'+cellname,0);
  4050. // }
  4051. // 单元格有滚动条时编辑取值修改
  4052. if(value.indexOf('class="cell-height scrollbarthin"') > -1){
  4053. if(fieldType === 'Text'){
  4054. _grid.find('#'+iRow+'_'+cellname).attr('maxlength','');
  4055. }
  4056. _grid.find('#'+iRow+'_'+cellname).val($(value).text());
  4057. }
  4058. },
  4059. _afterSaveCell: function(rowid, cellname, value, iRow, iCol, _grid){
  4060. var rowData = _grid.jqGrid('getOriginalRowData',rowid);
  4061. if(rowData.FREJECTION == 1){
  4062. if(cellname == 'scoreORrejection'){
  4063. //_grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.scoreORrejection == '是' ? '1' : '0');
  4064. _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.scoreORrejection == jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10 ? '1' : '0');
  4065. }else if(cellname == 'gradeORrejection'){
  4066. //_grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.gradeORrejection == '是' ? '1' : '0');
  4067. _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.gradeORrejection == jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10 ? '1' : '0');
  4068. }
  4069. // that.judgeWheatherThereisVetos();
  4070. }else{
  4071. if(cellname == 'scoreORrejection'){
  4072. // 在此处校验分数是否合法
  4073. if(value == ''){
  4074. _grid.jqGrid('setCell', rowData.id, 'FSCORE',null);
  4075. }else{
  4076. _grid.jqGrid('setCell', rowData.id, 'FSCORE',rowData.scoreORrejection);
  4077. inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid)
  4078. }
  4079. }else if(cellname == 'gradeORrejection' || cellname == 'nodeGrade'){
  4080. var cellAlias = '';
  4081. var cellValue = '';
  4082. for(var i = 0; i < gradeOption.length; i++){
  4083. if(rowData.gradeORrejection == gradeOption[i].alias | rowData.nodeGrade == gradeOption[i].value){
  4084. cellAlias = gradeOption[i].alias;
  4085. cellValue = gradeOption[i].value;
  4086. break;
  4087. }
  4088. }
  4089. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellValue);
  4090. // calcTotoalScore(gradeTaskNode);//[BT-01364238]打等级:算分,接口重复调用,注释掉
  4091. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellAlias);
  4092. }
  4093. /*else if(cellname == 'nodeGrade'){//评等级情况下自动计算总分
  4094. calcTotoalScore(gradeTaskNode);
  4095. }*/
  4096. }
  4097. if(cellname == 'FACTUALCOMPLEVALUE' || cellname == 'FTARGETVALUE' || cellname == 'FACTUALCOMPLETEDESC' || cellname == 'FSCORE' || cellname == 'FCOMMENT' || cellname.indexOf('FEXTEND') > -1){
  4098. // 值校验
  4099. inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid)
  4100. }
  4101. },
  4102. _loadComplete: function (data, _grid, scoreTipsText) {
  4103. if(_grid.height() > 500){
  4104. _grid.jqGrid('setGridHeight',500);
  4105. }
  4106. _grid.closest('.scoretabwrap').find('.score-tips').perfTips({
  4107. content: scoreTipsText,
  4108. defaultWidth: 250,
  4109. defaultHeight: 80
  4110. })
  4111. var needScoreTmp = 0;
  4112. var perfGradeEvaluateTmp = 0;
  4113. for(var m=0; m<data.rows.length; m++){
  4114. for(var k=0; k<_gneedScoreArr.length; k++){
  4115. if(data.rows[m].gradeTaskNode == _gneedScoreArr[k].gradeTaskNode){
  4116. needScoreTmp = _gneedScoreArr[k].needScore;
  4117. perfGradeEvaluateTmp = _gneedScoreArr[k].perfGradeEvaluate;
  4118. var rowData = data.rows[m];
  4119. var tmpMap = [];
  4120. tmpMap['scoreORrejection'] = rowData.scoreORrejection;
  4121. tmpMap['gradeORrejection'] = rowData.gradeORrejection;
  4122. var tmpScore = null;
  4123. if(rowData.FREJECTION == '1'){
  4124. tmpScore = "";
  4125. }
  4126. if(needScoreTmp !=0 && rowData.FSCORE){
  4127. tmpScore = parseFloat(rowData.FSCORE).toFixed(2);
  4128. }
  4129. if(!rowData.isCanEditActValue){
  4130. _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLEVALUE',rowData.FACTUALCOMPLEVALUE, 'not-editable-cell');
  4131. _grid.jqGrid('setCell', rowData.id, 'FTARGETVALUE',rowData.FTARGETVALUE, 'not-editable-cell');
  4132. _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLETETIME',rowData.FACTUALCOMPLETETIME, 'not-editable-cell');
  4133. _grid.jqGrid('setCell', rowData.id, 'FACTUALCOMPLETEDESC',rowData.FACTUALCOMPLETEDESC, 'not-editable-cell');
  4134. }
  4135. // 评分时定量指标时,分数输入框、等级选择框不可编辑
  4136. if((entryType != 'viewMyScoreForm') && needScoreTmp == 0){
  4137. if(rowData.FQUALIORRATION == 1){
  4138. _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
  4139. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
  4140. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
  4141. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
  4142. }else{
  4143. if(needScoreTmp != 0){
  4144. if(rowData.FSCORE){
  4145. _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore, 'not-editable-cell');
  4146. //_grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
  4147. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',rowData.nodeGrade, 'not-editable-cell');
  4148. }
  4149. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
  4150. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',rowData.scoreORrejection, 'not-editable-cell');
  4151. _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.isRejection, 'not-editable-cell');
  4152. }else{
  4153. _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
  4154. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
  4155. if(rowData.FREJECTION != 1){
  4156. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
  4157. }
  4158. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
  4159. }
  4160. }
  4161. //BT-00543726 绩效工作台—个人目标评价 列表页面 定量指标没有公式是可以列表编辑的 跟概览保持一致 8612也要同步
  4162. }else if(needScoreTmp == 0 && !$.isEmptyObject(rowData.FSCORINGFORMULA)){
  4163. _grid.jqGrid('setCell', rowData.id, 'FSCORE',null, 'not-editable-cell');
  4164. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',null, 'not-editable-cell');
  4165. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',null, 'not-editable-cell');
  4166. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',null, 'not-editable-cell');
  4167. }
  4168. if(needScoreTmp !=0 && !$.isEmptyObject(rowData.FSCORINGFORMULA)){
  4169. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',rowData.scoreORrejection, 'not-editable-cell');
  4170. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpScore, 'not-editable-cell');
  4171. _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore, 'not-editable-cell');
  4172. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',tmpScore, 'not-editable-cell');
  4173. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',tmpScore, 'not-editable-cell');
  4174. //R20201111-1363
  4175. }else if(needScoreTmp != 0 && $.isEmptyObject(rowData.FSCORINGFORMULA)){
  4176. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpMap['scoreORrejection']);
  4177. _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore);
  4178. }else{
  4179. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection',tmpMap['scoreORrejection'], 'not-editable-cell');
  4180. _grid.jqGrid('setCell', rowData.id, 'FSCORE',tmpScore,'not-editable-cell');
  4181. }
  4182. _grid.jqGrid('setCell', rowData.id, 'FCOMMENT',rowData.FCOMMENT, 'commentcell');
  4183. if (rowData.FREJECTION == 1 && rowData.canVeto != 2) { // 是否决项,但不可编辑是否存在字段
  4184. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection', tmpMap['scoreORrejection'], 'not-editable-cell');
  4185. _grid.jqGrid('setCell', rowData.id, 'isRejection', rowData.isRejection, 'not-editable-cell');
  4186. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection', tmpMap['gradeORrejection'], 'not-editable-cell');
  4187. }
  4188. //if(rowData.FREJECTION != 1 && scoreOrRate == 1 && thisIsRejection && !thisAllIsRejection){
  4189. if(rowData.gradeORrejection != null && rowData.gradeORrejection != undefined){
  4190. var cellAlias = '';
  4191. for(var j = 0; j < gradeOption.length; j++){
  4192. if(rowData.gradeORrejection == gradeOption[j].value){
  4193. cellAlias = gradeOption[j].alias;
  4194. break;
  4195. }
  4196. }
  4197. _grid.jqGrid('setCell', rowData.id, 'gradeORrejection',cellAlias);
  4198. _grid.jqGrid('setCell', rowData.id, 'isRejection',rowData.isRejection);
  4199. _grid.jqGrid('setCell', rowData.id, 'nodeGrade',cellAlias);
  4200. }
  4201. //打总分的节点不能评分
  4202. if (_needScore == '3') {
  4203. _grid.jqGrid('setCell', rowData.id, 'scoreORrejection', tmpMap['scoreORrejection'], 'not-editable-cell');
  4204. _grid.jqGrid('setCell', rowData.id, 'isRejection', rowData.isRejection, 'not-editable-cell');
  4205. _grid.jqGrid('setCell', rowData.id, 'FSCORE', tmpScore, 'not-editable-cell');
  4206. _grid.jqGrid('setCell', rowData.id, 'FCOMMENT', rowData.FCOMMENT, 'not-editable-cell');
  4207. //_grid.find("td[aria-describedby='scoreTab_" + tabIndex + "_FSCORE']").addClass('disabled')
  4208. }
  4209. }
  4210. }
  4211. }
  4212. },
  4213. // 组装数据
  4214. _getMyData: function(indicator,scoreOrRate,area,tabIndex,msgdata,fieldList,areaNeedScore){
  4215. var tabData = [];
  4216. var scoreTipsText = '';
  4217. for (var j = 0; j < indicator.length; j++) {
  4218. tabData[j] = {};
  4219. tabData[j]['FQUALIORRATION'] = indicator[j].FQUALIORRATION;
  4220. tabData[j]['FQUALIORRATIONText'] = indicator[j].FQUALIORRATION === '0' ? jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_15 : jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_16;
  4221. tabData[j]['FISVISIBLEText'] = indicator[j].FISVISIBLE === '0' ? jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_17 : jsBizMultLan.perfweb_perfscoreNewJuicer_zw20201229_i18n_18;
  4222. if(indicator[j].FREJECTION == 1 && indicator[j]['isRejection']){ // 如果是否决项
  4223. tabData[j]['scoreORrejection'] = indicator[j]['isRejection'].alias;
  4224. tabData[j]['gradeORrejection'] = indicator[j]['isRejection'].alias;
  4225. tabData[j]['isRejection'] = indicator[j]['isRejection'].value;
  4226. tabData[j]['FREJECTIONText'] = indicator[j]['isRejection'].alias;
  4227. }else{
  4228. if(scoreOrRate == 0){
  4229. tabData[j]['scoreORrejection'] = indicator[j]['targetScore'];
  4230. }else if(scoreOrRate == 1){
  4231. tabData[j]['gradeORrejection'] = indicator[j]['gradeRank'];
  4232. }
  4233. }
  4234. // 加减分
  4235. tabData[j]['subAreaType'] = area[tabIndex].subAreaType;
  4236. tabData[j]['areaAddSub'] = area[tabIndex].areaAddSub;
  4237. tabData[j]['areaAddSubDown'] = area[tabIndex].areaAddSubDown;
  4238. tabData[j]['areaAddSubUp'] = area[tabIndex].areaAddSubUp;
  4239. tabData[j]['targetAddSub'] = area[tabIndex].targetAddSub;
  4240. tabData[j]['targetAddSubDown'] = area[tabIndex].targetAddSubDown;
  4241. tabData[j]['targetAddSubUp'] = area[tabIndex].targetAddSubUp;
  4242. tabData[j]['isCanEditActValue'] = indicator[j].isCanEditActValue;
  4243. tabData[j]['id'] = indicator[j].FID;
  4244. tabData[j]['nodeGrade'] = indicator[j].gradeRank;
  4245. for(var i = 0; i < msgdata.length; i++){
  4246. // 从执行计划列表进入表单,目前后端无法传递正确的节点Id,先不做节点Id过滤
  4247. if(entryType == 'viewEvaForm' && msgdata[i].targetId == indicator[j].FID){
  4248. tabData[j]['nodeInfoList'] =JSON.stringify(msgdata[i].nodeInfoList);
  4249. }
  4250. if(entryType != 'viewMyScoreForm' && msgdata[i].canEdit != '1'){
  4251. continue;
  4252. }
  4253. if(entryType == 'viewMyScoreForm' && msgdata[i].canEdit == '1'){
  4254. continue;
  4255. }
  4256. // 考虑到会有同一个人处理并发评分的情况,因此增加了节点Id的判断
  4257. if(msgdata[i].targetId == indicator[j].FID && msgdata[i].gradeTaskNode == indicator[j].nodeTask){ // 为1才是当前节点评分信息,否则是其他人打分
  4258. tabData[j]['canEdit'] = msgdata[i].canEdit;
  4259. tabData[j]['canNegative'] = msgdata[i].canNegative;
  4260. tabData[j]['gradeTaskNode'] = msgdata[i].gradeTaskNode;
  4261. tabData[j]['canVeto'] = msgdata[i].canVeto;
  4262. tabData[j]['canOverSumRange'] = msgdata[i].canOverSumRange;
  4263. tabData[j]['lowLimit'] = msgdata[i].lowLimit;
  4264. tabData[j]['uperLimit'] = msgdata[i].uperLimit;
  4265. tabData[j]['overRange'] = msgdata[i].overRange;
  4266. // 新增赋值,在已评分页面针对并发场景做赋值操作
  4267. tabData[j]['nodeInfoList'] =JSON.stringify(msgdata[i].nodeInfoList);
  4268. tabData[j]['preNodeScoreList'] = msgdata[i].nodeScoreList;
  4269. tabData[j]['currIndiDetail'] = msgdata[i];
  4270. tabData[j]['FCOMMENT'] = msgdata[i].fcomment;
  4271. }
  4272. if(entryType == 'viewMyScoreForm' && gradeTaskNode){
  4273. tabData[j]['gradeTaskNode'] = gradeTaskNode;
  4274. }
  4275. }
  4276. // 组装评分字段tips文本
  4277. if(!scoreTipsText){
  4278. // 组装评分字段tips文本
  4279. var _params = {
  4280. canOverSumRange: tabData[j]['canOverSumRange'],
  4281. canNegative: tabData[j]['canNegative'],
  4282. lowLimit: tabData[j]['lowLimit'],
  4283. uperLimit: tabData[j]['uperLimit'],
  4284. overRange: tabData[j]['overRange']
  4285. }
  4286. scoreTipsText = that.getScroeTipsContent(area[tabIndex], _params);
  4287. }
  4288. if(!tabData[j]['currIndiDetail']){
  4289. tabData[j]['currIndiDetail'] = {};
  4290. }
  4291. tabData[j]['currIndiDetail']['fieldList'] = fieldList;
  4292. for (var i = 0; i < fieldList.length; i++) {
  4293. var fieldName = fieldList[i].colName;
  4294. var fillOverwrite = fieldList[i].fillOverwrite;
  4295. if(fieldName == "FSCORE"){ // 分数
  4296. // tabData[j][fieldName] = indicator[j]["targetScore"]
  4297. //yien 补丁11 改成获取指标汇总分数,和概览页面保持一致
  4298. tabData[j][fieldName] = indicator[j]["FSCORE"]
  4299. if(pageSource == 'PERSONHISTORY' && indicator[j].FREJECTION == 1 && indicator[j]['isRejection']){
  4300. tabData[j][fieldName] = null;
  4301. }
  4302. tabData[j]['FSCORE'] = pageSource=="PERSONHISTORY" ? tabData[j]['FSCORE'] : (tabData[j]['currIndiDetail'].targetScore || '');
  4303. }else if(fieldName == "FCOMMENT"){ // 存储指标评语名称
  4304. tabData[j]['commentName'] = fieldList[i].showName;
  4305. // tabData[j][fieldName] = indicator[j][fieldName];
  4306. }else if(fieldName == "FREJECTION"){ // 否决项
  4307. tabData[j][fieldName] = indicator[j].FREJECTION;
  4308. }else if(fieldName == "FREJECTION" && indicator[j].isRejection){ // 是否存在
  4309. tabData[j]['isRejection'] = indicator[j].isRejection.value;
  4310. }else if(indicator[j].FREJECTION == 1 && fieldName == "FTARSCORE"){ // 否决项时,目标分值无值
  4311. tabData[j][fieldName] = null;
  4312. }
  4313. // else if(fieldName == 'FACTUALCOMPLETETIME'){
  4314. // tabData[j][fieldName] = indicator[j][fieldName] ? indicator[j][fieldName].substr(0 , 10) : indicator[j][fieldName];
  4315. // }
  4316. //BT-00543726 绩效工作台—个人目标评价 列表页面 定量指标没有公式是可以列表编辑的 跟概览保持一致 8612也要同步
  4317. else if(fieldName == 'FSCORINGFORMULA'){
  4318. //BT-00653483 评分公式显示不正确,之前显示的是 indicator[j][fieldName].id jianyu_zhang 2022.02.10
  4319. tabData[j][fieldName] = $.isEmptyObject(indicator[j][fieldName]) ? '' : indicator[j][fieldName].name;
  4320. }
  4321. else if(fieldName.indexOf('FEXTEND') > -1 && fillOverwrite === '0'){
  4322. tabData[j][fieldName] = tabData[j]['currIndiDetail'][fieldName] || '';
  4323. }
  4324. else{
  4325. tabData[j][fieldName] = indicator[j][fieldName];
  4326. }
  4327. // 组装覆盖填写参数值
  4328. if(fieldName.indexOf('FEXTEND') > -1){
  4329. tabData[j]['fillOverwrite_'+fieldName] = fillOverwrite;
  4330. }
  4331. }
  4332. // tabData[j]['otherScoreList'] = JSON.stringify(msgdata);
  4333. // 区域节点为不评分,则不展示分数
  4334. if(areaNeedScore == "0" && pageSource !== 'PERSONHISTORY'){
  4335. tabData[j]['FSCORE'] = null;
  4336. }
  4337. }
  4338. var myData = {
  4339. tabData: tabData,
  4340. scoreTipsText: scoreTipsText
  4341. }
  4342. return myData;
  4343. },
  4344. // 判断是否存在否决项,存在显示整体评价处的提示,不存在隐藏
  4345. judgeWheatherThereisVetos: function(){
  4346. var htmlObj = $(".scoretabs");
  4347. var flag = false; // 不存在否决项
  4348. for(var i = 0; i < htmlObj.length; i++){
  4349. var idata = $('#scoreTab_'+i).jqGrid('getRowData');
  4350. for(var j = 0; j < idata.length; j++){
  4351. if(idata[j].isRejection == 1){ // 是否决项
  4352. flag = true;
  4353. break;
  4354. }
  4355. }
  4356. if(flag){ // 存在否决项
  4357. break;
  4358. }
  4359. }
  4360. if(flag){
  4361. if($('#wholeComment .vetomsg').length == 0){
  4362. //$('#totalScore').after('<span class="vetomsg">存在否决项</span>');
  4363. $('#totalScore').after('<span class="vetomsg">'+jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_13+'</span>');
  4364. }else{
  4365. $('#wholeComment .vetomsg').show();
  4366. }
  4367. }else{
  4368. $('#wholeComment .vetomsg').hide();
  4369. }
  4370. return flag;
  4371. },
  4372. //加载当前节点和之前节点对选中目标的评分信息
  4373. getCurrentAndPrevScoreMsg: function(FID){
  4374. var msgdata = [];
  4375. that.remoteCall({
  4376. method: "getCurrentAndPrevScore",
  4377. async: false,
  4378. param: {
  4379. gradeTaskNode: gradeTaskNode,
  4380. evaObj: evaObj,
  4381. handlerId: personId,
  4382. currentNodeLevel: currentNodeLevel,
  4383. indicatorId: FID,
  4384. myType: myType,
  4385. viewMode: viewMode,
  4386. isModifyScore: isModifyScore
  4387. },
  4388. async: false,
  4389. success: function (data) {
  4390. if (data != null) {
  4391. msgdata = data;
  4392. }
  4393. }
  4394. });
  4395. return msgdata;
  4396. },
  4397. //加载当前节点的评分参数
  4398. getCurrentScoreParams: function(){
  4399. //当前页面类型:评分页面:'1',查看考核历史页面:'2',专业应用查看评估表:'3'
  4400. var _currentPageType = '1';
  4401. if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
  4402. _currentPageType = '2';
  4403. }
  4404. else if(pageSource == undefined && viewMode ==undefined){
  4405. _currentPageType = '1';
  4406. }
  4407. else if(pageSource !=undefined && (viewMode == 'viewEvaReport' || viewMode == 'viewAllEffective')){
  4408. _currentPageType = '3';
  4409. }
  4410. var params = [];
  4411. that.remoteCall({
  4412. method: "getCurrentScoreParams",
  4413. async: false,
  4414. param: {
  4415. gradeTaskNode: gradeTaskNode,
  4416. evaObj: evaObj,
  4417. viewMode: viewMode,
  4418. currentPageType:_currentPageType,
  4419. //yien BT-00646275 切换其他评估对象,返回来指标分数不展示了
  4420. combineGradeTaskIds: combineGradeTaskIds.join(',')
  4421. },
  4422. async: false,
  4423. success: function (data) {
  4424. if (data != null) {
  4425. params = data;
  4426. }
  4427. }
  4428. });
  4429. return params;
  4430. },
  4431. /**
  4432. * 删除一条指标
  4433. */
  4434. delgoal: function () {
  4435. $('.delgoal').unbind('click').bind('click', function () {
  4436. var parent = $(this).closest('li');
  4437. var list = $('.scoreMenuWrap li');
  4438. var index = $('.scoreMenuWrap li').index(parent);
  4439. var prev = list.eq(index - 1);
  4440. var next = list.eq(index + 1);
  4441. if ((index - 1) > -1) { //有上一条数据
  4442. prev.click();
  4443. } else if ((index + 1) < $('.scoreMenuWrap li').length) { //有下一条数据
  4444. next.click();
  4445. } else { //没有数据
  4446. $('.scoreContentbox').html('');
  4447. promptImages($('.scoreContentbox'),
  4448. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_32);
  4449. }
  4450. parent.remove();
  4451. })
  4452. },
  4453. /**
  4454. * 展开他人评分
  4455. */
  4456. spreadScore: function () {
  4457. $('.spreadothers').unbind('click').bind('click', function () {
  4458. if ($(this).hasClass('spreadbox')) {
  4459. $(this).prev('.othersScoreBox').hide();
  4460. $(this).removeClass('spreadbox');
  4461. //$(this).html('展开他人评分');
  4462. $(this).html(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_52);
  4463. if (self != top) {
  4464. parent.setIframeHeight('myHistoryIframe');
  4465. }
  4466. } else {
  4467. // var height=$('.innerWrap').innerHeight();
  4468. $(this).prev('.othersScoreBox').show();
  4469. $(this).addClass('spreadbox');
  4470. $(this).html(
  4471. //'收起'
  4472. jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47
  4473. );
  4474. if (self != top) {
  4475. parent.setIframeHeight('myHistoryIframe');
  4476. }
  4477. }
  4478. })
  4479. },
  4480. /*
  4481. * 个人考核历史参数控制
  4482. * */
  4483. personHistoryParamControl : function(){
  4484. //根据视图设置参数,对页面展示进行控制(我的考核历史)
  4485. if(pageSource !=undefined && pageSource=="PERSONHISTORY"){
  4486. // var hideUnselfScore = $("#hideUnselfScore").text();
  4487. if(hideUnselfScore == 'true'){
  4488. //参数控制 隐藏非本人节点打分、评语及否决项
  4489. $("input[name='evaScore'][isself='0']").closest('div.row1.paddingbox').hide();
  4490. //BT1436623 绩效工作台--我的考核历史--视图参数这些不起作用了
  4491. $("span[name='evaScore'][isself='0']").closest('div.row1.paddingbox').hide();
  4492. $("span[isveto='veto'][isself='0']").closest('div.row1.paddingbox').hide();//否决项
  4493. }
  4494. // var hideUnselfWholeScore = $("#hideUnselfWholeScore").text();
  4495. if(hideUnselfWholeScore == 'true'){
  4496. $("div[name='wholeScore'][isself='0']").hide();
  4497. }
  4498. // var hideUnselfWholeGrade = $("#hideUnselfWholeGrade").text();
  4499. if(hideUnselfWholeGrade == 'true'){
  4500. $("div[name='editScoreDiv'][isself='0']").hide();
  4501. }
  4502. //整体评价 连同评分人和评语一并隐藏hideUnselfWholeScore
  4503. if (hideUnselfWholeScore == 'true' && hideUnselfWholeGrade == 'true') {
  4504. $("div[name='wholeScore'][isself='0']").parent().hide();
  4505. $("div[name='editScoreDiv'][isself='0']").parent().hide();
  4506. }
  4507. }
  4508. //针对打分过程,隐藏非本人打分情况,自评或者他评时
  4509. if(pageSource==""&&(entryType==""||entryType=="myselfEvalu"||entryType=="viewMyScoreForm")){
  4510. if(hideUnselfScoring == 'true'){
  4511. $("label[name='nodeHandlerId']").each(function(j,item){
  4512. if($(item).attr("value")!=personId){
  4513. $(item).parent().hide();
  4514. }
  4515. });
  4516. }
  4517. // var hideUnselfWholeScore = $("#hideUnselfWholeScore").text();
  4518. if(hideUnselfWholeScoring == 'true'){
  4519. $("label[name='WholenodeHandlerId']").each(function(j,item){
  4520. if($(item).attr("value")!=personId){
  4521. $(item).parent().children("div[name='wholeScore']").hide();
  4522. }
  4523. });
  4524. }
  4525. // var hideUnselfWholeGrade = $("#hideUnselfWholeGrade").text();
  4526. if(hideUnselfWholeGrading == 'true'){
  4527. $("label[name='WholenodeHandlerId']").each(function(j,item){
  4528. if($(item).attr("value")!=personId){
  4529. $(item).parent().children("div[name='editScoreDiv']").hide();
  4530. }
  4531. });
  4532. }
  4533. //整体评价 hideUnselfWholeCommenting
  4534. if(hideUnselfWholeCommenting == 'true'){
  4535. $("label[name='WholenodeHandlerId']").each(function(j,item){
  4536. if($(item).attr("value")!=personId){
  4537. $(item).parent().children("div[name='editTextareaDiv']").hide();
  4538. }
  4539. });
  4540. }
  4541. //整体评价 hideUnselfWholeCommenting
  4542. if(hideUnselfWholeScoring == 'true'&&hideUnselfWholeGrading == 'true'&&hideUnselfWholeCommenting == 'true'){
  4543. $("label[name='WholenodeHandlerId']").each(function(j,item){
  4544. if($(item).attr("value")!=personId){
  4545. $(item).parent().hide();
  4546. }
  4547. });
  4548. }
  4549. }
  4550. },
  4551. //正态分布信息
  4552. getDistributionInfo: function () {
  4553. if (isTeamEvalu != 1) {
  4554. return;
  4555. }
  4556. //正态分布信息
  4557. if (isShowDistribution == '1') {//必须打等级
  4558. that.remoteCall({
  4559. method: "getDistributionInfo",
  4560. param: {periodId: periodId},
  4561. async: true,
  4562. success: function (data) {
  4563. if (data) {
  4564. var perfPeriod = data.perfPeriod;
  4565. var perfPlan = data.perfPlan;
  4566. var all = data.all;
  4567. var scored = data.scored;
  4568. var distributionInfoDivDom = $("#distributionInfoDiv");
  4569. distributionInfoDivDom.remove();
  4570. var distributionInfoHtml = '<div id="distributionInfoDiv"><table class="table table-hover" id="tablebox">\n' +
  4571. ' <tr>\n' +
  4572. ' <td colspan="12">'
  4573. + perfPlan + ' ' + perfPeriod
  4574. //+ ' 需评价' + all + '人, ' + '<span style="color: #00afff">已评分' + scored + '人</span>, ' + '已评分等级分布情况如下:'
  4575. + 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
  4576. '</td>\n' +
  4577. ' </tr>\n';
  4578. if (data.leveStrMap) {
  4579. distributionInfoHtml = distributionInfoHtml + '<tr>\n';
  4580. $.each(data.leveStrMap, function (k, v) {
  4581. distributionInfoHtml = distributionInfoHtml + '<td> ' + k + '(' + v + ') </td>\n';
  4582. });
  4583. distributionInfoHtml = distributionInfoHtml + '</tr>\n';
  4584. }
  4585. distributionInfoHtml = distributionInfoHtml + '</table></div>';
  4586. // $(distributionInfoHtml).insertBefore($(".distributionInfo"));
  4587. $('#content').prepend(distributionInfoHtml);
  4588. }
  4589. //console.log(data);
  4590. }
  4591. });
  4592. }
  4593. },
  4594. /**
  4595. * 初始化配置参数
  4596. */
  4597. initConfigData:function(){
  4598. isManualJudgeGrade= this.initData.isManualJudgeGrade;//单人评分页面-是否手工调整等级
  4599. isShowLevelScoreRange= this.initData.isShowLevelScoreRange;//单人评分页面-录入等级是否显示分数
  4600. // scoreLocate= this.initData.scoreLocate;// 单人评分页面-打分默认为定位位置
  4601. isShowAuditedWholeForm= this.initData.isShowAuditedWholeForm;//已评分列表-是否允许查看后续已审核节点评分详情
  4602. // isAutoSubmitVal= this.initData.isAutoSubmit;//单人评分页面-相邻节点同一人直接提交
  4603. // rateIsAutoCaluWholeGrade= this.initData.rateIsAutoCaluWholeGrade;//单人评分页面-是否自动计算整体评价等级
  4604. hideUnselfWholeGrade= this.initData.hideUnselfWholeGrade;//单人评分页面-是否隐藏非本人整体评价等级
  4605. hideUnselfWholeScore= this.initData.hideUnselfWholeScore;//单人评分页面-是否隐藏非本人整体评价总分
  4606. hideReviseResultVal= this.initData.hideReviseResult;//单人评分页面-是否隐藏修订结果
  4607. // hideConfirmResultVal= this.initData.hideConfirmResult;//单人评分页面-是否隐藏确认按钮及列表确认状态
  4608. hideUnselfScore= this.initData.hideUnselfScore;//单人评分页面-是否隐藏非本人节点得分或等级
  4609. hideReviseReasonVal= this.initData.hideReviseReason;//单人评分页面-是否隐藏修订原因
  4610. // scoreAndCommentDisplayMode= this.initData.scoreAndCommentDisplayMode;//单人评分页面-评分评语显示模式
  4611. // hideAppealResultVal= this.initData.hideAppealResult;//单人评分页面-是否隐藏申诉按钮及列表申诉状态
  4612. hideAppealResult= isOrg=="0"?this.initData.khjgqrAppeal:this.initData.zzkhjgqrAppeal;//单人评分页面-是否隐藏申诉按钮
  4613. hideConfirmResult= isOrg=="0"?this.initData.khjgqrConfirm:this.initData.zzkhjgqrConfirm;//单人评分页面-是否隐藏确认按钮
  4614. hideUnselfScoring =this.initData.hideUnselfScoring;//单人评分页面-是否隐藏非本人节点得分或等级(针对打分过程)
  4615. hideUnselfWholeGrading =this.initData.hideUnselfWholeGrading;//单人评分页面-是否隐藏非本人整体评价等级(针对打分过程)
  4616. hideUnselfWholeScoring=this.initData.hideUnselfWholeScoring;//单人评分页面-是否隐藏非本人整体评价总分(针对打分过程)
  4617. hideUnselfWholeCommenting=this.initData.hideUnselfWholeCommenting;//单人评分页面-是否隐藏非本人整体评价评论(针对打分过程)
  4618. if (isNumber(this.initData.uploadAttachSize)){
  4619. uploadAttachSize= this.initData.uploadAttachSize;//附件上传大小
  4620. }
  4621. //隐藏节点处理人权重
  4622. if (this.initData.hideHandlerWeight=='false'&& pageSource=='PERSONHISTORY'){ //评分时的列表概览权重
  4623. hideNodeWeight ='false';
  4624. }
  4625. if (this.initData.hideNodeWeight =='false' && pageSource!='PERSONHISTORY'){ //我的考核历史列表概览权重
  4626. hideNodeWeight ='false';
  4627. }
  4628. }
  4629. })
  4630. //校验列表字段值
  4631. function inputOnblur(rowid, cellname, value, iRow, iCol, rowData, _grid) {
  4632. var tr = _grid[0].rows.namedItem(rowid),
  4633. td = tr.cells[iCol],
  4634. startGradeTaskNode = rowData.gradeTaskNode,flag = true;
  4635. var objVal = value;
  4636. var colAttr = _grid.getColProp(cellname);
  4637. var fieldType = colAttr.fieldType;
  4638. if (objVal) {
  4639. objVal = objVal.trim();
  4640. }
  4641. var errObj = new Object();
  4642. var indicator = rowData.id;
  4643. errObj.indicator = indicator;
  4644. errObj.errorType = cellname;
  4645. existInArrThenDelete(_noPassVerifyArr, errObj);
  4646. var inputObj = $("input[indicator='" + indicator + "']");
  4647. _gcanOverRang = rowData.canOverSumRange;
  4648. _gcanNegative = rowData.canNegative;
  4649. _glowLimit = parseFloat(rowData.lowLimit);
  4650. _gupLimit = parseFloat(rowData.uperLimit);
  4651. _overRang = parseFloat(rowData.overRange);
  4652. _ftarscore= parseFloat(rowData.FTARSCORE);
  4653. _subAreaType = rowData.subAreaType;
  4654. _areaAddSub = rowData.areaAddSub;
  4655. _areaAddSubDown = rowData.areaAddSubDown;
  4656. _areaAddSubUp = rowData.areaAddSubUp;
  4657. _targetAddSub = rowData.targetAddSub;
  4658. _targetAddSubDown = rowData.targetAddSubDown;
  4659. _targetAddSubUp = rowData.targetAddSubUp;
  4660. // if(!objVal){
  4661. // return false;
  4662. // }
  4663. // objVal = Number(objVal);
  4664. if((cellname == 'FACTUALCOMPLEVALUE' || cellname == 'FTARGETVALUE') && rowData.FQUALIORRATION === '1'){ // 定量校验目标值和实际完成值字段类型为数值型
  4665. flag = isNumberVerify2(value,1);
  4666. if(!false){ // 定性指标可输入其他类型
  4667. //提示语
  4668. // 请输入最多两位小数的数字
  4669. errObj.errortext = jsBizMultLan.perfweb_perfscoreNew_20210926ht_20;
  4670. }
  4671. }else if(cellname == 'FACTUALCOMPLETEDESC' || cellname === 'FCOMMENT' || fieldType === 'Text' || fieldType === 'LongText'){
  4672. if(value.length > 2000){
  4673. flag = false;
  4674. errObj.errortext = shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  4675. [2000]);
  4676. }
  4677. }else if(cellname == 'scoreORrejection' || cellname == 'FSCORE'){ // 校验打分
  4678. objVal = Number(objVal);
  4679. var dataReg = /^(-?\d+)(\.\d+)?$/; //浮点数
  4680. if (!dataReg.test(objVal)) {
  4681. //errObj.errortext = '请输入数值!';
  4682. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_36;
  4683. flag = false;
  4684. } else {
  4685. //加减分的特殊处理
  4686. if (_subAreaType == "1") {
  4687. var flag0 = true;
  4688. if (_targetAddSub = "1") {
  4689. if (flag0 && "" != _targetAddSubDown && parseFloat(_targetAddSubDown) > objVal) {
  4690. errObj.errortext = $.perfwebI18n.tableConstant.msg12 + _targetAddSubDown;
  4691. flag0 = false;
  4692. }
  4693. if (flag0 && "" != _targetAddSubUp && parseFloat(_targetAddSubUp) < objVal) {
  4694. errObj.errortext = $.perfwebI18n.tableConstant.msg13 + _targetAddSubUp;
  4695. flag0 = false;
  4696. }
  4697. }
  4698. if (_areaAddSub == "1") {
  4699. var liList = $(tr).parent().find("tr.ui-widget-content");
  4700. var areaSumScore0 = 0;
  4701. if (liList && liList.length > 0) {
  4702. for (var ii = 0; ii < liList.length; ii++) {
  4703. var td = liList[ii].cells[iCol];
  4704. var s0 = $(td).text();
  4705. if (s0) {
  4706. areaSumScore0 += parseFloat(s0);
  4707. }
  4708. }
  4709. }
  4710. if (flag0 && "" != _areaAddSubDown && parseFloat(_areaAddSubDown) > areaSumScore0) {
  4711. errObj.errortext = $.perfwebI18n.tableConstant.msg14 + _areaAddSubDown;
  4712. flag0 = false;
  4713. }
  4714. if (flag0 && "" != _areaAddSubUp && parseFloat(_areaAddSubUp) < areaSumScore0) {
  4715. errObj.errortext = $.perfwebI18n.tableConstant.msg15 + _areaAddSubUp;
  4716. flag0 = false;
  4717. }
  4718. }
  4719. if(objVal > 99999.99){
  4720. errObj.errortext = shr.formatMsg($.perfwebI18n.tableConstant.msg20,[99999.99]) ;
  4721. flag0 = false;
  4722. }
  4723. if(objVal < -99999.99){
  4724. errObj.errortext = shr.formatMsg($.perfwebI18n.tableConstant.msg21,[-99999.99]) ;
  4725. flag0 = false;
  4726. }
  4727. if (flag0) {
  4728. $(td).removeClass("errorval");
  4729. if (cellname == 'FSCORE') {
  4730. calcTotoalScore(startGradeTaskNode);
  4731. }
  4732. _noPassVerifyArr = new Array();
  4733. } else {
  4734. _grid.jqGrid('setCell', rowData.id, cellname, value, 'errorval');
  4735. shr.showWarning({
  4736. message: errObj.errortext,
  4737. hideAfter: 3
  4738. });
  4739. _noPassVerifyArr.push(errObj);
  4740. }
  4741. return;
  4742. }
  4743. if (_gcanOverRang == 0) {//分数不能超出分制范围
  4744. if (_gcanNegative == 0) {//不允许负分
  4745. var reg = /^\d+(\.\d{1,2})?$/;
  4746. if (!reg.test(objVal)) {
  4747. //errObj.errortext = '请输入正数,可带2位小数!';
  4748. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_37;
  4749. flag = false;
  4750. } else {
  4751. if (globalIndicatorData.scoringWay == 1) {
  4752. var scoreLimit = rowData.FTARSCORE;
  4753. if (scoreLimit && parseFloat(objVal) > parseFloat(scoreLimit)) {
  4754. //errObj.errortext = '分数大于目标分值上限,请重新输入!';
  4755. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
  4756. flag = false;
  4757. }
  4758. } else {
  4759. if (objVal < _glowLimit) {
  4760. //errObj.errortext = '分数小于分制控制的分数下限,请重新输入!';
  4761. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
  4762. flag = false;
  4763. } else if (objVal > _gupLimit) {
  4764. //errObj.errortext = '分数大于分制控制的分数上限,请重新输入!';
  4765. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
  4766. flag = false;
  4767. }
  4768. }
  4769. }
  4770. } else {
  4771. //允许为负分
  4772. if (globalIndicatorData.scoringWay == 1) {
  4773. var scoreLimit = rowData.FTARSCORE;
  4774. if (scoreLimit && parseFloat(objVal) > parseFloat(scoreLimit)) {
  4775. //errObj.errortext = '分数大于目标分值上限,请重新输入!';
  4776. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
  4777. flag = false;
  4778. }
  4779. } else {
  4780. if (objVal < _glowLimit && objVal > 0) {
  4781. //errObj.errortext = '分数小于分制控制的分数下限,请重新输入!';
  4782. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
  4783. flag = false;
  4784. } else if (objVal > _gupLimit) {
  4785. //errObj.errortext = '分数大于分制控制的分数上限,请重新输入!';
  4786. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
  4787. flag = false;
  4788. }
  4789. }
  4790. }
  4791. } else {//可正向超出分制范围
  4792. if(_overRang != null || _overRang != undefined){//勾选参数,不维护超出上限,那么打分时输入值不控制
  4793. if(globalIndicatorData.scoringWay == 1){
  4794. //按分值评分,“允许评分超出分值范围,超出上限□%“
  4795. var recordIndWeigVal = _ftarscore ; //指标分值
  4796. var limitUp = parseFloat((parseFloat(recordIndWeigVal)*(1+_overRang/100)).toFixed(2));
  4797. var limitLow = 0 - parseFloat((parseFloat(recordIndWeigVal) * (_overRang / 100)).toFixed(2));
  4798. if (isNumber(limitUp) && parseFloat(objVal) > limitUp) {
  4799. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_18;
  4800. flag = false;
  4801. } else if (isNumber(limitLow) && objVal < limitLow) {
  4802. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1629278085_i18n_19;
  4803. flag = false;
  4804. }
  4805. }
  4806. else{
  4807. var limitUp = parseFloat((_gupLimit + (_gupLimit - _glowLimit)*(_overRang/100)).toFixed(2));
  4808. var limitLow = parseFloat((_glowLimit - (_gupLimit - _glowLimit)*(_overRang/100)).toFixed(2));
  4809. if ( objVal < limitLow) {
  4810. // $(_this).focus();
  4811. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_19;
  4812. flag = false;
  4813. } else if (objVal > limitUp) {
  4814. // $(_this).focus();
  4815. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_17;
  4816. flag = false;
  4817. }
  4818. }
  4819. }
  4820. if (_gcanNegative == 0) {//不允许负分
  4821. var reg = /^\d+(\.\d{1,2})?$/;
  4822. if (!reg.test(objVal)) {
  4823. //errObj.errortext = '请输入正数,可带2位小数!';
  4824. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_37;
  4825. flag = false;
  4826. }
  4827. }
  4828. }
  4829. }
  4830. }else if(cellname.indexOf('FEXTEND') > -1){
  4831. if(fieldType === 'Number'){
  4832. flag = isNumberVerify(value,1);
  4833. if(!flag){
  4834. errObj.errortext = jsBizMultLan.perfweb_perfscoreNew_20210926ht_20;
  4835. }
  4836. }
  4837. }
  4838. if(flag){
  4839. $(td).removeClass("errorval");
  4840. if(cellname == 'scoreORrejection' || cellname == 'FSCORE'){
  4841. calcTotoalScore(startGradeTaskNode);
  4842. }
  4843. }else{
  4844. _grid.jqGrid('setCell', rowData.id, cellname, value, 'errorval');
  4845. shr.showWarning({
  4846. message: errObj.errortext,
  4847. hideAfter: 3
  4848. });
  4849. _noPassVerifyArr.push(errObj);
  4850. }
  4851. }
  4852. function wholeCommentOnblur(_this) {
  4853. var objVal = $(_this).val();
  4854. var msgShow = $("span[id='WHOLECOMMENT']");
  4855. var errObj = new Object();
  4856. existInArrThenDelete(_noPassVerifyArr, errObj);
  4857. var commentLen = objVal.length;
  4858. if (commentLen > 2000) {//限制目标评价为2000个字符
  4859. $(_this).focus();
  4860. //msgShow.text('指标评语最大支持2000个字符,您目前已输入'+commentLen+'个字符!');
  4861. msgShow.text(
  4862. shr.formatMsg(jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_48,
  4863. [2000]));
  4864. msgShow.show();
  4865. _noPassVerifyArr.push(errObj);
  4866. } else {
  4867. msgShow.hide();
  4868. }
  4869. }
  4870. //目标评价长度校验
  4871. function targetCommentOnblur(_this,eventName) {
  4872. var maxlength = 2000;
  4873. var objVal = $(_this).val();
  4874. var msgShow = $('span.showmsg');
  4875. var errObj = new Object();
  4876. var indicator = $(_this).attr("indicator");
  4877. errObj.indicator = indicator;
  4878. existInArrThenDelete(_noPassVerifyArr, errObj);
  4879. var commentLen = objVal.length;
  4880. if(eventName == 'propertychange'){ // propertychange事件
  4881. if (commentLen > maxlength) {//限制目标评价为2000个字符2000
  4882. $(_this).val(objVal.substr(0,maxlength));
  4883. objVal = $(_this).val();
  4884. commentLen = objVal.length;
  4885. }
  4886. msgShow.text(shr.formatMsg(jsBizMultLan.perfweb_perfscore_1586254513646_i18n_62,
  4887. [commentLen,maxlength-commentLen]));
  4888. msgShow.show();
  4889. }else{ // blur事件
  4890. msgShow.hide();
  4891. }
  4892. }
  4893. function existInArrThenDelete(arr, obj) {
  4894. for (var i = 0; i < arr.length; i++) {
  4895. if (arr[i].errorType) {
  4896. if (arr[i].indicator == obj.indicator && obj.errorType == arr[i].errorType) {
  4897. arr.splice(i, 1);
  4898. }
  4899. } else {
  4900. if (arr[i].indicator == obj.indicator) {
  4901. arr.splice(i, 1);
  4902. }
  4903. }
  4904. }
  4905. return;
  4906. }
  4907. //单击其他地方下拉选择框隐藏
  4908. $(document).click(function (e) {
  4909. if (!$(e.target).hasClass('instructions') && !$(e.target).hasClass('instructionsboxwrap') && $(e.target).closest('.instructionsboxwrap').length < 1) {
  4910. $(".instructionsboxwrap").fadeOut();
  4911. }
  4912. });
  4913. //计算总分
  4914. function calcTotoalScore(startGradeTaskNode) {
  4915. if (_noPassVerifyArr.length > 0) {
  4916. // shr.showWarning({message: _noPassVerifyArr[0].errortext});
  4917. // //自动点击第一条评分不通过的指标
  4918. // $("li[numval='" + _noPassVerifyArr[0].indicator + "']").click();
  4919. return false;
  4920. }
  4921. // $(lastTable).jqGrid("saveCell",lastrow,lastcell);
  4922. $('.scoretabs').each(function(index,tab){
  4923. $(tab).jqGrid('editStop');
  4924. })
  4925. var scoreObj = that.assembleScoreData();
  4926. if(!scoreObj){
  4927. return false;
  4928. }
  4929. var nodeSumScoreList;
  4930. //保存评分
  4931. that.remoteCall({
  4932. /* method: "calcTotalScore",
  4933. param: {
  4934. scoreObj: JSON.stringify(scoreObj)
  4935. },*/
  4936. method: "saveScore",
  4937. param: {
  4938. needScore:_needScore,
  4939. scoreObj: JSON.stringify(scoreObj)
  4940. },
  4941. async: false, //不能使用异步,下面要使用结果数据计算等级
  4942. success: function (data) {
  4943. if (data != null && data.result == '200') {
  4944. nodeSumScore = data.nodeSumScore;
  4945. nodeGrade = data.nodeGrade;
  4946. matrixDetail = data.detail;
  4947. nodeSumScoreList = data.nodeSumScoreList;
  4948. var gtnLen = nodeSumScoreList.length;
  4949. for(var i=0; i<gtnLen; i++){
  4950. var nsumscore = nodeSumScoreList[i].nodeSumscore ? parseFloat(nodeSumScoreList[i].nodeSumscore).toFixed(2) : '';
  4951. // if(null != nsumscore && "" != nsumscore){
  4952. $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(nsumscore);
  4953. $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeSumScore']").text(nsumscore);
  4954. // }else{
  4955. // //$('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]').text("");
  4956. // }
  4957. var isVetoZero = nodeSumScoreList[i].isVetoZero;
  4958. if(isVetoZero == '1'){
  4959. $($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().show();
  4960. }else{
  4961. $($('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"]')).next().hide();
  4962. }
  4963. if(nodeSumScoreList[i].nodeGrade){
  4964. $('[id="wholeGrade_' + nodeSumScoreList[i].gradeTaskNode+ '"]').find("option[id='" + nodeSumScoreList[i].nodeGrade + "']").attr("selected", "selected");
  4965. $("li[gradetasknode='" +nodeSumScoreList[i].gradeTaskNode+ "']").find("i[name='nodeGrade']").text(nodeSumScoreList[i].nodeGrade);
  4966. }
  4967. }
  4968. }
  4969. }
  4970. });
  4971. /**
  4972. * 自动计算等级
  4973. */
  4974. var grade = $("#wholeComment").find("select").val();
  4975. if (isManualJudgeGrade == 2 || isManualJudgeGrade == 0) {
  4976. // var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.portal.handler.PerfBatchScoreHandler&uipk="+shr.getUipk() +
  4977. // "&method=getLeaveByScore&shruicode="+shr.getUrlRequestParam("shruicode");
  4978. if(nodeSumScoreList){
  4979. for(var i=0; i< nodeSumScoreList.length; i++){
  4980. that.remoteCall({
  4981. method: "getLeaveByScore",
  4982. async: false,
  4983. param: {
  4984. nodeSumScore: $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(),
  4985. id: nodeSumScoreList[i].gradeTaskNode
  4986. },
  4987. //data: {"nodeSumScore": $('#wholeComment').find('span[gtnname="'+nodeSumScoreList[i].gradeTaskNode+'"] input').val(), "id": nodeSumScoreList[i].gradeTaskNode},
  4988. success: function (data) {
  4989. //这里的结果类似 {data: "差E"}
  4990. console.log(data);
  4991. if (data.data) {
  4992. $("#wholeComment").find("select").find('option').attr('selected', false);
  4993. $("#wholeComment").find("[id='wholeGrade_"+nodeSumScoreList[i].gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
  4994. //$("#wholeComment").find("select").val(data.data);
  4995. $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  4996. }
  4997. }
  4998. });
  4999. }
  5000. }else{
  5001. that.remoteCall({
  5002. method: "getLeaveByScore",
  5003. async: false,
  5004. param: {
  5005. nodeSumScore: $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(),
  5006. id:gradeTaskNode
  5007. },
  5008. data: {"nodeSumScore": $('#wholeComment').find('span[gtnname="'+startGradeTaskNode+'"] input').val(), "id": gradeTaskNode},
  5009. success: function (data) {
  5010. //这里的结果类似 {data: "差E"}
  5011. console.log(data);
  5012. if (data.data) {
  5013. $("#wholeComment").find("select").find('option').attr('selected', false);
  5014. $("#wholeComment").find("[id='wholeGrade_"+gradeTaskNode+"']").find("option[value='" + data.data + "']").attr('selected', true);
  5015. //$("#wholeComment").find("select").val(data.data);
  5016. $('.workerList li.current').find("i[name='nodeGrade']").text(data.data);
  5017. }
  5018. }
  5019. });
  5020. }
  5021. }
  5022. }
  5023. //初始化定性定量下拉列表
  5024. function initQualiOrRationSelectEven(indicatorId, isUnit) {
  5025. var qualiOrRationId = "FQUALIORRATION" + indicatorId;
  5026. // var $qualiOrRation = $('#' + qualiOrRationId);
  5027. var $qualiOrRation = $('input[id="' + qualiOrRationId + '"]');
  5028. // 初始化下拉选择框
  5029. var options = [
  5030. {value:0,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_16},
  5031. {value:1,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_15}
  5032. ];
  5033. var qualiOrRation = $qualiOrRation.val() ? $qualiOrRation.val() : 0;
  5034. $qualiOrRation.shrSelect({
  5035. // 'id': qualiOrRationId,
  5036. 'id': encodeURIComponent(qualiOrRationId),
  5037. 'data': options
  5038. });
  5039. //如果分组未下达,则绑定选中事件
  5040. if (isUnit != 1) {
  5041. $qualiOrRation.shrSelect("option", "onChange", function (e, value) {
  5042. var selectVal = value.selectVal;
  5043. // 判断是定性定量
  5044. if (selectVal == 0) {
  5045. //定性,屏蔽评分公式和单位
  5046. disableUnitAndFormulaTag(indicatorId);
  5047. } else if (selectVal == 1) {
  5048. //定量,打开评分公式和单位
  5049. // var $unit = $('#FUNIT' + indicatorId);
  5050. var $unit = $('input[id="' + 'FUNIT' + indicatorId + '"]');
  5051. // var $scoringFormula = $('#FSCORINGFORMULA' + indicatorId);
  5052. var $scoringFormula = $('input[id="' + 'FSCORINGFORMULA' + indicatorId + '"]');
  5053. if ($unit.attr('fname')) {
  5054. $unit.removeAttr('disabled');
  5055. }
  5056. if ($scoringFormula.attr('fname')) {
  5057. $scoringFormula.shrPromptBox('enable');
  5058. }
  5059. }
  5060. });
  5061. } else {
  5062. //屏蔽选择
  5063. $qualiOrRation.shrSelect('disable', true);
  5064. }
  5065. $qualiOrRation.shrSelect('setValue', qualiOrRation);
  5066. }
  5067. //初始化定性定量下拉列表
  5068. function initIsVisibleSelectEven(indicatorId, isUnited) {
  5069. // 初始化下拉选择框
  5070. // var $isVisible = $('#FISVISIBLE' + indicatorId);
  5071. var $isVisible = $('input[id="' + 'FISVISIBLE' + indicatorId + '"]');
  5072. var options = [
  5073. {value:0,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_2},
  5074. {value:1,alias:jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_21}
  5075. ];
  5076. var selectedVal = $isVisible.val() ? $isVisible.val() : 0;
  5077. $isVisible.shrSelect({
  5078. // 'id': 'FISVISIBLE' + indicatorId,
  5079. 'id': encodeURIComponent('FISVISIBLE' + indicatorId),
  5080. 'data': options
  5081. });
  5082. $isVisible.shrSelect('setValue', selectedVal);
  5083. //如果是统一下达,则屏蔽选择按钮
  5084. if (isUnited == 1) {
  5085. $isVisible.shrSelect('disable', true);
  5086. }
  5087. }
  5088. /**
  5089. * 屏蔽单位和公式
  5090. */
  5091. function disableUnitAndFormulaTag(indicatorId) {
  5092. // var $unit = $('#FUNIT' + indicatorId);
  5093. var $unit = $('input[id="' + 'FUNIT' + indicatorId + '"]');
  5094. // var $scoringFormula = $('#FSCORINGFORMULA' + indicatorId);
  5095. var $scoringFormula = $('input[id="' + 'FSCORINGFORMULA' + indicatorId + '"]');
  5096. if ($unit.attr('fname')) {
  5097. $unit.val('');
  5098. $unit.attr('disabled', 'disabled');
  5099. }
  5100. if ($scoringFormula.attr('fname')) {
  5101. $scoringFormula.shrPromptBox("setValue", '');
  5102. $scoringFormula.shrPromptBox('disable');
  5103. }
  5104. }
  5105. /**
  5106. * 初始化业绩日期
  5107. * 兼容IE
  5108. * @param indicateId
  5109. * @param isUnited
  5110. */
  5111. function initDateEven(tagId , isUnited) {
  5112. // var $tag = $('#' + tagId);
  5113. var $tag = $('input[id="'+ tagId +'"]');
  5114. var selectedVal = $tag.val();
  5115. if(selectedVal) {
  5116. //截取日期部分
  5117. selectedVal = selectedVal.substr(0 , 10);
  5118. $tag.shrDateTimePicker({
  5119. // value: selectedVal,
  5120. isShowUTC:false,
  5121. ctrlType: 'Date'
  5122. });
  5123. $tag.shrDateTimePicker('setValue',selectedVal);
  5124. }else {
  5125. var currentDate = new Date();
  5126. var currentDateStr = currentDate.getFullYear();
  5127. if(currentDate.getMonth() < 9) {
  5128. currentDateStr += "-0" + (currentDate.getMonth() + 1);
  5129. }else {
  5130. currentDateStr += "-" + (currentDate.getMonth() + 1);
  5131. }
  5132. if(currentDate.getDate() < 10) {
  5133. currentDateStr += "-0" + currentDate.getDate();
  5134. }else {
  5135. currentDateStr += "-" + currentDate.getDate();
  5136. }
  5137. $tag.shrDateTimePicker({
  5138. // value: currentDateStr,
  5139. isShowUTC:false,
  5140. ctrlType: 'Date'
  5141. }); // 设置完成时间
  5142. $tag.shrDateTimePicker('setValue',currentDateStr)
  5143. }
  5144. if(isUnited == 1) {
  5145. //屏蔽选择
  5146. $tag.shrDateTimePicker('disable');
  5147. }
  5148. }
  5149. /**
  5150. * 初始化否决项
  5151. * @param tagObj
  5152. * @param isUnited
  5153. */
  5154. function initRejection(tagId, isUnited) {
  5155. var $tag = $('input[id="' + tagId + '"]');
  5156. $tag.shrCheckbox();
  5157. var $tagHidden = $('input[id="HIDDEN_' + tagId + '"]');
  5158. var selectedVal = 0;
  5159. if ($tagHidden.length > 0) {
  5160. selectedVal = $tagHidden.val();
  5161. }
  5162. if (selectedVal != '') {
  5163. if (selectedVal == 1) {
  5164. $tag.shrCheckbox('check')
  5165. }
  5166. }
  5167. if (isUnited == 1) {
  5168. //屏蔽选择
  5169. $tag.attr({'readonly': 'true', 'disabled': 'disabled'});
  5170. }
  5171. }
  5172. /**
  5173. * 初始化否决项评分选择框
  5174. * @param targetId
  5175. */
  5176. function initRejectionScore(targetId) {
  5177. var vetoVal = $('input[name="HIDDENVETO_' + targetId + '"][gradeNode="' + gradeTaskNode + '"]');
  5178. var selectedVal = 0;
  5179. var canEdit = 0;
  5180. var $tag = $('span[name="vetospan_' + targetId + '"]');
  5181. $tag.each(function (i, el) {
  5182. var inputObj = $($(el).parent().parent().find("input"));
  5183. selectedVal = inputObj.val();
  5184. if (!selectedVal) {
  5185. inputObj = $($(el).parent().parent().parent().find("input"));
  5186. selectedVal = inputObj.val();
  5187. }
  5188. canEdit = inputObj.attr("canEdit");
  5189. $(el).removeClass("radio-checked");
  5190. if (selectedVal != '' && selectedVal == 1) {
  5191. if ($(el).attr("data-value") == 1) {
  5192. $(el).addClass("radio-checked");
  5193. }
  5194. _gExistRejection = 1;
  5195. } else {
  5196. if ($(el).attr("data-value") == 0) {
  5197. $(el).addClass("radio-checked");
  5198. }
  5199. }
  5200. if (canEdit != 1) {
  5201. $(el).attr({'readonly': 'true', 'disabled': 'disabled'});
  5202. }
  5203. });
  5204. }
  5205. /**
  5206. * yien
  5207. * 返回没有分数范围的等级
  5208. * @param selectedKey
  5209. */
  5210. function getLevelWidthoutScoreRange(selectedKey) {
  5211. if (typeof selectedKey != "undefined") {
  5212. var endIndex = selectedKey.indexOf('(');
  5213. if (endIndex != -1) {
  5214. selectedKey = selectedKey.substr(0, endIndex);
  5215. }
  5216. }
  5217. return selectedKey;
  5218. }
  5219. /**
  5220. * 确认考核结果
  5221. */
  5222. function confirm() {
  5223. /*var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler&method=confirm";
  5224. shr.ajax({
  5225. type: "post",
  5226. async: false,
  5227. url: url,
  5228. data: {id : evaResultId,isOrg: isOrg},
  5229. success: function (res) {
  5230. if (res.result === 'error') {
  5231. shr.showError({message : res.summary})
  5232. } else {
  5233. //shr.showInfo({message : '操作成功!'});
  5234. shr.showInfo({message: jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_10});
  5235. }
  5236. },
  5237. error: function (res) {
  5238. console.log('res', res)
  5239. }
  5240. });*/
  5241. // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
  5242. that.remoteCall({
  5243. method: "confirm",
  5244. param: {
  5245. id : evaResultId,
  5246. isOrg: isOrg
  5247. },
  5248. async: false,
  5249. success: function (data) {
  5250. if (data.result === 'error') {
  5251. shr.showError({message : data.summary})
  5252. } else {
  5253. shr.showInfo({message : jsBizMultLan.perf_perfscoreNewJuicer_1592900104294_i18n_10});
  5254. window.history.back(-1);//返回上一级列表
  5255. }
  5256. },
  5257. });
  5258. }
  5259. /**
  5260. * 确认考核结果
  5261. */
  5262. function confirmResult() {
  5263. // 确认考核结果前检查是否有未提交的申诉单据
  5264. /*var url = shr.getContextPath() + "/dynamic.do?handler=com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler&method=confirmCheck";
  5265. shr.ajax({
  5266. type: "post",
  5267. async: false,
  5268. url: url,
  5269. data: {id : evaResultId,isOrg: isOrg},
  5270. success: function (res) {
  5271. if (res.result === 'error') {
  5272. shr.showError({message : res.summary})
  5273. } else {
  5274. if (res && res.appealBillSaved == 1) {
  5275. //shr.showConfirm('您存在未提交的申诉单据,确认后该申诉单据将作废!', function() {
  5276. shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_17, function() {
  5277. confirm();
  5278. });
  5279. } else {
  5280. confirm();
  5281. }
  5282. }
  5283. },
  5284. error: function (res) {
  5285. console.log('res', res)
  5286. }
  5287. });*/
  5288. // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
  5289. that.remoteCall({
  5290. method: "confirmCheck",
  5291. param: {
  5292. id : evaResultId,
  5293. isOrg: isOrg
  5294. },
  5295. async: false,
  5296. success: function (res) {
  5297. if (res.result === 'error') {
  5298. shr.showError({message : res.summary})
  5299. } else {
  5300. if (res && res.appealBillSaved == 1) {
  5301. //shr.showConfirm('您存在未提交的申诉单据,确认后该申诉单据将作废!', function() {
  5302. shr.showConfirm(jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_17, function() {
  5303. confirm();
  5304. });
  5305. } else {
  5306. confirm();
  5307. }
  5308. }
  5309. },
  5310. });
  5311. }
  5312. /**
  5313. * 申诉
  5314. */
  5315. function appeal() {
  5316. //PBG169113 工作流 --审批中 -页面打不开
  5317. //BT1464136 组织考核历史--列表页面,点击申诉,报500
  5318. /*shr.callHandler({
  5319. handler:"com.kingdee.shr.perfweb.evaluresult.handler.EvaluCardListHandler",
  5320. action:"appeal",
  5321. param: {
  5322. id : evaResultId,
  5323. isOrg: isOrg //补丁10 组织考核-yien
  5324. },
  5325. async: false,
  5326. success:function(data){
  5327. var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
  5328. if(isOrg == '1') {
  5329. uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill4Org.form";
  5330. }
  5331. var methodchagge= data.operateState ? data.operateState.toLowerCase():null;
  5332. if(methodchagge===null||methodchagge===undefined){
  5333. methodchagge= fromPage!='RESULTCONFIRM'?'view':'edit';
  5334. }
  5335. that.reloadPage({
  5336. uipk : uipk,
  5337. billId : data.billId,
  5338. method : methodchagge,
  5339. isAddNew: data.isAddNew // yien 是否新增
  5340. });
  5341. }
  5342. });*/
  5343. // bug-BT-00624018-我的考核历史,用户张一点击申诉提示无权限
  5344. that.remoteCall({
  5345. method: "appeal",
  5346. param: {
  5347. id : evaResultId,
  5348. isOrg: isOrg //补丁10 组织考核-yien
  5349. },
  5350. async: false,
  5351. success: function (data) {
  5352. var uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill.form";
  5353. if(isOrg == '1') {
  5354. uipk = "com.kingdee.shr.perfweb.app.base.evalplan.EvaResultAppealBill4Org.form";
  5355. }
  5356. var methodchagge= data.operateState ? data.operateState.toLowerCase():null;
  5357. if(methodchagge===null||methodchagge===undefined){
  5358. methodchagge= fromPage!='RESULTCONFIRM'?'view':'edit';
  5359. }
  5360. that.reloadPage({
  5361. uipk : uipk,
  5362. billId : data.billId,
  5363. method : methodchagge,
  5364. isAddNew: data.isAddNew, // yien 是否新增
  5365. shruicode: shr.getUrlRequestParam("shruicode")
  5366. });
  5367. }
  5368. });
  5369. }
  5370. function getAttachcount() {
  5371. that.remoteCall({//附件数
  5372. method: "initialAttachment",
  5373. param: {evaObj: evaObj, gradeTaskNode: gradeTaskNode},
  5374. async: true,
  5375. success: function (data) {
  5376. // 计算附件数量
  5377. var attachcount = data.length;
  5378. $('.attachcount').html(attachcount);
  5379. }
  5380. });
  5381. }
  5382. // 清空选中文本
  5383. var clearTextSelect = 'getSelection' in window ? function(){
  5384. window.getSelection().removeAllRanges();
  5385. } : function(){
  5386. document.selection.empty();
  5387. };
  5388. function array_contain(array, obj){
  5389. for (var i = 0; i < array.length; i++){
  5390. if (array[i] == obj)//如果要求数据类型也一致,这里可使用恒等号===
  5391. return true;
  5392. }
  5393. return false;
  5394. }
  5395. /**
  5396. * 判断是否为数字
  5397. * @param fieldVal
  5398. * @returns {boolean}
  5399. */
  5400. function isNumber(fieldVal) {
  5401. var reg = /^\d+(\.\d+)?$/;
  5402. if (fieldVal) {
  5403. return reg.test(fieldVal);
  5404. } else if (parseFloat(fieldVal) == 0) {
  5405. return true;
  5406. }
  5407. return false;
  5408. }
  5409. //总分校验
  5410. function sumSocreOnblur(_this) {
  5411. var errObj = new Object();
  5412. var objVal = $(_this).val();
  5413. var msgShow = $("span[id='MSG_SUMSCORE']");
  5414. msgShow.hide();
  5415. console.log(objVal);
  5416. var dataReg = /^(-?\d+)(\.\d{1,2})?$/; //浮点数
  5417. if (!dataReg.test(objVal)) {
  5418. //$(_this).focus();
  5419. errObj.errortext = jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_36;
  5420. msgShow.text(errObj.errortext);
  5421. msgShow.show();
  5422. return false;
  5423. }
  5424. return true;
  5425. }
  5426. /**
  5427. * 隐藏权重参数控制
  5428. */
  5429. function hideWeight() {
  5430. var flag = false; // 列表模式判断用
  5431. //团队目标评分 个人目标评分 已办已评分
  5432. if (isTeamEvalu == 1 || entryType == 'myselfEvalu' || entryType == 'viewMyScoreForm') {
  5433. if (globalIndicatorData && globalIndicatorData.scoringWay == 0) {//权重模式
  5434. if (that.initData && that.initData.hideWeight == "true") {
  5435. // $(".scoretabs").setGridParam().hideCol("FWEIGHT");
  5436. $(".grade.areaWeight").hide();
  5437. flag = true;
  5438. }
  5439. }
  5440. }
  5441. return flag;
  5442. }
  5443. /**
  5444. * 判断是否保留小数点后两位
  5445. * @param _fieldVal
  5446. * @param _type 1:整数或带两位小数;undefined/0:整数或带两位小数
  5447. * @returns {boolean}
  5448. */
  5449. function isNumberVerify(_fieldVal , _type) {
  5450. var reg = /^\d+(\.\d{1,2})?$/;
  5451. if(1 == _type) {
  5452. reg = /^(-)?\d+(\.\d{1,2})?$/;
  5453. }
  5454. if(_fieldVal) {
  5455. return reg.test(_fieldVal);
  5456. }
  5457. return true;
  5458. }
  5459. function isNumberVerify2(_fieldVal , _type) {
  5460. var reg = /^\d+(\.\d{1,10})?$/;
  5461. if(1 == _type) {
  5462. reg = /^(-)?\d+(\.\d{1,10})?$/;
  5463. }
  5464. if(_fieldVal) {
  5465. return reg.test(_fieldVal);
  5466. }
  5467. return true;
  5468. }
  5469. $.extend($.jgrid, {
  5470. focusKnv: function($t){}
  5471. })
  5472. // 返回指定区域的区域说明数据
  5473. var getAreaRema = function(areaId){
  5474. var rema = '';
  5475. globalIndicatorData.areaBaseList.forEach(function(item){
  5476. if(item.id === areaId){
  5477. rema = item.rema;
  5478. return false;
  5479. }
  5480. })
  5481. return rema;
  5482. }
  5483. // 控制查看更多区域说明信息
  5484. function showMoreRema(e, areaId){
  5485. var remabox = $('.area-rema-box[area-id="'+areaId+'"]');
  5486. var textArr = [jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_51,jsBizMultLan.perf_perfscoreNew_1586255739735_i18n_47]; // 展开、收起
  5487. if(remabox.hasClass('opened')){
  5488. remabox.removeClass('opened');
  5489. $(e).text(textArr[0]);
  5490. }else{
  5491. remabox.addClass('opened');
  5492. $(e).text(textArr[1]);
  5493. }
  5494. }