perfGoalsFillNewEx.js 347 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207
  1. /**
  2. * 绩效目标填报,定制化,二开覆盖js文件,不继承原标准js;
  3. * 202501
  4. * coyle
  5. */
  6. var that = '';
  7. var globalIndicatorData = ''; //指标数据全局变量
  8. var globalPersonBaseData = ''; //员工基本信息全局变量
  9. var isFirstInit = 0; //第一条指标初始化标志
  10. var addIndicatorType = '1'; //添加绩效指标的方式:1-新建绩效指标;2-引用绩效指标库
  11. var CREATE_INDICATOR = 1; //1:创建指标明细
  12. var SWITCH_INDICATOR = 0; //0:切换指标明细
  13. var isValite=true; //检验是否通过指标,默认通过
  14. var evaObj = ''; //评估对象id
  15. var periodId = ''; //考核周期id
  16. var personId = ''; //员工id
  17. var personNumber = ''; //员工编码
  18. var showfieldnum = 5; //员工信息区域默认显示6个字段
  19. var indicatorOptions = ''; //指标库列表表格参数
  20. var indicatorSelectedIds = new Array(); //指标库中已勾选指标id
  21. var indicatorSelectedOptions = ''; //指标库已选列表表格参数
  22. var existingPIallOptions = ''; //引用已有指标列表表格参数
  23. var currentNum = 0 ;
  24. var curIndecatorType = null; //当前指标类型
  25. var INDICATORLISTALL = '001'; //指标库列表全部
  26. var SELECTEDINDICATORLIST = '002'; //指标库已选列表
  27. var GETPERIODLIST = '003'; //周期列表
  28. var EVAFORMAREA = "200"; //评估表单
  29. var RECORDAREA = "300"; //记录表
  30. var indicatorIdSelected = new Array(); //已选指标id
  31. var recordIdSelected = new Array(); //已选记录表id
  32. var recordListObj = new Object(); //记录表对象
  33. var indicatorListObj = new Object(); //指标对象
  34. var recordFieldArr = new Array(); //记录表字段数组
  35. var indicatorFieldArr = new Array(); //指标字段数组
  36. var toDeleteIndicatorIds = new Array(); //待删除的指标(记录表)id
  37. var targetParam = []; //批量保存指标数据
  38. //判断是否加载左侧人员选择列表,0不加载,1加载;
  39. // 0个人目标填报,1团队目标填报,2我的绩效-我的目标查看,3绩效已办-我已下达的目标查看,4团队绩效-团队目标查看,5考核计划执行-未发送-查看评估表,6我的绩效-我的目标-指标变更后的页面,7绩效已办-我已填报的目标详情 ,8目标确认与打回
  40. var pageType = 0;
  41. var _noPassVerifyArr = new Array(); //数据校验信息数组
  42. var _gcanSaveFlag = true; //是否可保存
  43. var _indicatorTypeNoPassVerifyArr = new Array(); //指标类型未通过校验信息数组
  44. var defaultRows = 20; //表格默认显示记录数
  45. var indicatorTypeDefaultRows = 10;
  46. var targetCanEdit = 0;//统一下达后指标是否可以修改
  47. var hrOrgUnit = null; //考核规则所属业务组织
  48. var backReasonList = {
  49. list : []
  50. }; //打回原因
  51. var planFilter = ''; //周期的过滤条件
  52. var lastsel = ''; //修改权重时,单击下一行时记录上一行的行id
  53. var isInitBottomBtn = false; //是否初始化底部按钮
  54. var updateIndicatorNameObj = {}; //被修改的指标名称集合
  55. var indicatorUpdateObj = {}; //指标修改详情集合
  56. var indicatorOriginObj = {}; //原指标初始值
  57. var newIndicatorNameObj = {}; //新增的指标名称集合
  58. var scoringWay=0;
  59. var maxScore = 100;
  60. var evaAreaListGlobal = []; // 组装后的全局数据
  61. var isShrBill = ''; // 如果是true的话,则是审批页面跳转的
  62. var isOrg = '0'; //组织考核-yien
  63. var isViewFlow = '0'; //是否流程监控
  64. var useMyOwnTargetVal = '1'; //仅查询我的指标
  65. var hideDecompose = '0'; //是否隐藏指标分解、进度更新按钮
  66. var pre_crumbName = ''; //面包屑前缀
  67. var isRequiredMap = {}; //补丁10 是否必填-yien
  68. var handleName; //当前登陆人姓名
  69. var showAttachsOnly = false; // 是否仅显示上传附件但不允许上传
  70. var uploadAttachSize=10;//附件上传大小
  71. //补丁11 指标实例多语言改造-yien
  72. var isUseMultiLan = false;
  73. var defaultLan = 'l2';
  74. var multiFields = ["FNAME","FINDECATORDESC","FEVALSTANDARD","FKEYITEM","FMEASURESTANDARD","FMILESTONE","FKEYITEM","FMEASURESTANDARD","FMILESTONE"];
  75. //补丁11 目标对齐-评估对象所属组织
  76. var refOrgUnit = {};
  77. //引用的区域id
  78. var refAreaId = '';
  79. var permItemId = 'fffffff0-ffff-efff-be21-000004038eb7PERMITEM';
  80. var planName = '';
  81. //yien 表单越权
  82. var originWfUipk = '';
  83. var billId = '';
  84. var isFromWFBill = false;
  85. var viewType = 'list'; // overview:概览,list:列表
  86. var currPromptInp = ''; // 列表模式,记录当前编辑的f7
  87. var lastTable = ''; // 列表模式,切换表格编辑时,记录上一个编辑的表格
  88. var btnPerm = {}; //按钮权限
  89. var canEditTab = true;
  90. var operatestate = shr.getUrlRequestParam('operatestate'); // 获取审批中单据编辑状态
  91. shr.defineClass("shr.perfweb.perfGoalsFillNewEx", shr.framework.Edit, {
  92. targetTransmitBill : {'billId':'-1','state':0}, //0表示指定人下达,1表示审批流程下达,2表示已有工作流
  93. targetReviseBill : {'billId':'','state':0}, //0表示指定人下达,1表示审批流程下达,2表示已有工作流
  94. initalizeDOM : function() {
  95. // 初始化JS环境
  96. it = this;
  97. that = this;
  98. //补丁11 指标实例多语言字段改造-yien
  99. isUseMultiLan = window.languageMappingList.length > 1;
  100. defaultLan = getDefaultLang();
  101. shr.perfweb.perfGoalsFillNewEx.superClass.initalizeDOM.call(this);
  102. pre_crumbName = $.perfwebI18n.simpleElement.crumbName_my;
  103. // 获取参数控制的展示列表模式还是概览模式
  104. viewType = this.initData.defaultFillPage || 'list';
  105. //获取参数
  106. this.initUrlParams();
  107. this.initSwitchBtn();
  108. //这里获取的考核周期是不准确的,由于填报增加了全部 yien
  109. //直接根据评估对象id,获取考核周期id
  110. that.remoteCall({
  111. // handler:"com.kingdee.shr.perfweb.portal.handler.PerfgoalsfillHandler",
  112. method:"getPeriodIdByEvaObject",
  113. param:{evaObj: evaObj},
  114. async: false,
  115. success:function(data){
  116. periodId = data;
  117. }
  118. });
  119. //获取个人目标状态,已下达未确认的状态数据,不允许目标变更,此时屏蔽按钮
  120. that.remoteCall({
  121. method : "getEvaObjTargetStatus",
  122. param : {
  123. evaObj : evaObj
  124. },
  125. async : false,
  126. type:"post",
  127. success : function(data) {
  128. if(data.targetMakeSure==1){
  129. $("#revise").remove();
  130. $("#viewHistory").remove();
  131. }
  132. }
  133. });
  134. //获取按钮权限
  135. that.remoteCall({
  136. method : "getBtnPerm",
  137. param : {
  138. isOrg : isOrg
  139. },
  140. async : false,
  141. type:"post",
  142. success : function(data) {
  143. btnPerm = data;
  144. }
  145. });
  146. showAttachsOnly = false;
  147. //组织考核-yien
  148. if(isOrg == '1') {
  149. useMyOwnTargetVal = '0';
  150. //隐藏指标导入的指标
  151. //$('#importIndicator').hide();
  152. pre_crumbName = $.perfwebI18n.simpleElement.crumbName_org;
  153. }
  154. //先隐藏按钮,目标填报和目标打回
  155. $('#confirm').hide();
  156. $('#reback').hide();
  157. $('#content').load('/shr/addon/perfweb/web/js/shr/perfweb/portal/htmlTemplate/perfgoalsfill.html',function(response,status,xhr) {
  158. that.initFormCfg();
  159. if(pageType == 6){
  160. //$('#breadcrumb').parent().hide();
  161. $('#viewBackReason,.updbtn').hide();
  162. $('#workFlowDiagram').hide();
  163. $('#auditResult').hide();
  164. showAttachsOnly = true;
  165. that.initIndicatorSortable();
  166. }
  167. });
  168. it.bindEvent();
  169. it.initIsRequiredMap(); //补丁10 是否必填-yien
  170. //我的目标填报增附件上传功能
  171. it.uploadFileDialog();
  172. it.uploadFile();//上传附件
  173. it.delFile();//删除附件
  174. handleName = $('#ps-profile-set').find('span').text();
  175. planName = this.initData.planName;
  176. },
  177. // 列表、概览模式切换
  178. initSwitchBtn: function(){
  179. canEditTab = pageType != 5 && pageType != 10 && pageType != 7 && pageType != 2 && pageType != 8 && pageType != 4 && pageType != 3 && operatestate != 'VIEW' ? true : false;
  180. // var dom = '<div class="switchbutton"><button id="switchList" viewtype="list" class="currentswitch">'+'列表'+'</button><button id="switchOverview" viewtype="overview">'+ '概览'+'</button></div>';
  181. var dom = '<div class="switchbutton"><button id="switchList" viewtype="list" class="currentswitch">'+jsBizMultLan.perfweb_perfgoalsfill_20221219ht_03+'</button><button id="switchOverview" viewtype="overview">'+ jsBizMultLan.perfweb_perfgoalsfill_20221219ht_04+'</button></div>';
  182. $('.shr-toolbar').append(dom);
  183. if(viewType == 'overview'){
  184. $("#switchList").removeClass('currentswitch');
  185. $("#switchOverview").addClass('currentswitch');
  186. $('#batchSaveTarget,#deleteIndicatorOrRecord').hide();
  187. }else{
  188. $("#switchOverview").removeClass('currentswitch');
  189. $("#switchList").addClass('currentswitch');
  190. $('#addIndicator,#referenceIndicator').hide();
  191. }
  192. //202501 隐藏按钮
  193. $("#switchOverview").hide(); // 隐藏概览按钮
  194. $("#switchList").hide(); // 隐藏按钮
  195. $('.switchbutton button').die('click').live('click',function(){
  196. if(!$(this).hasClass('currentswitch')){
  197. $('.currentswitch').removeClass('currentswitch');
  198. $(this).addClass('currentswitch');
  199. viewType = $(this).attr('viewtype');
  200. $.block.show();
  201. that.selfRemoteCall({
  202. method : "compositeEvaObjectData",
  203. param : {
  204. evaObj : evaObj,
  205. billId : billId
  206. },
  207. async : true,
  208. success : function(data) {
  209. $.block.hide();
  210. if(viewType == 'list'){
  211. if(canEditTab){
  212. $('#batchSaveTarget,#deleteIndicatorOrRecord').show();
  213. }
  214. $('#addIndicator,#referenceIndicator').hide();
  215. }else{
  216. $('#batchSaveTarget,#deleteIndicatorOrRecord').hide();
  217. if(canEditTab){
  218. $('#addIndicator,#referenceIndicator').show();
  219. }
  220. }
  221. if(data != null){
  222. globalIndicatorData = data;
  223. that.initGoalsItems(globalIndicatorData);
  224. _noPassVerifyArr = [];
  225. }
  226. }
  227. });
  228. }
  229. })
  230. if(!canEditTab){ // 若不可编辑,隐藏保存、删除按钮
  231. $('#batchSaveTarget,#deleteIndicatorOrRecord').hide();
  232. }
  233. },
  234. // 列表模式保存
  235. // action: submit 指标变更页面,列表模式提交前先保存
  236. batchSaveTargetAction: function(action){
  237. $('.tabwrap').each(function(index,tab){
  238. $('#tab'+index).jqGrid('editStop');
  239. })
  240. // if(_noPassVerifyArr.length > 0){
  241. // shr.showWarning({
  242. // message: _noPassVerifyArr[0].showName+':'+_noPassVerifyArr[0].errortext,
  243. // hideAfter: 5
  244. // });
  245. // return false;
  246. // }
  247. this.saveTargetClick(action);
  248. },
  249. // 列表模式删除指标
  250. deleteIndicatorOrRecordAction: function(){
  251. var tabs = $('.indictab').not('[id*="_frozen"]'), ids = [], delIndiMsg = [];
  252. $.each(tabs, function(i,tab){
  253. var delWeight = 0, delData = [], notDelArr = [], delInNameArr = [];
  254. var selectedData = $(tab).jqGrid('getSelectedRowsData');
  255. var areaName = $(tab).jqGrid('getGridParam','areaName');
  256. $.each(selectedData, function(j, data){
  257. if(data.FISUNITED == '0'){ // (data.FISUNITED == '1' && targetCanEdit==1 ) ||
  258. ids.push(data.id);
  259. delWeight += Number(data.FWEIGHT) || Number(data.FTARSCORE);
  260. delData.push(data);
  261. delInNameArr.push($(data.FNAME).text() || data.FKEYITEM);
  262. }else{
  263. var fname = $(data.FNAME).text() || data.FKEYITEM;
  264. notDelArr.push(fname);
  265. }
  266. })
  267. if(delInNameArr.length > 0 || notDelArr.length > 0){
  268. delIndiMsg.push({
  269. tabId: $(tab).attr('id'),
  270. areaName: areaName,
  271. delWeight: delWeight,
  272. delData: delData,
  273. notDelArr: notDelArr,
  274. delInNameArr: delInNameArr
  275. })
  276. }
  277. })
  278. console.log(delIndiMsg)
  279. if(ids.length == 0){
  280. shr.showWarning({
  281. //message: '请选择至少1条非统一下达指标进行操作',
  282. message: jsBizMultLan.perfweb_perfgoalsfillnew_20220111_01,
  283. hideAfter: 5
  284. })
  285. }else{
  286. this.delgoal('','',ids,delIndiMsg)
  287. }
  288. },
  289. initUrlParams: function() {
  290. evaObj = shr.getUrlRequestParam("evaObj");
  291. // periodId = shr.getUrlRequestParam("periodId");
  292. personId = shr.getUrlRequestParam("personId");
  293. personNumber = shr.getUrlRequestParam("personNumber");
  294. pageType = shr.getUrlRequestParam("type");
  295. isShrBill = shr.getUrlRequestParam("isShrBill");
  296. subPageType = shr.getUrlRequestParam("subtype");
  297. //组织考核-yien
  298. isOrg = shr.getUrlRequestParam("isOrg");
  299. isViewFlow = shr.getUrlRequestParam("isViewFlow");
  300. hideDecompose = shr.getUrlRequestParam("hideDecompose");
  301. },
  302. initIndicatorSortable: function(){
  303. that = this;
  304. $( ".indicatorwrap" ).sortable({
  305. axis: "y",
  306. cursor: "move",
  307. delay: 150,
  308. placeholder: "ui-state-highlight",
  309. start: function( event, ui ){
  310. var $this = $(ui.item[0]);
  311. },
  312. receive: function(e, ui) {
  313. // ui.item.before(ui.item.data('items'));
  314. },
  315. stop: function( event, ui ) {
  316. var thisItem = $(ui.item[0]);
  317. var size = $(thisItem.parent().find('li')).size();
  318. var areaType = thisItem.closest('.areawrap').attr('areatype')
  319. var data = [];
  320. for(var i = 0; i < size; i++){
  321. var id = $($(thisItem.parent().find('li'))[i]).attr('indid')
  322. data.push({
  323. id: id,
  324. type: areaType,
  325. index: i.toString(),
  326. })
  327. }
  328. that.setOrder(data);
  329. }
  330. }).disableSelection();
  331. },
  332. //补丁10-是否必填-yien
  333. initIsRequiredMap: function() {
  334. //获取表单字段是否必填信息
  335. that.remoteCall({
  336. // handler:"com.kingdee.shr.perfweb.evaluplan.handler.PerfEvaObjectGoalListHandler",
  337. method:"getIsRequiredOfConfField",
  338. param:{periodId: periodId},
  339. // async: false, //补丁11 绩效工作台性能优化 改成异步执行 yien
  340. success:function(data){
  341. isRequiredMap = data['isRequiredMap'];
  342. }
  343. });
  344. },
  345. /**
  346. * 查看流程图
  347. */
  348. // workFlowDiagramAction: function() {
  349. // var billId = that.targetTransmitBill['billId'];
  350. // if(billId == '') {
  351. // //没有选择记录
  352. // return;
  353. // }
  354. // if(billId) {
  355. // that.getWorkFlowHelper().viewWorkFlowDiagram(billId);
  356. // }else {
  357. // //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  358. // shr.showError({message: $.perfwebI18n.commonMsg.msg1});
  359. // }
  360. // },
  361. /**
  362. * 查看审批结果
  363. */
  364. // auditResultAction: function() {
  365. // var billId = that.targetTransmitBill['billId'];
  366. // if(billId == '') {
  367. // //没有选择记录
  368. // return;
  369. // }
  370. // if(billId) {
  371. // that.getWorkFlowHelper().viewAuditResult(billId);
  372. // }else {
  373. // //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  374. // shr.showError({message: $.perfwebI18n.commonMsg.msg1});
  375. // }
  376. // },
  377. initFormCfg: function() {
  378. $('#content').append(basicDom()); //添加目标下达弹出框
  379. //BT1464569 我的目标 页面,出现了设置评分人按钮,这里一直是没有的,只有矩阵式考核在目标填报页面才有
  380. //跟妙琪确认只有 个人目标填报页面、团队下达页面需要矩阵考核需要显示
  381. $("#setTargetWorkflow").hide();
  382. //隐藏 流程图、审批意见 按钮
  383. // $('#workFlowDiagram').hide();
  384. // $('#auditResult').hide();
  385. //附件上传大小
  386. if (isNumber(that.initData.uploadAttachSize)){
  387. uploadAttachSize= this.initData.uploadAttachSize;//附件上传大小
  388. }
  389. //目标流程审批-导航栏进行调整
  390. var breadcrumb = $('#breadcrumb').shrBreadcrumb();
  391. var crumb = breadcrumb.shrBreadcrumb('pop');
  392. //表单越权
  393. that.initSetTargetWorkflowBtn();
  394. if( pageType == '1' && isOrg == 0 ){
  395. it.initSelectionList();
  396. crumb.name = jsBizMultLan.perfweb_perfgoalsfillHtmlNew_zw1628651214_i18n_04;
  397. }
  398. else if(pageType == '1'){
  399. it.initSelectionList(); //加载人员列表清单
  400. // crumb.name = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_82;
  401. // crumb.name = pre_crumbName+'团队目标填报';
  402. crumb.name = pre_crumbName + $.perfwebI18n.simpleElement.crumbName_team_goals;
  403. }else if(pageType == '7'){//我已填报的目标详情
  404. // crumb.name = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_81;
  405. // crumb.name = pre_crumbName+'目标';
  406. crumb.name = pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target;
  407. that.initContent(evaObj,periodId,personId,personNumber);
  408. }else if(pageType =='8'){
  409. crumb.name = pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target;
  410. that.initContent(evaObj,periodId,personId,personNumber);
  411. }else if(pageType == '3' || pageType == '4'){//我已下达的目标详情、团队目标
  412. // crumb.name = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_81;
  413. // crumb.name = pre_crumbName+'目标';
  414. crumb.name = pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target;
  415. that.initContent(evaObj,periodId,personId,personNumber);
  416. }
  417. else if( pageType == '0' && isOrg == 0){
  418. crumb.name = jsBizMultLan.perfweb_perfgoalsfillHtmlNew_zw1628651214_i18n_03;
  419. that.initContent(evaObj,periodId,personId,personNumber);
  420. }
  421. else{
  422. // crumb.name = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_81;
  423. // crumb.name = pre_crumbName+'目标';
  424. crumb.name = pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target;
  425. that.initContent(evaObj, periodId, personId, personNumber);
  426. }
  427. //yien 表单越权 处理没有面包屑报错的情况
  428. try {
  429. breadcrumb.shrBreadcrumb('addItem',crumb);
  430. } catch (e) {
  431. console.error("[perfweb]add Item for breadcrumb failed!", e);
  432. }
  433. //目标确认 确认
  434. if (!that.initData.KHMBQRCONFIRM) {
  435. $('#confirm').remove();
  436. }
  437. //目标确认 打回
  438. if (!that.initData.KHMBQRREBACK) {
  439. $('#reback').remove();
  440. }
  441. //添加指标权限项
  442. if (!that.initData.addTarget) {
  443. $('#addIndicator').remove();
  444. }
  445. //引用指标权限项
  446. if (!that.initData.refTarget) {
  447. $('#referenceIndicator').remove();
  448. }
  449. //导入指标权限项
  450. if (!that.initData.importIndicator) {
  451. $('#importIndicator').remove();
  452. }
  453. //两个都没有,隐藏上面的添加指标按钮
  454. if (!$('.dropdown-menu').find('li').length>0){
  455. $('.dropdown-toggle').remove();
  456. }
  457. //隐藏 添加绩效指标 按钮(由于原按钮是js按钮,未受权限项控制,特增加一个受权限项控制的隐藏按钮,间接控制原js按钮的隐藏和显示) wei_baiii
  458. /*$("#addScoreMenu_hidden").hide();
  459. if (!$("#addScoreMenu_hidden").length > 0){
  460. $("#addScoreMenu").hide();
  461. }*/
  462. //隐藏 设置评分人 按钮(由于原按钮是js按钮,未受权限项控制,特增加一个受权限项控制的隐藏按钮,间接控制原js按钮的隐藏和显示) wei_baiii
  463. if (!that.initData.setTargetWorkflow) {
  464. $("#setTargetWorkflow").remove();
  465. }
  466. if(isOrg == '0'){
  467. if(!that.initData.targetRevise){
  468. $("#revise").remove();
  469. }
  470. if(!that.initData.targetHis){
  471. $("#viewHistory").remove();
  472. }
  473. }else{
  474. if(!that.initData.orgTargetRevise){
  475. $("#revise").remove();
  476. }
  477. if(!that.initData.orgTargetHis){
  478. $("#viewHistory").remove();
  479. }
  480. }
  481. $("#referencePI_hidden").hide();
  482. //隐藏相应按钮
  483. if(pageType == '1') {
  484. //隐藏“查看打回原因”按钮
  485. // $("#viewBackReason").hide();
  486. //隐藏提交按钮
  487. $("#submit").hide();
  488. //显示“垃圾桶”
  489. $('.goalTarget').show();
  490. showAttachsOnly= true;
  491. }else if(pageType == '2') {
  492. //获取目标流程审批数据
  493. // that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  494. //面包屑
  495. var evaObjName=$(".person-name").text();
  496. var breadcrumb = $('#breadcrumb').shrBreadcrumb();
  497. breadcrumb.shrBreadcrumb('pop');
  498. var uipk_list = 'com.kingdee.shr.perfweb.app.perfportal.core';
  499. var url_list = 'dynamic.do?uipk=com.kingdee.shr.perfweb.app.perfportal.core&button=myGoalsBtn&inFrame=true&fromHeader=true&serviceId=' + shr.getUrlRequestParam("serviceId",window.parent.location.href);
  500. if(isOrg == 1){
  501. // $('#revise').hide();
  502. // $('#viewHistory').hide();
  503. url_list = 'dynamic.do?uipk=com.kingdee.shr.perfweb.app.perfportal.core&button=orgGoalContentBtn&inFrame=true&fromHeader=true&isOrg=1&serviceId=' + shr.getUrlRequestParam("serviceId",window.parent.location.href);
  504. }
  505. breadcrumb.shrBreadcrumb('addItem', {
  506. name: pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target,
  507. uipk: uipk_list,
  508. url: url_list
  509. });
  510. var uipk = 'com.kingdee.shr.perfweb.app.perfgoalsfillNew.core&inFrame';
  511. //BT-00538905 【8611补丁测试PT161638】绩效管理--绩效工作台--我的目标,进入指标分解界面 ,再从面包屑点击我的目标返回去,目标变更按钮不显示了
  512. var url = 'dynamic.do?uipk=com.kingdee.shr.perfweb.app.perfgoalsfillNew.core&inFrame=true&isOrg='+isOrg+'&evaObj='
  513. + encodeURIComponent(evaObj)+ '&periodId=' + encodeURIComponent(periodId) + '&personId=' + encodeURIComponent(personId) + '&personNumber=' + personNumber + '&type=2'+'&shruicode=AF_PERF_T0003';
  514. breadcrumb.shrBreadcrumb('addItem', {
  515. name: pre_crumbName + $.perfwebI18n.simpleElement.crumbName_target+"(" + evaObjName + ")",
  516. uipk: uipk,
  517. url: url
  518. });
  519. that.initViewMyTargetFormCfg();
  520. showAttachsOnly= true;
  521. } else if(pageType == '7'){//我已填报的目标详情
  522. //个人目标填报
  523. $('#breadcrumb').parent().hide();
  524. $('#transmit, #addwrap, #back, #addScoreMenu, #saveTarget, #submit , #setTargetWorkflow').hide();
  525. //判断是否有打回记录
  526. if (evaObj) {
  527. //补丁11 绩效工作台性能优化 yien
  528. that.initBackReasonBtn();
  529. // backReasonList.list = that.getBackReasonData(evaObj);
  530. // if (!backReasonList.list || backReasonList.list.length < 1) {
  531. // //没有打回记录,隐藏“查看打回原因”按钮
  532. // $("#viewBackReason").hide();
  533. // }
  534. //目标流程审批
  535. // that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  536. }
  537. showAttachsOnly= true;
  538. }else if(pageType == '8'){
  539. //个人目标确认
  540. $('#breadcrumb').parent().hide();
  541. $('#transmit, #addwrap, #back, #addScoreMenu, #saveTarget, #submit , #setTargetWorkflow, #importIndicator').hide();
  542. //目标填报和目标打回
  543. $('#confirm').show();
  544. $('#reback').show();
  545. // 编辑删除指标按钮不显示
  546. // $('.editbtn, .delbtn').hide();
  547. // $('.updbtn').hide();
  548. // $('.decbtn').hide();
  549. showAttachsOnly= true;
  550. }else if(pageType == '4' || pageType == '3') {
  551. //个人目标已下达
  552. $('#breadcrumb').parent().hide();
  553. // $('.view_manager_header').hide(); // 所有按钮都不显示
  554. $('#breadcrumb,.shr-toolbar > *').hide();
  555. $('.switchbutton').show();
  556. // $('.editbtn, .delbtn').hide(); // 编辑删除指标按钮不显示
  557. showAttachsOnly= true;
  558. }else if( pageType == '10' || pageType == '5'){
  559. if(isViewFlow == '1') {
  560. //BT1470785 未下达--目标审批下达--查看流程跟踪,里面流程图和审批意见按钮没了
  561. $('#workFlowDiagram').show();
  562. $('#auditResult').show();
  563. $('#addwrap').hide();
  564. $('#addIndicator').hide();
  565. $('#referenceIndicator').hide();
  566. $('#importIndicator').hide();
  567. $('#back').hide();
  568. $('#transmit').hide();
  569. $('#setTargetWorkflow').hide();
  570. $('#submit').hide();
  571. $('#viewBackReason').hide();
  572. $('#revise').hide();
  573. $('#viewHistory').hide();
  574. $('#attachments').hide();
  575. $('.attachcountbtn').hide();
  576. }else {
  577. showAttachsOnly= true;
  578. // $('.view_manager_header').hide();
  579. $('#breadcrumb,.shr-toolbar > *').hide();
  580. $('.switchbutton').show();
  581. }
  582. }else {
  583. //个人目标填报
  584. $('#transmit').hide();
  585. $('#back').hide();
  586. $('#revise').hide();
  587. $('#viewHistory').hide();
  588. //判断是否有打回记录
  589. if(evaObj) {
  590. //补丁11 绩效工作台性能优化 yien
  591. that.initBackReasonBtn();
  592. // backReasonList.list = that.getBackReasonData(evaObj);
  593. // if(!backReasonList.list || backReasonList.list.length < 1) {
  594. // //没有打回记录,隐藏“查看打回原因”按钮
  595. // $("#viewBackReason").hide();
  596. // }
  597. //目标流程审批
  598. // that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  599. }
  600. }
  601. if(pageType == '2'){
  602. $('#setTargetWorkflow').hide();
  603. $('#setTargetWorkflow_hidden').hide();
  604. }else {
  605. $('#revise').hide();
  606. $('#viewHistory').hide();
  607. }
  608. if(isViewFlow != '1') {
  609. $('#workFlowDiagram').hide();
  610. $('#auditResult').hide();
  611. }
  612. //目标流程审批
  613. //补丁11 绩效工作台性能优化-yien
  614. // that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  615. that.textAreaFieldLenListener();
  616. //that.initWorkFlowList(evaObj);
  617. //that.initTargetWorkflowDialog();
  618. //目标流程审批-隐藏提交工作流按钮
  619. $("#submitProcess").hide();
  620. //BT1441566 团队目标是没有进度更新 和指标分解的,团队组织的也是一样,我的目标、组织目标 才有这个功能
  621. // if(hideDecompose == '1') {
  622. // $('.updbtn').hide();
  623. // $('.decbtn').hide();
  624. // }
  625. //目标流程审批
  626. //补丁11 绩效工作台性能优化-yien
  627. that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  628. },
  629. //初始化打回原因的按钮显示 抽取
  630. initBackReasonBtn: function() {
  631. var getBackReasonDataCallBack = function(res) {
  632. backReasonList.list = res;
  633. if(!backReasonList.list || backReasonList.list.length < 1) {
  634. //没有打回记录,隐藏“查看打回原因”按钮
  635. $("#viewBackReason").hide();
  636. }
  637. };
  638. that.getBackReasonData(evaObj, getBackReasonDataCallBack);
  639. },
  640. // 监听页面刷新,如果刷新或页面关闭时,有新建的指标编辑弹框,则点击下取消按钮,删除该条新建的指标
  641. bindEvent: function(){
  642. window.onunload = function() {
  643. // dosomethings
  644. if($('div[aria-describedby="editboxDialog"]').length>0){
  645. $('div[aria-describedby="editboxDialog"]').find('.ui-dialog-buttonset button:last-child').click();
  646. }
  647. };
  648. $('.attachcountbtn').live('click',function(){
  649. // $('#attachments').click();
  650. that.openFileDialog();
  651. });
  652. },
  653. reviseAction : function(){
  654. var flag = false;
  655. that.selfRemoteCall({
  656. method : "checkCanRevise",
  657. param : {
  658. evaObj : evaObj
  659. },
  660. async : false,
  661. success : function(data) {
  662. flag = data.flag;
  663. }
  664. });
  665. if(flag){
  666. that.reloadPage({
  667. uipk: 'com.kingdee.shr.perfweb.app.base.targetprocess.TargetReviseBill.flow',
  668. evaObj: evaObj,
  669. periodId: periodId,
  670. personId: personId,
  671. personNumber: personNumber,
  672. isOrg : isOrg,
  673. isFromPageCenter : 0,
  674. type: 6, // 我的绩效-我的目标-指标变更
  675. billId: ''
  676. });
  677. }else{
  678. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_106,hideAfter : 5});
  679. }
  680. },
  681. /**
  682. * 确认
  683. */
  684. confirmAction : function(){
  685. var flag = false;
  686. that.selfRemoteCall({
  687. method : "confirm",
  688. param : {
  689. evaObj : evaObj
  690. },
  691. async : false,
  692. success : function(data) {
  693. flag = data.flag;
  694. }
  695. });
  696. if(flag){
  697. var itemList = $('#othersPerfTodoGroup #targetMakeSureTodo', parent.document).parent();
  698. if(itemList!=undefined&&itemList.length>0){
  699. itemList[0].click();
  700. }else {
  701. that.reloadPage({
  702. uipk: 'com.kingdee.shr.perfweb.app.base.evalplan.personalmakesure'
  703. });
  704. }
  705. }
  706. },
  707. /**
  708. * 打回
  709. */
  710. rebackAction : function(){
  711. var dom = '<div id="backDialog">'+
  712. '<div class="dialog-text">'+jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_8+'</div>'+
  713. '<div class="dialog-textarea"><textarea id="backReason" rows="8" placeholder="'+shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_53,[2000])+'"></textarea></div>'+
  714. '<div class="dialog-text">'+
  715. jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_02+
  716. '<span class="note-msg">'+jsBizMultLan.perfweb_perfGoalsFillNew_202305061608_i18n_0+'</span>'+
  717. '</div>'+
  718. '<div class="ways-box">'+
  719. '<span class="ways-item">'+
  720. '<input type="checkbox" id="msgReminder" value="msg" name="ways">'+
  721. '<label for="msgReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_03+'</label>'+
  722. '</span>'+
  723. '<span class="ways-item">'+
  724. '<input id="emailReminder" type="checkbox" value="email" name="ways">'+
  725. '<label for="emailReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_04+'</label>'+
  726. '</span>'+
  727. '<span class="ways-item">'+
  728. '<input id="SMSReminder" type="checkbox" value="sms" name="ways">'+
  729. '<label for="SMSReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_05+'</label>'+
  730. '</span>'+
  731. '<span class="ways-item">'+
  732. '<input id="YZJReminder" type="checkbox" value="cloud" name="ways">'+
  733. '<label for="YZJReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_06+'</label>'+
  734. '</span>'+
  735. '</div>'+
  736. '</div>';
  737. $(document.body).append(dom);
  738. $('#msgReminder, #emailReminder, #SMSReminder, #YZJReminder').shrCheckbox();
  739. $('#msgReminder, #emailReminder, #SMSReminder,#YZJReminder').shrCheckbox('onChange', function(){
  740. var id = $(this).attr('id');
  741. if($(this).shrCheckbox('getValue')){
  742. $('label[for="'+id+'"]').addClass('checked');
  743. }else{
  744. $('label[for="'+id+'"]').removeClass('checked');
  745. }
  746. });
  747. $('#msgReminder').shrCheckbox('check');
  748. var dialogtop = 'center';
  749. var winheight = $(window.top).height();
  750. var winscrolltop = $(window.top).scrollTop();
  751. if(self != top){
  752. dialogtop = (winheight - ($(window).height() > 600 ? 600 : $(window).height()-20))/2 + winscrolltop - 80;
  753. }
  754. $("#backDialog").dialog({
  755. autoOpen : true,
  756. // show : "blind",
  757. width : $(window).width() > 580 ? 580 : $(window).width()-20,
  758. height : $(window).height() > 420 ? 420 : $(window).height()-20,
  759. title : jsBizMultLan.perfweb_perfGoalsFillNew_back,
  760. resizable : true,
  761. position : [ 'center', dialogtop ],
  762. modal : true,
  763. buttons : [{
  764. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_0,
  765. click : function() {
  766. var backReason = $("#backReason").val();
  767. var SMSType = "NOSEND";
  768. var emailType = "NOSEND";
  769. var portalType = "NOSEND";
  770. var yzjMsgType = "NOSEND";
  771. var meg = $('#msgReminder').shrCheckbox('isSelected');
  772. var email = $('#emailReminder').shrCheckbox('isSelected');
  773. var SMS = $('#SMSReminder').shrCheckbox('isSelected');
  774. var yzj = $('#YZJReminder').shrCheckbox('isSelected');
  775. if (SMS) {
  776. SMSType = "SEND"
  777. }
  778. if (email) {
  779. emailType = "SEND"
  780. }
  781. if (meg) {
  782. portalType = "SEND"
  783. }
  784. if (yzj) {
  785. yzjMsgType = "SEND";
  786. }
  787. var flag = false;
  788. that.selfRemoteCall({
  789. method : "reback",
  790. param : {
  791. evaObj : evaObj,
  792. backReason: backReason,
  793. sysType: SMSType,
  794. emailType: emailType,
  795. smsType: portalType,
  796. yzjType: yzjMsgType
  797. },
  798. async : false,
  799. success : function(data) {
  800. flag = data.flag;
  801. }
  802. });
  803. if(flag){
  804. var itemList = $('#othersPerfTodoGroup #targetMakeSureTodo', parent.document).parent();
  805. if(itemList!=undefined&&itemList.length>0){
  806. itemList[0].click();
  807. }else {
  808. that.reloadPage({
  809. uipk: 'com.kingdee.shr.perfweb.app.base.evalplan.personalmakesure'
  810. });
  811. }
  812. }
  813. }},{
  814. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  815. click : function() {
  816. $(this).dialog('close');
  817. }
  818. }],
  819. close : function(){
  820. $('#backDialog').remove();
  821. },
  822. open:function(event, ui){
  823. }
  824. });
  825. },
  826. initSetTargetWorkflowBtn: function () {
  827. //【BT-01722844】流程下达,填报时能设置评分人,需要隐藏
  828. //【BT-01722848】流程下达,打开评估表单,需要隐藏“设置评分人”
  829. return false;
  830. $("#setTargetWorkflow").hide();
  831. that.selfRemoteCall({
  832. method: "getPerfEvaObjMsg",
  833. param: {
  834. evaObj: evaObj
  835. },
  836. // async: false, //补丁11 绩效工作台性能优化 改成异步执行
  837. success: function (data) {
  838. if (data.canAdjustEvaluer == 1) {
  839. if (that.initData.setTargetWorkflow && isOrg != '1') {
  840. $("#setTargetWorkflow").show();
  841. }
  842. }
  843. //yien 表单越权
  844. $('.workerList').find('li[workerid="'+evaObj+'"]').find('i[name="targetStatus"]').html(data.personalGoalStatus);
  845. }
  846. });
  847. },
  848. initContent : function(evaObj,periodId,personId,personNumber,billId){
  849. //加载员工基本信息
  850. that.selfRemoteCall({
  851. method : "getPersonBaseOfGoals",
  852. param : {
  853. evaObj : evaObj,
  854. periodId : periodId,
  855. personId : personId,
  856. personNumber : personNumber
  857. },
  858. async : false, //补丁11 绩效工作台性能优化 yien
  859. success : function(data) {
  860. if(data != null){
  861. // 重新根据评估对象id设置考核周期
  862. //补丁11 目标对齐-yien
  863. globalPersonBaseData = data.personInfo;
  864. //BT1463102 考核目标填报--点击展开详细--基本信息显示undefined
  865. if(!$.isEmptyObject(globalPersonBaseData)) {
  866. globalPersonBaseData = JSON.parse(globalPersonBaseData);
  867. }
  868. //BT1463579 组织目标填报、组织目标已填报、下达页面 、组织目标页面,组织的基础信息 不显示
  869. //BT1463596 团队目标下达--引用组织指标,去掉F7默认组织,目标填报保留
  870. if(isOrg != '1' && pageType != '1') {
  871. refOrgUnit.id = data.refOrgUnit['id'];
  872. refOrgUnit.name = data.refOrgUnit['name'];
  873. }
  874. $('.workInfo').empty();
  875. $('.workInfo').append(personalInformation(globalPersonBaseData));
  876. if($('.workPhoto').length < 1){
  877. $('.informationBox,.namebox').css({'width': '100%','margin-left': '0'});
  878. }
  879. if($('.infoItems').length == 0){
  880. $('.fold_control').hide();
  881. }
  882. getAttachcount();
  883. }
  884. }
  885. });
  886. //加载考核规则、考核计划、考核模式
  887. that.selfRemoteCall({
  888. method : "compositeEvaObjectData",
  889. param : {
  890. evaObj : evaObj,
  891. billId : billId
  892. },
  893. async : false,
  894. success : function(data) {
  895. if(data != null){
  896. globalIndicatorData = data;
  897. hrOrgUnit = data.rows.hrOrgUnit;
  898. it.setPersonInfoRema();
  899. it.initGoalsFillBox(data); //绩效目标部分
  900. }
  901. }
  902. });
  903. //清空待删除指标数组
  904. toDeleteIndicatorIds.splice(0,toDeleteIndicatorIds.length);
  905. //将原指标的信息进行保存 {"评估对象id":{"indicatorId":{"fieldName":"fieldVal"},...}}
  906. initUpdateIndicatorLog(evaObj);
  907. },
  908. // 员工信息区域的区域说明显示到页面上
  909. setPersonInfoRema: function(){
  910. $.each(globalIndicatorData.areaBaseList,function(i,item){
  911. if((item.areaType.value == '100' || item.areaType.value == '400') && item.rema){
  912. var remaTpl =
  913. ['<div class="area-rema-box" area-id="${area.id}">',
  914. '<span>',jsBizMultLan.perfweb_evaluationdetailsJuicer_1586069239184_i18n_5,'</span>',
  915. '<pre area-id="${area.id}">${area.rema}</pre>',
  916. '<div class="area-rema-btn" onclick="showMoreRema(this,\'${area.id}\')">',
  917. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_102,
  918. '</div>',
  919. '</div>'].join("");
  920. var remaHTML = juicer(remaTpl, {area: item});
  921. $('.info-more-wrap').after(remaHTML)
  922. }
  923. })
  924. },
  925. /**
  926. * 展开员工基本信息
  927. * @returns
  928. */
  929. spreadcontrol: function (e) {
  930. var informationBoxMeg = {
  931. length: showfieldnum, //默认显示几个字段
  932. spreadText: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_103,
  933. packupText: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_74
  934. };
  935. if($(e).hasClass('spread')){
  936. $('.informationBox').hide();
  937. $(e).html(informationBoxMeg.spreadText);
  938. $(e).removeClass('spread');
  939. }else{
  940. $('.informationBox').show();
  941. $(e).html(informationBoxMeg.packupText);
  942. $(e).addClass('spread');
  943. }
  944. it.setParentIframeHeight();
  945. },
  946. /**
  947. * 填写绩效目标部分
  948. * @returns
  949. */
  950. initGoalsFillBox : function(data){
  951. //底部按钮只渲染一次
  952. /*if(!isInitBottomBtn) {
  953. isInitBottomBtn = true;*/
  954. data.jsBizMultLan = jsBizMultLan;
  955. var wrapTpl = document.getElementById('wrapTpl').innerHTML;
  956. var ruleTpl = document.getElementById('ruleTpl').innerHTML;
  957. var wrapHTML = juicer(wrapTpl, data);
  958. var ruleHtml = juicer(ruleTpl, data);
  959. $('info-wrap').find('.titles').remove();
  960. $('.contentbox').find('.evaluation').remove();
  961. // $('.scoreBtns').remove(); //底部按钮
  962. $('.info-wrap').append(ruleHtml);
  963. $(wrapHTML).appendTo($('.contentbox'));
  964. processGoalsGiver($('span[name="goalsGiver"]'));
  965. /*}*/
  966. var evaluationdetails = null;
  967. it.initGoalsItems(data); //加载左边菜单
  968. if(scoringWay == 1){
  969. evaluationdetails = juicer(evaluationdetailsOfTargetScoreTpl(),data);
  970. }else{
  971. evaluationdetails = juicer(evaluationdetailsTpl(),data);
  972. }
  973. $(evaluationdetails).appendTo($('.instructions'));
  974. //12月补丁功能,如果区域没有指标,则直接清空指标表单部分
  975. if($('.scoreMenuList li').length > 0) {
  976. $('.scoreMenuList li').eq(0).click(); //默认点击第一条指标
  977. }else {
  978. var $areaIndicatorContent = $(".scoreContent").find('#areaIndicatorContent').eq(0);
  979. if($areaIndicatorContent.length > 0) {
  980. $areaIndicatorContent.html('');
  981. }
  982. var $indiName = $(".scoreContent").find('#indiName').eq(0);
  983. if($indiName.length > 0) {
  984. $indiName.html('');
  985. }
  986. var $scoreContentboxwrap = $(".scoreContent").find('.scoreContentboxwrap').eq(0);
  987. if($scoreContentboxwrap.length > 0) {
  988. $scoreContentboxwrap.html('');
  989. promptImages($scoreContentboxwrap,jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_43); //右边信息为空时,显示提示图片信息
  990. }
  991. }
  992. it.instructionsBox(); //弹出说明
  993. // it.setScoreBtnLocation();
  994. },
  995. /**
  996. * 加载人员列表清单
  997. */
  998. initSelectionList : function(){
  999. $('#content').before(leftListHtml());
  1000. $('#home-wrap,.view_manager_body').css('background', '#EDEFF4');
  1001. $('.content').css({
  1002. width: 'calc(100% - '+$('.content_left').width()+'px)',
  1003. float: 'right',
  1004. // background: '#fff'
  1005. });
  1006. $('.contentbox').css({
  1007. background: 'transparent',
  1008. padding: '0'
  1009. });
  1010. //var evaObjectId = shr.getUrlRequestParam("evaObj");
  1011. //调用左侧人员列表utilsSelectionList.js插件
  1012. $('#selectionList').utilsSelectionList({
  1013. method : "initLeftList",
  1014. listType: 'goals', //goals:我的目标; score: 个人打分;
  1015. pageType : pageType,
  1016. param : { //获取数据需要的参数
  1017. periodId : periodId, //考核周期id
  1018. isOrg : isOrg, //组织考核-yien
  1019. page : 1, //当前页数
  1020. rows : 50, //每页显示记录数
  1021. evaObj: evaObj //当前评估对象
  1022. },
  1023. //12月补丁功能
  1024. //点击人员,刷新 指标明细信息
  1025. clickMenuEvent: function(e){ //点击一条记录触发事件
  1026. _noPassVerifyArr = new Array();
  1027. _indicatorTypeNoPassVerifyArr = new Array();
  1028. evaObj = $(e).attr('workerid');
  1029. periodId =$(e).find('.workName').attr('period');
  1030. personId = $(e).find('.workName').attr('workid');
  1031. personNumber = $(e).find('.workName').attr('worknum') ;
  1032. it.initContent(evaObj,periodId,personId,personNumber,billId);
  1033. if($('.fold_control').text() ==
  1034. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_73){
  1035. $('.fold_control').click();
  1036. }
  1037. that.initSetTargetWorkflowBtn();
  1038. }
  1039. })
  1040. if(sessionStorage.prevgoalsfillindex){
  1041. var tagli = $('.workerList li').eq(sessionStorage.prevgoalsfillindex);
  1042. if(tagli){
  1043. tagli.click();
  1044. }
  1045. }
  1046. },
  1047. /**
  1048. * 弹出说明
  1049. */
  1050. instructionsBox : function(){
  1051. $(".instructions").die('mouseover').live('mouseover',function(){
  1052. var box=$('.instructionsboxwrap');
  1053. box.stop().fadeIn();
  1054. });
  1055. $(".instructions").die('mouseout').live('mouseout',function(){
  1056. var box=$('.instructionsboxwrap');
  1057. box.stop().fadeOut();
  1058. });
  1059. },
  1060. /**
  1061. * 左侧菜单
  1062. * @returns
  1063. */
  1064. initGoalsItems : function(data){
  1065. // 重新组装成需要的数据结构
  1066. scoringWay = data.scoringWay;
  1067. if (scoringWay==1){
  1068. maxScore=data.maxScore;
  1069. }
  1070. evaAreaListGlobal = shr.xssFilter(data.rows.evaAreaList);
  1071. for(var i = 0; i < evaAreaListGlobal.length; i ++){
  1072. var fieldList = evaAreaListGlobal[i].fieldList;
  1073. var datalist = evaAreaListGlobal[i].evaIndicatorList || evaAreaListGlobal[i].evaRecordList;
  1074. evaAreaListGlobal[i].targetItems = [];
  1075. evaAreaListGlobal[i].scoringWay = data.scoringWay;
  1076. evaAreaListGlobal[i].rema = getAreaRema(evaAreaListGlobal[i].areaId);
  1077. for(var j = 0; j < datalist.length; j ++){
  1078. // evaAreaListGlobal[i].personalGoalStatusAlias = datalist[j].FGOALSSTATUS.alias;
  1079. // evaAreaListGlobal[i].personalGoalStatus = datalist[j].FGOALSSTATUS.value;
  1080. if(datalist[j].FINDECATORTYPE){
  1081. datalist[j].FINDECATORTYPE['BaseInfo.name'] = datalist[j].FINDECATORTYPE.name;
  1082. }
  1083. evaAreaListGlobal[i].targetItems[j] = [];
  1084. evaAreaListGlobal[i].targetItems[j].FGOALSSTATUS = datalist[j].FGOALSSTATUS;//指标状态
  1085. evaAreaListGlobal[i].targetItems[j].FPSTARTDATE = datalist[j].FPSTARTDATE;
  1086. evaAreaListGlobal[i].targetItems[j].FPENDDATE = datalist[j].FPENDDATE;
  1087. evaAreaListGlobal[i].targetItems[j].scoringWay = evaAreaListGlobal[i].scoringWay;
  1088. evaAreaListGlobal[i].targetItems[j].areaType = evaAreaListGlobal[i].areaType;
  1089. evaAreaListGlobal[i].targetItems[j].FID = datalist[j].FID;
  1090. evaAreaListGlobal[i].targetItems[j].FISUNITED = datalist[j].FISUNITED; //是否统一下达
  1091. evaAreaListGlobal[i].targetItems[j].FSCORINGFORMULA = datalist[j].FSCORINGFORMULA; //评分公式
  1092. evaAreaListGlobal[i].targetItems[j].FINDECATORTYPE = datalist[j].FINDECATORTYPE; // 指标类型
  1093. evaAreaListGlobal[i].targetItems[j].FWEIGHT = datalist[j].FWEIGHT; // 权重
  1094. if(evaAreaListGlobal[i].areaType == 200){
  1095. evaAreaListGlobal[i].targetItems[j].FNAME = datalist[j].FNAME; // 指标名称
  1096. }else{
  1097. evaAreaListGlobal[i].targetItems[j].FKEYITEM = datalist[j].FKEYITEM;
  1098. }
  1099. evaAreaListGlobal[i].targetItems[j].FTARSCORE = datalist[j].FTARSCORE; // 目标分值
  1100. evaAreaListGlobal[i].targetItems[j].FSOURCE = datalist[j].FSOURCE; // 指标来源
  1101. evaAreaListGlobal[i].targetItems[j].FRESPONSERNAME = datalist[j].FRESPONSERNAME; // 指标负责人
  1102. evaAreaListGlobal[i].targetItems[j].FRESPONSER = datalist[j].FRESPONSER;// 指标负责人id
  1103. evaAreaListGlobal[i].targetItems[j].fieldslist = [];
  1104. var li = it.getTargetData(fieldList, datalist[j]);
  1105. evaAreaListGlobal[i].targetItems[j].fieldslist = li;
  1106. }
  1107. }
  1108. // console.log(evaAreaListGlobal);
  1109. // console.log('isShrBill:'+isShrBill);
  1110. // console.log('pageType:'+pageType);
  1111. targetCanEdit = data.targetCanEdit;
  1112. var contentTpl = document.getElementById('contentTpl').innerHTML;
  1113. var mydata = {
  1114. targetCanEdit: targetCanEdit,
  1115. rows: evaAreaListGlobal,
  1116. pageType: pageType,
  1117. pStartDate: data.rows.pStartDate,
  1118. pEndDate: data.rows.pEndDate,
  1119. targetDecompose: data.hasOwnProperty('targetDecompose')?data.targetDecompose: false,
  1120. progressUpdate: data.hasOwnProperty('progressUpdate')?data.progressUpdate: false,
  1121. jsBizMultLan: jsBizMultLan,
  1122. showAllFields: true, //展示所有字段,默认值false
  1123. viewType: viewType,
  1124. hideDecompose: hideDecompose,
  1125. btnPerm: btnPerm, //按钮权限
  1126. operatestate: operatestate, // 审批单据编辑状态
  1127. // canEditTab: canEditTab // 先不用这个判断,可能会影响分解、变更页面
  1128. }
  1129. //"个人目标填报、个人目标下达页面,添加指标、引用指标等按钮需调整显示逻辑,具体如下:
  1130. var datarows = mydata.rows
  1131. if(datarows != null){
  1132. //循环
  1133. for(var i=0; i<datarows.length; i++){
  1134. var row = datarows[i];
  1135. var r_areaName = row.areaName;
  1136. //第一部分:目标达成-目标填报----只显示添加指标_隐藏引用指标
  1137. // 第三部分: 发展目标----只显示添加指标"
  1138. if(r_areaName == '第一部分:目标达成-目标填报' || r_areaName.includes( '第三部分: 发展目标') ){
  1139. // hideref = true加入到row中
  1140. row.hideref = true;
  1141. }else if(r_areaName.includes('第一部分:目标达成-总评') || r_areaName.includes( '第二部分:如何达成-B1')
  1142. || r_areaName.includes('第二部分:如何达成-总评')){
  1143. // 第一部分:目标达成-总评(评估人评估)----不显示
  1144. // 第二部分:如何达成-B1----不显示
  1145. // 第二部分:如何达成-总评(评估人评估)----不显示
  1146. row.hideadd = true;
  1147. row.hideref = true;
  1148. }else if(r_areaName.includes('第二部分:如何达成-Business leadership') || r_areaName.includes('第二部分:如何达成-People leadership')
  1149. || r_areaName.includes('如何达成-Self leadership') ){
  1150. // 第二部分:如何达成-Business leadership(至少选择一项)----只显示引用指标
  1151. // 第二部分:如何达成-People leadership(至少选择一项)----只显示引用指标
  1152. // 第二部分:如何达成-Self leadership(至少选择一项)----只显示引用指标
  1153. row.hideadd = true;
  1154. }
  1155. row.hidemovebtn = true; // 隐藏移动按钮
  1156. }
  1157. }
  1158. var contentHTML = juicer(contentTpl, mydata);
  1159. $('.evaluation').empty().append(contentHTML);
  1160. it.setParentIframeHeight();
  1161. if(pageType != 1){
  1162. $('#transmit').hide();
  1163. }
  1164. // 拖动排序
  1165. if(pageType == 0 || pageType == 1 || pageType == 6){
  1166. that.initIndicatorSortable();
  1167. }
  1168. if(viewType == 'list'){
  1169. that.initTab(mydata);
  1170. }
  1171. },
  1172. _getMyData: function(item, hasDecompseBtn, hasUpdataBtn, cellEdit){
  1173. var mydata = item.evaIndicatorList || item.evaRecordList;
  1174. for(var i=0; i<mydata.length; i++){
  1175. mydata[i]['id'] = mydata[i]['FID'];
  1176. mydata[i]['otherMsg'] = {
  1177. hasDecompseBtn: hasDecompseBtn,
  1178. hasUpdataBtn: hasUpdataBtn,
  1179. areaId: item.areaId,
  1180. areaType: item.areaType,
  1181. tabObj: '#tab'+i,
  1182. canEdit: cellEdit, // 判断指标是否可编辑删除
  1183. fieldList: item.fieldList,
  1184. isRefIndi: that.isRefIndicator(mydata[i]['FID'])
  1185. }
  1186. // 组装多语言数据
  1187. $.each(item.fieldList,function(j,list){
  1188. if(multiFields.indexOf(list.colName) > -1){
  1189. var mulstr = JSON.stringify({
  1190. l1: mydata[i][list.colName+'_L1'] || '',
  1191. l2: mydata[i][list.colName+'_L2'] || '',
  1192. l3: mydata[i][list.colName+'_L3'] || ''
  1193. })
  1194. mydata[i][list.colName+'Multi'] = shr.allEncrypt(mulstr);
  1195. }
  1196. })
  1197. }
  1198. return mydata;
  1199. },
  1200. _getLongTextModel: function(_myModel){
  1201. // shrMultiLangBox、shrMultiLangArea、wafTextArea
  1202. // if(multiFields.indexOf(_myModel.name) > -1){
  1203. // _edittype = 'shrMultiLangArea';
  1204. // _editoptions = {
  1205. // inputJson: {
  1206. // trimAll: false
  1207. // }
  1208. // }
  1209. // }else{
  1210. _myModel.edittype = 'wafTextArea';
  1211. _myModel.formatter = function(val,msg){
  1212. return '<div class="cell-height scrollbarthin">'+(val?val:'')+'</div>';
  1213. }
  1214. // }
  1215. return _myModel;
  1216. },
  1217. _getNumberModel: function(_myModel){
  1218. _myModel.edittype = 'shrtext';
  1219. _myModel.width = 90;
  1220. return _myModel;
  1221. },
  1222. _getBooleanModel: function(_myModel){
  1223. var fieldOptions = [];
  1224. var _alias0 = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_12; //否
  1225. var _alias1 = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_52; //是
  1226. var _changeEvent;
  1227. if(_myModel.name == 'FQUALIORRATION'){ // 定性/定量
  1228. _alias0 = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_14; // 定性
  1229. _alias1 = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_13; // 定量
  1230. _changeEvent = function(){ // 定性不可编辑评分公式且清空
  1231. var val = $(this).shrSelect('getValue');
  1232. var _grid = $(this).closest('table'),
  1233. tabId = _grid.attr('id'),
  1234. rowid = $(this).closest('tr').attr('id');
  1235. if(val.value == '0'){
  1236. _grid.jqGrid('setCell', rowid, 'FSCORINGFORMULA',null, 'not-editable-cell');
  1237. }else{
  1238. _grid.find('tr[id="'+rowid+'"] td[aria-describedby="'+tabId+'_FSCORINGFORMULA"]').removeClass('not-editable-cell');
  1239. }
  1240. }
  1241. }else if(_myModel.name == 'FISVISIBLE'){ // 可见性
  1242. _alias0 = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_2 // 不公开
  1243. _alias1 = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_14; // 公开
  1244. }else if(_myModel.name == 'FREJECTION'){ // 否决项
  1245. _changeEvent = function(){
  1246. var val = $(this).shrSelect('getValue');
  1247. console.log(val)
  1248. var _grid = $(this).closest('table'),
  1249. tabId = _grid.attr('id'),
  1250. rowid = $(this).closest('tr').attr('id');
  1251. if(val.value == '1'){
  1252. // 勾选否决项后,权重、评分公式、目标分值清空不可编辑,定性/定量默认选择定性
  1253. _grid.jqGrid('setCell', rowid, 'FWEIGHT',null, 'not-editable-cell');
  1254. _grid.jqGrid('setCell', rowid, 'FQUALIORRATION','0', 'not-editable-cell');
  1255. _grid.jqGrid('setCell', rowid, 'FSCORINGFORMULA',null, 'not-editable-cell');
  1256. _grid.jqGrid('setCell', rowid, 'FTARSCORE',null, 'not-editable-cell');
  1257. }else{
  1258. _grid.find('tr[id="'+rowid+'"]').find('td[aria-describedby="'+tabId+'_FWEIGHT"]').removeClass('not-editable-cell');
  1259. _grid.find('tr[id="'+rowid+'"]').find('td[aria-describedby="'+tabId+'_FQUALIORRATION"]').removeClass('not-editable-cell');
  1260. _grid.find('tr[id="'+rowid+'"]').find('td[aria-describedby="'+tabId+'_FTARSCORE"]').removeClass('not-editable-cell');
  1261. }
  1262. }
  1263. }
  1264. fieldOptions = [{
  1265. value:"0",
  1266. alias:_alias0,
  1267. isenum:false
  1268. },{
  1269. value:"1",
  1270. alias:_alias1,
  1271. isenum:false
  1272. }];
  1273. _myModel.editoptions = {
  1274. selectJson: {
  1275. data: fieldOptions,
  1276. onChange: _changeEvent
  1277. },
  1278. enumSource: {
  1279. data: fieldOptions
  1280. }
  1281. };
  1282. _myModel.edittype = 'shrselect';
  1283. _myModel.formatter = 'shrselect';
  1284. return _myModel;
  1285. },
  1286. _getSelectModel: function(_myModel, list){
  1287. var options = list.options;
  1288. var fieldOptions = [];
  1289. $.each(options,function(i,item){
  1290. fieldOptions.push({
  1291. value: item.key,
  1292. alias: item.value
  1293. })
  1294. })
  1295. _myModel.editoptions = {
  1296. selectJson: {
  1297. data: fieldOptions,
  1298. onChange: function(){
  1299. }
  1300. },
  1301. enumSource: {
  1302. data: fieldOptions
  1303. }
  1304. };
  1305. _myModel.edittype = 'shrselect';
  1306. _myModel.formatter = 'shrselect';
  1307. return _myModel;
  1308. },
  1309. _getTimeStampModel: function(_myModel){
  1310. _myModel.editoptions = {
  1311. datepickerjson: {
  1312. ctrlType: _myModel.fieldType
  1313. }
  1314. };
  1315. _myModel.formatter = function(val,msg){
  1316. return window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType})
  1317. }
  1318. _myModel.edittype = 'shrDateTimePicker';
  1319. return _myModel;
  1320. },
  1321. _getF7Model: function(_myModel){
  1322. if(_myModel.name == 'FINDECATORTYPE'){ // 指标类型
  1323. _myModel.editoptions = {
  1324. f7Json: {
  1325. subWidgetName: "specialPromptGrid",
  1326. displayFormat: "{BaseInfo.name}",
  1327. subWidgetOptions: {
  1328. title: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_113,
  1329. uipk: "com.kingdee.shr.perfweb.app.base.indecator.IndecatorType.available.F7",
  1330. query: "",
  1331. isHRBaseItem: true,
  1332. f7ReKeyValue: "BaseInfo.id:BaseInfo.longName",
  1333. currentHrOrgUnitId: hrOrgUnit,
  1334. filter: "hrOrgUse.id = '" + hrOrgUnit + "'",
  1335. bizFilterFieldsValues: "bizFilterFields=undefined:" + encodeURIComponent(hrOrgUnit),
  1336. filterConfig: [{name: 'isComUse', value: true,
  1337. alias: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_86,
  1338. widgetType: 'checkbox'}],
  1339. onclikFunction : function(id){
  1340. var dataSet = $("tr[id='" +id+ "']").closest("table[ctrlrole='grid']").jqGrid('getRowData', id);
  1341. currPromptInp.shrPromptBox("setValue", dataSet);
  1342. }
  1343. }
  1344. }
  1345. }
  1346. }
  1347. _myModel.edittype = "promptBox";
  1348. _myModel.formatter = "promptBox";
  1349. return _myModel;
  1350. },
  1351. _getTextModel: function(_myModel){
  1352. // 因后台返回的评分公式类型为Text,实际是f7,需单独处理
  1353. if(_myModel.name == 'FSCORINGFORMULA'){ //
  1354. if(!/\'/.test(hrOrgUnit)) {
  1355. var useHrOrgUnit = "'"+hrOrgUnit+"'";
  1356. }
  1357. _myModel.editoptions = {
  1358. f7Json: {
  1359. subWidgetName: "specialPromptGrid",
  1360. subWidgetOptions: {
  1361. title: jsBizMultLan.perfweb_perfAchievementBase_1585536469649_i18n_4,
  1362. uipk: "com.kingdee.shr.perfweb.app.base.perfmancescore.ScoringFormula.F7",
  1363. query: "",
  1364. isHRBaseItem: true,
  1365. currentHrOrgUnitId: hrOrgUnit,
  1366. f7ReKeyValue: "BaseInfo.id:BaseInfo.name",
  1367. filter: "hrOrgUse.id in (" + useHrOrgUnit + ") ",
  1368. bizFilterFieldsValues: "bizFilterFields=undefined:" + encodeURIComponent(hrOrgUnit),
  1369. filterConfig: [{name: 'isComUse', value: true,
  1370. alias: jsBizMultLan.perfweb_perfAchievementBase_1585536469649_i18n_6,
  1371. widgetType: 'checkbox'}],
  1372. onclikFunction : function(id){
  1373. var dataSet = $("tr[id='" +id+ "']").closest("table[ctrlrole='grid']").jqGrid('getRowData', id);
  1374. currPromptInp.shrPromptBox("setValue", dataSet);
  1375. }
  1376. }
  1377. }
  1378. }
  1379. _myModel.edittype = "promptBox";
  1380. _myModel.formatter = "promptBox";
  1381. // _displayFormat = 'name';
  1382. }
  1383. return _myModel;
  1384. },
  1385. _getDefaultModel: function(_myModel){
  1386. _myModel.formatter = function(val,msg){
  1387. var text = val;
  1388. var fieldType = msg.colModel.fieldType;
  1389. if(typeof val === "object"){
  1390. text = val.name;
  1391. }else if(fieldType === 'Text' || fieldType === 'LongText' || fieldType === 'Unknown'){
  1392. text = '<div class="cell-height scrollbarthin">'+val+'</div>';
  1393. }else if(fieldType == 'Boolean'){
  1394. text = val === '0' ? jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_09 : jsBizMultLan.perfweb_perfscoreNew_zw20201229_i18n_10;
  1395. }else if(fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp'){
  1396. text = window.dateTimePickerService.transformUTCDate(val,true,'',{ctrlType: msg.colModel.fieldType});
  1397. }
  1398. return text;
  1399. }
  1400. return _myModel;
  1401. },
  1402. _getFieldListModel: function(list,cellEdit){
  1403. var width = 120;
  1404. if(list.fieldType == 'LongText'){
  1405. width = 400;
  1406. }
  1407. var _myModel = {
  1408. name: list.colName,
  1409. index: list.colName,
  1410. showName: list.showName,
  1411. width: width,
  1412. align: "left",
  1413. sortable: true,
  1414. editable: true,
  1415. edittype: 'shrtext',
  1416. hidden: false,
  1417. required: list.required,
  1418. classes: '',
  1419. fieldType: list.fieldType,
  1420. formatter: '',
  1421. editoptions: {},
  1422. // displayFormat: _displayFormat
  1423. }
  1424. if(_myModel.name == 'FISUNITED'){
  1425. _myModel.hidden = true;
  1426. }
  1427. if(!_myModel.editable && cellEdit){
  1428. _myModel.classes = 'disabled';
  1429. }
  1430. if(_myModel.required && cellEdit){
  1431. _myModel.classes = 'required';
  1432. }
  1433. switch (_myModel.fieldType){
  1434. case 'LongText':
  1435. _myModel = that._getLongTextModel(_myModel);
  1436. break;
  1437. case 'Number':
  1438. _myModel = that._getNumberModel(_myModel);
  1439. break;
  1440. case 'Boolean':
  1441. _myModel = that._getBooleanModel(_myModel);
  1442. break;
  1443. case 'Select':
  1444. _myModel = that._getSelectModel(_myModel, list);
  1445. break;
  1446. case 'Date':
  1447. case 'Time':
  1448. case 'TimeStamp':
  1449. _myModel = that._getTimeStampModel(_myModel);
  1450. break;
  1451. case 'F7':
  1452. _myModel = that._getF7Model(_myModel);
  1453. break;
  1454. case 'Text':
  1455. _myModel = that._getTextModel(_myModel);
  1456. break;
  1457. default:
  1458. _myModel = that._getDefaultModel(_myModel);
  1459. }
  1460. return _myModel;
  1461. },
  1462. _getMyNameAndMyModel: function(hasDecompseBtn,hasUpdataBtn,item,cellEdit){
  1463. var myName = [],
  1464. myModel = [];
  1465. // 冻结列无法拖拽排序,先注释掉
  1466. // myName.push('');
  1467. // myModel.push({
  1468. // name: 'dragSort',
  1469. // index: 'dragSort',
  1470. // width: 30,
  1471. // align: "center",
  1472. // sortable: false,
  1473. // editable: false,
  1474. // hidden: pageType == 0 || pageType == 1 || pageType == 6 ? false : true,
  1475. // frozen: true,
  1476. // formatter: function(val,msg){
  1477. // return '<div class="tr-handle" title="拖动排序"></div>';
  1478. // }
  1479. // });
  1480. myName.push(jsBizMultLan.perfweb_perfgoalsfillHtmlNew_zw20210317_i18n_05);
  1481. myModel.push({
  1482. name: 'operateBtn',
  1483. index: 'operateBtn',
  1484. width: contextLanguage == 'en_US' ? 150 : 80,
  1485. align: "center",
  1486. sortable: false,
  1487. editable: false,
  1488. hidden: (hasDecompseBtn || hasUpdataBtn) ? false : true,
  1489. frozen: true,
  1490. formatter: 'operateBtn' // 扩展formatter类型
  1491. });
  1492. myName.push('otherMsg');
  1493. myModel.push({
  1494. name: 'otherMsg',
  1495. index: 'otherMsg',
  1496. width: 80,
  1497. align: "center",
  1498. sortable: false,
  1499. editable: false,
  1500. hidden: true,
  1501. frozen: true,
  1502. });
  1503. myName.push('id');
  1504. myModel.push({
  1505. name: 'id',
  1506. index: 'id',
  1507. width: 50,
  1508. align: "left",
  1509. sortable: true,
  1510. editable: false,
  1511. hidden: true,
  1512. frozen: false,
  1513. });
  1514. myName.push('FID');
  1515. myModel.push({
  1516. name: 'FID',
  1517. index: 'FID',
  1518. width: 50,
  1519. align: "left",
  1520. sortable: true,
  1521. editable: false,
  1522. hidden: true,
  1523. frozen: false,
  1524. });
  1525. $.each(item.fieldList,function(j,list){
  1526. if(list.fieldMaintenanceStage !== '200'){
  1527. var _myModel = that._getFieldListModel(list,cellEdit);
  1528. myName.push(_myModel.name == 'FWEIGHT' ? _myModel.showName+'(%)' : _myModel.showName);
  1529. myModel.push(_myModel);
  1530. if(multiFields.indexOf(_myModel.name) > -1){
  1531. myName.push(_myModel.showName);
  1532. myModel.push({
  1533. name: _myModel.name+'Multi',
  1534. index: _myModel.name+'Multi',
  1535. width: 50,
  1536. align: "left",
  1537. sortable: true,
  1538. editable: false,
  1539. hidden: true,
  1540. frozen: false,
  1541. });
  1542. }
  1543. }
  1544. })
  1545. return {myName: myName, myModel: myModel};
  1546. },
  1547. _reprocessMyModel: function(shrinkToFit, tabWidth, showFieldWidth, myModel, text_count, show_count){
  1548. if(shrinkToFit){// 如果没有横向滚动条,短文本字段和长文本字段重新计算列宽
  1549. var w1 = tabWidth - showFieldWidth - 34 - show_count * 6; // 可按比例分配宽度 34:复选框列 6:单元格左右内边距
  1550. var w2 = (w1/text_count).toFixed(2) - 6; // 每个长文本可分配的宽度
  1551. if(w1 != 0){
  1552. myModel.forEach(function(item, i){
  1553. if(!item.hidden && item.name != 'operateBtn' && (item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text'))){
  1554. myModel[i].width = myModel[i].width + Number(w2); // 新列宽
  1555. }
  1556. })
  1557. }
  1558. }
  1559. // else{// 如果有横向滚动条,除操作列外的前两列冻结
  1560. // var frozenLen = 0;
  1561. // myModel.forEach(function(item, i){
  1562. // if(!item.hidden && item.name != 'operateBtn'){
  1563. // if(frozenLen < 2){
  1564. // myModel[i].frozen = true;
  1565. // frozenLen ++;
  1566. // }
  1567. // }
  1568. // })
  1569. // }
  1570. return myModel;
  1571. },
  1572. // 初始化表格
  1573. initTab: function(data){
  1574. $.each(data.rows, function(i,item){
  1575. var _grid = $('#tab'+i),
  1576. mydata = [],
  1577. myName = [], myModel = [],
  1578. showFieldWidth = 0,text_count = 0,show_count = 0;
  1579. tabIndex = i ;
  1580. // 数据组装
  1581. // 考核计划执行-未发送-查看评估表、绩效已办-我已填报的目标、我的绩效-我的目标,不能编辑 、删除
  1582. var cellEdit = canEditTab;
  1583. // 指标分解:绩效已办-我已下达的目标、我已填报的目标、记录表区域、流程审批页面不显示指标分解按钮。targetDecompose为false不显示,为true显示。记录表区域不显示指标分解按钮
  1584. var hasDecompseBtn = pageType != 5 && pageType != 10 && pageType != 3 && pageType != 7 && pageType != 8 && item.areaType != 300 && data.targetDecompose && !shr.getUrlRequestParam("isShrBill") && hideDecompose != '1' ? true : false;
  1585. var hasUpdataBtn = (pageType == 2 || pageType == 4) && data.progressUpdate && hideDecompose != '1' ? true : false;
  1586. mydata = that._getMyData(item, hasDecompseBtn, hasUpdataBtn, cellEdit);
  1587. var myNameAndMyModel = that._getMyNameAndMyModel(hasDecompseBtn,hasUpdataBtn,item,cellEdit);
  1588. myName = myNameAndMyModel.myName;
  1589. myModel = myNameAndMyModel.myModel;
  1590. myModel.forEach(function(item){
  1591. if(!item.hidden){
  1592. showFieldWidth += item.width;
  1593. show_count ++; // 默认显示字段个数
  1594. if(item.edittype == "wafTextArea" || (item.edittype == "shrtext" && item.fieldType == 'Text')){
  1595. text_count ++ ; // 文本类型字段个数
  1596. }
  1597. }
  1598. })
  1599. var tabWidth = $('.tabwrap').eq(0).width()
  1600. var shrinkToFit = showFieldWidth < tabWidth ? true : false;
  1601. myModel = that._reprocessMyModel(shrinkToFit, tabWidth, showFieldWidth, myModel, text_count, show_count);
  1602. var dataGrid_option = {
  1603. datatype: 'local',
  1604. data: mydata,
  1605. colNames: myName,
  1606. colModel: myModel,
  1607. multiselect: true,
  1608. multiselectWidth: '30',//复选框单元格宽度
  1609. shrinkToFit: shrinkToFit,//true没有滚动条,false有滚动条
  1610. rownumbers: false,
  1611. width: 640,//这个宽度不能为百分比
  1612. height: 298,//高度,表格高度。可为数值、百分比或'auto'
  1613. cellEdit: cellEdit,
  1614. cellsubmit: 'clientArray',
  1615. areaType: item.areaType,
  1616. areaId: item.areaId,
  1617. areaName: item.areaName,
  1618. fieldList: item.fieldList,
  1619. weightControl: item.weightControl,
  1620. areaControlWeight: item.areaControlWeight,
  1621. keyOptions:{ // 编辑最后一行的最后一个可编辑单元格时,回车不新增行,而是回到第一个可编辑单元格
  1622. addNewRowForLastCell: false,
  1623. loop: true
  1624. },
  1625. beforeEditCell: function(rowid, cellname, value, iRow, iCol){
  1626. that._beforeEditCell(rowid, cellname, value, iRow, iCol, _grid);
  1627. },
  1628. afterEditCell: function(rowid, cellname, value, iRow, iCol){
  1629. that._afterEditCell(rowid, cellname, value, iRow, iCol, _grid);
  1630. },
  1631. afterSaveCell: function(rowid, cellname, value, iRow, iCol){
  1632. that._afterSaveCell(rowid, cellname, value, iRow, iCol, _grid);
  1633. },
  1634. loadComplete: function (data) {
  1635. // console.log(data)
  1636. that._loadComplete(data, _grid);
  1637. }
  1638. };
  1639. if(shrinkToFit || !$.browser.chrome){// ie、火狐浏览器冻结列有问题,只谷歌浏览器显示冻结列
  1640. _grid.jqGrid(dataGrid_option);
  1641. }else{
  1642. _grid.jqGrid(dataGrid_option).jqGrid('setFrozenColumns').trigger("reloadGrid", [
  1643. {current:true}
  1644. ]);// 不加上冻结列有问题
  1645. }
  1646. })
  1647. },
  1648. _beforeEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
  1649. if(lastTable != _grid.attr('id')){
  1650. if(lastTable){
  1651. $('#'+lastTable).jqGrid('editStop');
  1652. }
  1653. lastTable = _grid.attr('id');
  1654. }
  1655. },
  1656. _afterEditCell: function(rowid, cellname, value, iRow, iCol, _grid){
  1657. var rowData = _grid.jqGrid('getOriginalRowData',rowid);
  1658. var colAttr = _grid.getColProp(cellname);
  1659. var fieldType = colAttr.fieldType;
  1660. var inp = _grid.find('#'+iRow+'_'+cellname);
  1661. var maxSize = that._getFieldMaxSize(cellname, rowData, fieldType);
  1662. inp.attr('maxlength',maxSize);
  1663. // f7赋值有问题,记录下当前f7
  1664. if(cellname == 'FINDECATORTYPE' || cellname == 'FSCORINGFORMULA'){ // 指标类型、评分公式
  1665. currPromptInp = inp;
  1666. }
  1667. // 评分公式
  1668. if(cellname == 'FSCORINGFORMULA'){
  1669. inp.shrPromptBox("setBizFilterFieldsValues", hrOrgUnit);
  1670. }
  1671. // 单元格有滚动条时编辑取值修改
  1672. if(value.indexOf('class="cell-height scrollbarthin"') > -1){
  1673. inp.attr('fname',cellname).attr('rowid',rowid).val($(value).text());
  1674. // 平台可编辑列表初始化多语言组件有问题,需单独处理
  1675. }
  1676. // 多语言字段设置
  1677. that._setMultiField(cellname, inp, maxSize, _grid, rowData);
  1678. },
  1679. // 最大输入长度限制
  1680. _getFieldMaxSize: function(cellname, rowData, fieldType){
  1681. var maxSize = 255;
  1682. if(cellname == 'FNAME' || cellname == 'FKEYITEM'){
  1683. maxSize = 255;
  1684. }else if(cellname == 'FNUMBER' || cellname == 'FKEYCODE'){
  1685. maxSize = 80;
  1686. }else if(fieldType == 'LongText' || (cellname == 'FTARGETVALUE' && rowData.FQUALIORRATION == '0')){
  1687. maxSize = 1024;
  1688. }
  1689. return maxSize;
  1690. },
  1691. // 多语言字段设置
  1692. _setMultiField: function(cellname, inp, maxSize, _grid, rowData){
  1693. if(multiFields.indexOf(cellname) > -1 && isUseMultiLan){
  1694. inp.shrMultiLangBox({
  1695. value: '', // 默认值,必填
  1696. readonly: false, // 是否只读,非必填
  1697. // disabled: disabled, // 是否禁用
  1698. maxlength: maxSize,
  1699. trimAll: false,
  1700. onchange: function(e, obj){
  1701. var _this = $(e.target);
  1702. var cellName = _this.attr('fname');
  1703. var gridId = _this.attr('grid').split('$')[0];
  1704. var _grid = $('#'+gridId);
  1705. var _rowid = _this.attr('rowid');
  1706. _grid.jqGrid('setCell', _rowid, cellName+'Multi',shr.allEncrypt(JSON.stringify(obj.current)));
  1707. }
  1708. });
  1709. inp.shrMultiLangBox('setValue',rowData[cellname+'Multi'] ? JSON.parse(shr.allDecrypt(rowData[cellname+'Multi'])) : '')
  1710. }
  1711. },
  1712. _afterSaveCell: function(rowid, cellname, value, iRow, iCol, _grid){
  1713. var rowData = _grid.jqGrid('getOriginalRowData',rowid);
  1714. if(typeof value == 'string' && value.indexOf('class="cell-height scrollbarthin"') > -1){
  1715. value = $(value).text();
  1716. }
  1717. that.cellValueCheck(rowid, cellname, value, iRow, iCol, rowData, _grid);
  1718. },
  1719. _loadComplete: function (data, _grid) {
  1720. // console.log(data)
  1721. var maxH = $(window).height() - $('.evaluation').offset().top - $('.areaname').eq(0).height();
  1722. if(_grid.height() > maxH){
  1723. _grid.jqGrid('setGridHeight',maxH);
  1724. }
  1725. $.each(data.rows, function(i, item){
  1726. that.getDisableField(item,_grid);
  1727. })
  1728. var shrinkToFit = _grid.jqGrid('getGridParam','shrinkToFit');
  1729. _grid.jqGrid('setGridWidth',$('.tabwrap').eq(0).width(),shrinkToFit);
  1730. // 排序
  1731. // that.initTabSortable(_grid);
  1732. },
  1733. // 冻结列无法拖拽排序,先注释掉
  1734. // initTabSortable: function(_grid){
  1735. // _grid.closest('.tabwrap').find('tbody').sortable({
  1736. // axis: "y",
  1737. // cursor: "move",
  1738. // delay: 150,
  1739. // // handle: ".tr-handle",
  1740. // // items: "tr",
  1741. // placeholder: "tr-ui-state-highlight",
  1742. // start: function( event, ui ){
  1743. // var thisItem = $(ui.item[0]);
  1744. // var _grid = thisItem.closest('table');
  1745. // var colModel = _grid.getGridParam('colModel');
  1746. // $.each(colModel,function(i,item){
  1747. // if(!item.hidden){
  1748. // thisItem.find('td[aria-describedby*="_'+item.name+'"]').width(item.width);
  1749. // }
  1750. // })
  1751. // },
  1752. // receive: function(e, ui) {
  1753. // // ui.item.before(ui.item.data('items'));
  1754. // },
  1755. // stop: function( event, ui ) {
  1756. // var thisItem = $(ui.item[0]);
  1757. // var _grid = thisItem.closest('table');
  1758. // var rowsData = _grid.getRowData();
  1759. // var areaType = thisItem.closest('.areawrap').attr('areatype');
  1760. // var data = [];
  1761. // for(var i = 0; i < rowsData.length; i++){
  1762. // var id = rowsData[i].FID;
  1763. // data.push({
  1764. // id: id,
  1765. // type: areaType,
  1766. // index: i.toString(),
  1767. // })
  1768. // }
  1769. // that.setOrder(data);
  1770. // }
  1771. // }).disableSelection();
  1772. // },
  1773. // 列表模式,获取不可编辑字段
  1774. getDisableField: function(item,_grid){
  1775. var disabledArr = [];
  1776. var cellEdit = _grid.getGridParam('cellEdit');
  1777. if(!cellEdit){
  1778. return false;
  1779. }
  1780. var fieldList = item.otherMsg.fieldList;
  1781. // 统一下达指标
  1782. if(item.FISUNITED == '1'){
  1783. // targetCanEdit为0,不可编辑、删除
  1784. if(targetCanEdit == 0){
  1785. $.each(fieldList,function(j,field){
  1786. _grid.jqGrid('setCell', item.FID, field.colName,item[field.colName], 'not-editable-cell');
  1787. })
  1788. }else{
  1789. // 统一下达指标允许编辑时,不可编辑字段名称、编码、类型、否决项、定性/定量、单位、计划完成日期、可见性、评分公式
  1790. // disabledArr = ['FNAME','FNUMBER','FINDECATORTYPE','FREJECTION','FKEYITEM','FKEYCODE','FQUALIORRATION','FUNIT','FPLANEDDATE','FISVISIBLE','FSCORINGFORMULA'];
  1791. // BT-01579136【PT174764】【 V8.8SP1 】统一下达的直接仅控制指标编码、指标名称、指标类型、定性/定量、否决项, 评分公式几个字段不允许维护,其他字段应该是允许员工维护的。
  1792. disabledArr = ['FNAME','FNUMBER','FINDECATORTYPE','FREJECTION','FKEYITEM','FKEYCODE','FQUALIORRATION','FSCORINGFORMULA'];
  1793. }
  1794. }
  1795. // 引用指标不可编辑名称、编码、描述、定性/定量
  1796. if(item.otherMsg.isRefIndi){
  1797. disabledArr = disabledArr.concat(['FNAME','FNUMBER','FINDECATORDESC','FKEYITEM','FKEYCODE','FQUALIORRATION']);
  1798. }
  1799. // 定性不可编辑评分公式
  1800. if(item['FQUALIORRATION'] == '0'){
  1801. disabledArr.push('FSCORINGFORMULA');
  1802. }
  1803. // 否决项不可编辑权重、定性定量、评分公式、目标分值
  1804. if(item['FREJECTION'] == '1'){
  1805. disabledArr = disabledArr.concat(['FWEIGHT','FQUALIORRATION','FSCORINGFORMULA','FTARSCORE']);
  1806. }
  1807. $.each(disabledArr,function(j,col){
  1808. _grid.jqGrid('setCell', item.FID, col,item[col], 'not-editable-cell');
  1809. })
  1810. },
  1811. // 判断是否是引用指标
  1812. isRefIndicator: function(FID){
  1813. var flag = false;
  1814. that.selfRemoteCall({
  1815. method : "judgeIsRefTarget",
  1816. param : {
  1817. indicatorId : FID
  1818. },
  1819. async : false,
  1820. type:"post",
  1821. success : function(data) {
  1822. if(data.result == '200' && data.isRefTarget == '1') {
  1823. flag = true;
  1824. }
  1825. }
  1826. });
  1827. return flag;
  1828. },
  1829. // 列表模式鼠标离开输入框校验
  1830. cellValueCheck: function(rowid, cellname, value, iRow, iCol, rowData, _grid){
  1831. // if(lastTable){
  1832. // $(lastTable).jqGrid('editStop');
  1833. // }
  1834. var tr = _grid[0].rows.namedItem(rowid),td = tr.cells[iCol],flag = true,
  1835. cellvalue = value,
  1836. colAttr = _grid.getColProp(cellname),
  1837. showName = colAttr.showName;
  1838. classes = colAttr.classes,
  1839. fieldType = colAttr.fieldType,
  1840. maxSize = 200,
  1841. errObj = {},FID = rowData.id;
  1842. if (cellvalue) {
  1843. cellvalue = cellvalue.trim();
  1844. }
  1845. if(cellname == 'FNAME' || cellname == 'FKEYITEM'){
  1846. maxSize = 255;
  1847. }else if(cellname == 'FNUMBER' || cellname == 'FKEYCODE'){
  1848. maxSize = 80;
  1849. }else if(fieldType == 'LongText' || (cellname == 'FTARGETVALUE' && rowData.FQUALIORRATION == '0')){
  1850. maxSize = 1024;
  1851. }
  1852. errObj.indicator = FID;
  1853. errObj.errorType = cellname;
  1854. errObj.name = cellname;
  1855. errObj.showName = showName;
  1856. existInArrThenDelete(_noPassVerifyArr, errObj);
  1857. if(isEmpty(cellvalue)){
  1858. if(classes && classes.indexOf('required') > -1){
  1859. errObj.errortext = shr.formatMsg(jsBizMultLan.perfweb_perfgoalsfill_20221201_i18n_01, [showName]);
  1860. flag = false;
  1861. }
  1862. }else{
  1863. if(cellvalue.length > maxSize){ // 长度校验
  1864. // var msg1 = "{0}最多输入{1}个字,已输入{2}个";
  1865. var msg1 = jsBizMultLan.perfweb_perfgoalsfill_20221219ht_01;
  1866. errObj.errortext = shr.formatMsg(msg1, [showName,maxSize,cellvalue.length]);
  1867. flag = false;
  1868. }else if(fieldType == 'Number'){
  1869. if(cellname == 'FWEIGHT' || cellname == 'FTARSCORE'){
  1870. if(!isNumberVerify(cellvalue)){//两位小数数字校验
  1871. errObj.errortext = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_52;
  1872. flag = false;
  1873. }
  1874. }else if(!isNumberVerify(cellvalue , 2) && !(cellname == 'FTARGETVALUE' && rowData.FQUALIORRATION == '0')){//10位小数数字校验,目标值且定性时不做数字校验
  1875. errObj.errortext = jsBizMultLan.perfweb_achivementDataList_20220818ht_01;
  1876. flag = false;
  1877. }else if(cellvalue > 999999999.99){
  1878. errObj.errortext = shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_55,[999999999.99]);
  1879. flag = false;
  1880. }
  1881. }
  1882. }
  1883. if(flag){
  1884. $(td).removeClass("errorval");
  1885. }else{
  1886. _grid.jqGrid('setCell', FID, cellname, cellvalue, 'errorval');
  1887. shr.showWarning({
  1888. message: errObj.errortext,
  1889. hideAfter: 3
  1890. });
  1891. _noPassVerifyArr.push(errObj);
  1892. }
  1893. },
  1894. // 设置绩效工作台iframe高度
  1895. setParentIframeHeight: function(){
  1896. if(parent && parent.setIframeHeight){
  1897. var iframeid = 'rightContentIframe';
  1898. if(pageType == 2 || pageType == 6){
  1899. iframeid = 'myGoalsIframe';
  1900. }
  1901. parent.setIframeHeight(iframeid);
  1902. }
  1903. },
  1904. /**
  1905. * BT1464430
  1906. * 点击添加指标,出现添加指标弹框,没有点击保存按钮,点击取消 ,表单还是多了一条空白指标
  1907. * type: addNew 表示新增,其他表示编辑
  1908. * @param index
  1909. * @param subindex
  1910. * @param type
  1911. */
  1912. editIndicator: function(index, subindex, type){
  1913. it.initEditBoxDialog(index, subindex, type);
  1914. },
  1915. // 组装重新组装目标数据结构
  1916. getTargetData: function(fieldLis,item){
  1917. var fieldList = [];
  1918. for(var j=0;j<fieldLis.length;j++){
  1919. var str = JSON.stringify(fieldLis[j]);
  1920. fieldList.push(JSON.parse(str));
  1921. }
  1922. var targetData = [];
  1923. for(var i = 0; i < fieldList.length; i++){
  1924. targetData.push(fieldList[i]);
  1925. targetData[i].fieldvalue = item[fieldList[i].colName];
  1926. //补丁11 指标实例字段多语言改造-yien
  1927. targetData[i].fieldvalue_l1 = item[fieldList[i].colName+"_L1"];
  1928. targetData[i].fieldvalue_l2 = item[fieldList[i].colName+"_L2"];
  1929. targetData[i].fieldvalue_l3 = item[fieldList[i].colName+"_L3"];
  1930. }
  1931. return targetData;
  1932. },
  1933. // 打开目标分解页面
  1934. openTargetDecomposePage: function(areaId, indicatorId, tabindex){
  1935. event.stopPropagation();
  1936. var params = shr.getUrlParams();
  1937. var curEvaObj = $('.current').attr('workerid');
  1938. var workflowftatus = shr.getUrlRequestParam('workflowftatus') || '';
  1939. if(!curEvaObj){
  1940. curEvaObj = evaObj;
  1941. }
  1942. //填报页面进入指标分解页面
  1943. if(params.type == "0" || params.type == "1" || (params.type == "2" && isOrg =='1')){
  1944. var param = {
  1945. uipk:'com.kingdee.shr.perfweb.app.base.evaplan.TargetDecompose.core',
  1946. // serviceId: params.serviceId,
  1947. billId: params.billId,
  1948. evaObj : curEvaObj ,
  1949. periodId : params.periodId,
  1950. // personId : params.personId,
  1951. type : params.type,
  1952. hrOrgUnit: hrOrgUnit,
  1953. isOrg:isOrg,
  1954. areaId: areaId,
  1955. indicatorId: indicatorId,
  1956. tabIndex: tabindex
  1957. }
  1958. //bug 【8612第一轮集成测试】【表单越权】绩效管理--绩效工作台--组织考核目标填报--用户kitty (没有员工指标分解权限 ,但是有组织指标分解权限 ) ,点击组织指标分解 提示无权限
  1959. if (isOrg =='1') {
  1960. var shruicode = shr.getUrlRequestParam("shruicode");
  1961. if (shruicode == "") {
  1962. shruicode = 'AF_PERF_OT008';
  1963. }
  1964. if (tabindex == 0 || tabindex == "0") {//组织进度更新
  1965. shruicode = 'AF_PERF_OT010';
  1966. }
  1967. param.shruicode = shruicode;
  1968. }
  1969. that.reloadPage(param);
  1970. }else{//我的目标页面进入指标分解页面、或者进度更新页面
  1971. var shruicode = 'AF_PERF_TD001';
  1972. if(tabindex == 1 || tabindex == '1'){
  1973. shruicode = 'AF_PERF_TD001';
  1974. }else{
  1975. shruicode = 'AF_PERF_TD002';
  1976. }
  1977. // 从我负责的绩效-员工目标-查看进度进入时,将shruicode置空,走默认验权器
  1978. if(pageType == '4'){
  1979. shruicode = '';
  1980. }
  1981. that.reloadPage({
  1982. uipk:'com.kingdee.shr.perfweb.app.base.evaplan.TargetDecompose.core',
  1983. // serviceId: params.serviceId,
  1984. billId: params.billId,
  1985. evaObj : curEvaObj ,
  1986. periodId : params.periodId,
  1987. // personId : params.personId,
  1988. type : params.type,
  1989. hrOrgUnit: hrOrgUnit,
  1990. areaId: areaId,
  1991. isOrg:isOrg,
  1992. indicatorId: indicatorId,
  1993. tabIndex: tabindex,
  1994. shruicode:shruicode,
  1995. workflowftatus: workflowftatus
  1996. });
  1997. }
  1998. },
  1999. // 查看更多字段
  2000. showMoreFields: function(e){
  2001. var indwrap = $(e).closest('li');
  2002. if($(e).hasClass('onspread')){
  2003. $(e).removeClass('onspread')
  2004. .html(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_102);
  2005. indwrap.find('.field-box').removeClass('show-more');
  2006. }else{
  2007. $(e).addClass('onspread')
  2008. .html(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_73);
  2009. indwrap.find('.field-box').addClass('show-more');
  2010. }
  2011. it.setParentIframeHeight();
  2012. },
  2013. // 指标编辑弹框
  2014. initEditBoxDialog: function(index, subindex, type){ // type, addNew:新增
  2015. var editBoxTpl = document.getElementById('editBoxTpl').innerHTML;
  2016. var _indicatorInfo,_fieldList;
  2017. // var editBoxHTML = juicer(editBoxTpl, {rows: evaAreaListGlobal[index].targetItems[subindex]});
  2018. //补丁10 是否必填-yien
  2019. //设置字段是否必填
  2020. var _areaInfo = evaAreaListGlobal[index];
  2021. _fieldList = _areaInfo.fieldList;
  2022. if(subindex || subindex === 0){ // 旧逻辑"新增"、"编辑",新逻辑"编辑"
  2023. _indicatorInfo = _areaInfo.targetItems[subindex];
  2024. _fieldList = _indicatorInfo['fieldslist'];
  2025. }else{ //新逻辑"新增"
  2026. _indicatorInfo = {};
  2027. }
  2028. var _areaType = _areaInfo.areaType;
  2029. var _areaId = _areaInfo.areaId;
  2030. for(var i=0; i<_fieldList.length; i++) {
  2031. _fieldList[i].isRequired = isRequiredOfField(isRequiredMap, _fieldList[i].colName, _areaId);
  2032. }
  2033. _indicatorInfo['fieldslist'] = _fieldList;
  2034. var editBoxHTML = juicer(editBoxTpl, {rows: _indicatorInfo});//evaAreaListGlobal[index].targetItems[subindex] _indicatorInfo
  2035. $(document.body).append(editBoxHTML);
  2036. var dialogtop = 'center';
  2037. var winheight = $(window.top).height();
  2038. var winscrolltop = $(window.top).scrollTop();
  2039. if(self != top){
  2040. dialogtop = (winheight - ($(window).height() > 600 ? 600 : $(window).height()-20))/2 + winscrolltop - 80;
  2041. }
  2042. $("#editboxDialog").dialog({
  2043. autoOpen : true,
  2044. // show : "blind",
  2045. width : $(window).width() > 1000 ? 1000 : $(window).width()-20,
  2046. height : $(window).height() > 600 ? 600 : $(window).height()-20,
  2047. title : type == 'addNew' ?
  2048. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_77 :
  2049. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_110,
  2050. resizable : true,
  2051. position : [ 'center', dialogtop ],
  2052. modal : true,
  2053. buttons : [{
  2054. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_0,
  2055. click : function() {
  2056. //处理新增的时候,点击保存指标又被移除的问题 yien
  2057. if(it.checkRequiredField()) {
  2058. type = 'edit';
  2059. if(!subindex && subindex !== 0){
  2060. var callback = function(FID){
  2061. $('#editboxDialog').attr('indid',FID);
  2062. $('#editboxDialog').attr('areatype',_areaType);
  2063. it.saveTargetClick();
  2064. }
  2065. it.callAddIndicatorForAreaService(_areaId, _areaType, 'addIndicator', callback);
  2066. }else{
  2067. it.saveTargetClick();
  2068. }
  2069. }
  2070. }},{
  2071. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  2072. click : function() {
  2073. // if(type == 'addNew'){
  2074. // it.delgoal($('.areawrap').eq(index).find('.indicatorwrap li').eq(subindex).find('.btnwrap').get(0), 'addnew');
  2075. // }
  2076. $(this).dialog('close');
  2077. }
  2078. }],
  2079. close : function(){
  2080. if(type == 'addNew' && subindex){
  2081. it.delgoal($('.areawrap').eq(index).find('.indicatorwrap li').eq(subindex).find('.btnwrap').get(0), 'addnew');
  2082. }
  2083. $('#editboxDialog').remove();
  2084. },
  2085. open:function(event, ui){
  2086. $('#ui-dialog-otherConfig').remove();
  2087. if(type=='addNew' && subindex){ // subindex有值时,是旧逻辑新增指标,无值是新逻辑新增指标
  2088. $('div[aria-describedby="editboxDialog"] .ui-dialog-titlebar-close').hide();
  2089. $('div[aria-describedby="editboxDialog"] .ui-dialog-buttonpane').prepend('<div class="continuousNewwrap"><input type="checkbox" name="continuousNew" id="continuousNew"><label for="continuousNew">'+
  2090. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_37+
  2091. '</label></div>');
  2092. $('#continuousNew').shrCheckbox();
  2093. }
  2094. it.initInputIndi(index, subindex, type);
  2095. if(type=='addNew'){
  2096. $('#FACTUALCOMPLETETIME').val('');
  2097. }
  2098. }
  2099. });
  2100. //指标复制与引用
  2101. if(type != 'addNew') {
  2102. //编辑指标判断是否为引用指标
  2103. var _indicatorId = evaAreaListGlobal[index].targetItems[subindex]['FID'];
  2104. it.initRefIndiForm(_indicatorId);
  2105. }
  2106. //补丁11 指标实例多语言字段改造-yien
  2107. initMultiFieldsInput();
  2108. },
  2109. //渲染引用指标的表单
  2110. initRefIndiForm: function(indicatorId) {
  2111. var _flag = false;
  2112. that.selfRemoteCall({
  2113. method : "judgeIsRefTarget",
  2114. param : {
  2115. indicatorId : indicatorId
  2116. },
  2117. async : false,
  2118. type:"post",
  2119. success : function(data) {
  2120. if(data.result == '200' && data.isRefTarget == '1') {
  2121. _flag = true;
  2122. }
  2123. }
  2124. });
  2125. if(_flag) {
  2126. $('#FNAME').attr('disabled','disabled');
  2127. $('#FNUMBER').attr('disabled','disabled');
  2128. $('#FKEYITEM').attr({'disabled':'disabled'});
  2129. $('#FKEYCODE').attr({'disabled':'disabled'});
  2130. $('#FINDECATORDESC').attr({'disabled':'disabled'});
  2131. //屏蔽选择,屏蔽定性定量指标更改属性
  2132. $('#FQUALIORRATION').shrSelect('disable' , true);
  2133. //yien 增加是否引用的标识
  2134. $('#FNAME').data('isRef','1');
  2135. $('#FNUMBER').data('isRef','1');
  2136. $('#FKEYITEM').data('isRef','1');
  2137. $('#FKEYCODE').data('isRef','1');
  2138. $('#FINDECATORDESC').data('isRef','1');
  2139. //屏蔽选择,屏蔽定性定量指标更改属性
  2140. $('#FQUALIORRATION').data('isRef','1');
  2141. }
  2142. var isUnited = $('#editboxDialog').attr('isUnited');
  2143. if(targetCanEdit==1 && isUnited=='1'){
  2144. $('#FNAME').attr('disabled','disabled');
  2145. $('#FNUMBER').attr('disabled','disabled');
  2146. $('#FINDECATORTYPE').attr({'disabled':'disabled'});
  2147. var qualiOrRation = $('#FQUALIORRATION').shrSelect('getValue' ).value;
  2148. if(qualiOrRation=='0'){
  2149. $('#FUNIT').attr({'disabled':'disabled'});
  2150. }
  2151. }
  2152. return _flag;
  2153. },
  2154. // 初始化F7、checkedbox、select等
  2155. initInputIndi: function(index, subindex, type){
  2156. //对有”指标类型“字段的指标进行处理
  2157. var isUnited = $('#editboxDialog').attr('isUnited');
  2158. var _areaInfo = evaAreaListGlobal[index];
  2159. var _indicatorInfo = _areaInfo.targetItems[subindex];
  2160. var _areaType = _areaInfo.areaType;
  2161. if(_areaType != 200 && isUnited=='1'){
  2162. $('#FKEYITEM').attr({'disabled':'disabled'});
  2163. $('#FKEYCODE').attr({'disabled':'disabled'});
  2164. }
  2165. if(isExistIndecatoryType = 1){
  2166. var indicatorType = 'FINDECATORTYPE';
  2167. // var indicatorType_f7_json = {id:indicatorType,name:indicatorType,validate: 'required:true',displayFormat:"{BaseInfo.name}"};
  2168. //补丁10 是否必填-yien
  2169. var indicatorType_f7_json = {id:indicatorType,name:indicatorType,validate: 'required:true',displayFormat:"{BaseInfo.name}"};
  2170. var _indicatorType$ = $('#FINDECATORTYPE');
  2171. var _isRequired = _indicatorType$.data('isrequired') == '1';
  2172. if(!_isRequired) {
  2173. indicatorType_f7_json = {id:indicatorType,name:indicatorType,displayFormat:"{BaseInfo.name}"};
  2174. }
  2175. indicatorType_f7_json.subWidgetName = 'specialPromptGrid';
  2176. indicatorType_f7_json.subWidgetOptions = {
  2177. title: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_113,
  2178. uipk: "com.kingdee.shr.perfweb.app.base.indecator.IndecatorType.available.F7",
  2179. query: "",
  2180. isHRBaseItem: true,
  2181. f7ReKeyValue: "BaseInfo.id:BaseInfo.longName",
  2182. currentHrOrgUnitId: hrOrgUnit,
  2183. filter: "hrOrgUse.id = '" + hrOrgUnit + "'",
  2184. bizFilterFieldsValues: "bizFilterFields=undefined:" + encodeURIComponent(hrOrgUnit),
  2185. filterConfig: [{name: 'isComUse', value: true,
  2186. alias: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_86,
  2187. widgetType: 'checkbox'}],
  2188. onclikFunction : function(id){
  2189. var dataSet = $("tr[id='" +id+ "']").parent().parent().parent().find("table[ctrlrole='grid']").jqGrid('getRowData', id);
  2190. $("input[id='"+indicatorType+"']").shrPromptBox("setValue", dataSet);
  2191. var msgShow = $("span[id='MSG_"+indicatorType+"']");
  2192. msgShow.hide();
  2193. }
  2194. };
  2195. $('input[id="' +indicatorType+ '"]').shrPromptBox(indicatorType_f7_json);
  2196. // $('.ui-promptBox-icon').addClass('required');
  2197. //补丁10 是否必填-yien
  2198. if(_isRequired) {
  2199. $('.ui-promptBox-icon').addClass('required');
  2200. }
  2201. if(subindex || subindex === 0){
  2202. curIndecatorType = evaAreaListGlobal[index].targetItems[subindex].FINDECATORTYPE;
  2203. }
  2204. if(curIndecatorType && curIndecatorType.id != undefined && curIndecatorType.id != null){//指标类型有值就填值
  2205. curIndecatorType.BaseInfo = {};
  2206. curIndecatorType.BaseInfo.name = curIndecatorType.name;
  2207. curIndecatorType.BaseInfo.id = curIndecatorType.id;
  2208. curIndecatorType["BaseInfo.name"] = curIndecatorType.name;
  2209. $('input[id="' +indicatorType+ '"]').shrPromptBox("setValue", curIndecatorType);
  2210. }
  2211. //统一下达的指标移除F7的弹出选项
  2212. if(isUnited == 1){
  2213. $('input[id="' +indicatorType+ '"]').shrPromptBox("disable");
  2214. }
  2215. }
  2216. if(pageType == 2){
  2217. $('input[id="' +indicatorType+ '"]').shrPromptBox("disable");
  2218. }
  2219. //初始化评分公式
  2220. var scoringFormulaObj = {tagId : 'FSCORINGFORMULA'};
  2221. //定性定量
  2222. var qualiOrRationObj = {tagId : 'FQUALIORRATION'};
  2223. //单位
  2224. var unitObj = {tagId : 'FUNIT'};
  2225. //可见性
  2226. var isVisibleObj = {tagId : 'FISVISIBLE'};
  2227. //计划完成日期
  2228. var planedDateObj = {tagId : 'FPLANEDDATE'};
  2229. //完成时间
  2230. var completeTimeObj = {tagId : 'FCOMPLETETIME'};
  2231. //实际完成时间
  2232. var fieldname = '';
  2233. if($('#FActualCompleteTime').length > 0){
  2234. fieldname = 'FActualCompleteTime';
  2235. }else if($('#FACTUALCOMPLETETIME').length > 0){
  2236. fieldname = 'FACTUALCOMPLETETIME';
  2237. }
  2238. var actualCompleteTimeObj = {tagId : fieldname};
  2239. //更新日期
  2240. var updateDateObj = {tagId : 'FUPDATEDATE'};
  2241. //yien 添加否决项
  2242. var rejectionObj = {tagId : 'FREJECTION'};
  2243. //yien 增加目标值
  2244. var targetValObj = {tagId : 'FTARGETVALUE'};
  2245. // 评分公式
  2246. var _selectedVal = {};
  2247. if(subindex || subindex === 0){
  2248. var selectedScoringFormula = evaAreaListGlobal[index].targetItems[subindex].FSCORINGFORMULA
  2249. }
  2250. if (selectedScoringFormula && selectedScoringFormula.id) {
  2251. _selectedVal['BaseInfo.id'] = selectedScoringFormula.id;
  2252. _selectedVal['BaseInfo.name'] = selectedScoringFormula.name;
  2253. }
  2254. scoringFormulaObj['selectedVal'] = _selectedVal;
  2255. //初始化业绩指标
  2256. var _isUnited = isUnited;
  2257. if(pageType == 2) {
  2258. //绩效工作台-我的目标跳转-屏蔽编辑功能
  2259. _isUnited = 1;
  2260. }
  2261. initAchivementTargeEven(_isUnited ,
  2262. hrOrgUnit ,
  2263. scoringFormulaObj ,
  2264. qualiOrRationObj ,
  2265. isVisibleObj ,
  2266. planedDateObj ,
  2267. updateDateObj ,
  2268. unitObj,
  2269. rejectionObj,
  2270. actualCompleteTimeObj,
  2271. completeTimeObj,
  2272. targetValObj //增加目标值
  2273. );
  2274. // 开放计划完成时间
  2275. var $tag = $('input[id="'+ planedDateObj.tagId +'"]');
  2276. $tag.shrDateTimePicker('enable');
  2277. //yien 增加否决项勾选事件
  2278. var weightId = "FWEIGHT";
  2279. if (scoringWay==1){
  2280. weightId = "FTARSCORE";
  2281. }
  2282. initRejectionChangedEvent(rejectionObj.tagId , weightId ,qualiOrRationObj.tagId);
  2283. that.inputFieldLenListener();
  2284. if(isUnited != 1 && pageType != 2){
  2285. // 实际完成值、实际完成时间、实际完成情况说明不可编辑
  2286. $('#FACTUALCOMPLEVALUE,#FACTUALCOMPLETEDESC').attr('disabled', true);
  2287. $('#FACTUALCOMPLETETIME').shrDateTimePicker('disable');
  2288. }
  2289. $('input[field-type="Select"]').each(function(){
  2290. var options = JSON.parse(decodeURIComponent($(this).attr('select-options')));
  2291. var targetOptions = [];
  2292. options.forEach(function(option){
  2293. targetOptions.push({
  2294. alias: option.key,
  2295. value: option.value
  2296. })
  2297. })
  2298. $(this).shrSelect({
  2299. 'id': this.id,
  2300. 'data':targetOptions, //选项
  2301. 'value': this.value, //默认选中项
  2302. 'onChange':function(){}
  2303. });
  2304. })
  2305. $('input[field-type="Date"],input[field-type="Time"],input[field-type="TimeStamp"]').each(function(){
  2306. $(this).shrDateTimePicker({
  2307. ctrlType: $(this).attr('field-type'),
  2308. isShowUTC: false,
  2309. validate: $(this).attr('data-isrequired') === '1' ? 'required:true' : ''
  2310. // value: this.value
  2311. })
  2312. $(this).shrDateTimePicker('setValue',this.value)
  2313. })
  2314. $('input[field-type="Boolean"]').shrCheckbox();
  2315. var fquali = $("#FQUALIORRATION").shrSelect("getValue");//定性定量
  2316. // if(fquali && fquali.value == 0){
  2317. // $("#FTARGETVALUE").attr({'disabled':'disabled'});
  2318. // }
  2319. },
  2320. /**
  2321. * 重新设置左侧指标名称和权重,这样指标右侧区域已填写名称和权重但还未保存也可以显示在左侧了
  2322. * @param indicatorVal
  2323. */
  2324. setRealNameAndWeightForLeftItems : function(indicatorVal) {
  2325. //获取对应右侧区域的指标名称和权重
  2326. var divId = indicatorVal+"Itag0";
  2327. var $rightItem = $("div[id='" +divId+ "']");
  2328. var name = $rightItem.find('input[fname="FNAME"]').val();
  2329. var weight = $rightItem.find('input[fname="FWEIGHT"]').val();
  2330. var tarscore = $rightItem.find('input[fname="FTARSCORE"]').val();
  2331. $("li[numval='" +indicatorVal+ "']").find("div[name='liName']").text(name);
  2332. if (weight == undefined && tarscore != undefined) {
  2333. weight = tarscore;
  2334. }
  2335. if (weight) {
  2336. var liWeightObj = $("li[numval='" +indicatorVal+ "']").find("div[name='liWeight']");
  2337. if (scoringWay==1){
  2338. liWeightObj.text(shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_18,[weight]));
  2339. }else {
  2340. liWeightObj.text(shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_67,[weight]));
  2341. }
  2342. liWeightObj.attr("weight",weight);
  2343. }
  2344. },
  2345. judgeVal: function(e){
  2346. //由于F7无法捕捉焦点失去事件,不在这里校验空值问题,在必填必填那里统一校验
  2347. //PBG174716 目标审批页面,添加指标,指标类型为空点击保存,提示语之后把指标类型写上,保存按钮点了 没反应
  2348. if($(e).attr('ctrlrole') == 'promptBox') {
  2349. return;
  2350. }
  2351. var name = e.name;
  2352. var fieldVal = $(e).val();
  2353. var errowmsg = $('.errowmsg[for="'+name+'"]');
  2354. var fieldType = $(e).attr('field-type');
  2355. var fieldTypeConfig = $(e).attr('field-type-config');
  2356. // 权重校验、目标分值
  2357. if(name == 'FWEIGHT' || name == 'FTARSCORE'){
  2358. if(!isNumberVerify(fieldVal)){
  2359. // PBG172978 进去填报页面,先不输入指标 直接点击指标类型 ,搜索框输入不了
  2360. // $(e).focus();
  2361. errowmsg.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_52);
  2362. $(e).val('');
  2363. errowmsg.show();
  2364. isValite=false;//校验不通过
  2365. }else{
  2366. //转换成数字类型,防止权重输入第一个数字为0的情况出现 yien_fan
  2367. if(fieldVal != '') {
  2368. fieldVal = Number(fieldVal);
  2369. }
  2370. $(e).val(fieldVal);
  2371. errowmsg.hide();
  2372. }
  2373. }else if(name == 'FCOMPLETETIME' || name == 'FPLANEDDATE'){ //校验完成时间、计划完成日期
  2374. var dateReg = /^(\d{4})-(\d{2})-(\d{2})$/;
  2375. fieldVal = $('#'+name).shrDateTimePicker('getValue')
  2376. if(isEmpty(fieldVal) || !fieldVal.match(dateReg) || !(new Date(fieldVal).getDate()==fieldVal.substring(fieldVal.length-2))){
  2377. errowmsg.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_57);
  2378. errowmsg.show();
  2379. isValite=false;//校验不通过
  2380. }else{
  2381. errowmsg.hide();
  2382. isValite=true;//校验不通过
  2383. }
  2384. }else if(name == 'FTARGETVALUE'){ //校验目标值
  2385. //补丁10 是否必填-yien
  2386. var _isRequired = $(e).data('isrequired');
  2387. var _isDisabled = $(e).attr('disabled');
  2388. var qualiorration = $('#FQUALIORRATION').shrSelect('getValue').value;
  2389. if((!isNumberVerify(fieldVal , 2) && qualiorration == '1') || (_isRequired == '1' && _isDisabled != 'disabled' && isEmpty(fieldVal))){
  2390. // $(e).focus();
  2391. // errowmsg.text("请输入数字且最多不超过十位小数!");
  2392. errowmsg.text(jsBizMultLan.perfweb_achivementDataList_20220818ht_01);
  2393. errowmsg.show();
  2394. isValite=false;//校验不通过
  2395. }else{
  2396. //转换成数字类型,防止权重输入第一个数字为0的情况出现 yien_fan
  2397. if(fieldVal != '' && qualiorration == '1') {
  2398. fieldVal = Number(fieldVal);
  2399. }
  2400. $(e).val(fieldVal);
  2401. errowmsg.hide();
  2402. isValite=true;//校验不通过
  2403. }
  2404. }else if(fieldType == 'Number'){
  2405. if(name.indexOf("FEXTEND") === 0){
  2406. isValite = !isNumberVerify(fieldVal,2);
  2407. // errowmsg.text("请输入数字且最多不超过十位小数!");
  2408. errowmsg.text( jsBizMultLan.perfweb_achivementDataList_20220818ht_01);
  2409. }else{
  2410. errowmsg.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_52);
  2411. isValite = !isNumberVerify(fieldVal);
  2412. }
  2413. if(isValite){
  2414. errowmsg.show();
  2415. }else{
  2416. // $(e).val(fieldVal);
  2417. errowmsg.hide();
  2418. }
  2419. }else{
  2420. // errowmsg.hide();
  2421. //补丁10 是否必填-yien
  2422. var _isRequired = $(e).data('isrequired');
  2423. var _isDisabled = $(e).attr('disabled');
  2424. var _showName = $(e).data('showname');
  2425. if(_isRequired == '1' && _isDisabled != 'disabled' && isEmpty(fieldVal)){
  2426. // $(e).focus();
  2427. // errowmsg.text(_showName + '不能为空!');
  2428. $('.errowmsg[for="'+name+'"]').show().text(_showName+
  2429. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_5);
  2430. errowmsg.show();
  2431. isValite=false;//校验不通过
  2432. }else{
  2433. errowmsg.hide();
  2434. isValite=true;//校验不通过
  2435. }
  2436. }
  2437. },
  2438. //设置打分按钮位置
  2439. // setScoreBtnLocation: function(){
  2440. // $('.scoreBtns').css({
  2441. // 'width': $('.content').innerWidth() + 'px',
  2442. // 'left': $('.content').offset().left + 'px'
  2443. // })
  2444. // },
  2445. /**
  2446. * 保存指标事件
  2447. * action: submit 指标变更页面,列表模式提交前先保存
  2448. * @returns
  2449. */
  2450. saveTargetClick : function(action){
  2451. that.selfRemoteCall({
  2452. method : "getEvaObjTargetStatus",
  2453. param : {
  2454. evaObj : evaObj
  2455. },
  2456. async : false,
  2457. type:"post",
  2458. success : function(data) {
  2459. if(!data) {
  2460. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_30,hideAfter : 5});
  2461. return false;
  2462. }
  2463. var _targetStatus = data.targetStatus;
  2464. //如果提交已经提交,这里还是保持原来的业务逻辑
  2465. if(pageType != '1' && _targetStatus == 2) {
  2466. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_22,hideAfter : 5});
  2467. return false;
  2468. }else if(_targetStatus == 3){ //个人目标已下达
  2469. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_25,hideAfter : 5});
  2470. return false;
  2471. }else{
  2472. //必填字段校验
  2473. // verifyIndicatorType(); //指标类型字段为空校验
  2474. // if(!canSaveVerify()){
  2475. // return false;
  2476. // }else{
  2477. // that.doSaveTarget(_targetStatus);
  2478. // }
  2479. // if(it.checkRequiredField()){
  2480. that.doSaveTarget(_targetStatus,action);
  2481. // }
  2482. }
  2483. }
  2484. });
  2485. },
  2486. // 校验必填字段
  2487. checkRequiredField: function(){
  2488. // 列表模式校验必填
  2489. if(viewType == 'list'){
  2490. return this.assembleTargetData();
  2491. }
  2492. //PBG169855
  2493. /**
  2494. * 指标描述 、指标标准没填写时,提示跟其他字段一下 输入框下面有提示语,显示是直接提示数据校验不通过,要手动点击了指标描述、指标标准框输入框下面才会又提示语
  2495. 还有记录表的衡量标准字段
  2496. */
  2497. var requiredInput = $('#editboxDialog input.required,#editboxDialog textarea.required');
  2498. var flag = true;
  2499. for(var i = 0; i < requiredInput.length; i ++){
  2500. var requiredInputObj = requiredInput.eq(i);
  2501. var val = requiredInputObj.val();
  2502. var name = requiredInputObj.attr('name');
  2503. var disableattr = requiredInputObj.attr('disabled');
  2504. //补丁11 指标实例多语言字段改造-yien
  2505. if(requiredInputObj.attr('ctrlrole') == 'shrMultiLangBox') {
  2506. var _multiFieldValue = requiredInputObj.shrMultiLangBox('getValue');
  2507. val = _multiFieldValue[defaultLan];
  2508. }
  2509. if(!val && disableattr != 'disabled'){
  2510. flag = false;
  2511. $('.errowmsg[for="'+name+'"]').show().text(requiredInputObj.attr('showname')+
  2512. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_5);
  2513. // PBG172978 进去填报页面,先不输入指标 直接点击指标类型 ,搜索框输入不了
  2514. $('#' + name)[0].scrollIntoView(true);
  2515. break;
  2516. }
  2517. }
  2518. // if(flag){
  2519. // var indType = $('#FINDECATORTYPE').shrPromptBox('getValue');
  2520. // if(!indType){
  2521. // flag = false;
  2522. // $('.errowmsg[for="FINDECATORTYPE"]').show().text($('#FINDECATORTYPE').attr('showname')+'不能为空');
  2523. // }
  2524. // }
  2525. //补丁10 是否必填-yien
  2526. //判断指标类型是否必填
  2527. if(flag){
  2528. var _indicatorType$ = $('#FINDECATORTYPE');
  2529. var indType = _indicatorType$.shrPromptBox('getValue');
  2530. var _isRequired = _indicatorType$.data('isrequired');
  2531. var _isDisabled = _indicatorType$.attr('disabled');
  2532. if(_isRequired == '1' && _isDisabled != 'disabled' && !indType){
  2533. flag = false;
  2534. $('.errowmsg[for="FINDECATORTYPE"]').show().text($('#FINDECATORTYPE').attr('showname')+
  2535. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_5);
  2536. }
  2537. }
  2538. return flag;
  2539. },
  2540. /*
  2541. * 保存指标数据
  2542. * action: submit 指标变更页面,列表模式提交前先保存
  2543. * */
  2544. doSaveTarget : function(_targetStatus,action){
  2545. $('.tabwrap').each(function(index,tab){
  2546. $('#tab'+index).jqGrid('editStop');
  2547. })
  2548. //组装数据
  2549. var flag = that.assembleTargetData();
  2550. if(!flag){
  2551. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_75,hideAfter : 5});
  2552. return false;
  2553. }else{
  2554. //BT1084637-强控制权重区域权重未做校验-liuzw-2018/01/19
  2555. //强控制权重校验
  2556. var checkFlag = true;
  2557. var currFID = $('#editboxDialog').attr('indid');
  2558. $('.partGrade .areaweight').each(function(){
  2559. var areaControlWeight = parseFloat($(this).attr("areaControlWeight"));
  2560. if (areaControlWeight) {
  2561. var totalControlweight = 0;
  2562. if(viewType == 'overview'){
  2563. var $scoreList = $(this).closest('.areawrap').find('.indicatorwrap');
  2564. if ($scoreList) {
  2565. $scoreList.find('li').each(function(){
  2566. var _FID = $(this).attr('indid');
  2567. var fweight = Number($(this).find('.ind-weight').text());
  2568. if($('#editboxDialog').is(':hidden')){
  2569. totalControlweight += fweight;
  2570. }else{
  2571. if(currFID == _FID){
  2572. totalControlweight += Number($('#FWEIGHT').val())
  2573. }else{
  2574. totalControlweight += fweight;
  2575. }
  2576. }
  2577. });
  2578. }
  2579. }else{
  2580. var areaid = $(this).closest('.areawrap').attr('areaid');
  2581. var tab = $(this).closest('.areawrap').find('.indictab').eq(0);
  2582. var rows = tab.getRowData();
  2583. $.each(rows,function(i,row){
  2584. totalControlweight += Number(row.FWEIGHT)
  2585. })
  2586. }
  2587. if (totalControlweight>areaControlWeight) {
  2588. var area = $(this).closest('.areaname').attr('realAreaName');
  2589. var text = area+
  2590. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_63;
  2591. if(viewType == 'list'){
  2592. var dialogBoxhtml = dialogBox('succeed',
  2593. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_2,
  2594. text,
  2595. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_104);
  2596. promptBox(dialogBoxhtml);
  2597. }else{
  2598. shr.showInfo({
  2599. message: text,
  2600. hideAfter: 5
  2601. })
  2602. }
  2603. checkFlag = false;
  2604. return false;
  2605. }
  2606. }
  2607. });
  2608. if (!checkFlag && viewType == 'list') {
  2609. return;
  2610. }
  2611. if(viewType != 'list'){
  2612. var indicatorLen = indicatorListObj.indicatorList.length;
  2613. var indicatorListBase = indicatorListObj.indicatorList;
  2614. for(var i=0; i<indicatorLen; i++){
  2615. //BT1454284 考核目标填报--添加指标,保存不了
  2616. var _evalStandard = indicatorListBase[i].EVALSTANDARD;
  2617. // BT-00580949 绩效管理--绩效工作台--考核目标填报、目标变更--编辑指标,评价标准填写数字,保存js会报错
  2618. if(!$.isEmptyObject(_evalStandard) && (_evalStandard+'').trim().length > 1024) {
  2619. shr.showWarning({message : shr.formatMsg(
  2620. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_107
  2621. ,[indicatorListBase[i].NAME,1024])
  2622. ,hideAfter : 5});
  2623. return false;
  2624. }
  2625. }
  2626. }
  2627. //保存指标和记录表
  2628. var methodName = viewType == 'list' ? 'batchSaveTarget' : 'saveTarget';
  2629. var param = {
  2630. recordList : JSON.stringify(recordListObj),
  2631. indicatorList : JSON.stringify(indicatorListObj),
  2632. recordFieldArr : JSON.stringify(recordFieldArr),
  2633. indicatorFieldArr : JSON.stringify(indicatorFieldArr),
  2634. evaObj : evaObj,
  2635. billId : billId,
  2636. toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  2637. periodId : periodId,
  2638. scoringWay:scoringWay,
  2639. encryptKeys: 'recordList,indicatorList'
  2640. }
  2641. if(viewType == 'list'){
  2642. param = {
  2643. targetParam: JSON.stringify(targetParam),
  2644. evaObj : evaObj,
  2645. billId : billId,
  2646. toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  2647. periodId : periodId,
  2648. scoringWay:scoringWay,
  2649. encryptKeys: 'targetParam'
  2650. }
  2651. }
  2652. that.selfRemoteCall({
  2653. method : methodName,
  2654. param : param,
  2655. async : false,
  2656. type:"post",
  2657. success : function(data) {
  2658. //加载考核规则、考核计划、考核模式
  2659. that.selfRemoteCall({
  2660. method : "compositeEvaObjectData",
  2661. param : {
  2662. evaObj : evaObj,
  2663. billId: billId
  2664. },
  2665. async : false,
  2666. success : function(data) {
  2667. if(data != null){
  2668. $("li[workerid='" +evaObj+ "']").find("i[name='targetStatus']").text(data.rows.personalGoalStatusAlias);
  2669. globalIndicatorData = data;
  2670. it.initGoalsItems(data); //重新加载左侧区域指标列表
  2671. }
  2672. }
  2673. });
  2674. if(data != null && data.result == 'SUCCESS'){
  2675. var totalweight = 0;
  2676. var weightScorePrefix = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_65;//权重或分值的名字
  2677. var weightScorePostfix = "%";//权重或分值的名字
  2678. if (scoringWay==1){
  2679. weightScorePrefix=jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_41;
  2680. weightScorePostfix=jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_16;
  2681. }
  2682. $('.partGrade .areaweight').each(function(){
  2683. var sumScroreRule = $(this).attr("sumScoreRule");
  2684. if(sumScroreRule != '400' && sumScroreRule != '500'){//非额外分区域才参与权重计算
  2685. totalweight += parseFloat($(this).html());
  2686. }
  2687. })
  2688. //yien 保留两位小数
  2689. totalweight = Number(totalweight).toFixed(2);
  2690. // if(totalweight > maxScore){
  2691. // var text = shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_94,[weightScorePrefix,maxScore + weightScorePostfix]);
  2692. // }else{
  2693. var text = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_95+
  2694. weightScorePrefix+ totalweight +weightScorePostfix;
  2695. // }
  2696. var isContinuousNew = false;
  2697. if($('#continuousNew').length > 0){
  2698. isContinuousNew = $('#continuousNew').shrCheckbox('getValue'); // 是否连续新增
  2699. }
  2700. $('#editboxDialog').dialog('close');
  2701. var dialogBoxhtml = dialogBox(
  2702. 'succeed',
  2703. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_1,
  2704. text,
  2705. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_104
  2706. );
  2707. if(isContinuousNew && viewType == 'overview'){
  2708. it.addIndicatorAction();
  2709. }else{
  2710. if(action != 'submit'){ // 指标变更列表模式提交前先保存,不需弹出该弹框
  2711. promptBox(dialogBoxhtml);
  2712. }
  2713. }
  2714. }else{
  2715. var dialogBoxhtml = dialogBox(
  2716. 'succeed',
  2717. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_2,
  2718. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_50,
  2719. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_104
  2720. );
  2721. promptBox(dialogBoxhtml);
  2722. }
  2723. }
  2724. });
  2725. }
  2726. },
  2727. // 列表模式组装数据+校验
  2728. assembleTargetDataListModel: function(optionType){
  2729. var len = $('.tabwrap').length;
  2730. var flag = true;
  2731. var errMsg,_grid,FID,cellname,colvalue,td;
  2732. targetParam = [];
  2733. for(var i=0; i<len; i++){
  2734. var recordList = [], indicatorList = [], recordFieldArr = [], indicatorFieldArr = [];
  2735. _grid = $('#tab'+i);
  2736. var gridParam = _grid.getGridParam();
  2737. var areaType = gridParam.areaType;
  2738. var areaId = gridParam.areaId;
  2739. var areaName = gridParam.areaName;
  2740. var fieldList = gridParam.fieldList;
  2741. var indNameArr = [];
  2742. var data = _grid.getRowData();
  2743. //判断 202501
  2744. //第二部分:如何达成-Business leadership(至少选择一项)
  2745. //第二部分:如何达成-People leadership(至少选择一项)
  2746. //第二部分:如何达成-Self leadership(至少选择一项)
  2747. //如果名称areaName包含上面的字符串,则data要大于0
  2748. if(areaName.indexOf('Business leadership') > -1 || areaName.indexOf('People leadership') > -1 || areaName.indexOf('Self leadership') > -1){
  2749. if(data.length == 0 && optionType == "submit" ){
  2750. flag = false;
  2751. errMsg = areaName+",该区域指标为空!";
  2752. shr.showWarning({
  2753. message: errMsg,
  2754. hideAfter: 3
  2755. });
  2756. break;
  2757. }
  2758. }
  2759. for(var j=0; j<data.length; j++){
  2760. FID = data[j]['id'];
  2761. var indData = {};
  2762. data[j]['FID'] = data[j]['id'];
  2763. for(var key in data[j]){
  2764. if(key == 'otherMsg' || key == 'operateBtn' || key == 'id'){
  2765. continue;
  2766. }
  2767. var colAttr = _grid.getColProp(key);
  2768. var classes = colAttr.classes;
  2769. var showName = colAttr.showName;
  2770. var fieldType = colAttr.fieldType;
  2771. td = _grid.find('tr[id="'+FID+'"] td[aria-describedby="tab'+i+'_'+key+'"]');
  2772. cellname = colAttr.name || key;
  2773. colvalue = data[j][key];
  2774. var realName = cellname.substr(1,cellname.length);
  2775. if(typeof colvalue == 'string' && colvalue.indexOf('class="cell-height scrollbarthin"') > -1){
  2776. colvalue = $(colvalue).text();
  2777. }
  2778. if(fieldType == 'Date' || fieldType == 'Time' || fieldType == 'TimeStamp'){
  2779. colvalue = colvalue ? moment(colvalue).format('YYYY-MM-DD HH:mm:ss') : '';
  2780. }
  2781. // 校验必填
  2782. if(classes && classes.indexOf('required') > -1 && !colvalue && colAttr.editable && !td.hasClass('not-editable-cell') && optionType == "submit"){
  2783. errMsg = shr.formatMsg(jsBizMultLan.perfweb_perfgoalsfill_20221201_i18n_01, [showName]);
  2784. flag = false;
  2785. break;
  2786. }
  2787. // 组装值
  2788. if(cellname.indexOf('Multi') > -1){ // 多语言字段
  2789. realName = cellname.substr(1,cellname.length-6);
  2790. colvalue = shr.allDecrypt(colvalue);
  2791. colvalue = colvalue ? JSON.parse(colvalue) : {l1: '', l2: '', l3: ''};
  2792. if(isUseMultiLan){
  2793. indData[realName+'_L1'] = colvalue.l1;
  2794. indData[realName+'_L2'] = colvalue.l2;
  2795. indData[realName+'_L3'] = colvalue.l3;
  2796. }else{
  2797. indData[realName+'_L2'] = indData[realName]
  2798. }
  2799. }else{
  2800. indData[realName] = typeof colvalue == 'object' && colvalue.id ? colvalue.id : colvalue;
  2801. }
  2802. if(j == 0){
  2803. if(areaType == '200'){
  2804. if(cellname.indexOf('Multi') > -1){
  2805. indNameArr.push(realName+'_L1');
  2806. indNameArr.push(realName+'_L2');
  2807. indNameArr.push(realName+'_L3');
  2808. }else{
  2809. if(realName != "ISUNITED"){
  2810. indNameArr.push(realName)
  2811. }
  2812. }
  2813. }else{
  2814. if(cellname.indexOf('Multi') > -1){
  2815. cellname = cellname.substr(0,cellname.length-5);
  2816. indNameArr.push(cellname+'_L1');
  2817. indNameArr.push(cellname+'_L2');
  2818. indNameArr.push(cellname+'_L3');
  2819. }else{
  2820. if(realName != "ISUNITED"){
  2821. indNameArr.push(cellname)
  2822. }
  2823. }
  2824. }
  2825. }
  2826. }
  2827. if(!flag && optionType == "submit"){
  2828. break;
  2829. }
  2830. indicatorListObj.indicatorList = [];
  2831. recordListObj.recordList = [];
  2832. if(areaType == '200'){
  2833. indicatorList.push(indData);
  2834. indicatorListObj.indicatorList.push(indData);
  2835. indicatorFieldArr = indNameArr;
  2836. }else{
  2837. recordList.push(indData);
  2838. recordListObj.recordList.push(indData);
  2839. recordFieldArr = indNameArr;
  2840. }
  2841. }
  2842. if(!flag && optionType == "submit" ){
  2843. break;
  2844. }
  2845. targetParam.push({
  2846. "areaBaseId": areaId,
  2847. "areaBaseName": areaName,
  2848. "indicatorList": indicatorList,
  2849. "indicatorFieldArr": indicatorFieldArr,
  2850. "recordList": recordList,
  2851. "recordFieldArr": recordFieldArr
  2852. })
  2853. }
  2854. // console.log(targetParam)
  2855. if(!flag && optionType == "submit"){
  2856. $('.errorval').removeClass("errorval");
  2857. shr.showWarning({
  2858. message: errMsg,
  2859. hideAfter: 3
  2860. })
  2861. _grid.jqGrid('setCell', FID, cellname, colvalue, 'errorval');
  2862. }
  2863. return flag;
  2864. },
  2865. assembleTargetData : function(optionType){
  2866. if(viewType == 'list'){ // 列表模式
  2867. return this.assembleTargetDataListModel(optionType);
  2868. }
  2869. //组装要保存的指标数据
  2870. var jsonObj = new Object();
  2871. var recordList = new Array(); //记录表
  2872. var indicatorList = new Array(); //指标表
  2873. // var indicatorDom = $(".scoreContentbox"); //存在将其他评估对象的指标也保存的bug
  2874. var indicatorDom = $("div[evaObj='"+evaObj+"']");
  2875. var flag = true;
  2876. var inputs = $('#editboxDialog input, #editboxDialog textarea');
  2877. var fid = $('#editboxDialog').attr('indid');
  2878. var areatype = $('#editboxDialog').attr('areatype');
  2879. var formData = {};
  2880. var fieldsnameArr = [];
  2881. formData['ID'] = fid;
  2882. inputs.each(function(index, item){
  2883. if(item.name === item.id && item.id === $(this).attr('fname')){
  2884. console.log(item.name);
  2885. var fieldVal = '';
  2886. var filename = item.name.substr(1,item.name.length);
  2887. var fieldType = $(item).attr('field-type');
  2888. if(areatype == 200){
  2889. fieldsnameArr.push(item.name.substr(1,item.name.length));
  2890. }else{
  2891. fieldsnameArr.push(item.name);
  2892. }
  2893. //补丁11 指标实例多语言字段改造-yien
  2894. var $input = $('#'+item.id);
  2895. if($input.attr('ctrlrole') == 'shrMultiLangBox') {
  2896. var _multiFieldValue = $input.shrMultiLangBox('getValue');
  2897. //BT1454500 考核目标填报--记录表区域添加指标保存不了
  2898. //多语言组件获取显示undefined,重设为空
  2899. fieldVal = _multiFieldValue[defaultLan] == undefined ? '' : _multiFieldValue[defaultLan];
  2900. formData[filename+'_L1'] = _multiFieldValue['l1'];
  2901. formData[filename+'_L2'] = _multiFieldValue['l2'];
  2902. formData[filename+'_L3'] = _multiFieldValue['l3'];
  2903. var _name;
  2904. if(areatype == 200){
  2905. _name = item.name.substr(1,item.name.length);
  2906. }else{
  2907. _name = item.name;
  2908. }
  2909. fieldsnameArr.push(_name+"_L1");
  2910. fieldsnameArr.push(_name+"_L2");
  2911. fieldsnameArr.push(_name+"_L3");
  2912. }
  2913. //处理本地不开启多语言的情况-yien
  2914. if(multiFields.indexOf(item.id) > -1) {
  2915. formData[filename+'_'+defaultLan.toUpperCase()] = $input.val();
  2916. var _name;
  2917. if(areatype == 200){
  2918. _name = item.name.substr(1,item.name.length);
  2919. }else{
  2920. _name = item.name;
  2921. }
  2922. fieldsnameArr.push(_name+'_'+defaultLan.toUpperCase());
  2923. }
  2924. if(item.id == 'FREJECTION'){
  2925. $('#'+item.name).shrCheckbox('getValue');
  2926. fieldVal = $input.shrCheckbox('getValue') ? 1 : 0;
  2927. formData[filename] = fieldVal;
  2928. }else if($(this).attr('ctrlrole') == 'promptBox'){
  2929. fieldVal = $input.shrPromptBox('getValue');
  2930. formData[filename] = fieldVal? fieldVal.id : '';
  2931. }else if($(this).attr('ctrlrole') == 'select'){
  2932. fieldVal = $input.shrSelect('getValue').value;
  2933. formData[filename] = fieldVal;
  2934. }else if($(this).attr('ctrlrole') == 'checkbox'){
  2935. fieldVal = $(item).shrCheckbox('isSelected') ? 1 : 0;
  2936. formData[filename] = fieldVal;
  2937. }else if(item.id == 'FWEIGHT'&& $input.val()){
  2938. fieldVal = $input.val();
  2939. if(!isNumberVerify(fieldVal)) {
  2940. flag =false;
  2941. }else if(parseFloat(fieldVal.trim()).toFixed(2) > 999999999.99){
  2942. flag =false;
  2943. }
  2944. formData[filename] = parseFloat(fieldVal.trim()).toFixed(2);
  2945. }else if(item.id == 'FTARGETVALUE' && $input.val()){
  2946. fieldVal = $input.val();
  2947. var targetVal = '';
  2948. var qualiorration = $('#FQUALIORRATION').shrSelect('getValue').value;
  2949. if(qualiorration == '1'){
  2950. if(!isNumberVerify(fieldVal,2)){
  2951. flag =false;
  2952. //$('.errowmsg[for="FTARGETVALUE"]').show().text("请输入数字且最多不超过十位小数!");
  2953. $('.errowmsg[for="FTARGETVALUE"]').show().text(jsBizMultLan.perfweb_achivementDataList_20220818ht_01);
  2954. }
  2955. targetVal = fieldVal;
  2956. }else{
  2957. if(fieldVal.length > 255){
  2958. flag = false;
  2959. targetVal = fieldVal.substr(0,255);
  2960. }else{
  2961. targetVal = fieldVal;
  2962. }
  2963. }
  2964. formData[filename] = targetVal;
  2965. }else if(fieldType == 'Number' && $input.val()){
  2966. fieldVal = $input.val();
  2967. if(filename.indexOf('EXTEND') === 0){
  2968. flag = isNumberVerify(fieldVal,2);
  2969. }else{
  2970. flag = isNumberVerify(fieldVal)
  2971. }
  2972. formData[filename] = fieldVal;
  2973. }else if(item.type == 'textarea'){
  2974. //补丁11 指标实例多语言字段改造-yien
  2975. if(fieldVal == '') {
  2976. fieldVal = $input.val();
  2977. }
  2978. formData[filename] = fieldVal;
  2979. }else{
  2980. //补丁11 指标实例多语言字段改造-yien
  2981. if(fieldVal == '') {
  2982. fieldVal = $input.val().trim();
  2983. if($(this).attr('ctrlrole') == 'datetimepicker'){
  2984. fieldVal = fieldVal ? moment(fieldVal).format('YYYY-MM-DD HH:mm:ss') : '';
  2985. }
  2986. }
  2987. if(filename == 'NUMBER'){
  2988. if(fieldVal && fieldVal.length > 80){
  2989. formData[filename] = fieldVal.substr(0,80);
  2990. }else{
  2991. formData[filename] = fieldVal;
  2992. }
  2993. }if(filename == 'NAME'){
  2994. if(fieldVal && fieldVal.length > 255){
  2995. formData[filename] = fieldVal.substr(0,255);
  2996. }else{
  2997. formData[filename] = fieldVal;
  2998. }
  2999. }else{
  3000. if(filename == 'REMA' || filename == 'MILESTONE' ){
  3001. if( fieldVal.length > 1024){
  3002. formData[filename] = fieldVal.substr(0,1023);
  3003. }else{
  3004. formData[filename] = fieldVal;
  3005. }
  3006. }else{
  3007. formData[filename] = fieldVal;
  3008. }
  3009. }
  3010. }
  3011. }
  3012. //补丁10 字段必填-yine
  3013. if(flag) {
  3014. var _$this = $(this);
  3015. var _isRequired = _$this.data('isrequired');
  3016. var _isDisabled = _$this.attr('disabled');
  3017. if(_isRequired == '1' && _isDisabled != 'disabled' && isEmpty(fieldVal)) {
  3018. flag = false;
  3019. }
  3020. }
  3021. });
  3022. indicatorListObj.indicatorList = [];
  3023. recordListObj.recordList = [];
  3024. if(areatype == 200){
  3025. indicatorListObj.indicatorList.push(formData);
  3026. indicatorFieldArr = fieldsnameArr;
  3027. }else{
  3028. recordListObj.recordList.push(formData);
  3029. recordFieldArr = fieldsnameArr;
  3030. }
  3031. return flag;
  3032. },
  3033. /**
  3034. * 删除一条指标
  3035. */
  3036. delgoal : function(e, type,ids,delIndiMsg){
  3037. if(type == 'addnew'){ // 新增指标未保存编辑,取消时直接删除
  3038. it.calldeleteIndicatorOrRecord(e, 'addnew');
  3039. }else{
  3040. shr.showConfirm(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_44, function() {
  3041. //增加安全校验
  3042. if(typeof top.Messenger == "function") {
  3043. top.Messenger().hideAll();
  3044. }
  3045. if(viewType == 'list'){
  3046. it.calldelIndicatorListModel(ids,delIndiMsg);
  3047. }else{
  3048. it.calldeleteIndicatorOrRecord(e);
  3049. }
  3050. });
  3051. }
  3052. },
  3053. // 列表模式删除指标
  3054. calldelIndicatorListModel: function(ids,delIndiMsg){
  3055. var numval = ids.join(',');
  3056. var callback = function(data){
  3057. var dom = '', count_total = 0, count_success = 0, count_failure = 0; // count_total:选中指标数量
  3058. $.each(delIndiMsg, function(i, item){
  3059. var _grid = $('#'+item.tabId);
  3060. $.each(item.delData, function(j,list){
  3061. that.dealWidthDelId(list.id);
  3062. _grid.jqGrid('delRow', list.id)
  3063. })
  3064. var areaWeightObj = _grid.closest('.areawrap').find('.partGrade .areaweight');
  3065. that.dealWidthAreaweight(areaWeightObj,item.delWeight);
  3066. count_success += item.delInNameArr.length;
  3067. count_failure += item.notDelArr.length;
  3068. })
  3069. count_total = count_success + count_failure;
  3070. if(count_total > 1){
  3071. var dom = juicer(delIndiMsgTpl,{rows: delIndiMsg, jsBizMultLan: jsBizMultLan, countSuccess: count_success, countFailure: count_failure})
  3072. $(document.body).append(dom);
  3073. var dialogtop = 'center';
  3074. var winheight = $(window.top).height();
  3075. var winscrolltop = $(window.top).scrollTop();
  3076. if(self != top){
  3077. dialogtop = (winheight - ($(window).height() > 600 ? 600 : $(window).height()-20))/2 + winscrolltop - 80;
  3078. }
  3079. $("#delIndiMsgDialog").dialog({
  3080. autoOpen : true,
  3081. // show : "blind",
  3082. width : 600,
  3083. height : 450,
  3084. title : jsBizMultLan.perfweb_perfgoalsfillnew_20220114yw_03,
  3085. resizable : true,
  3086. position : [ 'center', dialogtop ],
  3087. modal : true,
  3088. buttons : [{
  3089. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_29,
  3090. click : function() {
  3091. $('#delIndiMsgDialog').remove();
  3092. }
  3093. }],
  3094. close : function(){
  3095. $('#delIndiMsgDialog').remove();
  3096. },
  3097. open:function(event, ui){}
  3098. });
  3099. }else{
  3100. shr.showSuccess({
  3101. message: jsBizMultLan.perfweb_perfgoalsfillnew_20220117yw_01, // 指标删除成功
  3102. hideAfter: 3
  3103. })
  3104. }
  3105. // shr.showInfo({
  3106. // message: dom,
  3107. // hideAfter: Math.ceil(count / 3) * 5,
  3108. // showCloseButton: true
  3109. // })
  3110. }
  3111. that.doDeleteIndicatorOrRecord(numval,callback);
  3112. },
  3113. // 执行删除指标方法
  3114. calldeleteIndicatorOrRecord: function(e, type){
  3115. var parent = $(e).closest('li');
  3116. var areawrap = parent.closest('.areawrap');
  3117. var numval = parent.attr("indid");
  3118. var index = areawrap.index();
  3119. var subindex = parent.index();
  3120. var deleteWeight,areaWeightObj;
  3121. deleteWeight = evaAreaListGlobal[index].targetItems[subindex].FWEIGHT ||evaAreaListGlobal[index].targetItems[subindex].FTARSCORE;
  3122. areaWeightObj = areawrap.find('.partGrade .areaweight');
  3123. var callback = function(data){
  3124. that.dealWidthDelId(numval);
  3125. if(type != 'addnew'){
  3126. shr.showInfo({message : data.msg,hideAfter : 5});
  3127. }
  3128. parent.remove();
  3129. that.dealWidthAreaweight(areaWeightObj,deleteWeight);
  3130. }
  3131. that.doDeleteIndicatorOrRecord(numval,callback);
  3132. },
  3133. // 删除指标后指标id处理
  3134. dealWidthDelId: function(numval){
  3135. for(var i=0; i<_noPassVerifyArr.length; i++){
  3136. if(_noPassVerifyArr[i].indicator == numval){
  3137. _noPassVerifyArr.splice(i,1);
  3138. }
  3139. }
  3140. if(!isExistInArr(numval,toDeleteIndicatorIds)){
  3141. toDeleteIndicatorIds.push(numval);
  3142. }
  3143. },
  3144. // 删除指标后重新计算区域权重并赋值
  3145. dealWidthAreaweight: function(areaWeightObj,deleteWeight){
  3146. var areaWeight = areaWeightObj.attr("areaweight");
  3147. if(deleteWeight){
  3148. var lastWeight = parseFloat(areaWeight) - parseFloat(deleteWeight);
  3149. //yien 保留两位小数点
  3150. lastWeight = Number(lastWeight).toFixed(2);
  3151. areaWeightObj.text(lastWeight);
  3152. areaWeightObj.attr("areaweight",lastWeight);
  3153. }
  3154. },
  3155. // 执行删除操作
  3156. doDeleteIndicatorOrRecord: function(numval,callback){
  3157. that.selfRemoteCall({
  3158. method : "deleteIndicatorOrRecord",
  3159. param : {
  3160. todeleteId : numval,
  3161. evaObj : evaObj,
  3162. billId: billId,
  3163. },
  3164. async : false,
  3165. success : function(data) {
  3166. if(data != null && data.result == '200'){
  3167. callback(data);
  3168. }else{
  3169. shr.showError({message : data.msg,hideAfter : 5});
  3170. }
  3171. }
  3172. });
  3173. },
  3174. /**
  3175. * 添加绩效指标
  3176. */
  3177. addIndicatorAction: function(){
  3178. it.addPerformanceIndicators('add');
  3179. },
  3180. // 引用绩效指标
  3181. referenceIndicatorAction: function(){
  3182. it.addPerformanceIndicators('ref');
  3183. },
  3184. /**
  3185. * 引用绩效指标库通过权限控制
  3186. */
  3187. hideReferencePI: function () {
  3188. $("#referencePI_hidden").hide();
  3189. if (!$("#referencePI_hidden").length > 0) {
  3190. $("#referencePI").hide();
  3191. }
  3192. },
  3193. // 状态判断
  3194. callGetEvaObjTargetStatusService: function(callback){
  3195. that.selfRemoteCall({
  3196. method : "getEvaObjTargetStatus",
  3197. param : {
  3198. evaObj : evaObj
  3199. },
  3200. async : false,
  3201. type:"post",
  3202. success : function(data) {
  3203. callback(data);
  3204. }
  3205. });
  3206. },
  3207. // 获取新增指标FID
  3208. callAddIndicatorForAreaService: function(areaId, areaType, ways, callback){
  3209. //后台保存指标到指定区域
  3210. that.selfRemoteCall({
  3211. method : "addIndicatorForArea",
  3212. param : {
  3213. periodId : periodId,
  3214. indicatorCount : 1,
  3215. personId : personId,
  3216. areaId : areaId,
  3217. areaType : areaType,
  3218. evaObj : evaObj,
  3219. buttonName: ways
  3220. },
  3221. async : false,
  3222. success : function(data) {
  3223. if(data != null && data.result != null && data.result.length>0){
  3224. // shr.showInfo({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_78,hideAfter : 5});
  3225. var newIndicatorFID = data.result[0];
  3226. callback(newIndicatorFID);
  3227. }
  3228. }
  3229. });
  3230. },
  3231. // 列表模式新增指标
  3232. addNewIndiForListModel: function(areaId, areaType, ways){
  3233. var callback = function(FID){
  3234. that.callCompositeEvaObjectDataService(function(){
  3235. that.addIndicatorListModel(FID,areaId);
  3236. })
  3237. }
  3238. that.callAddIndicatorForAreaService(areaId, areaType, ways, callback);
  3239. },
  3240. //加载考核规则、考核计划、考核模式
  3241. callCompositeEvaObjectDataService: function(callback){
  3242. that.selfRemoteCall({
  3243. method : "compositeEvaObjectData",
  3244. param : {
  3245. evaObj : evaObj,
  3246. billId: billId
  3247. },
  3248. async : false,
  3249. success : function(data) {
  3250. if(data != null){
  3251. globalIndicatorData = data;
  3252. data = that.dealEmptyIndicatoName(data);
  3253. callback(data)
  3254. }
  3255. }
  3256. });
  3257. },
  3258. /**
  3259. * 添加绩效指标优化
  3260. * ways: addIndicator,新建指标
  3261. * ways: referenceIndicator,引用指标
  3262. */
  3263. addIndicatorsNew: function(e, areaId, areaType, ways, areaIndex){
  3264. var callback = function(data){
  3265. if(!data) {
  3266. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_30,hideAfter : 5});
  3267. return false;
  3268. }
  3269. var _targetStatus = data.targetStatus;
  3270. //如果是团队目标下达,则提交的目标也支持继续添加指标
  3271. if(pageType != '1' && _targetStatus == 2){ //个人目标已提交
  3272. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_21,hideAfter : 5});
  3273. return false;
  3274. }else if(_targetStatus == 3){ //个人目标已下达
  3275. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_24,hideAfter : 5});
  3276. return false;
  3277. }else{
  3278. if(ways == 'addIndicator'){ //新建指标
  3279. if(viewType == 'list'){
  3280. that.addNewIndiForListModel(areaId, areaType, ways);
  3281. }else{ //概览模式新增指标
  3282. // that.addNewIndiForOverviewModel(areaId, areaType, ways, areaIndex);
  3283. that.initEditBoxDialog(areaIndex, '', 'addNew')
  3284. }
  3285. }
  3286. if(ways == 'referenceIndicator'){ //引用指标
  3287. that.refIndicatorNew(areaId, areaType, ways);
  3288. }
  3289. }
  3290. }
  3291. this.callGetEvaObjTargetStatusService(callback);
  3292. },
  3293. //引用指标
  3294. refIndicatorNew: function(areaId, areaType, ways){
  3295. var callback = function(isRefTarget,_this,addIndicatorType, areaId, areaType){
  3296. //获取已选指标库的指标id
  3297. indicatorSelectedIds = [];
  3298. var indicatorRows = $("#PIselected").jqGrid('getRowData');
  3299. for(var j=0,len=indicatorRows.length; j<len; j++) {
  3300. if(typeof indicatorRows[j].id != "undefined" && indicatorRows[j].id) {
  3301. indicatorSelectedIds.push(indicatorRows[j].id);
  3302. }
  3303. }
  3304. if(indicatorSelectedIds.length<1){
  3305. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_61,hideAfter : 5});
  3306. return false;
  3307. }
  3308. it.calladdIndicatorByReferenceService(isRefTarget,indicatorSelectedIds,areaId);
  3309. $(_this).dialog('close');
  3310. }
  3311. it.initReferenceInditorsDialog(callback, areaId, areaType);
  3312. },
  3313. // 获取引用指标FID
  3314. calladdIndicatorByReferenceService: function(isRefTarget,indicatorSelectedIds,areaId){
  3315. that.selfRemoteCall({
  3316. method : "addIndicatorByReference",
  3317. param : {
  3318. selectedIds : indicatorSelectedIds.toString(),
  3319. period : periodId,
  3320. areaId : areaId,
  3321. evaObj : evaObj,
  3322. personId : personId,
  3323. isRefTarget: isRefTarget
  3324. },
  3325. async : false,
  3326. success : function(data) {
  3327. if(data != null && data.result == 'OK'){
  3328. var toClickIndicator = data.successIds[0];
  3329. shr.showInfo({message : $.perfwebI18n.commonMsg.msg2,hideAfter : 5});
  3330. that.callCompositeEvaObjectDataService(function(data){
  3331. that.initGoalsItems(data);
  3332. })
  3333. }
  3334. }
  3335. });
  3336. },
  3337. /**
  3338. * 添加绩效指标
  3339. * ways: add,新建指标
  3340. * ways: ref,引用指标
  3341. */
  3342. addPerformanceIndicators : function(ways){
  3343. //判断指标是否已提交
  3344. that.selfRemoteCall({
  3345. method : "getEvaObjTargetStatus",
  3346. param : {
  3347. evaObj : evaObj
  3348. },
  3349. async : false,
  3350. type:"post",
  3351. success : function(data) {
  3352. if(!data) {
  3353. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_30,hideAfter : 5});
  3354. return false;
  3355. }
  3356. var _targetStatus = data.targetStatus;
  3357. //如果是团队目标下达,则提交的目标也支持继续添加指标
  3358. if(pageType != '1' && _targetStatus == 2){ //个人目标已提交
  3359. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_21,hideAfter : 5});
  3360. return false;
  3361. }else if(_targetStatus == 3){ //个人目标已下达
  3362. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_24,hideAfter : 5});
  3363. return false;
  3364. }else{
  3365. //指标复制和引用
  3366. var btnComfirmFunc = function(isRefTarget,_this,addIndicatorType){
  3367. if(typeof isRefTarget == 'undefined') {
  3368. isRefTarget = '0';
  3369. }
  3370. //新建指标
  3371. if(addIndicatorType == '1'){
  3372. var indicatorCount = 1; //添加指标数量
  3373. var index = $("li[class='partlistselect']").index();
  3374. var areaId = $(".partplist").find("li[class='partlistselect']").find(".partnumber_1").attr("areaid"); //要添加指标的区域id
  3375. var areaType = $(".partplist").find("li[class='partlistselect']").find(".partnumber_1").attr("areaType"); //区域类型
  3376. if(areaId == '' || areaId == undefined){
  3377. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_49,hideAfter : 5});
  3378. return;
  3379. }
  3380. var g = /^[1-9]*[1-9][0-9]*$/;
  3381. if(!g.test(indicatorCount) || parseInt(indicatorCount) > 10){
  3382. shr.showWarning({message : shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_56,[10]),hideAfter : 5});
  3383. return;
  3384. }
  3385. //后台保存指标到指定区域
  3386. that.selfRemoteCall({
  3387. method : "addIndicatorForArea",
  3388. param : {
  3389. periodId : periodId,
  3390. indicatorCount : indicatorCount,
  3391. personId : personId,
  3392. areaId : areaId,
  3393. areaType : areaType,
  3394. evaObj : evaObj,
  3395. buttonName: ways == 'ref' ? 'referenceIndicator' : 'addIndicator'
  3396. },
  3397. async : false,
  3398. success : function(data) {
  3399. if(data != null && data.result != null && data.result.length>0){
  3400. // shr.showInfo({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_78,hideAfter : 5});
  3401. var toClickIndicator = data.result[0];
  3402. //加载考核规则、考核计划、考核模式
  3403. that.selfRemoteCall({
  3404. method : "compositeEvaObjectData",
  3405. param : {
  3406. evaObj : evaObj,
  3407. billId: billId
  3408. },
  3409. async : false,
  3410. success : function(data) {
  3411. if(data != null){
  3412. globalIndicatorData = data;
  3413. data = that.dealEmptyIndicatoName(data);
  3414. if(viewType == 'list'){
  3415. that.addIndicatorListModel(toClickIndicator,areaId);
  3416. }else{
  3417. that.initGoalsItems(data); //重新生成左侧指标列表
  3418. }
  3419. //that.initTargetWorkflowDialog();
  3420. // BT1464028 用一个空白的目标表单 先引用已有指标,再添加指标--指标弹框显示是最后一个指标内容
  3421. // var subindex = evaAreaListGlobal[index].targetItems.length - 1;
  3422. // it.initEditBoxDialog(index,subindex,'addNew');
  3423. }
  3424. }
  3425. });
  3426. if(viewType == 'overview'){
  3427. // $("li[numval='"+toClickIndicator+ "']").click();
  3428. // BT1464028 用一个空白的目标表单 先引用已有指标,再添加指标--指标弹框显示是最后一个指标内容
  3429. var targetBtnObj = $('div[indid="'+toClickIndicator+'"]:first').find('span[class="editbtn"]:first');
  3430. //BT1464430 点击添加指标,出现添加指标弹框,没有点击保存按钮,点击取消 ,表单还是多了一条空白指标
  3431. var clkfun = targetBtnObj.attr('onClick');
  3432. clkfun = clkfun.replace(')',',\'addNew\')');
  3433. targetBtnObj.attr('onClick',clkfun);
  3434. targetBtnObj.click();
  3435. }
  3436. }
  3437. }
  3438. });
  3439. $(_this).dialog('close');
  3440. }else if(addIndicatorType == '2'){//引用绩效指标库
  3441. var areaId = $(".partplist_1").find("li[class='partlistselect_1']").find(".partnumber_1").attr("areaid"); //要添加指标的区域id
  3442. var areaType = $(".partplist_1").find("li[class='partlistselect_1']").find(".partnumber_1").attr("areaType"); //区域类型
  3443. if(areaId == '' || areaId == null || areaId == undefined){
  3444. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_60,hideAfter : 5});
  3445. return false;
  3446. }
  3447. //获取已选指标库的指标id
  3448. indicatorSelectedIds = [];
  3449. var indicatorRows = $("#PIselected").jqGrid('getRowData');
  3450. for(var j=0,len=indicatorRows.length; j<len; j++) {
  3451. if(typeof indicatorRows[j].id != "undefined" && indicatorRows[j].id) {
  3452. indicatorSelectedIds.push(indicatorRows[j].id);
  3453. }
  3454. }
  3455. if(indicatorSelectedIds.length<1){
  3456. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_61,hideAfter : 5});
  3457. return false;
  3458. }
  3459. that.selfRemoteCall({
  3460. method : "addIndicatorByReference",
  3461. param : {
  3462. selectedIds : indicatorSelectedIds.toString(),
  3463. period : periodId,
  3464. areaId : areaId,
  3465. evaObj : evaObj,
  3466. personId : personId,
  3467. isRefTarget: isRefTarget
  3468. },
  3469. async : false,
  3470. success : function(data) {
  3471. if(data != null && data.result == 'OK'){
  3472. var toClickIndicator = data.successIds[0];
  3473. shr.showInfo({message : $.perfwebI18n.commonMsg.msg2,hideAfter : 5});
  3474. //加载考核规则、考核计划、考核模式
  3475. that.selfRemoteCall({
  3476. method : "compositeEvaObjectData",
  3477. param : {
  3478. evaObj : evaObj,
  3479. billId: billId
  3480. },
  3481. async : false,
  3482. success : function(data) {
  3483. if(data != null){
  3484. globalIndicatorData = data;
  3485. data = that.dealEmptyIndicatoName(data);
  3486. that.initGoalsItems(data); //重新生成左侧指标列表
  3487. //that.initTargetWorkflowDialog();
  3488. }
  3489. }
  3490. });
  3491. //BT1355334 个人目标添加--引用指标--引用指标时位到引用的指标
  3492. // $("li[numval='"+toClickIndicator+ "']").click();
  3493. }
  3494. }
  3495. });
  3496. $(_this).dialog('close');
  3497. }
  3498. };
  3499. if(ways == 'add'){
  3500. it.initAddInditorsDialog(btnComfirmFunc);
  3501. }else if(ways == 'ref'){
  3502. it.initReferenceInditorsDialog(btnComfirmFunc);
  3503. }
  3504. }
  3505. }
  3506. });
  3507. },
  3508. // 列表模式添加指标
  3509. addIndicatorListModel: function(FID, areaId){
  3510. var evaAreaList = globalIndicatorData.rows.evaAreaList;
  3511. var newIndi = {}, _grid;
  3512. for(var i=0; i<evaAreaList.length; i++){
  3513. if(evaAreaList[i].areaId == areaId){
  3514. var indiList = evaAreaList[i].evaIndicatorList || evaAreaList[i].evaRecordList;
  3515. _grid = $('#tab'+i)
  3516. for(var j=0; j<indiList.length; j++){
  3517. if(indiList[j].FID == FID){
  3518. newIndi = indiList[j];
  3519. newIndi.id = FID;
  3520. break;
  3521. }
  3522. }
  3523. newIndi.otherMsg = {};
  3524. newIndi.otherMsg.fieldList = evaAreaList[i].fieldList;
  3525. break;
  3526. }
  3527. }
  3528. _grid.jqGrid("addRowData",FID,newIndi,"last");
  3529. that.getDisableField(newIndi,_grid);
  3530. // 页面滚动条位置
  3531. var scrollT = _grid.offset().top - $('.evaluation').offset().top;
  3532. $(window).scrollTop(scrollT);
  3533. // 表格滚动条位置
  3534. var tHeight = _grid.height();
  3535. _grid.closest('.ui-jqgrid-bdiv').scrollTop(tHeight);
  3536. },
  3537. // 新建绩效指标弹框
  3538. initAddInditorsDialog: function(btnComfirmFunc){
  3539. var addNewIndicatorsTpl = document.getElementById('addNewIndicatorsTpl').innerHTML;
  3540. globalIndicatorData.jsBizMultLan = jsBizMultLan;
  3541. var addNewIndicatorsHTML = juicer(addNewIndicatorsTpl, globalIndicatorData);
  3542. $(document.body).append(addNewIndicatorsHTML);
  3543. $("#addPerfIndicatorsDialog").dialog({
  3544. autoOpen : true,
  3545. show : "blind",
  3546. //BT1408064 绩效工作台--流程审批下达时引用指标这个框太大了,屏幕小的看不到按钮
  3547. width : $(window).width()>800?800:$(window).width()-6,
  3548. height : $(window).height()>455?455:$(window).height()-6,
  3549. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_77,
  3550. resizable : false,
  3551. position : [ 'center', pageType == 2 ? 150 : 'center' ],
  3552. modal : true,
  3553. buttons: [
  3554. {
  3555. id: 'dlg_confirm_btn',
  3556. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_70,
  3557. click: function() {
  3558. btnComfirmFunc('0',this,'1');
  3559. }
  3560. },
  3561. {
  3562. id: 'dlg_cancel_btn',
  3563. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  3564. click: function() {
  3565. $(this).dialog('close',this,'1');
  3566. }
  3567. }
  3568. ],
  3569. close : function(){
  3570. $('#addPerfIndicatorsDialog').remove();
  3571. //BT1363381 动态计算区域权重
  3572. calcAndSetCurAreaWeight();
  3573. }
  3574. });
  3575. it.selectAddPart('partplist','partlistselect');
  3576. },
  3577. // 引用绩效指标弹框
  3578. // 新逻辑新增传参areaId, areaType,旧逻辑没有
  3579. initReferenceInditorsDialog: function(btnComfirmFunc, areaId, areaType){
  3580. var referenceIndicatorsTpl = document.getElementById('referenceIndicatorsTpl').innerHTML;
  3581. globalIndicatorData.jsBizMultLan = jsBizMultLan;
  3582. if(areaId){
  3583. globalIndicatorData.currAreaType = areaType;
  3584. }else{
  3585. globalIndicatorData.currAreaType = '';
  3586. }
  3587. //二开,过滤指标; 202501
  3588. let ardiv = document.querySelector("div[areaid='" + areaId + "']");
  3589. let arspan = ardiv.querySelector(".areaname-text");
  3590. let areaNameStr = arspan.textContent;
  3591. var referenceIndiHTML = juicer(referenceIndicatorsTpl, globalIndicatorData);
  3592. $(document.body).append(referenceIndiHTML);
  3593. $('#PIall').closest('.recordtab').prepend(page('indicator'));
  3594. $('#PIselected').closest('.recordtab').prepend(page('indicatorSelected'));
  3595. $('#existingPIall').closest('.recordtab').prepend(page('hadIndicator'));
  3596. $('#existingPIall_2').closest('.recordtab').prepend(page('hadIndicator_2'));
  3597. // that.hideReferencePI();
  3598. $("#addPerfIndicatorsDialog").dialog({
  3599. autoOpen : true,
  3600. show : "blind",
  3601. // width : isShrBill ? 800 : (pageType==2 ? 900 : 1100),
  3602. // height : isShrBill ? 455 : 555,
  3603. // BT1408064 绩效工作台--流程审批下达时引用指标这个框太大了,屏幕小的看不到按钮
  3604. width : $(window).width()>1100?1100:$(window).width()-6,
  3605. height : $(window).height()>555?555:$(window).height()-6,
  3606. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_99,
  3607. resizable : false,
  3608. position : [ 'center', pageType == 2 ? 150 : 'center' ],
  3609. modal : true,
  3610. buttons: [
  3611. {
  3612. id: 'dlg_reference_btn',
  3613. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_98,
  3614. click: function() {
  3615. btnComfirmFunc('1',this,'2', areaId, areaType);
  3616. }
  3617. },
  3618. {
  3619. id: 'dlg_copy_btn',
  3620. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_20,
  3621. click: function() {
  3622. btnComfirmFunc('0',this,'2', areaId, areaType);
  3623. }
  3624. },
  3625. {
  3626. id: 'dlg_cancel_btn',
  3627. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  3628. click: function() {
  3629. $(this).dialog('close',this,'2');
  3630. }
  3631. }
  3632. ],
  3633. close : function(){
  3634. $('#addPerfIndicatorsDialog').remove();
  3635. //BT1363381 动态计算区域权重
  3636. calcAndSetCurAreaWeight();
  3637. }
  3638. });
  3639. //指标引用与复制
  3640. // // 默认为新建指标信息
  3641. // $('#dlg_reference_btn').hide();
  3642. // $('#dlg_copy_btn').hide();
  3643. var indicatorType_f7_json2 = {
  3644. id:"indiType",
  3645. name:"indiType",
  3646. displayFormat:"{BaseInfo.name}",
  3647. // PBG170896-指标类型树,无法按绩效业务组织过滤,只能暂时隐藏这棵树 modified by janeou_xie
  3648. afterJqGridLoadComplete: function () {
  3649. $('#treeNavigation').hide();
  3650. },
  3651. onchange: function(e,value){
  3652. var dataSet = value.current;
  3653. var indecatorType = dataSet ? dataSet["BaseInfo.id"] : "null";
  3654. var rows = $("#indicatorPageSelect").val();
  3655. //指标库(全部)重加载
  3656. referencePIParam['filterItems'] = "{indecatorType:'" +indecatorType+"'}";
  3657. reloadCustomSearcherGrid({gridId : 'PIall' , pageNum : '1'});
  3658. indicatorSelectedIds.splice(0,indicatorSelectedIds.length); //将已选指标清空
  3659. //指标库(已选)重加载
  3660. $("#PI_selected").jqGrid("option","filterItems","{rows : "+rows+"; page : 1;indecatorType:'" +indecatorType+ "'}").jqGrid("reloadGrid");
  3661. $("#ui-dialog-otherConfig").remove();
  3662. }
  3663. };
  3664. indicatorType_f7_json2.subWidgetName = 'specialPromptGrid';
  3665. indicatorType_f7_json2.subWidgetOptions = {
  3666. title: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_113,
  3667. uipk: "com.kingdee.shr.perfweb.app.base.indecator.IndecatorType.available.F7",
  3668. query: "",
  3669. multiselect : false,
  3670. isHRBaseItem: true,
  3671. f7ReKeyValue: "BaseInfo.id:BaseInfo.longName",
  3672. currentHrOrgUnitId: hrOrgUnit,
  3673. filter: "hrOrgUse.id = '" + hrOrgUnit + "'",
  3674. bizFilterFieldsValues: "bizFilterFields=undefined:" + encodeURIComponent(hrOrgUnit),
  3675. filterConfig: [{
  3676. name: 'isComUse', value: true,
  3677. alias: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_86,
  3678. widgetType: 'checkbox',display:'none'
  3679. }],
  3680. // onclikFunction : function(id){
  3681. // var dataSet = $("tr[id='" +id+ "']").parent().parent().parent().find("table[ctrlrole='grid']").jqGrid('getRowData', id);
  3682. // $("#indiType").shrPromptBox("setValue", dataSet);
  3683. // var indecatorType = "null"; //指标类型id
  3684. // indecatorType = dataSet["BaseInfo.id"];
  3685. // var rows = $("#indicatorPageSelect").val();
  3686. // //指标库(全部)重加载
  3687. // referencePIParam['filterItems'] = "{indecatorType:'" +indecatorType+"'}";
  3688. // reloadCustomSearcherGrid({gridId : 'PIall' , pageNum : '1'});
  3689. // // reloadReferencePIGrid();
  3690. // // $("#PIall").jqGrid("option","filterItems","{rows : "+rows+"; page : 1;indecatorType:'" +indecatorType+"'}").jqGrid("reloadGrid");
  3691. // indicatorSelectedIds.splice(0,indicatorSelectedIds.length); //将已选指标清空
  3692. // //指标库(已选)重加载
  3693. // $("#PI_selected").jqGrid("option","filterItems","{rows : "+rows+"; page : 1;indecatorType:'" +indecatorType+ "'}").jqGrid("reloadGrid");
  3694. // $("#ui-dialog-otherConfig").remove();
  3695. // }
  3696. };
  3697. $('input[id="indiType"]').shrPromptBox(indicatorType_f7_json2);
  3698. //$('form[id="indiType"]').shrForm({id:indiTypeForm});//包裹一个form, 为了提供validate功能
  3699. $('.ui-promptBox-icon').addClass('required');
  3700. it.selectAddPart('partplist_1','partlistselect_1');
  3701. it.switchTable(); //表格切换
  3702. it.initPIallTable(areaNameStr); //加载弹出框表格——绩效指标库——全部
  3703. it.initPIselectedTable(); //加载弹出框表格——绩效指标库——已选
  3704. it.initexistingPIallTable(areaId, areaType); //加载弹出框表格——引用已有指标——全部
  3705. if("1" == pageType) {
  3706. //隐藏个人目标填报标签,不移除避免已有功能的影响
  3707. $("#reference_existingPI").hide();
  3708. //获取考核周期的过滤条件
  3709. it.initexistingPIallTable2(); //加载弹出框表格——引用已有指标(根据考核周期引用考核周期下的考核对象已有指标)
  3710. // $('#reference_existingPI_2box').show();
  3711. //判断是否从团队目标填报进入
  3712. it.selfRemoteCall({
  3713. method: 'getPlanFilter',
  3714. async : false,
  3715. param : {
  3716. period : periodId
  3717. },
  3718. success : function(data){
  3719. planFilter = data.planFilter;
  3720. }
  3721. });
  3722. var perfPlay_f7_json = {id:"perfPlay",name:"perfPlay"};
  3723. var planfilter = "perfPlan in (" + planFilter + ")" ;
  3724. perfPlay_f7_json.subWidgetName = 'shrPromptGrid';
  3725. perfPlay_f7_json.subWidgetOptions = {title:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_33,
  3726. uipk:"com.kingdee.shr.perfweb.app.base.evalplan.PerfPeriod.F7",filter : planfilter};//指标类型的F7,要改成考核计划的F7
  3727. $('#perfPlay').shrPromptBox(perfPlay_f7_json);
  3728. $('#perfPlayForm').shrForm({id:"perfPlayForm"});//包裹一个form, 为了提供validate功能
  3729. //绑定周期选中事件
  3730. $('#perfPlay').change(function () {
  3731. var periodid = $('#perfPlay_el').val();
  3732. reloadCustomSearcherGrid({gridId: 'existingPIall_2' , pageNum: 1, period: periodid, sord: "DESC"})
  3733. });
  3734. //初始化快速搜索
  3735. existingPIallParam = {rowsNum: 10 , pageNum: 1 , period: '' , useMyOwnTarget: useMyOwnTargetVal};
  3736. existingPIallFilterItems = "";
  3737. //组织考核-yien
  3738. if(isOrg == '1') {
  3739. existingPIallSearcherFields =
  3740. [
  3741. {columnName:'evaObj.number',label:$.perfwebI18n.tableConstant.msg6},
  3742. {columnName:'evaObj.name',label:$.perfwebI18n.tableConstant.msg7}
  3743. ];
  3744. }else {
  3745. existingPIallSearcherFields =
  3746. [
  3747. {
  3748. columnName:'evaObj.number',
  3749. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_101
  3750. },
  3751. {
  3752. columnName:'evaObj.name',
  3753. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_89
  3754. },
  3755. {
  3756. columnName:'evaObj.positionName',
  3757. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_105
  3758. }
  3759. ];
  3760. }
  3761. initCustomQuickSearcher({gridId : 'existingPIall_2' , searcherId : 'existingPIall_searcher' , fields : existingPIallSearcherFields});
  3762. //组织考核-yien 隐藏仅显示我的指标
  3763. if(isOrg == '1') {
  3764. //BT1440992 引用已有指标“仅显示我的指标”勾选框去掉,直接显示 全部
  3765. // 搜索字段改成组织的
  3766. $('.useMyOwnTargetwrap').hide();
  3767. }else {
  3768. //渲染选中仅显示我的指标CheckBox
  3769. $('#useMyOwnTarget').shrCheckbox();
  3770. $('#useMyOwnTarget').shrCheckbox('onChange' , useMyOwnTarget);
  3771. $('#useMyOwnTarget').shrCheckbox("check"); //默认选中
  3772. }
  3773. initCustomPageClick('hadIndicator_2' , 'existingPIall_2');
  3774. }else {
  3775. //移除团队引用已有指标的tab标签
  3776. $("#reference_existingPI_2box").remove();
  3777. $("#reference_existingPI_2").remove();
  3778. // $('#reference_existingPIbox').show();
  3779. }
  3780. //2019/10/15 yien_fan
  3781. // 引用绩效指标库添加快速搜索
  3782. referencePIParam = {gridId: 'PIall' , rowsNum: 10 , pageNum: 1 , filterItems:''};
  3783. referencePIFilterItems = "";
  3784. var referencePISearcherFields = [
  3785. {
  3786. columnName:'name',
  3787. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_119
  3788. },
  3789. {
  3790. columnName:'number',
  3791. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_3
  3792. }
  3793. ];
  3794. initCustomQuickSearcher({gridId : 'PIall' , searcherId : 'referencePI_searcher' , fields : referencePISearcherFields});
  3795. initCustomPageClick('indicator' , 'PIall');
  3796. //补丁11 目标对齐-yien
  3797. if(isOrg == '1') {
  3798. //隐藏组织目标引用
  3799. $('#reference_orgPI').hide();
  3800. }else {
  3801. $('#existingOrgPI').closest('.recordtab').prepend(page('hadIndicatorOrg'));
  3802. it.selectAddPart('org_partplist_1','partlistselect_1');
  3803. var orgId_f7_json = {id: "refOrgUnit", name: "refOrgUnit"};
  3804. orgId_f7_json.subWidgetName = 'shrPromptGrid';
  3805. orgId_f7_json.subWidgetOptions = {
  3806. // title: '行政组织',
  3807. title: $.perfwebI18n.commonMsg.adminOrg,
  3808. uipk: "com.kingdee.eas.basedata.org.app.AdminOrgUnit.F7",
  3809. query: "",
  3810. permItemId: encodeURIComponent(permItemId),
  3811. serviceId : shr.getUrlRequestParam("serviceId",window.parent.location.href),
  3812. };
  3813. $('#refOrgUnit').shrPromptBox(orgId_f7_json);
  3814. $('#refOrgUnitForm').shrForm({id: "refOrgUnitForm"});//包裹一个form, 为了提供validate功能
  3815. $('#refOrgUnit').shrPromptBox('addRules', {required: false});
  3816. //绑定修改事件
  3817. $('#refOrgUnit').shrPromptBox("option", {
  3818. onchange: function (e, value) {
  3819. //判断是否重新选择
  3820. var filterOrg = value.current.id;
  3821. if(value.previous == undefined || value.previous.id != filterOrg) {
  3822. reloadCustomSearcherGrid({gridId : 'existingOrgPI' , pageNum : '1', filterOrg: filterOrg});
  3823. }
  3824. }
  3825. });
  3826. //设置评估对象所属的行政组织
  3827. if(refOrgUnit['name'] != undefined) {
  3828. $('#refOrgUnit').val(refOrgUnit['name']);
  3829. }
  3830. //获取用户的当前行政组织
  3831. it.initOrgPITable(areaId, areaType);
  3832. }
  3833. if(globalIndicatorData.currAreaType == '300'){
  3834. $('#reference_existingPI').click();
  3835. }
  3836. },
  3837. dealEmptyIndicatoName : function(data){
  3838. //BT1226408 : 解决新建指标未保存,引用指标后原新建指标名称被刷没了的问题
  3839. var evaAreaObj = null;
  3840. var evaIndicatorLen = 0;
  3841. if(data.rows && data.rows.evaAreaList.length>0){
  3842. var len = data.rows.evaAreaList.length;
  3843. for(var i=0; i<len; i++){
  3844. evaAreaObj = data.rows.evaAreaList[i];
  3845. if(evaAreaObj.areaType == '200'){
  3846. evaIndicatorLen = evaAreaObj.evaIndicatorList.length;
  3847. if(evaIndicatorLen>0){
  3848. for(var j=0; j<evaIndicatorLen; j++){
  3849. if(evaAreaObj.evaIndicatorList[j].FNAME == ""){
  3850. data.rows.evaAreaList[i].evaIndicatorList[j].FNAME =
  3851. $(shr.xssFilter("input[indicator='" +evaAreaObj.evaIndicatorList[j].FID+ "'][fname='FNAME']")).val();
  3852. }
  3853. }
  3854. }
  3855. }
  3856. }
  3857. }
  3858. return data;
  3859. },
  3860. /**
  3861. * 单击单选按钮,切换添加绩效指标页签
  3862. * @param id
  3863. */
  3864. addPI : function(id){
  3865. var idObj=$('#'+id);
  3866. var index=idObj.index();
  3867. var PIbox=$('.PIbox');
  3868. var radio=idObj.find('.radio-btn');
  3869. if(!radio.hasClass('radio-checked')){
  3870. radio.parent().siblings('.radio-btn-wrap').find('.radio-checked').removeClass('radio-checked');
  3871. radio.addClass('radio-checked');
  3872. PIbox.eq(index).siblings('.PIbox').slideUp();
  3873. PIbox.eq(index).slideDown();
  3874. if(index == 0){
  3875. $("#partplist_1 li:first").click();
  3876. }
  3877. }
  3878. //考核规则复制与引用-控制顶部按钮的显示与隐藏
  3879. if(id === 'addnewPI') {
  3880. //新建指标
  3881. $('#dlg_reference_btn').hide();
  3882. $('#dlg_copy_btn').hide();
  3883. $('#dlg_confirm_btn').show();
  3884. }else {
  3885. $('#dlg_reference_btn').show();
  3886. $('#dlg_copy_btn').show();
  3887. $('#dlg_confirm_btn').hide();
  3888. }
  3889. //补丁11 目标对齐-yien
  3890. if(id == 'reference_orgPI') {
  3891. $('#reference_orgPIbox li:first').click();
  3892. }
  3893. },
  3894. /**
  3895. * 选择区域
  3896. * @param ulclass
  3897. * @param selectliclass
  3898. */
  3899. selectAddPart : function(ulclass,selectliclass){
  3900. $('.'+ulclass+' li').unbind('click').bind('click',function(){
  3901. var list=$(this);
  3902. var grouplistselect_icon=$('<span class="grouplistselect_icon"></span>');
  3903. if(!list.hasClass(selectliclass)){
  3904. $('.'+selectliclass).find('.grouplistselect_icon').remove();
  3905. $('.'+selectliclass).removeClass(selectliclass);
  3906. list.addClass(selectliclass).append(grouplistselect_icon);
  3907. }
  3908. });
  3909. if ($("#partplist_1").children().length > 0) {
  3910. $("#partplist_1").children()[0].click();
  3911. }
  3912. },
  3913. /**
  3914. * 选择添加数量--增加事件
  3915. */
  3916. increaseNumber : function(){
  3917. var number=parseInt($('#addcount').val());
  3918. if(number>0 && number<10){
  3919. $('#addcount').val(number+1);
  3920. }
  3921. },
  3922. /**
  3923. * 选择添加数量--减少事件
  3924. */
  3925. reduceNumber : function(){
  3926. var number=parseInt($('#addcount').val());
  3927. if(number>1 && number<=10){
  3928. $('#addcount').val(number-1);
  3929. }
  3930. },
  3931. /**
  3932. * 添加绩效指标条数--鼠标离开时校验>0,<=10
  3933. */
  3934. addcountonblur : function(){
  3935. var number=parseInt($('#addcount').val());
  3936. var g = /^[1-9]*[1-9][0-9]*$/;
  3937. if(g.test(number) && parseInt(number)<= 10){
  3938. return;
  3939. }else{
  3940. shr.showWarning({message : shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_56,[10]),hideAfter : 5});
  3941. }
  3942. },
  3943. /**
  3944. * 表格切换
  3945. */
  3946. switchTable : function(){
  3947. $('.recordsmenu li').unbind('click').bind('click',function(){
  3948. if($(this).text().indexOf(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_97)
  3949. != -1 && $(this).attr("id") == 'PIselectLi'){//已选
  3950. // var selectedIds = indicatorSelectedIds.toString();
  3951. // var selectedRecordLen = selectedIds.split(",").length;
  3952. // var postData = {recordLen : selectedRecordLen,page : 1,sord : "DESC",selectedIds : selectedIds,type : '002'};
  3953. //
  3954. // $("#PIselected").setGridParam({postData:postData,url:that.dynamicPage_url+"?method=getIndicatorList&uipk=" + that.uipk});
  3955. // $("#PIselected").jqGrid('reloadGrid');
  3956. $("#indicatorSelectedPager").hide();
  3957. $("#referencePI_searcher").hide(); //隐藏快速搜索框
  3958. }else{
  3959. $("#referencePI_searcher").show(); //显示快速搜索框
  3960. }
  3961. if(!$(this).hasClass('selectli')){
  3962. var index=$(this).index();
  3963. $(this).siblings('li.selectli').removeClass('selectli');
  3964. $(this).addClass('selectli');
  3965. $(this).parents('.datarecords').find('.tablewrap').find('.show').removeClass('show');
  3966. $(this).parents('.datarecords').find('.tablewrap').find('.recordtab').eq(index).addClass('show');
  3967. }
  3968. })
  3969. },
  3970. /**
  3971. * 【同时引用统一下达的指标】复选框按钮事件
  3972. * @param which
  3973. */
  3974. checkboxEvent : function(which){
  3975. var obj=$(which);
  3976. var checkboxs=obj.find('.checkboxs');
  3977. if(checkboxs.hasClass('checkedboxs')){
  3978. checkboxs.removeClass('checkedboxs');
  3979. }else{
  3980. checkboxs.addClass('checkedboxs');
  3981. }
  3982. },
  3983. /**
  3984. * 初始化jqGrid表格
  3985. * @param obj
  3986. * @param options
  3987. */
  3988. initjqGridTable : function(obj,options){
  3989. obj.jqGrid({
  3990. mtype:"POST", //提交方式
  3991. datatype: "json",
  3992. height:options.height, //高度,表格高度。可为数值、百分比或'auto'
  3993. width:options.width, //这个宽度不能为百分比
  3994. autowidth:true,
  3995. colNames:options.name,
  3996. colModel:options.model,
  3997. rownumbers:false, //添加左侧行号
  3998. sortname:'number',
  3999. sortorder: 'asc',
  4000. sortable:true,
  4001. rowNum: 20, //每页显示记录数
  4002. multiselect: options.multiselect, //复选框
  4003. forceFit:true, //如果设置为true,改变列宽,相邻列也将调整以适应整体表格,将不会出现水平滚动条。
  4004. multiselectWidth:options.multiselectWidth, //复选框列宽度
  4005. shrinkToFit:options.shrinkToFit, //该项描述计算每列相对于表格宽度的初始宽度的类型。若为true,并且设置了列宽度,则每列的宽度根据定义宽度缩放。若为false,并且设置了列宽度,表格宽度为设置宽度,列宽度不会重新计算,使用colModel中定义的值
  4006. autoScroll: false,
  4007. hoverrows: true,
  4008. hidegrid:false,
  4009. url: options.url,
  4010. postData: options.postData,
  4011. loadComplete:options.loadComplete,
  4012. onSelectRow : options.onSelectRow,
  4013. onSelectAll : options.onSelectAll
  4014. });
  4015. //.jqGrid('setFrozenColumns');//.jqGrid('setFrozenColumns')冻结列,不生效\
  4016. },
  4017. /**
  4018. * 加载数据
  4019. */
  4020. loadingTableData : function(obj){
  4021. var data=it.simulatedData();
  4022. for(var i=0;i<data.length;i++){
  4023. obj.jqGrid("addRowData",i,data[i]);
  4024. }
  4025. },
  4026. /**
  4027. * 加载弹出框表格——绩效指标库——全部
  4028. */
  4029. initPIallTable : function(areaNameStr){
  4030. var indicatorOptions={
  4031. name:[
  4032. 'ID',
  4033. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_3,
  4034. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_119,
  4035. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_118,
  4036. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_108,
  4037. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_113,
  4038. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_47,
  4039. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_15,
  4040. '',
  4041. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_12,
  4042. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_45,
  4043. '',
  4044. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_19,
  4045. ''],
  4046. model:[
  4047. {name:'id',"index":"id",hidden: true},
  4048. {name:'number',index:'FNumber', width:200, align:"left",frozen: true, frozen: true,sortable: true},
  4049. {name:'name',index:'FName_L2', width:800, align:"left",frozen: true, frozen: true,sortable: true},
  4050. {name:'indecatorDesc',index:'FIndecatorDesc_L2', width:180, align:"left",frozen: true,sortable: true,hidden: true},
  4051. {name:'indecatorTypeId',index:'indecatorTypeId', hidden: true},
  4052. {name:'indecatorType',index:'FIndecatorTypeID', width:100, align:"left", frozen: true,sortable: true,hidden: true},
  4053. {name:'evalStandard',index:'FEvalStandard', width:180, align:"left", frozen: true, sortable: true,hidden: true},
  4054. {name:'qualiOrRationName',index:'FQualiOrRation', width:100, align:"left", frozen: true,sortable: true,hidden: true},
  4055. {name:'qualiOrRation', hidden:true , dataType:"int"},
  4056. {name:'unit',index:'FUnit', width:83, align:"left", frozen: true, sortable: true,hidden: true},
  4057. {name:'scoringFormulaName',index:'FScoringFormulaID', width:100, align:"left", frozen: true, sortable: true,hidden: true},
  4058. {name:'scoringFormula', hidden:true },
  4059. {name:'rejectionName',index:'Frejection', width:70, align:"left", frozen: true, sortable: true,hidden: true},
  4060. {name:'rejection', hidden:true },
  4061. ],
  4062. multiselect:true,
  4063. multiselectWidth:30, //复选框单元格宽度
  4064. shrinkToFit:false, //true没有滚动条,false有滚动条
  4065. width:1040, //这个宽度不能为百分比
  4066. height:260, //高度,表格高度。可为数值、百分比或'auto'
  4067. sortname : 'FNumber',
  4068. sortorder : 'asc',
  4069. sortable:true,
  4070. rowNum : indicatorTypeDefaultRows,
  4071. url : that.dynamicPage_url+"?method=getIndicatorList&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam("shruicode"),
  4072. postData : {
  4073. rows : indicatorTypeDefaultRows,
  4074. page : 1,
  4075. sord : 'asc',
  4076. type : INDICATORLISTALL,
  4077. selectedIds : '',
  4078. hrOrgUnit : hrOrgUnit,
  4079. areaNameStr: areaNameStr
  4080. },
  4081. nextPage : $("#indicatorPageNext"), //下一页对象
  4082. prevPage : $("#indicatorPagePrev"),//上一页对象
  4083. pageTotal : $("#indicatorPageTotal"), //总页数对象
  4084. curPage : $("#indicatorCurPage"), //当前页对象
  4085. // selectIds : indicatorSelectedIds, //选中的数据id //BT1363835 引用已有指标重新刷新表格,不勾选已选记录
  4086. allNum : $("#PIall_num"), //全部
  4087. pageNum : $("#indicatorPageNum"), //页面当前数及总页数显示对象
  4088. onSelectRow : function (rowid,status){
  4089. var row = getSelectDate('PIall',"NO_ALL",rowid);
  4090. if(status){
  4091. LoadingSelectData('PIselected',row)
  4092. }else{
  4093. LoadingRemovSelectData('PIselected',row);
  4094. }
  4095. var ids=$('#PIselected').jqGrid('getRowData');
  4096. $("#PIselected_num").text(ids.length);
  4097. },
  4098. onSelectAll : function (aRowids,status){
  4099. var rowdata = getSelectDate('PIall',"ALL",aRowids);
  4100. if(status){
  4101. LoadingSelectData('PIselected',rowdata);
  4102. $("#PIselected_num").text(rowdata.length);
  4103. }else{
  4104. LoadingRemovSelectData('PIselected',rowdata);
  4105. $("#PIselected_num").text(0);
  4106. }
  4107. }
  4108. };
  4109. hrtable.createTable($('#PIall'),indicatorOptions);
  4110. $("#PIall").setGridWidth(pageType == 2 ? 838 : 1038);
  4111. },
  4112. /**
  4113. * 加载弹出框表格——绩效指标库——已选
  4114. */
  4115. initPIselectedTable : function(){
  4116. indicatorSelectedOptions={
  4117. name:['',
  4118. 'ID',
  4119. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_3,
  4120. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_119,
  4121. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_118,
  4122. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_114,
  4123. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_113,
  4124. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_47,
  4125. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_15,
  4126. '',
  4127. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_12,
  4128. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_45,
  4129. '',
  4130. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_19,
  4131. ''],
  4132. model:[
  4133. {name:'merge',index:'merge', width:30,align:"center",frozen: true,formatter: function (cellvalue, options, rowObject) { return '<span class="del_selected" onclick="that.removeSelected(this,'+rowObject.id+',\'DEL-INDICATORSELECTED\')" title="'+
  4134. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_92+
  4135. '"></span>' }},
  4136. {name:'id',"index":"id","width":10,"label":"Id","align":"left",hidden: true,resizable:false},
  4137. {name:'number',index:'FNumber', width:100, align:"left",frozen: true, frozen: true,sortable: true},
  4138. {name:'name',index:'FName_L2', width:100, align:"left",frozen: true, frozen: true,sortable: true},
  4139. {name:'indecatorDesc',index:'FIndecatorDesc_L2', width:180, align:"left",frozen: true,sortable: true},
  4140. {name:'indecatorTypeId',index:'indecatorTypeId', hidden: true},
  4141. {name:'indecatorType',index:'FIndecatorTypeID', width:100, align:"left", frozen: true,sortable: true},
  4142. {name:'evalStandard',index:'FEvalStandard', width:180, align:"left", frozen: true, sortable: true},
  4143. {name:'qualiOrRationName',index:'FQualiOrRation', width:100, align:"left", frozen: true,sortable: true},
  4144. {name:'qualiOrRation', hidden:true , dataType:"int"},
  4145. {name:'unit',index:'FUnit', width:83, align:"left", frozen: true, sortable: true},
  4146. {name:'scoringFormulaName',index:'FScoringFormulaID', width:100, align:"left", frozen: true, sortable: true},
  4147. {name:'scoringFormula', hidden:true },
  4148. {name:'rejectionName',index:'FRejection', width:70, align:"left", frozen: true, sortable: true},
  4149. {name:'rejection', hidden:true },
  4150. ],
  4151. multiselect:false,
  4152. multiselectWidth:30,//复选框单元格宽度
  4153. shrinkToFit:false,
  4154. width:1040, //这个宽度不能为百分比
  4155. height:500, //高度,表格高度。可为数值、百分比或'auto'
  4156. sortname : 'FNumber',
  4157. sortorder : 'asc',
  4158. sortable:true,
  4159. rowNum : 5,
  4160. url: that.dynamicPage_url+"?method=getIndicatorList&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam("shruicode"),
  4161. postData : {
  4162. rows : 5,
  4163. page : 1,
  4164. sord : 'DESC',
  4165. type : SELECTEDINDICATORLIST
  4166. // selectedIds : indicatorSelectedIds.toString() //BT1363835 引用已有指标重新刷新表格,不勾选已选记录
  4167. },
  4168. nextPage : $("#indicatorSelectedPageNext"), //下一页对象
  4169. prevPage : $("#indicatorSelectedPagePrev"),//上一页对象
  4170. pageTotal : $("#indicatorSelectedPageTotal"), //总页数对象
  4171. curPage : $("#indicatorSelectedCurPage"), //当前页对象
  4172. // selectIds : indicatorSelectedIds, //选中的数据id //BT1363835 引用已有指标重新刷新表格,不勾选已选记录
  4173. allNum : $("#PIselected_num"), //数量
  4174. pageNum : $("#indicatorSelectedPageNum"), //页面当前数及总页数显示对象
  4175. onSelectRow : function (rowid,status){},
  4176. onSelectAll : function (aRowids,status){}
  4177. };
  4178. hrtable.createTable($('#PIselected'),indicatorSelectedOptions);
  4179. $("#PIselected").setGridWidth(pageType == 2 ? 838 : 1038);
  4180. },
  4181. /**
  4182. * 移除选中事件
  4183. * @param obj
  4184. * @param rowsid
  4185. */
  4186. removeSelected : function(obj,rowsid,type){
  4187. $(obj).closest('table').jqGrid("delRowData", rowsid);
  4188. if(type == 'DEL-UNGROUPSELECTED'){ //移除待分组已选id
  4189. for(var i=0 ; i<ungroupSelectIds.length; i++){
  4190. if(rowsid == ungroupSelectIds[i]){
  4191. ungroupSelectIds.splice(i, 1);
  4192. }
  4193. }
  4194. $("#unGroupSelected").html(' <span></span>'+
  4195. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_93,[ungroupSelectIds.length]));
  4196. }else if(type == 'DEL-INDICATORSELECTED'){//移除指标库已选id
  4197. // for(var i=0 ; i<indicatorSelectedIds.length; i++){
  4198. // if(rowsid == indicatorSelectedIds[i]){
  4199. // indicatorSelectedIds.splice(i, 1);
  4200. // }
  4201. // }
  4202. // $("#indicatorSelected").html(' <span></span>已勾选(' +(indicatorSelectedIds.length)+ ')');
  4203. //2019/10/16 yien_fan 修复已知BUG
  4204. var rows = $('#PIselected').jqGrid('getRowData');
  4205. $("#PIselected_num").html(rows.length);
  4206. $("#PIall").setSelection(rowsid,false);
  4207. }else if(type == 'DEL-GROUPEDSELECTED'){//移除分组已选id
  4208. var tabTag = '';
  4209. //移除分组已下达中已选
  4210. for(var i=0 ; i<groupedTransmitedSids.length; i++){
  4211. if(rowsid == groupedTransmitedSids[i]){
  4212. groupedTransmitedSids.splice(i, 1);
  4213. tabTag = 'transmited';
  4214. }
  4215. }
  4216. //移除分组未下达中已选
  4217. for(var i=0 ; i<groupedUntransmitSids.length; i++){
  4218. if(rowsid == groupedUntransmitSids[i]){
  4219. groupedUntransmitSids.splice(i, 1);
  4220. tabTag = 'unTransmited';
  4221. }
  4222. }
  4223. if(tabTag == 'transmited'){
  4224. $("#gselectedNum").html(' <span></span>'+
  4225. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_93,[groupedTransmitedSids.length]));
  4226. }else if(tabTag == 'unTransmited'){
  4227. $("#gselectedNum").html(' <span></span>'+
  4228. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_93,[groupedUntransmitSids.length]));
  4229. }
  4230. }
  4231. },
  4232. /**
  4233. * 加载弹出框表格——引用已有指标
  4234. * 新逻辑新增传参areaId, areaType,旧逻辑没有
  4235. */
  4236. initexistingPIallTable : function(areaId, areaType){
  4237. existingPIallOptions={
  4238. name:['ID',
  4239. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_32,
  4240. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_33,
  4241. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_34,
  4242. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7],
  4243. model:[
  4244. {"index":"id","width":10,"label":"Id","name":"fid","align":"left",hidden: true,resizable:false},
  4245. {name:'planName',index:'P.FName', width:250, align:"left",frozen: true, dataType: "String", sortable: true},
  4246. //白老师优化的地方影响到了
  4247. {name:'periodName',index:'P.FNumber', width:250, align:"left",frozen: true, dataType: "String", sortable: true},
  4248. {name:'evaPeriodStatus',index:'P.FEvaPeriodStatus', width:260, align:"left",frozen: true, dataType: "String", sortable: true},
  4249. {name:'existingPIDetail',index:'existingPIDetail', width:260, align:"center", dataType: "String", sortable: false,
  4250. formatter: function (cellvalue, options, rowObject) {
  4251. return '<span class="detailedInformation" onclick="that.viewDetailPI(\''+areaId+'\',\''+areaType+'\',\''+rowObject.id+'\')" title="'+
  4252. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4253. '">'+
  4254. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4255. '</span>'
  4256. }
  4257. },
  4258. ],
  4259. multiselect:false,
  4260. multiselectWidth:30, //复选框单元格宽度
  4261. shrinkToFit:false, //true没有滚动条,false有滚动条
  4262. width:'1040', //这个宽度不能为百分比
  4263. height:'326', //高度,表格高度。可为数值、百分比或'auto'
  4264. sortname : 'P.FNumber',
  4265. sortorder : 'desc',
  4266. sortable:true,
  4267. rowNum : defaultRows,
  4268. url: that.dynamicPage_url+"?method=getExistTransmitTargetList&uipk=" + that.uipk+ "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  4269. postData : {
  4270. rows : defaultRows,
  4271. page : 1,
  4272. sord : 'DESC',
  4273. type : GETPERIODLIST,
  4274. periodId : periodId,
  4275. personId : personId,
  4276. evaObj : evaObj
  4277. },
  4278. nextPage : $("#hadIndicatorPageNext"), //下一页对象
  4279. prevPage : $("#hadIndicatorPagePrev"),//上一页对象
  4280. pageTotal : $("#hadIndicatorPageTotal"), //总页数对象
  4281. curPage : $("#hadIndicatorCurPage"), //当前页对象
  4282. selectIds : null, //选中的数据id
  4283. allNum : null, //全部
  4284. pageNum : $("#hadIndicatorPageNum"), //页面当前数及总页数显示对象
  4285. onSelectRow : function (rowid,status){},
  4286. onSelectAll : function (aRowids,status){}
  4287. };
  4288. hrtable.createTable($('#existingPIall'),existingPIallOptions);
  4289. $("#existingPIall").setGridWidth(pageType == 2 ? 838 : 1038);
  4290. },
  4291. /**
  4292. * 补丁11 加载组织目标-yien
  4293. * 新逻辑新增传参areaId, areaType,旧逻辑没有
  4294. */
  4295. initOrgPITable : function(areaId, areaType){
  4296. var options={
  4297. name:['ID',
  4298. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_32,
  4299. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_33,
  4300. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_34,
  4301. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7],
  4302. model:[
  4303. {"index":"id","width":10,"label":"Id","name":"fid","align":"left",hidden: true,resizable:false},
  4304. {name:'planName',index:'P.FName', width:250, align:"left",frozen: true, dataType: "String", sortable: true},
  4305. //白老师优化的地方影响到了
  4306. {name:'periodName',index:'P.FNumber', width:250, align:"left",frozen: true, dataType: "String", sortable: true},
  4307. {name:'evaPeriodStatus',index:'P.FEvaPeriodStatus', width:260, align:"left",frozen: true, dataType: "String", sortable: true},
  4308. {name:'existingPIDetail',index:'existingPIDetail', width:260, align:"center", dataType: "String", sortable: false,
  4309. formatter: function (cellvalue, options, rowObject) {
  4310. return '<span class="detailedInformation" onclick="that.viewDetailPI(\''+areaId+'\',\''+areaType+'\',\''+rowObject.id+'\' , 1)" title="'+
  4311. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4312. '">'+
  4313. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4314. '</span>'
  4315. }
  4316. },
  4317. ],
  4318. multiselect:false,
  4319. multiselectWidth:30, //复选框单元格宽度
  4320. shrinkToFit:false, //true没有滚动条,false有滚动条
  4321. width:'1040', //这个宽度不能为百分比
  4322. height:'326', //高度,表格高度。可为数值、百分比或'auto'
  4323. sortname : 'P.FEvaPeriodStatus',
  4324. sortorder : 'desc',
  4325. sortable:true,
  4326. rowNum : defaultRows,
  4327. url: that.dynamicPage_url+"?method=getOrgTargetList&permItemId="+encodeURIComponent(permItemId)+"&uipk=" + that.uipk+ "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  4328. postData : {
  4329. rows : defaultRows,
  4330. page : 1,
  4331. sord : 'DESC',
  4332. filterOrg: refOrgUnit['id']
  4333. },
  4334. nextPage : $("#hadIndicatorOrgPageNext"), //下一页对象
  4335. prevPage : $("#hadIndicatorOrgPagePrev"),//上一页对象
  4336. pageTotal : $("#hadIndicatorOrgPageTotal"), //总页数对象
  4337. curPage : $("#hadIndicatorOrgCurPage"), //当前页对象
  4338. selectIds : null, //选中的数据id
  4339. allNum : null, //全部
  4340. pageNum : $("#hadIndicatorOrgPageNum"), //页面当前数及总页数显示对象
  4341. onSelectRow : function (rowid,status){},
  4342. onSelectAll : function (aRowids,status){}
  4343. };
  4344. hrtable.createTable($('#existingOrgPI'),options);
  4345. $("#existingOrgPI").setGridWidth(pageType == 2 ? 838 : 1038);
  4346. },
  4347. /**
  4348. * 加载弹出框表格——引用已有指标(根据考核周期搜索该考核周期下的所有考核对象指标)
  4349. */
  4350. initexistingPIallTable2 : function(){
  4351. var buttonOptions = {
  4352. nextPage : $("#hadIndicator_2PageNext"), //下一页对象
  4353. prevPage : $("#hadIndicator_2PagePrev"),//上一页对象
  4354. pageTotal : $("#hadIndicator_2PageTotal"), //总页数对象
  4355. curPage : $("#hadIndicator_2CurPage"), //当前页对象
  4356. pageNum : $("#hadIndicator_2PageNum"), //页面当前数及总页数显示对象
  4357. };
  4358. //组织考核-yien
  4359. var options_name = [];
  4360. var options_model = [];
  4361. if(isOrg == '1') {
  4362. options_name = [$.perfwebI18n.tableConstant.msg6,$.perfwebI18n.tableConstant.msg7,
  4363. $.perfwebI18n.tableConstant.msg8,$.perfwebI18n.tableConstant.msg9];
  4364. options_model = [
  4365. {name:'number',index:'number', width:100, align:"center",frozen: true, dataType: "int", sortable: true},
  4366. {name:'name',index:'name', width:100, align:"center",frozen: true, dataType: "int", sortable: true},
  4367. {name:'state',index:'appraisalStatus', width:190, align:"center", dataType: "int", sortable: true},
  4368. {name:'PIDetail',index:'PIDetail', width:110, align:"center", dataType: "int", sortable: true,
  4369. formatter: function (cellvalue, options, rowObject) {
  4370. return "<span class='detailedInformation' onclick=\"that.viewDetailPI2('"+rowObject.id+"','" + rowObject.person +
  4371. "' )\" title='"+$.perfwebI18n.tableConstant.msg7+"'>"+$.perfwebI18n.tableConstant.msg9+"</span>"
  4372. }
  4373. },
  4374. ];
  4375. }else {
  4376. options_name = [jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_101,
  4377. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_89,
  4378. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_100,
  4379. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_105,
  4380. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_28,
  4381. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7];
  4382. options_model = [
  4383. {name:'number',index:'number', width:100, align:"center",frozen: true, dataType: "int", sortable: true},
  4384. {name:'name',index:'name', width:100, align:"center",frozen: true, dataType: "int", sortable: true},
  4385. {name:'person',index:'person', width:90, align:"center",hidden : true, dataType: "int", sortable: true},
  4386. {name:'positionname',index:'position', width:230, align:"center", dataType: "int", sortable: true},
  4387. {name:'state',index:'appraisalStatus', width:190, align:"center", dataType: "int", sortable: true},
  4388. {name:'PIDetail',index:'PIDetail', width:110, align:"center", dataType: "int", sortable: true,
  4389. formatter: function (cellvalue, options, rowObject) {
  4390. return '<span class="detailedInformation" onclick="that.viewDetailPI2(\''+rowObject.id+'\',\'' + rowObject.person +'\' )" title="'+
  4391. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4392. '">'+
  4393. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7+
  4394. '</span>'
  4395. }
  4396. },
  4397. ];
  4398. }
  4399. var options={
  4400. name: options_name,
  4401. model:options_model,
  4402. multiselect:false,
  4403. multiselectWidth:30,//复选框单元格宽度
  4404. shrinkToFit:true,
  4405. width:815,//这个宽度不能为百分比
  4406. height:259,//高度,表格高度。可为数值、百分比或'auto'
  4407. url: that.dynamicPage_url+"?method=getEvaObjTabList&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  4408. postData: {
  4409. period : '',
  4410. rows : 10,
  4411. page : 1,
  4412. sord : "DESC",
  4413. isOrg : isOrg //组织考核-yien
  4414. }
  4415. ,loadComplete:function(data){ //完成服务器请求后,回调函数
  4416. var data = data.data;
  4417. if(data.rows == undefined || data.records == 0 || data.rows.length == 0){ //如果没有记录返回,追加提示信息,删除按钮不可用
  4418. if(buttonOptions.prevPag){
  4419. buttonOptions.prevPage.css('opacity','0.4');
  4420. }
  4421. if(buttonOptions.nextPage){
  4422. buttonOptions.nextPage.css('opacity','0.4');
  4423. }
  4424. //总页码设置为1
  4425. if(buttonOptions.pageTotal){
  4426. buttonOptions.pageTotal.text(1);
  4427. }
  4428. }else{
  4429. if(buttonOptions.curPage){
  4430. buttonOptions.curPage.val(data.page);
  4431. }
  4432. if(buttonOptions.pageTotal){
  4433. buttonOptions.pageTotal.text(data.total);
  4434. }
  4435. if(buttonOptions.nextPage){
  4436. //如果总页数<=当前页,点击"下一页"无反应
  4437. if(data.total <= data.page){
  4438. buttonOptions.nextPage.css('opacity','0.4');
  4439. }else{
  4440. buttonOptions.nextPage.css('opacity','1');
  4441. }
  4442. }
  4443. if(buttonOptions.prevPage){
  4444. //如果是第一页,”上一页”箭头灰选
  4445. if(data.page == 1){
  4446. buttonOptions.prevPage.css('opacity','0.4');
  4447. }else{
  4448. buttonOptions.prevPage.css('opacity','1');
  4449. }
  4450. }
  4451. for(var i = 0,len = data.rows.length; i < len; i++){
  4452. $('#existingPIall_2').jqGrid('addRowData',data.rows[i].id,data.rows[i])
  4453. }
  4454. }
  4455. }
  4456. };
  4457. that.initjqGridTable($('#existingPIall_2'),options);
  4458. $("#existingPIall_2").setGridWidth(pageType == 2 ? 838 : 1038);
  4459. },
  4460. /**
  4461. * 查看指标明细弹出框
  4462. * 补丁11 目标对齐:isRefOrg 是否引用组织目标
  4463. * 新逻辑新增传参areaId, areaType,旧逻辑没有
  4464. */
  4465. viewDetailPI : function(areaId, areaType, rowId, isRefOrg){
  4466. var _evaObj = evaObj;
  4467. var obj;
  4468. var refAreaType = "200,300";
  4469. if(isRefOrg == 1) {
  4470. //判断是否勾选区域
  4471. var selectedAreaObj = $("#org_partplist_1").find("li[class='partlistselect_1']").find(".partnumber_1");
  4472. var areaId = selectedAreaObj.attr("areaid") || areaId; //要添加指标的区域id
  4473. var areaType = selectedAreaObj.attr("areaType") || areaType; //区域类型
  4474. if( $.isEmptyObject(areaId) || $.isEmptyObject(areaType) ){
  4475. // shr.showWarning({message : "请勾选要添加指标的区域!",hideAfter : 5});
  4476. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_60 ,hideAfter : 5});
  4477. return;
  4478. }
  4479. refAreaType = areaType;
  4480. refAreaId = areaId;
  4481. _evaObj = rowId;
  4482. obj = getOrgTargetObj(rowId,areaType);
  4483. }else {
  4484. //生成指标详情区域表格框架,有几个区域生成几个表
  4485. obj = getOtherEvaObj(evaObj,rowId);
  4486. }
  4487. $(document.body).append(viewDetailInfoHtml(obj));
  4488. for(var i=0; i<obj.length; i++){
  4489. var tableId = "areaTable"+i;
  4490. var tableObj = $('#'+tableId);
  4491. var fieldList = obj[i].fieldList; //字段对象列表
  4492. var areaId = obj[i].areaId;
  4493. var areaType = obj[i].areaType;
  4494. var fieldArr = new Array();
  4495. for(var j=0; j<fieldList.length; j++){
  4496. fieldArr.push(fieldList[j].colName);
  4497. }
  4498. var oterParam = new Object();
  4499. oterParam.personId = personId; //personId;
  4500. oterParam.period = rowId;
  4501. oterParam.evaObj = _evaObj;
  4502. oterParam.areaId = areaId;
  4503. oterParam.areaType = areaType;
  4504. oterParam.fieldArr = fieldArr;
  4505. //区域指标表格初始化
  4506. //补丁11 目标对齐-yien
  4507. if(areaType == '200' && refAreaType.indexOf(areaType) > -1){
  4508. it.initIndicatorAreaDetailTable(tableObj,fieldList,oterParam, isRefOrg); //评估表区域表格
  4509. // indicatorIdSelected = indicatorIdSelected.splice(0,indicatorIdSelected.length); //将已选指标id清空
  4510. indicatorIdSelected = [];
  4511. }else if(areaType == '300' && refAreaType.indexOf(areaType) > -1){
  4512. it.initRecordAreaDetailTable(tableObj,fieldList,oterParam, isRefOrg); //记录表区域表格
  4513. // recordIdSelected = recordIdSelected.splice(0,recordIdSelected.length); //将已选记录id清空
  4514. recordIdSelected = [];
  4515. }
  4516. }
  4517. //指标复制和引用
  4518. var btnComfirmFunc = function(isRefTarget,_this){
  4519. if(typeof isRefTarget == 'undefined') {
  4520. isRefTarget = '0';
  4521. }
  4522. if((indicatorIdSelected == null || indicatorIdSelected.length<1) && (recordIdSelected == null || recordIdSelected.length<1)){
  4523. //复制 引用
  4524. var refCategoryName = isRefTarget == '0' ? jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_20:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_98;
  4525. //'请选择您要'+refCategoryName+'的指标!'
  4526. shr.showWarning({message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_888,[refCategoryName]),hideAfter: 5});
  4527. // shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_59,hideAfter : 5});
  4528. return false;
  4529. }
  4530. that.selfRemoteCall({
  4531. method : "saveRefExistIndicator",
  4532. param : {
  4533. periodId : periodId,
  4534. evaObj : evaObj,
  4535. recordIdSelected : recordIdSelected.toString(),
  4536. indicatorIdSelected : indicatorIdSelected.toString(),
  4537. isRefTarget: isRefTarget,
  4538. refAreaId: refAreaId, //补丁11 目标对齐-yien
  4539. refAreaType: refAreaType, //补丁11 目标对齐-yien
  4540. billId:billId
  4541. },
  4542. async : false,
  4543. success : function(data) {
  4544. if(data.result == '200'){
  4545. var toClickIndicator = data.successIds[0];
  4546. $('#viewDetailPIDialog').remove(); //移除当前层弹出框
  4547. $(".ui-button-icon-primary").click(); //关闭上一层弹出框
  4548. //加载考核规则、考核计划、考核模式
  4549. that.selfRemoteCall({
  4550. method : "compositeEvaObjectData",
  4551. param : {
  4552. evaObj : evaObj,
  4553. billId: billId
  4554. },
  4555. async : false,
  4556. success : function(data) {
  4557. if(data != null){
  4558. globalIndicatorData = data;
  4559. that.initGoalsItems(data); //重新生成左侧指标列表
  4560. //that.initTargetWorkflowDialog();
  4561. }
  4562. }
  4563. });
  4564. shr.showInfo({message : data.msg,hideAfter : 5});
  4565. //清空已引用的指标 BT-00535086
  4566. indicatorIdSelected = [];
  4567. recordIdSelected = [];
  4568. //BT1355334 个人目标添加--引用指标--引用指标时位到引用的指标
  4569. // $("li[numval='"+toClickIndicator+ "']").click();
  4570. }else{
  4571. shr.showError({message : data.msg,hideAfter : 5});
  4572. }
  4573. }
  4574. });
  4575. };
  4576. $("#viewDetailPIDialog").dialog({
  4577. autoOpen : true,
  4578. show : "blind",
  4579. width : 1000,
  4580. height : $(window).height() - 50,
  4581. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7,
  4582. resizable : true,
  4583. position : [ 'center', 'center' ],
  4584. modal : true,
  4585. buttons: [
  4586. {
  4587. id: 'dlg_reference_btn2',
  4588. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_98,
  4589. click: function() {
  4590. btnComfirmFunc('1',this);
  4591. }
  4592. },
  4593. {
  4594. id: 'dlg_copy_btn2',
  4595. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_20,
  4596. click: function() {
  4597. btnComfirmFunc('0',this);
  4598. }
  4599. },
  4600. {
  4601. id: 'dlg_cancel_btn2',
  4602. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  4603. click: function() {
  4604. $(this).dialog('close',this);
  4605. }
  4606. }
  4607. ],
  4608. close : function(){
  4609. $('#viewDetailPIDialog').remove();
  4610. //BT1363381 动态计算区域权重
  4611. calcAndSetCurAreaWeight();
  4612. }
  4613. });
  4614. },
  4615. /**
  4616. * 查看指标明细弹出框
  4617. */
  4618. viewDetailPI2 : function(rowId,personId){
  4619. var obj = '';
  4620. it.selfRemoteCall({
  4621. method: 'getEvaTarget',
  4622. async : false,
  4623. //(8.6补丁5规则历史update by wei_baiii)
  4624. param : {
  4625. evaObj : rowId,
  4626. periodId:periodId
  4627. },
  4628. success : function(data){
  4629. obj = shr.xssFilter(data.rows.evaAreaList);
  4630. }
  4631. });
  4632. //生成指标详情区域表格框架,有几个区域生成几个表
  4633. $(document.body).append(viewDetailInfoHtml(obj));
  4634. //初始化已引用的指标
  4635. indicatorIdSelected = [];
  4636. recordIdSelected = [];
  4637. for(var i=0; i<obj.length; i++){
  4638. var tableId = "areaTable"+i;
  4639. var tableObj = $('#'+tableId);
  4640. var fieldList = obj[i].fieldList; //字段对象列表
  4641. var areaId = obj[i].areaId;
  4642. var areaType = obj[i].areaType;
  4643. var fieldArr = new Array();
  4644. for(var j=0; j<fieldList.length; j++){
  4645. fieldArr.push(fieldList[j].colName);
  4646. }
  4647. var oterParam = new Object();
  4648. oterParam.personId = personId; //personId;
  4649. // oterParam.period = $('#perfPlay_el').val();
  4650. oterParam.period = existingPIallParam['period'];
  4651. oterParam.evaObj = rowId;
  4652. oterParam.areaId = areaId;
  4653. oterParam.areaType = areaType;
  4654. oterParam.fieldArr = fieldArr;
  4655. oterParam.fillType = 'TEAM';
  4656. //区域指标表格初始化
  4657. if(areaType == '200'){
  4658. it.initIndicatorAreaDetailTable(tableObj,fieldList,oterParam); //评估表区域表格
  4659. // indicatorIdSelected = indicatorIdSelected.splice(0,indicatorIdSelected.length); //将已选指标id清空
  4660. }else if(areaType == '300'){
  4661. it.initRecordAreaDetailTable(tableObj,fieldList,oterParam); //记录表区域表格
  4662. // recordIdSelected = recordIdSelected.splice(0,recordIdSelected.length); //将已选记录id清空
  4663. }
  4664. }
  4665. //指标复制和引用
  4666. var btnComfirmFunc = function(isRefTarget,_this){
  4667. if(typeof isRefTarget == 'undefined') {
  4668. isRefTarget = '0';
  4669. }
  4670. if((indicatorIdSelected == null || indicatorIdSelected.length<1) && (recordIdSelected == null || recordIdSelected.length<1)){
  4671. var refCategoryName = isRefTarget == '0' ? jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_20:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_98;
  4672. shr.showWarning({message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_888,[refCategoryName]),hideAfter: 5});
  4673. // shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_59,hideAfter : 5});
  4674. return false;
  4675. }
  4676. that.selfRemoteCall({
  4677. method : "saveRefExistIndicator",
  4678. param : {
  4679. periodId : periodId,
  4680. evaObj : evaObj,
  4681. recordIdSelected : recordIdSelected.toString(),
  4682. indicatorIdSelected : indicatorIdSelected.toString(),
  4683. isRefTarget: isRefTarget,
  4684. billId:billId
  4685. },
  4686. async : false,
  4687. success : function(data) {
  4688. if(data.result == '200'){
  4689. var toClickIndicator = data.successIds[0];
  4690. $('#viewDetailPIDialog').remove(); //移除当前层弹出框
  4691. $(".ui-button-icon-primary").click(); //关闭上一层弹出框
  4692. //加载考核规则、考核计划、考核模式
  4693. that.selfRemoteCall({
  4694. method : "compositeEvaObjectData",
  4695. param : {
  4696. evaObj : evaObj,
  4697. billId: billId
  4698. },
  4699. async : false,
  4700. success : function(data) {
  4701. if(data != null){
  4702. globalIndicatorData = data;
  4703. that.initGoalsItems(data); //重新生成左侧指标列表
  4704. }
  4705. }
  4706. });
  4707. shr.showInfo({message : data.msg,hideAfter : 5});
  4708. //BT1355334 个人目标添加--引用指标--引用指标时位到引用的指标
  4709. // $("li[numval='"+toClickIndicator+ "']").click();
  4710. }else{
  4711. shr.showError({message : data.msg,hideAfter : 5});
  4712. }
  4713. }
  4714. });
  4715. }
  4716. $("#viewDetailPIDialog").dialog({
  4717. autoOpen : true,
  4718. show : "blind",
  4719. width : 1000,
  4720. height : $(window).height() - 50,
  4721. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_7,
  4722. resizable : true,
  4723. position : [ 'center', 'center' ],
  4724. modal : true,
  4725. buttons: [
  4726. {
  4727. id: 'dlg_reference_btn2',
  4728. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_98,
  4729. click: function() {
  4730. btnComfirmFunc('1',this);
  4731. }
  4732. },
  4733. {
  4734. id: 'dlg_copy_btn2',
  4735. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_20,
  4736. click: function() {
  4737. btnComfirmFunc('0',this);
  4738. }
  4739. },
  4740. {
  4741. id: 'dlg_cancel_btn2',
  4742. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  4743. click: function() {
  4744. $(this).dialog('close',this);
  4745. }
  4746. }
  4747. ],
  4748. close : function(){
  4749. $('#viewDetailPIDialog').remove();
  4750. //BT1363381 动态计算区域权重
  4751. calcAndSetCurAreaWeight();
  4752. }
  4753. });
  4754. },
  4755. /**
  4756. * 补丁11 目标对齐-isRefOrg 判断是否引用组织指标
  4757. * 指标明细
  4758. */
  4759. initIndicatorAreaDetailTable : function(tableObj,fieldList,oterParam,isRefOrg){
  4760. var name = new Array(); //字段别名
  4761. var model = new Array(); //model
  4762. var shrinkToFit = false;
  4763. var j = 0; // 记录显示字段的数量
  4764. name.push("ID");
  4765. model.push({"index":"id","width":20,"label":"Id","name":"FID","align":"left",hidden: true,resizable:false});
  4766. for(var i=0; i<fieldList.length; i++){
  4767. //业绩指标实际完成值、更新时间不显示
  4768. if(fieldList[i].colName == 'FSCORE' || "FACTUALCOMPLEVALUE" == fieldList[i].colName || "FUPDATEDATE" == fieldList[i].colName){
  4769. continue;
  4770. }
  4771. name.push(fieldList[i].showName);
  4772. var modelName = {name:fieldList[i].colName,index:fieldList[i].colName, width:150, align:"center",frozen: true,sortable:false};
  4773. model.push(modelName);
  4774. j++;
  4775. }
  4776. if(j < 6){
  4777. shrinkToFit = true;
  4778. }
  4779. var options={
  4780. name : name,
  4781. model:model,
  4782. multiselect:true,
  4783. multiselectWidth:30, //复选框单元格宽度
  4784. shrinkToFit:shrinkToFit,
  4785. width:400, //这个宽度不能为百分比
  4786. height:'200', //高度,表格高度。可为数值、百分比或'auto',不填可自适应
  4787. url:that.dynamicPage_url+"?method=getAreaIndicatorList&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  4788. postData: {
  4789. rows : 100,
  4790. page : 1,
  4791. personId : oterParam.personId,
  4792. period : oterParam.period,
  4793. evaObj : oterParam.evaObj,
  4794. areaId : oterParam.areaId,
  4795. areaType : oterParam.areaType,
  4796. fillType : isRefOrg == 1 ? 'REFORGTARGET' : oterParam.fillType, //区分是个人目标填报还是团队目标填报, 补丁11 目标对齐-增加引用组织目标的区分
  4797. fieldArr : oterParam.fieldArr.toString(),
  4798. thisPeriod : periodId , //本周期id
  4799. isOrg:isRefOrg == 1 ? '1' : isOrg //区分是否是组织考核
  4800. },
  4801. loadComplete:function(data){ //完成服务器请求后,回调函数
  4802. if(data.rows == undefined || data.records == 0){
  4803. }
  4804. },
  4805. onSelectRow : function (rowid,status){
  4806. hrtable.onSelectRow(rowid,status,indicatorIdSelected);
  4807. },
  4808. onSelectAll : function (aRowids,status){
  4809. hrtable.onSelectAll(aRowids,status,indicatorIdSelected);
  4810. }
  4811. };
  4812. that.initjqGridTable(tableObj,options);
  4813. },
  4814. /**
  4815. * 指标关联区域渲染
  4816. */
  4817. loadingIndicatorDetailData : function(tableObj,data){
  4818. for(var i=0;i<data.length;i++){
  4819. tableObj.jqGrid("addRowData",i,data[i]);
  4820. }
  4821. },
  4822. /**
  4823. * 补丁11 目标对齐-isRefOrg 判断是否引用组织指标
  4824. * 记录表明细
  4825. */
  4826. initRecordAreaDetailTable : function(tableObj,fieldList,oterParam,isRefOrg){
  4827. var name = new Array(); //字段别名
  4828. var model = new Array(); //model
  4829. var shrinkToFit = false;
  4830. var j = 0; // 记录显示字段的数量
  4831. name.push("ID");
  4832. model.push({"index":"id","width":20,"label":"Id","name":"FID","align":"left",hidden: true,resizable:false,sortable:false});
  4833. for(var i=0; i<fieldList.length; i++){
  4834. if(fieldList[i].colName == 'FSCORE'){
  4835. continue;
  4836. }
  4837. name.push(fieldList[i].showName);
  4838. var modelName = {name:fieldList[i].colName,index:fieldList[i].colName, width:150, align:"center",frozen: true};
  4839. model.push(modelName);
  4840. j++;
  4841. }
  4842. if(j < 6){
  4843. shrinkToFit = true;
  4844. }
  4845. var options={
  4846. name:name,
  4847. model:model,
  4848. multiselect:true,
  4849. multiselectWidth:30, //复选框单元格宽度
  4850. shrinkToFit:shrinkToFit,
  4851. width:400, //这个宽度不能为百分比
  4852. height:'200', //高度,表格高度。可为数值、百分比或'auto',不填可自适应
  4853. url: that.dynamicPage_url+"?method=getAreaIndicatorList&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  4854. postData: {
  4855. rows : 100,
  4856. page : 1,
  4857. personId : oterParam.personId,
  4858. period : oterParam.period,
  4859. evaObj : oterParam.evaObj,
  4860. areaId : oterParam.areaId,
  4861. areaType : oterParam.areaType,
  4862. fillType : isRefOrg == 1 ? 'REFORGTARGET' : oterParam.fillType, //区分是个人目标填报还是团队目标填报, 补丁11 目标对齐-增加引用组织目标的区分
  4863. fieldArr : oterParam.fieldArr.toString(),
  4864. thisPeriod:periodId , //本周期id
  4865. isOrg:isRefOrg == 1 ? '1' : isOrg //区分是否是组织考核
  4866. },
  4867. loadComplete:function(data){ //完成服务器请求后,回调函数
  4868. if(data.rows == undefined || data.records == 0){
  4869. }
  4870. },
  4871. onSelectRow : function (rowid,status){
  4872. hrtable.onSelectRow(rowid,status,recordIdSelected)
  4873. },
  4874. onSelectAll : function (aRowids,status){
  4875. hrtable.onSelectAll(aRowids,status,recordIdSelected);
  4876. }
  4877. };
  4878. it.initjqGridTable(tableObj,options);
  4879. },
  4880. /**
  4881. * 获取指标明细数据
  4882. */
  4883. loadingRecordAreaDetailData : function(tableObj,data){
  4884. for(var i=0;i<data.length;i++){
  4885. tableObj.jqGrid("addRowData",i,data[i]);
  4886. }
  4887. },
  4888. viewHistoryAction : function(){
  4889. that.reloadPage({
  4890. uipk: 'com.kingdee.shr.perfweb.app.base.targetprocess.TargetReviseBillHis.list',
  4891. evaObj: evaObj,
  4892. isOrg: isOrg
  4893. });
  4894. },
  4895. //提交
  4896. submitAction : function(){
  4897. $('.tabwrap').each(function(index,tab){
  4898. $('#tab'+index).jqGrid('editStop');
  4899. })
  4900. that.selfRemoteCall({
  4901. method : "getEvaObjTargetStatus",
  4902. param : {
  4903. evaObj : evaObj
  4904. },
  4905. async : false,
  4906. type:"post",
  4907. success : function(data) {
  4908. if(data != null && data.targetStatus == 2){ //个人目标已提交
  4909. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_23,hideAfter : 5});
  4910. return false;
  4911. }else if(data !=null && data.targetStatus == 3){ //个人目标已下达
  4912. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_26,hideAfter : 5});
  4913. return false;
  4914. }else{
  4915. if(data != null && data.filedRequired == '0'){
  4916. shr.showWarning({message : data.filedRequiredMsg,hideAfter : 5});
  4917. return false;
  4918. }
  4919. $('.scoreMenuList li').click();
  4920. if(!canSaveVerify("submit")){
  4921. return false;
  4922. }else{
  4923. doSumbit();
  4924. }
  4925. }
  4926. }
  4927. });
  4928. },
  4929. //目标流程审批-重新model数据封装
  4930. assembleSaveData: function(action) {
  4931. if(that.targetTransmitBill['state'] == 0) {
  4932. shr.perfweb.perfGoalsFillNew.superClass.assembleSaveData.call(that , action);
  4933. return;
  4934. }
  4935. var data = {};
  4936. var modelObj = {};
  4937. var billId = that.targetTransmitBill['billId'];
  4938. modelObj['id'] = billId;
  4939. data['model'] = shr.toJSON(modelObj);
  4940. data['billId'] = billId;
  4941. data['uipk'] = "com.kingdee.shr.perfweb.app.base.targetprocess.TargetTransmitBill.form";
  4942. data['operateState'] = "VIEW";
  4943. data['method'] = "submit";
  4944. //提交工作流功能优化-yien
  4945. data['evaObj'] = evaObj;
  4946. data['periodId'] = periodId;
  4947. return data;
  4948. },
  4949. actSubmit: function(event, action) {
  4950. shr.stopMask();
  4951. if(that.targetTransmitBill['state'] == 0) {
  4952. shr.perfweb.perfGoalsFillNew.superClass.actSubmit.call(that, event, action);
  4953. return;
  4954. }
  4955. //新的指标填报不需要执行指标保存
  4956. that.selfRemoteCall({
  4957. method : "submitPersonalTarget",
  4958. param : {
  4959. evaObj : evaObj,
  4960. periodId : periodId
  4961. },
  4962. async : false,
  4963. success : function(data) {
  4964. if(data != null && data.detectedResult == '200' && data.submitResult == '200'){
  4965. //提交工作流
  4966. shr.perfweb.perfGoalsFillNew.superClass.actSubmit.call(that, event, action);
  4967. }else{
  4968. shr.showError({message : data.detectedResult,hideAfter : 5});
  4969. }
  4970. }
  4971. });
  4972. // that.selfRemoteCall({
  4973. // method : "saveTarget",
  4974. // param : {
  4975. // recordList : JSON.stringify(recordListObj),
  4976. // indicatorList : JSON.stringify(indicatorListObj),
  4977. // recordFieldArr : JSON.stringify(recordFieldArr),
  4978. // indicatorFieldArr : JSON.stringify(indicatorFieldArr),
  4979. // toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  4980. // evaObj : evaObj,
  4981. // periodId : periodId
  4982. // },
  4983. // async : false,
  4984. // type:"post",
  4985. // success : function(data) {
  4986. // if(data != null && data.result == 'SUCCESS'){
  4987. // //3.指标保存成功后将评估对象的目标状态设置成已提交状态
  4988. // that.selfRemoteCall({
  4989. // method : "submitPersonalTarget",
  4990. // param : {
  4991. // evaObj : evaObj,
  4992. // periodId : periodId
  4993. // },
  4994. // async : false,
  4995. // success : function(data) {
  4996. // if(data != null && data.detectedResult == '200' && data.submitResult == '200'){
  4997. // //提交工作流
  4998. // shr.perfweb.perfGoalsFillNew.superClass.actSubmit.call(that, event, action);
  4999. // }else{
  5000. // shr.showError({message : data.detectedResult,hideAfter : 5});
  5001. // }
  5002. // }
  5003. // });
  5004. // }else{
  5005. // shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_109,hideAfter : 5});
  5006. // }
  5007. // }
  5008. // });
  5009. },
  5010. /**
  5011. * 下达
  5012. */
  5013. transmitAction : function(){
  5014. if(!canSaveVerify("submit")){
  5015. return false;
  5016. }
  5017. //判断定量指标是否维护评分公式和目标值
  5018. var unvalidArr = getUnvalidPerfAchievement();
  5019. if(unvalidArr.length > 0) {
  5020. shr.showConfirm( '【'+unvalidArr.join(',') + '】'+
  5021. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_117, function(){
  5022. doRemoteCallGetEvaObjTargetStatus();
  5023. });
  5024. return false;
  5025. }
  5026. //执行提交操作
  5027. doRemoteCallGetEvaObjTargetStatus();
  5028. },
  5029. /**
  5030. * 打回
  5031. */
  5032. backAction : function(){
  5033. //判断目标提交状态
  5034. var personalGoalStatus = $("li[workerid='" +evaObj+ "']").find("i[name='targetStatus']").text();
  5035. if (jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_80 != personalGoalStatus) {
  5036. var opeTips =
  5037. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_96 == personalGoalStatus ?
  5038. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_96 :
  5039. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_79;
  5040. shr.showError({message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_6,[opeTips]),hideAfter : 5});
  5041. return;
  5042. }
  5043. //增加打回原因弹出框
  5044. var backHTML = '<div id="backToUpLevel">'+
  5045. // 打回原因
  5046. '<p class="dialog-text">'+jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_8+'</p>'+
  5047. '<p><textarea id="backReason" rows="8" maxlength="2000" placeholder="'+
  5048. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_53,[2000])+ '"></textarea>'+
  5049. '</p>'+
  5050. // '<span>通知方式:</span>'+
  5051. '<p class="dialog-text">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_02+
  5052. // '<p >通知目标填报人:</p>'+
  5053. '<span class="note-msg">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0806_01+
  5054. '</span>'+
  5055. '</p>'+
  5056. '<div id="pickReminderDialog" >'+
  5057. '<div class="type-box">'+
  5058. '<div>'+
  5059. '<input id="msgReminder" type="checkbox" value="msg">'+
  5060. // '<label for="msgReminder" class ="checked">消息通知</label>'+
  5061. '<label for="msgReminder" class ="checked">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_03+
  5062. '</label>'+
  5063. '</div>'+
  5064. '<div>'+
  5065. '<input id="emailReminder" type="checkbox" value="email">'+
  5066. // '<label for="emailReminder">邮件</label>'+
  5067. '<label for="emailReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_04+
  5068. '</label>'+
  5069. '</div>'+
  5070. '<div>'+
  5071. '<input id="SMSReminder" type="checkbox" value="sms">'+
  5072. // '<label for="SMSReminder">短信</label>'+
  5073. '<label for="SMSReminder">'+jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_05+
  5074. '</label>'+
  5075. '</div>'+
  5076. '<div>'+
  5077. '<input id="cloudReminder" type="checkbox" value="cloud">'+
  5078. '<label for="cloudReminder">' +
  5079. // '<label for="cloudReminder">云之家</label>'+
  5080. jsBizMultLan.perfweb_perfGoalsFillNew_bw0513_06+
  5081. '</label>'+
  5082. '</div>'+
  5083. '</div>'+
  5084. '</div>'+
  5085. '</div>';
  5086. $(document.body).append(backHTML);
  5087. $('#msgReminder, #emailReminder, #SMSReminder, #cloudReminder').shrCheckbox();
  5088. $('#msgReminder, #emailReminder, #SMSReminder,#cloudReminder').shrCheckbox('onChange', function(){
  5089. var id = $(this).attr('id');
  5090. if($(this).shrCheckbox('getValue')){
  5091. $('label[for="'+id+'"]').addClass('checked');
  5092. }else{
  5093. $('label[for="'+id+'"]').removeClass('checked');
  5094. }
  5095. });
  5096. $('#msgReminder').shrCheckbox('check');
  5097. if($.browser.msie || $.browser.mozilla){
  5098. $('#backReason').unbind('focus').bind('focus',function(){
  5099. if($(this).attr('placeholder') == $(this).text()){
  5100. $(this).text('');
  5101. }
  5102. })
  5103. if($.browser.version != "11.0"){
  5104. $('#backReason').unbind('blur').bind('blur',function(){
  5105. if($(this).text() == ''){
  5106. $(this).text($(this).attr('placeholder'));
  5107. }
  5108. })
  5109. }
  5110. }
  5111. var isSendEmail = 0;
  5112. $("#isSendEmail").shrCheckbox();
  5113. $("#isSendEmail").shrCheckbox('onChange' , function () {
  5114. if($(this).shrCheckbox('isSelected')) {
  5115. isSendEmail = 1
  5116. } else {
  5117. isSendEmail = 0;
  5118. }
  5119. });
  5120. $("#backToUpLevel").show();
  5121. // 将弹出对话框弹出
  5122. $('#backToUpLevel').dialog({
  5123. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_8,
  5124. autoOpen : true,
  5125. show : "blind",
  5126. width : 700,
  5127. height : 406,
  5128. resizable : true,
  5129. position : [ 'center', 'center' ],
  5130. modal : true,
  5131. buttons : [{
  5132. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_70,
  5133. click : function() {
  5134. var SMSType = "NOSEND";
  5135. var emailType = "NOSEND";
  5136. var portalType = "NOSEND";
  5137. var yzjMsgType = "NOSEND";
  5138. var meg = $('#msgReminder').shrCheckbox('isSelected');
  5139. var email = $('#emailReminder').shrCheckbox('isSelected');
  5140. var SMS = $('#SMSReminder').shrCheckbox('isSelected');
  5141. var yzj = $('#cloudReminder').shrCheckbox('isSelected');
  5142. if (SMS) {
  5143. SMSType = "SEND"
  5144. }
  5145. if (email) {
  5146. emailType = "SEND"
  5147. }
  5148. if (meg) {
  5149. portalType = "SEND"
  5150. }
  5151. if (yzj) {
  5152. yzjMsgType = "SEND";
  5153. }
  5154. //执行打回操作
  5155. var backReason = $("#backReason").val();
  5156. if(backReason && backReason.length > 2000) {
  5157. shr.showError({
  5158. message: shr.formatMsg(
  5159. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_11,
  5160. [2000]
  5161. ),
  5162. hideAfter : 5
  5163. });
  5164. return;
  5165. }else {
  5166. that.selfRemoteCall({
  5167. method : "back",
  5168. param : {
  5169. evaObj : evaObj,
  5170. period : periodId,
  5171. backReason : backReason,
  5172. SMSType: SMSType,
  5173. emailType: emailType,
  5174. portalType: portalType,
  5175. yzjMsgType: yzjMsgType
  5176. },
  5177. async : true,
  5178. type:"post",
  5179. success : function(data) {
  5180. if(data.successCount != 0 ){
  5181. shr.showInfo({
  5182. message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_9,
  5183. hideAfter : 5
  5184. });
  5185. if ($('.workerList').find('li').length == 1) {
  5186. goTransmitList();
  5187. } else {
  5188. //location.reload();
  5189. $('#selectionList').utilsSelectionList('reloadList', {fetchOthers: 1});
  5190. }
  5191. }else{
  5192. shr.showError({
  5193. message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_10+
  5194. data.result[0].muitTipsMessage,
  5195. hideAfter : 5
  5196. });
  5197. }
  5198. }
  5199. });
  5200. }
  5201. $(this).dialog("destroy").remove();
  5202. }},{
  5203. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  5204. click : function() {
  5205. $(this).dialog("destroy").remove();
  5206. }
  5207. }],
  5208. close: function () {
  5209. $(this).dialog("destroy").remove();
  5210. }
  5211. });
  5212. },
  5213. /**
  5214. * 查看打回原因
  5215. */
  5216. viewBackReasonAction: function() {
  5217. //获取打回原因列表
  5218. if(backReasonList.list.length == 0) {
  5219. backReasonList.list = that.getBackReasonData(evaObj);
  5220. }
  5221. var backReasonListTpl = document.getElementById('backReasonListTpl').innerHTML;
  5222. backReasonList.jsBizMultLan = jsBizMultLan;
  5223. var backHTML = juicer(backReasonListTpl, backReasonList);
  5224. $(document.body).append(backHTML);
  5225. $("#backReasonForm").show();
  5226. // 将弹出对话框弹出
  5227. $('#backReasonForm').dialog({
  5228. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_40,
  5229. autoOpen : true,
  5230. show : "blind",
  5231. width : 600,
  5232. height : 350,
  5233. resizable : true,
  5234. position : [ 'center', 'center' ],
  5235. modal : true,
  5236. buttons : [{
  5237. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_70,
  5238. click : function() {
  5239. //查看打回原因
  5240. $("#backReasonForm").dialog("destroy").remove();
  5241. }},{
  5242. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  5243. click : function() {
  5244. $("#backReasonForm").dialog("destroy").remove();
  5245. }
  5246. }]
  5247. });
  5248. },
  5249. getBackReasonData : function(evaObj,callback) {
  5250. //补丁11 绩效工作台性能优化 yien
  5251. var async = false;
  5252. if(typeof callback == 'function') {
  5253. async = true;
  5254. }
  5255. var result = [];
  5256. that.selfRemoteCall({
  5257. method : "getBackReasonData",
  5258. param : {
  5259. evaObj : evaObj,
  5260. type : pageType
  5261. },
  5262. async : async,
  5263. type:"post",
  5264. success : function(data) {
  5265. if(data != null && data.result == '200'){
  5266. result = data.data;
  5267. //补丁11 绩效工作台性能优化 yien
  5268. if(async) {
  5269. callback(result);
  5270. }
  5271. }
  5272. }
  5273. });
  5274. return result;
  5275. },
  5276. //根据评估对象id获取单据id,如果是指定人下达则返回空,
  5277. getTargetTransmitBill: function(evaObj) {
  5278. var result = {};
  5279. that.selfRemoteCall({
  5280. method : "getTargetTransmitBill",
  5281. param : {
  5282. evaObj : evaObj
  5283. },
  5284. async : false,
  5285. type:"post",
  5286. success : function(data) {
  5287. if(data != null && data.result == '200'){
  5288. result['billId'] = data.billId;
  5289. result['state'] = data.state;
  5290. }
  5291. }
  5292. });
  5293. //补丁18
  5294. if(!$.isEmptyObject(result['billId'])) {
  5295. //显示查看审批意见按钮
  5296. that.billId = result.billId;
  5297. $('#auditResult').show();
  5298. }else {
  5299. $('#auditResult').hide();
  5300. }
  5301. return result;
  5302. },
  5303. //初始化 我的绩效-我的目标 页面按钮
  5304. initViewMyTargetFormCfg: function() {
  5305. $('#addwrap,#submit').hide();
  5306. //$('#breadcrumb').parent().hide();
  5307. //我的绩效-我的目标
  5308. $('.delgoal').remove();
  5309. // $('.scoreBtns').hide();
  5310. $('#addindibtngrout,#back, #transmit, #setTargetWorkflow,#importIndicator').hide();
  5311. //隐藏“查看打回原因”按钮
  5312. $("#viewBackReason").hide();
  5313. //判断是否显示 流程图、审批意见 按钮
  5314. if(that.targetTransmitBill['billId']) {
  5315. $('#workFlowDiagram').show();
  5316. $('#auditResult').show();
  5317. }
  5318. },
  5319. /**
  5320. * 查看流程图
  5321. */
  5322. workFlowDiagramAction: function() {
  5323. var billId = that.getTargetTransmitBill(evaObj)['billId'];
  5324. if(billId) {
  5325. that.getWorkFlowHelper().viewWorkFlowDiagram(billId);
  5326. }else {
  5327. //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  5328. shr.showError({message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_38});
  5329. }
  5330. },
  5331. /**
  5332. * 查看审批结果
  5333. */
  5334. auditResultAction: function() {
  5335. var billId = that.getTargetTransmitBill(evaObj)['billId'];
  5336. if(billId) {
  5337. that.getWorkFlowHelper().viewAuditResult(billId);
  5338. }else {
  5339. //BT1393159 提示信息,目标填报已经提交,但是工作流发起报错,这里还不知道怎么处理好
  5340. shr.showError({message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_38});
  5341. }
  5342. },
  5343. /**
  5344. * 生成下拉框信息
  5345. */
  5346. initWorkFlowList: function (evaObj) {
  5347. var _self = this;
  5348. that.selfRemoteCall({
  5349. method : "getWorkFlowList",
  5350. param : {
  5351. evaObj : evaObj,
  5352. },
  5353. success : function(data) {
  5354. var setTargetWorkflowTpl = document.getElementById('setTargetWorkflowTpl').innerHTML;
  5355. var html = juicer(setTargetWorkflowTpl, {jsBizMultLan: _self.jsBizMultLan});
  5356. $(document.body).append(html);
  5357. var options=[],curval;
  5358. for (var key in data) {
  5359. options.push({value: key, alias: data[key]})
  5360. }
  5361. curval = options[0].value;
  5362. _self.initWorkFlowEvent(evaObj, curval, false);
  5363. $("#workFlows").shrSelect({
  5364. 'id': 'workFlows',
  5365. 'data':options, //选项
  5366. 'value': curval,
  5367. 'onChange':function(){
  5368. var option = $(this).shrSelect('getValue');
  5369. _self.initWorkFlowEvent(evaObj, option.value, true);
  5370. },
  5371. });
  5372. }
  5373. });
  5374. },
  5375. initWorkFlowEvent: function (evaObj, val, reload) {
  5376. var _self = this;
  5377. _self.setTargetWorkflow(val, reload);
  5378. },
  5379. /*
  5380. * 设置指标流程
  5381. * */
  5382. setTargetWorkflow : function(workFlowId, reload){
  5383. /*var html=juicer(setTargetWorkflowTpl,null);
  5384. $(document.body).append(html);*/
  5385. var name = new Array(); //字段别名
  5386. var model = new Array(); //model
  5387. name.push("ID");
  5388. model.push({"index":"id","width":20,"label":"Id","name":"targetId","align":"left",hidden: true,resizable:false});
  5389. name.push(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_46);
  5390. model.push({"index":"evaObj","width":20,"label":"evaObj","name":"evaObj",align:"left",hidden: true,resizable:false});
  5391. var groupHeaders = null;
  5392. //获取表头字段定义
  5393. that.selfRemoteCall({
  5394. method : "initTargetNodeFieldList",
  5395. param : {
  5396. //evaObj : evaObj
  5397. workFlow : workFlowId
  5398. },
  5399. async : false,
  5400. type:"post",
  5401. success : function(data) {
  5402. if(data != null && data.fieldList.length>0){
  5403. groupHeaders = data.groupHeaders;
  5404. var fieldList = data.fieldList;
  5405. var fieldLen = fieldList.length;
  5406. var cellwidth = 160;
  5407. if(0 < data.fieldList.length < 3){
  5408. // cellwidth = ($(window).width()*0.6 - 85*3 - 27) / data.fieldList.length;
  5409. cellwidth = ($(window).width()*0.6 - 27) / (data.fieldList.length+3)-5;
  5410. }
  5411. name.push(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_62);
  5412. model.push({"index":"areaName","label":"Id","name":"areaName",width:cellwidth, align:"center",frozen: true,sortable:false});
  5413. name.push(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_111);
  5414. model.push({"index":"targetNumber","label":"Id","name":"targetNumber",width:cellwidth, align:"center",frozen: true,sortable:false});
  5415. name.push(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_119);
  5416. model.push({"index":"targetName","label":"Id","name":"targetName",width:cellwidth, align:"center",frozen: true,sortable:false});
  5417. for(var i=0; i<fieldLen; i++){
  5418. name.push(fieldList[i].showName);
  5419. var modelName = {name:fieldList[i].colName,index:fieldList[i].colName, width:cellwidth, align:"center",frozen: true,sortable:false,cellattr: addCellAttr};
  5420. model.push(modelName);
  5421. }
  5422. targetNodeTableOptions={
  5423. name:name,
  5424. model:model,
  5425. multiselect:false,
  5426. multiselectWidth:30,//复选框单元格宽度
  5427. shrinkToFit:false,
  5428. width:'auto', //这个宽度不能为百分比
  5429. height:'auto', //高度,表格高度。可为数值、百分比或'auto'
  5430. sortname : '',
  5431. sortorder : '',
  5432. sortable:false,
  5433. rowNum : 50,
  5434. url: that.dynamicPage_url+"?method=getNodeTargetListData&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  5435. postData : {
  5436. evaObj : evaObj,
  5437. workFlow : workFlowId
  5438. },
  5439. onSelectRow : function (rowid,status){},
  5440. onSelectAll : function (aRowids,status){},
  5441. gridComplete: function () {
  5442. var trsObj = $("#setTargetWorkflowTable>tbody>tr:gt(0)");
  5443. trsObj.each(function (ind2, tr) {
  5444. var tdObj = $(tr).children("td");
  5445. tdObj.each(function (ind2, td) {
  5446. var tdo = $(td);
  5447. if (tdo.text() == " ") {
  5448. $(tdo).text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_36);
  5449. $(tdo).css("color","red");
  5450. }
  5451. });
  5452. });
  5453. }
  5454. };
  5455. if (reload) {
  5456. $('#setTargetWorkflowTable').gridUnload();
  5457. }
  5458. hrtable.createTable($('#setTargetWorkflowTable'),targetNodeTableOptions);
  5459. //修复当groupHeaders=''的时候转json报错
  5460. if(groupHeaders && null != groupHeaders){
  5461. $("#setTargetWorkflowTable").jqGrid('setGroupHeaders', {
  5462. useColSpanStyle: true,
  5463. groupHeaders:JSON.parse(groupHeaders)
  5464. });
  5465. $("table[aria-labelledby='gbox_setTargetWorkflowTable'] th").css("text-align", "center");
  5466. }
  5467. }
  5468. }
  5469. });
  5470. },
  5471. /**
  5472. * 初始化设置评分人弹框
  5473. */
  5474. initTargetWorkflowDialog : function(evaObjId) {
  5475. if (evaObjId) {
  5476. evaObj = evaObjId;
  5477. }
  5478. $("#setTargetWorkflowDialog").remove();
  5479. var setTargetWorkflowDialogHtlml = '<div id="setTargetWorkflowDialog" style="overflow:hidden;display:none;">'
  5480. + ' <iframe id="operationDialog" name="operationDialog" width="100%" height="100%" frameborder="0" allowtransparency="true"></iframe>'
  5481. + '</div>';
  5482. $(document.body).append(setTargetWorkflowDialogHtlml);
  5483. that.selfRemoteCall({
  5484. method : "getWorkFlowList",
  5485. param : {
  5486. evaObj : evaObj,
  5487. },
  5488. async: false,
  5489. success : function(data) {
  5490. if (data && !$.isEmptyObject(data)) {
  5491. var options = [];
  5492. for (var key in data) {
  5493. options.push({value: key, alias: data[key]})
  5494. }
  5495. var curVal = options[0].value;
  5496. //组织考核-yien
  5497. var _uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObject.nodeHandler.list';
  5498. if(isOrg== '1') {
  5499. _uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObject.nodeHandler4Org.list'
  5500. }
  5501. ////设置serviceId,设置评分人弹框出现行政组织树-yien
  5502. var _serviceId = shr.getUrlRequestParam("serviceId",window.parent.location.href);
  5503. var url = shr.getContextPath() + "/dynamic.do?uipk=" + _uipk
  5504. + "&period=" + encodeURIComponent(periodId)
  5505. + "&evaObj=" + encodeURIComponent(evaObj)
  5506. + "&workFlow=" + encodeURIComponent(curVal)
  5507. + "&pageType=dialog"
  5508. + "&serviceId=" + _serviceId
  5509. + "&scoringWay=" + scoringWay
  5510. + "&planName=" + encodeURIComponent(planName)
  5511. + "&shruicode=" + shr.getUrlRequestParam('shruicode')
  5512. + "&isOrg=" + isOrg; //组织考核-yien
  5513. $("#setTargetWorkflowDialog").find("iframe").attr('src', url);
  5514. $("#setTargetWorkflowDialog").dialog({
  5515. autoOpen : true,
  5516. show : "blind",
  5517. width : '90%',
  5518. height : $(window).height()*0.9,
  5519. title : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_71,
  5520. resizable : true,
  5521. position : [ 'center', 'center' ],
  5522. modal : true,
  5523. buttons : [{
  5524. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_69,
  5525. click : function() {
  5526. $(this).dialog('close');
  5527. }},{
  5528. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_29,
  5529. click : function() {
  5530. $(this).dialog('close');
  5531. }
  5532. }],
  5533. close : function(){
  5534. $('#setTargetWorkflowDialog').hide();
  5535. }
  5536. });
  5537. } else {
  5538. shr.showError({
  5539. "message":
  5540. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_31,
  5541. hideAfter : 5});
  5542. }
  5543. }
  5544. });
  5545. },
  5546. setTargetWorkflowAction : function() {
  5547. this.initTargetWorkflowDialog();
  5548. },
  5549. /**
  5550. * 指标名称,指标编码监听字数
  5551. */
  5552. inputFieldLenListener: function(){
  5553. $('#editboxDialog input, #editboxDialog textarea').live('input propertychange', function() {
  5554. var $input = $(this);
  5555. var objVal = $input.val();
  5556. var msgId = $input.attr("id");
  5557. var fname = $input.attr("fname");
  5558. var msgShow = $('.errowmsg[for="'+fname+'"]');
  5559. //BT1365179 yien 随便完善下,增加前端长度校验
  5560. var maxlength = 0;
  5561. var showName = $input.attr('showName');
  5562. var len = objVal.length;
  5563. var fieldType = $input.attr('field-type');
  5564. if(!$input.is(':focus') || fieldType === 'Number' || fieldType === 'Select' || fieldType === 'Date'){
  5565. return false;
  5566. }
  5567. //BT1372296 关键举措名称
  5568. if (fname == 'FNAME' || fname == 'FKEYITEM') {
  5569. //增加最大长度限制
  5570. maxlength = 255;
  5571. }else if (fname == 'FNUMBER') {
  5572. maxlength = 80;
  5573. }else if (fname == 'FREMA' || fname == 'FREMARK' || fname == 'FINDECATORDESC' || fname == 'FEVALSTANDARD' || fname == 'FMEASURESTANDARD') {
  5574. maxlength = 1024;
  5575. }else if (fname.indexOf('FEXTEND') > -1) {
  5576. maxlength = 1024;
  5577. //BT1372296 关键举措类型,关键举措编码 限制长度
  5578. }else if (fname == 'FKEYCODE' || fname == 'FKEYTYPE') {
  5579. maxlength = 44;
  5580. }
  5581. else {
  5582. return;
  5583. }
  5584. if($input.is(':focus')){
  5585. msgShow.text(showName +
  5586. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_121,[maxlength,len])).show();
  5587. if(typeof $input.attr('maxlength') == "undefined") {
  5588. $input.attr({maxlength : maxlength});
  5589. }
  5590. }
  5591. });
  5592. },
  5593. /**
  5594. * 指标描述、指标评语、评价标准、衡量标准、备注监听字数
  5595. */
  5596. textAreaFieldLenListener: function(){
  5597. $('div[name="textAreaFieldDiv"]').live('input propertychange', function() {
  5598. var $textArea = $(this).find("textarea");
  5599. if($textArea.length == 0) {
  5600. return;
  5601. }
  5602. //BT1365179 yien 随便完善下,增加前端长度校验
  5603. var objVal = $textArea.val();
  5604. var msgId = $textArea.attr("id");
  5605. var fname = $textArea.attr("fname");
  5606. var showName = $textArea.attr("showName");
  5607. var msgShow = $("span[msgId='MSG_" +msgId+ "']");
  5608. var maxlength = 1024;
  5609. var len = objVal.length;
  5610. if(fname == 'FINDECATORDESC'){
  5611. //额~抽象完了
  5612. }else if(fname == 'FEVALSTANDARD'){
  5613. //额~抽象完了
  5614. }else if(fname == 'FMEASURESTANDARD'){
  5615. //额~抽象完了
  5616. }else {
  5617. return;
  5618. }
  5619. msgShow.text(showName +
  5620. shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_121,[maxlength,len])).show();
  5621. if(typeof $textArea.attr('maxlength') == "undefined") {
  5622. $textArea.attr({maxlength : maxlength});
  5623. }
  5624. msgShow.show();
  5625. })
  5626. },
  5627. /**
  5628. * 修改评分人弹框
  5629. */
  5630. createDialogDiv: function (targetId, wfNodeId, e) {
  5631. var _self = this;
  5632. $('#editNodeHandlerDiv').remove();
  5633. // 未生成dialog
  5634. var editNodeHandlerDiv = $('<div id="editNodeHandlerDiv"></div>').appendTo($('body'));
  5635. editNodeHandlerDiv.dialog({
  5636. modal: false,
  5637. title: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_90,
  5638. width: 650,
  5639. minWidth: 650,
  5640. height: 430,
  5641. minHeight: 430,
  5642. open: function (event, ui) {
  5643. var url = shr.assembleURL('com.kingdee.eas.basedata.person.app.Person.editNodeHandler.dialog', 'view', {
  5644. serviceId: '',
  5645. });
  5646. var content = '<iframe id="editNodeHandlerFrame" name="editNodeHandlerFrame" width="100%" height="98%" frameborder="0" allowtransparency="true" src="' + url + '"></iframe>';
  5647. editNodeHandlerDiv.append(content);
  5648. },
  5649. close: function (event, ui) {
  5650. editNodeHandlerDiv.empty();
  5651. },
  5652. buttons: [{
  5653. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_69,
  5654. click: function () {
  5655. var _this = this;
  5656. var weightReg = /^\d+(\.\d{1,2})?$/;
  5657. var data = window.frames["editNodeHandlerFrame"].getSelectedData();
  5658. if(null == data || data.length<1){
  5659. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_51,hideAfter : 5});
  5660. return false;
  5661. }else{
  5662. var len = data.length;
  5663. for(var i=0; i<len; i++){
  5664. var weight = data[i].weight;
  5665. if(!weightReg.test(weight)){
  5666. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_68,hideAfter : 5});
  5667. return false;
  5668. }
  5669. //处理后端获取person.id为空的bug
  5670. data[i]['person.id'] = data[i]['id'];
  5671. }
  5672. }
  5673. var jsonData = JSON.stringify(data);
  5674. //保存目标节点设置
  5675. that.selfRemoteCall({
  5676. method : "saveTargetNodeHandler",
  5677. param : {
  5678. evaObj : evaObj,
  5679. wfNode : wfNodeId,
  5680. indicatorId : targetId,
  5681. data : jsonData
  5682. },
  5683. async : false,
  5684. success : function(data) {
  5685. if(data != null && data.code == 200){
  5686. shr.showInfo({message : data.msg,hideAfter : 5});
  5687. $(_this).dialog('close');
  5688. $("#setTargetWorkflowTable").trigger("reloadGrid");
  5689. }else{
  5690. shr.showError({message : data.msg,hideAfter : 5});
  5691. }
  5692. }
  5693. });
  5694. }},{
  5695. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  5696. click: function () {
  5697. $(this).dialog('close');
  5698. }
  5699. }],
  5700. });
  5701. $(".ui-dialog-titlebar-close").bind("click", function () {
  5702. editNodeHandlerDiv.dialog("close");
  5703. });
  5704. },
  5705. /**
  5706. * 导入目标
  5707. */
  5708. importIndicatorAction: function () {
  5709. var _self = this;
  5710. var customParam = {
  5711. shruicode: shr.getUrlRequestParam("shruicode")
  5712. };
  5713. this.doImportData('importIndicator', customParam, undefined);
  5714. },
  5715. /**
  5716. * 执行导入操作
  5717. * @param {String} btnName 按钮名称
  5718. * @param {Object} customParam 自定义参数
  5719. * @param {function(dataList, customParams)} callback 导入任务执行成功后回调函数,参数为导入的数据、自定义参数。有此回调函数时,默认导入将不进行写入数据库操作
  5720. */
  5721. doImportData: function(btnName, customParam, callback){
  5722. if(typeof(customParam)=='function'){
  5723. callback = customParam;
  5724. customParam = {shruicode: shr.getUrlRequestParam("shruicode")};
  5725. }
  5726. var autoReloadOnEndImport = callback && typeof(customParam)=='function' ? false : true;
  5727. var clsCallback = undefined;
  5728. if(autoReloadOnEndImport){
  5729. clsCallback = function(hasImport){
  5730. if(hasImport){
  5731. window.location.reload();
  5732. }
  5733. };
  5734. }
  5735. this.startImportData(btnName, customParam, clsCallback, callback);
  5736. },
  5737. /**
  5738. * 开始进行导入
  5739. * @param {String} btnName 按钮名称
  5740. * @param {Object} customParam 自定义参加,将传送至后台
  5741. * @param {function(hasImport)} clsCallback 关闭导入弹出框时回调处理,参加为是否有过导入
  5742. * @param {function(dataList, customParams)} callback 导入任务执行成功后回调函数,参数为导入的数据、自定义参数。有此回调函数时,默认导入将不进行写入数据库操作
  5743. */
  5744. startImportData: function (btnName, customParam, clsCallback, callback) {
  5745. var uipk = shr.getUrlRequestParam("uipk");
  5746. var serviceId = shr.getUrlRequestParam("serviceId",window.parent.location.href);
  5747. btnName = btnName || 'import';
  5748. shr.doImportExcel({
  5749. btnName: btnName,
  5750. uipk: uipk,
  5751. serviceId: serviceId,
  5752. customParam: customParam,
  5753. shruicode: shr.getUrlRequestParam("shruicode"),
  5754. enablePause: true,
  5755. clsCallback: clsCallback,
  5756. evaObj: evaObj,
  5757. periodId: periodId,
  5758. }, callback);
  5759. },
  5760. /**
  5761. * 上传附件弹出框
  5762. */
  5763. uploadFileDialog: function () {
  5764. $('#attachments').unbind('click').bind('click', function () {
  5765. //BT-00545259 【8611补丁测试PT161638】,绩效管理--考核计划执行--未发送--查看评估表单,附件查看不了
  5766. that.openFileDialog();
  5767. })
  5768. },
  5769. //BT-00545259 【8611补丁测试PT161638】,绩效管理--考核计划执行--未发送--查看评估表单,附件查看不了
  5770. openFileDialog: function() {
  5771. var html = juicer(uploadAttachmentsTpl, {uploadAttachSize:uploadAttachSize});
  5772. $(document.body).append(html);
  5773. if (showAttachsOnly) {
  5774. $('.uploadfilebtn').hide();
  5775. $(".delfile").hide();
  5776. }
  5777. $('#uploadFileBox').html('');
  5778. that.selfRemoteCall({
  5779. method: "initialAttachment",
  5780. param: {evaObj: evaObj},
  5781. async: false,
  5782. /*$.ajax({
  5783. url: shr.getContextPath() + "/attachmentUpload.do?method=initialAttachment",
  5784. data: {formId: evaObj},*/
  5785. success: function (data) {
  5786. if (data) {
  5787. for (var i = 0; i < data.length; i++) {
  5788. var tempData = data[i];
  5789. var url = that._assembleDownloadUrl(tempData.id, tempData.attachKey);
  5790. var basetr = '<tr id="' + tempData.id + '" attachKey="' + tempData.attachKey + '">' +
  5791. '<td class="textOverflow paddingbox">' + tempData.name + '.' + tempData.simpleName + '</td>' +
  5792. '<td>'+tempData.creator+'</td>'+'<td>'+tempData.createTime+'</td>';
  5793. var del = '';
  5794. if (tempData.isSelf && tempData.isSelf == "true") {
  5795. // del = '<span class="delfile linkstyle">删除</span>';
  5796. del = '<span class="delfile linkstyle">'+jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_0
  5797. +'</span>';
  5798. }
  5799. 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") {
  5800. // basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">下载</a></td>' +
  5801. basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" target="_blank" style="color:#388cff">'+jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_1
  5802. +'</a></td>' +
  5803. '</tr>';
  5804. } else {
  5805. // basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">下载</a></td>' +
  5806. basetr += '<td>' + del + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_1
  5807. +'</a></td>' +
  5808. '</tr>';
  5809. }
  5810. $('#uploadFileBox').append(basetr);
  5811. //shr.setIframeHeight();
  5812. }
  5813. }
  5814. //it.uploadFile();//上传附件
  5815. $("#attachmentsDialog").dialog({
  5816. autoOpen: true,
  5817. show: "blind",
  5818. width: 850,
  5819. height: 500,
  5820. // title: "附件",
  5821. title: jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_2,
  5822. resizable: false,
  5823. position: ['center', self != top ? 70 : 'center'],
  5824. modal: true,
  5825. buttons: [
  5826. {
  5827. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_70,
  5828. click: function() {
  5829. $(this).dialog('close');
  5830. }
  5831. },
  5832. {
  5833. text: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  5834. click: function() {
  5835. $(this).dialog('close');
  5836. }
  5837. }
  5838. ],
  5839. // buttons: {
  5840. // '确定': function () {
  5841. // $(this).dialog('close');
  5842. // /**
  5843. // * 这时要刷新附件数
  5844. // */
  5845. // getAttachcount();
  5846. // },
  5847. // '取消': function () {
  5848. // $(this).dialog('close');
  5849. // }
  5850. // },
  5851. close: function () {
  5852. $('#attachmentsDialog').remove();
  5853. }
  5854. });
  5855. if (showAttachsOnly) {
  5856. //不给上传,应该同时也不给删除啊
  5857. $(".delfile").hide();
  5858. }
  5859. }
  5860. });
  5861. },
  5862. /**
  5863. * 获取上传文件的下载地址
  5864. * @param id
  5865. * @returns {string}
  5866. * @private
  5867. */
  5868. _assembleDownloadUrl: function (id, attachKey) {
  5869. // var params = {
  5870. // method: 'download',
  5871. // id: id,
  5872. // key: attachKey
  5873. // }
  5874. // return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
  5875. var self = this;
  5876. var permItemId = "";
  5877. if(!self.isFromWF()){
  5878. permItemId = shr.getCurrentPagePermItemId();
  5879. }
  5880. var params = {
  5881. method: 'download',
  5882. id: id,
  5883. permItemId: permItemId,
  5884. billId:shr.getUrlRequestParam('billId'),
  5885. shruicode:shr.getShruicode(),
  5886. uipk:shr.getUrlRequestParam('uipk')
  5887. // assigmentId:self.getAssignmentId(),
  5888. // ProcInstId:self.getProcInstId()
  5889. }
  5890. return shr.getContextPath() + '/attachmentUpload.do?' + $.param(params);
  5891. },
  5892. /**
  5893. * 上传文件
  5894. */
  5895. uploadFile: function (obj) {
  5896. /*$(document).on('change', '#uploadAttach', function (e) {*/
  5897. $('#uploadAttach').unbind().live('change', function(e) {
  5898. // 检测上传文件的类型
  5899. var acceptFileArr = ['doc','docx','xlsx','xls','jpg','jpeg','png','jpeg', 'pdf','zip'];
  5900. var fileList = e.target.files;
  5901. var fileLength = e.target.files.length;
  5902. if (!fileLength || fileLength == 0) {
  5903. // shr.showWarning({message: "请选择要上传的文件 !"});
  5904. shr.showWarning({message: jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_3});
  5905. return false;
  5906. }
  5907. if (fileLength > 10) {
  5908. shr.showWarning({message: $.perfwebI18n.evaobjBatchAttachment.toomanyfiles});
  5909. return false;
  5910. }
  5911. var totalSize = 0;
  5912. for (var i = 0; i < fileLength; i++) {
  5913. var fileItem = fileList[i];
  5914. var filePath = fileItem.name;
  5915. var ext, idx;
  5916. if (filePath == '') {
  5917. // shr.showWarning({message: "请选择要上传的文件 !"});
  5918. shr.showWarning({message: jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_3});
  5919. return false;
  5920. } else {
  5921. idx = filePath.lastIndexOf(".");
  5922. if (idx != -1) {
  5923. ext = filePath.substr(idx + 1).toUpperCase();
  5924. ext = ext.toLowerCase();
  5925. if (!array_contain(acceptFileArr, ext)) {
  5926. // shr.showWarning({message: "只能上传 .doc,.docx,.xlsx,.xls,.jpg,.jpeg,.png,.jpeg,.pdf 类型的文件!"});
  5927. shr.showWarning({message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_4,['.doc,.docx,.xlsx,.xls,.jpg,.jpeg,.png,.jpeg,.pdf,.zip'])});
  5928. return false;
  5929. }
  5930. } else {
  5931. shr.showWarning({message: ""});
  5932. return false;
  5933. }
  5934. // 在这里限制文件大小,ie9要想获取文件大小,就要使用flash插件
  5935. var size = fileItem.size;
  5936. if (size / (1024 * 1024 * uploadAttachSize) > 1) {
  5937. shr.showWarning({
  5938. // message: "上传文件不能大于5M",
  5939. message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_bw0406_01,[uploadAttachSize]),
  5940. hideAfter: 3
  5941. });
  5942. return false;
  5943. }
  5944. totalSize = totalSize + size;
  5945. }
  5946. }
  5947. if (totalSize / (1024 * 1024 * uploadAttachSize) > 1) {
  5948. shr.showWarning({
  5949. // message: "上传文件不能大于5M",
  5950. message: shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_bw0406_01, [uploadAttachSize]),
  5951. hideAfter: 3
  5952. });
  5953. return false;
  5954. }
  5955. that.uploadFileMulity(e);
  5956. })
  5957. },
  5958. uploadFileMulity: function (e) {
  5959. var fileObj = $(e.target);
  5960. var id = fileObj.attr("id");
  5961. $('#uploadFileBox').append('<image id="loadingGif" src="' + shr.getContextPath() + '/addon/perfweb/web/images/upload.gif"/>').show();
  5962. $.ajaxFileUpload({
  5963. // url: shr.getContextPath() +
  5964. // "/attachmentUpload.do?method=uploadAttachment",
  5965. // //用于文件上传的服务器端请求地址
  5966. url: that.dynamicPage_url + "?method=uploadAttachment&uipk=" + that.uipk + "&shruicode=" + shr.getUrlRequestParam('shruicode'),
  5967. data: {boID: evaObj},
  5968. secureuri: false, // 是否需要安全协议,一般设置为false
  5969. fileElementId: id, // 文件上传域的ID
  5970. dataType: 'json', // 返回值类型 一般设置为json
  5971. success: function (results) {// 服务器成功响应处理函数
  5972. if (results && results.result == 'success') {
  5973. $('#loadingGif').remove();
  5974. if (results && results.data && results.data.length > 0) {
  5975. for (var i = 0; i < results.data.length; i++) {
  5976. var data = results.data[i];
  5977. var url = that._assembleDownloadUrl(data.id, data.attachKey);
  5978. // uploadFileEvent();
  5979. var showDel = "";
  5980. if (data.isSelf && data.isSelf == "true") {
  5981. // showDel = '<span class="delfile linkstyle">删除</span>';
  5982. showDel = '<span class="delfile linkstyle">'+jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_0
  5983. +'</span>';
  5984. }
  5985. var tr = $('<tr id="' + data.id + '" attachKey="' + data.attachKey + '">' +
  5986. '<td class="textOverflow paddingbox">' + data.filename + '</td>' +
  5987. '<td>' + data.creator + '</td>' +
  5988. '<td>' + data.createTime + '</td>' +
  5989. // '<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">下载</a></td>' +
  5990. '<td>' + showDel + '<a class="uploadfile linkstyle" href="' + url + '" style="color:#388cff">'+jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_1
  5991. +'</a></td>' +
  5992. '</tr>');
  5993. $('#uploadFileBox').append(tr);
  5994. }
  5995. /**
  5996. * 这时要刷新附件数
  5997. */
  5998. getAttachcount();
  5999. }
  6000. } else if (results && results.result == 'failed') {
  6001. // console.log(results);
  6002. var failedMag = results.failedMag;
  6003. var errMsg = $.perfwebI18n.evaobjBatchAttachment['PERFWEB_F_0021'];
  6004. if(failedMag && $.perfwebI18n.evaobjBatchAttachment[failedMag]) {
  6005. errMsg = $.perfwebI18n.evaobjBatchAttachment[failedMag];
  6006. }else if(failedMag) {
  6007. errMsg = failedMag;
  6008. }
  6009. shr.showError({
  6010. message: errMsg
  6011. });
  6012. $('#loadingGif').remove();
  6013. }
  6014. }
  6015. });
  6016. },
  6017. /**
  6018. * 删除上传文件
  6019. */
  6020. delFile: function () {
  6021. $(document).on('click', '.delfile', function () {
  6022. var $del = $(this);
  6023. var $tr = $del.parent('td').parent('tr');
  6024. var attachId = $tr.attr('id');
  6025. var attachKey = $tr.attr('attachKey');
  6026. // shr.showConfirm('确认删除?', function () {
  6027. shr.showConfirm(jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_6, function () {
  6028. that.selfRemoteCall({
  6029. method: "canAttachmentDelete",
  6030. async: false,
  6031. param: {attachmentId : attachId},
  6032. success: function (result) {
  6033. if (result && result.canDelete) {
  6034. var formId = evaObj;
  6035. var permItemId = "";
  6036. var self = that;
  6037. if(!self.isFromWF()){
  6038. permItemId = shr.getCurrentPagePermItemId();
  6039. }
  6040. $.ajax({
  6041. url: shr.getContextPath() + "/attachmentUpload.do?method=deleteAttachment",
  6042. data: {boID: formId, attachId: attachId, key: attachKey,
  6043. permItemId: permItemId,
  6044. billId:shr.getUrlRequestParam('billId'),
  6045. shruicode:shr.getShruicode(),
  6046. uipk:shr.getUrlRequestParam('uipk')},
  6047. success: function (msg) {
  6048. var tr = $del.parents('tr');
  6049. tr.remove();
  6050. getAttachcount();
  6051. }
  6052. });
  6053. } else {
  6054. shr.showWarning({
  6055. // message: "您无权删除该附件!",
  6056. message: jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_7,
  6057. hideAfter: 3
  6058. });
  6059. }
  6060. }
  6061. });
  6062. });
  6063. });
  6064. },
  6065. // 指标上移
  6066. moveUp: function(fId,areaType){
  6067. var thisItem = $('li[indid="'+fId+'"]');
  6068. var prevItem = thisItem.prev('li');
  6069. var lis = thisItem.parent().find('li');
  6070. if (prevItem.length > 0) {
  6071. prevItem.before(thisItem);
  6072. //this.setOrder(fId,areaType,thisItem.index())
  6073. };
  6074. var size = $(thisItem.parent().find('li')).size();
  6075. var data = [];
  6076. for(var i = 0; i < size; i++){
  6077. var id = $($(thisItem.parent().find('li'))[i]).attr('indid')
  6078. data.push({
  6079. id: id,
  6080. type: areaType,
  6081. index: i.toString(),
  6082. })
  6083. }
  6084. this.setOrder(data);
  6085. },
  6086. // 指标下移
  6087. moveDown: function(fId,areaType){
  6088. var thisItem = $('li[indid="'+fId+'"]');
  6089. var nextItem = thisItem.next('li');
  6090. if (nextItem.length > 0) {
  6091. nextItem.after(thisItem);
  6092. //this.setOrder(fId,areaType,thisItem.index())
  6093. };
  6094. var size = $(thisItem.parent().find('li')).size();
  6095. var data = [];
  6096. for(var i = 0; i < size; i++){
  6097. var id = $($(thisItem.parent().find('li'))[i]).attr('indid')
  6098. data.push({
  6099. id: id,
  6100. type: areaType,
  6101. index: i.toString(),
  6102. })
  6103. }
  6104. this.setOrder(data);
  6105. },
  6106. // 指标上移
  6107. moveUpForGrid: function(e, gridId, areaType){
  6108. var _grid = $('#'+gridId);
  6109. var checkedboxs = _grid.find('.cbox:checked');
  6110. var checkedIds = [];
  6111. $('.tabwrap').each(function(index,tab){
  6112. $('#tab'+index).jqGrid('editStop');
  6113. })
  6114. $.each(checkedboxs,function(i,item){
  6115. var _box = $(item);
  6116. var _id = _box.closest('tr').attr('id');
  6117. checkedIds.push(_id);
  6118. })
  6119. if(checkedIds.length == 0){
  6120. shr.showInfo({
  6121. message: jsBizMultLan.perfweb_perfgoalsfill_20221219ht_05
  6122. })
  6123. return false;
  6124. }
  6125. $.each(checkedIds,function(i, FID){
  6126. var _trs = $('tr[id="'+FID+'"]');
  6127. $.each(_trs,function(j, tr){
  6128. var _tr = $(tr);
  6129. var _prevTr = _tr.prev('tr:not(.jqgfirstrow)');
  6130. if (_prevTr.length > 0 && !_prevTr.find('.cbox').is(':checked')) {
  6131. _prevTr.before(_tr);
  6132. }
  6133. })
  6134. })
  6135. var rows = _grid.getRowData();
  6136. var data = [];
  6137. $.each(rows,function(i, item){
  6138. data.push({
  6139. id: item.id,
  6140. type: areaType,
  6141. index: i.toString(),
  6142. })
  6143. })
  6144. this.setOrder(data);
  6145. },
  6146. // 指标下移
  6147. moveDownForGrid: function(e, gridId, areaType){
  6148. var _grid = $('#'+gridId);
  6149. var checkedboxs = _grid.find('.cbox:checked');
  6150. var checkedIds = [];
  6151. $('.tabwrap').each(function(index,tab){
  6152. $('#tab'+index).jqGrid('editStop');
  6153. })
  6154. $.each(checkedboxs,function(i,item){
  6155. var _box = $(item);
  6156. var _id = _box.closest('tr').attr('id');
  6157. checkedIds.push(_id);
  6158. })
  6159. if(checkedIds.length == 0){
  6160. shr.showInfo({
  6161. message: jsBizMultLan.perfweb_perfgoalsfill_20221219ht_05
  6162. })
  6163. return false;
  6164. }
  6165. $.each(checkedIds.reverse(),function(i, FID){
  6166. var _trs = $('tr[id="'+FID+'"]');
  6167. $.each(_trs,function(j, tr){
  6168. var _tr = $(tr);
  6169. var _nextTr = _tr.next('tr:not(.jqgfirstrow)');
  6170. if (_nextTr.length > 0 && !_nextTr.find('.cbox').is(':checked')) {
  6171. _nextTr.after(_tr);
  6172. };
  6173. })
  6174. })
  6175. var rows = _grid.getRowData();
  6176. var data = [];
  6177. $.each(rows,function(i, item){
  6178. data.push({
  6179. id: item.id,
  6180. type: areaType,
  6181. index: i.toString(),
  6182. })
  6183. })
  6184. this.setOrder(data);
  6185. },
  6186. // 保存顺序
  6187. setOrder: function(data){
  6188. // console.log(data)
  6189. this.selfRemoteCall({
  6190. method: "updateIndicatorSeq",
  6191. async: false,
  6192. param: {
  6193. data: JSON.stringify(data)
  6194. },
  6195. success: function (data) {
  6196. // console.log(data)
  6197. },
  6198. error: function(err){
  6199. // console.log(err)
  6200. }
  6201. });
  6202. },
  6203. //yien 表单越权
  6204. //处理流程中心发起请求的特殊处理
  6205. selfRemoteCall: function(options) {
  6206. if(isFromWFBill) {
  6207. options.param['isFromWFBill'] = 'true';
  6208. options.param['wfBillParentUipk'] = originWfUipk;
  6209. options.param['shrBillInWfId'] = billId;
  6210. }
  6211. that.remoteCall(options);
  6212. },
  6213. // selfCallHandler: function(options) {
  6214. // if(isFromWFBill) {
  6215. // options.param['isFromWFBill'] = 'true';
  6216. // options.param['wfBillParentUipk'] = originWfUipk;
  6217. // options.param['shrBillInWfId'] = billId;
  6218. // }
  6219. // shr.callHandler(options);
  6220. // },
  6221. // 指标列表折叠功能
  6222. foldIndicator: function(e){
  6223. var icon = $(e);
  6224. var areawrap = icon.closest('.areawrap');
  6225. var content = areawrap.find('.tabwrap');
  6226. if(viewType == 'overview'){
  6227. content = areawrap.find('.indicatorwrap');
  6228. }
  6229. if (icon.hasClass('controller_active')) {
  6230. content.hide();
  6231. icon.removeClass('controller_active');
  6232. areawrap.addClass('areawrap-active');
  6233. } else {
  6234. content.show();
  6235. icon.addClass('controller_active');
  6236. areawrap.removeClass('areawrap-active');
  6237. }
  6238. }
  6239. })
  6240. function isDisabledField(_indicatorInfo,colName){
  6241. //------------------不显示字段,当做禁用
  6242. if( colName == 'FISUNITED' || colName == 'FSCORE' || colName == 'FSUMSCORE' || colName == 'FACTUALCOMPLETE'
  6243. || colName == 'FCOMMENT' || colName == 'FUPDATEDATE' || (_indicatorInfo.scoringWay == 1 && colName == 'FWEIGHT')
  6244. || (_indicatorInfo.scoringWay == 0 && colName == 'FTARSCORE') || colName == 'FACTUALCOMPLEVALUE'
  6245. || colName == 'FACTUALCOMPLETETIME' || colName == 'FACTUALCOMPLETEDESC' ){
  6246. return true;
  6247. }
  6248. //------------------第二种
  6249. var isUnited = _indicatorInfo.FISUNITED ;
  6250. if(isExistIndecatoryType = 1 && isUnited == 1 && colName == "FINDECATORTYPE" ){
  6251. return true;
  6252. }
  6253. //先注释了
  6254. /*if(pageType == 2 && colName == "" ){
  6255. indicatorType 为禁用
  6256. }*/
  6257. //------------------第三种
  6258. //初始化业绩指标
  6259. var _isUnited = isUnited;
  6260. if(pageType == 2) {
  6261. //绩效工作台-我的目标跳转-屏蔽编辑功能
  6262. _isUnited = 1;
  6263. }
  6264. //定性定量
  6265. var qualiOrRationValue ; //定性:0 或 定量值:1
  6266. var fieldslist = _indicatorInfo['fieldslist'];
  6267. for(var i =0;i<fieldslist.length;i++){
  6268. if( fieldslist[i].colName == 'FQUALIORRATION'){
  6269. qualiOrRationValue = fieldslist[i].fieldvalue;
  6270. }
  6271. }
  6272. if(_isUnited == 1 && colName == 'FQUALIORRATION'){
  6273. return true;
  6274. }
  6275. if(_isUnited != 1 && qualiOrRationValue == 0 &&
  6276. (colName == 'FUNIT' || colName == 'FSCORINGFORMULA' ||colName == 'FTARGETVALUE' )){//定性:禁用评分公式和单位,目标值
  6277. return true;
  6278. }
  6279. //可见性
  6280. if(_isUnited == 1 || colName == 'FISVISIBLE'){
  6281. return true;
  6282. }
  6283. //业绩指标计划完成日期
  6284. if(colName == 'FPLANEDDATE'){
  6285. return true;
  6286. }
  6287. //实际完成时间
  6288. var fieldname = '';
  6289. if($('#FActualCompleteTime').length > 0){
  6290. fieldname = 'FActualCompleteTime';
  6291. }else if($('#FACTUALCOMPLETETIME').length > 0){
  6292. fieldname = 'FACTUALCOMPLETETIME';
  6293. }
  6294. if(colName == fieldname){
  6295. return true;
  6296. }
  6297. //完成时间
  6298. if(colName == 'FCOMPLETETIME' && _isUnited == 1){
  6299. return true;
  6300. }
  6301. //业绩指标更新日期
  6302. if(colName == 'FUPDATEDATE' && _isUnited == 1){
  6303. return true;
  6304. }
  6305. //否决项
  6306. if(colName == 'FREJECTION' && _isUnited == 1){
  6307. return true;
  6308. }
  6309. //------------------引用指标
  6310. // 引用指标表单 屏蔽定性定量指标更改属性
  6311. var _flag = false;
  6312. that.selfRemoteCall({
  6313. method : "judgeIsRefTarget",
  6314. param : {
  6315. indicatorId : _indicatorInfo.FID
  6316. },
  6317. async : false,
  6318. type:"post",
  6319. success : function(data) {
  6320. if(data.result == '200' && data.isRefTarget == '1') {
  6321. _flag = true;
  6322. }
  6323. }
  6324. });
  6325. if(_flag &&
  6326. (colName == 'FNAME' || colName == 'FNUMBER' || colName == 'FKEYITEM' || colName == 'FKEYCODE'
  6327. || colName == 'FINDECATORDESC' || colName == 'FQUALIORRATION' )
  6328. ){
  6329. return true;
  6330. }
  6331. return false;
  6332. }
  6333. /*
  6334. * 保存及提交操作
  6335. * */
  6336. function doSumbit(){
  6337. //1.组装数据
  6338. var flag = that.assembleTargetData();
  6339. if(!flag){
  6340. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_75,hideAfter : 5});
  6341. return false;
  6342. }
  6343. else{
  6344. //判断定量指标是否维护评分公式和目标值
  6345. var unvalidArr = getUnvalidPerfAchievement();
  6346. if(unvalidArr.length > 0) {
  6347. shr.showConfirm( '【'+unvalidArr.join(',') + '】'+
  6348. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_116, function(){
  6349. doRemoteCallSaveTarget();
  6350. });
  6351. return false;
  6352. }
  6353. //2.保存指标和记录表
  6354. doRemoteCallSaveTarget();
  6355. }
  6356. return true;
  6357. }
  6358. //执行目标工作流方式下达
  6359. function doRemoteCallSaveTargetByProcess() {
  6360. if(viewType == 'list'){ // 列表模式提交前先保存指标
  6361. that.batchSaveTargetAction('submit')
  6362. }
  6363. that.doSubmit(event, 'submit');
  6364. }
  6365. /**
  6366. * 执行指标保存
  6367. */
  6368. function doRemoteCallSaveTarget() {
  6369. //补丁11 绩效工作台优化-yien
  6370. if(that.targetTransmitBill['billId'] == '-1') {
  6371. //获取目标单据信息
  6372. that.targetTransmitBill = that.getTargetTransmitBill(evaObj);
  6373. }
  6374. if(that.targetTransmitBill['state'] == 0) {
  6375. doRealRemoteCallSaveTarget();
  6376. }else {
  6377. //执行工作流
  6378. doRemoteCallSaveTargetByProcess();
  6379. }
  6380. }
  6381. function doRealRemoteCallSaveTarget() {
  6382. var methodName = viewType == 'list' ? 'batchSaveTarget' : 'saveTarget';
  6383. var param = {
  6384. recordList : JSON.stringify(recordListObj),
  6385. indicatorList : JSON.stringify(indicatorListObj),
  6386. recordFieldArr : JSON.stringify(recordFieldArr),
  6387. indicatorFieldArr : JSON.stringify(indicatorFieldArr),
  6388. toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  6389. evaObj : evaObj,
  6390. periodId : periodId
  6391. }
  6392. if(viewType == 'list'){
  6393. param = {
  6394. targetParam: JSON.stringify(targetParam),
  6395. toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  6396. evaObj : evaObj,
  6397. periodId : periodId
  6398. }
  6399. if(_noPassVerifyArr.length > 0){
  6400. shr.showWarning({
  6401. message: _noPassVerifyArr[0].showName+':'+_noPassVerifyArr[0].errortext,
  6402. hideAfter: 5
  6403. });
  6404. return false;
  6405. }
  6406. }
  6407. that.selfRemoteCall({
  6408. method : methodName,
  6409. param : param,
  6410. async : false,
  6411. type:"post",
  6412. success : function(data) {
  6413. if(data != null && data.result == 'SUCCESS'){
  6414. //3.指标保存成功后将评估对象的目标状态设置成已提交状态
  6415. that.selfRemoteCall({
  6416. method : "submitPersonalTarget",
  6417. param : {
  6418. scoringWay: scoringWay,
  6419. evaObj : evaObj,
  6420. periodId : periodId,
  6421. submitType : "201"
  6422. },
  6423. async : false,
  6424. success : function(data) {
  6425. if(data != null && data.detectedResult == '200' && data.submitResult == '200'){
  6426. //加载考核规则、考核计划、考核模式
  6427. that.selfRemoteCall({
  6428. method : "compositeEvaObjectData",
  6429. param : {
  6430. evaObj : evaObj,
  6431. billId: billId
  6432. },
  6433. async : false,
  6434. success : function(data) {
  6435. if(data != null){
  6436. globalIndicatorData = data;
  6437. that.initGoalsItems(data); //重新生成左侧指标列表
  6438. }
  6439. //BT1357754 如果是个人填报页面,提交成功跳转到待办页面
  6440. if(pageType == '0') {
  6441. //组织考核-yien
  6442. //BT1440372
  6443. var _uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.myTargetFill.list';
  6444. if(isOrg == '1') {
  6445. _uipk = 'com.kingdee.shr.perfweb.app.base.evalplan.myTargetFill4Org.list';
  6446. }
  6447. that.reloadPage({
  6448. uipk: _uipk,
  6449. period: periodId,
  6450. perfshruicode: shr.getUrlRequestParam('shruicode') //yien 表单越权
  6451. });
  6452. }
  6453. }
  6454. });
  6455. // location.reload();
  6456. var selectid = $('.workMate.current').attr('workerid');
  6457. $('#selectionList').utilsSelectionList('reloadList',{selectId: selectid});
  6458. shr.showInfo({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_42});
  6459. }else{
  6460. shr.showError({message : data.detectedResult,hideAfter : 5});
  6461. }
  6462. }
  6463. });
  6464. }else{
  6465. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_109,hideAfter : 5});
  6466. }
  6467. }
  6468. });
  6469. }
  6470. /**
  6471. * 执行下达
  6472. */
  6473. function doRemoteCallGetEvaObjTargetStatus() {
  6474. that.selfRemoteCall({
  6475. method : "getEvaObjTargetStatus",
  6476. param : {
  6477. evaObj : evaObj
  6478. },
  6479. async : false,
  6480. type:"post",
  6481. success : function(data) {
  6482. if(data) {
  6483. var _targetStatus = data.targetStatus;
  6484. if(_targetStatus == 3){ //个人目标已下达
  6485. shr.showWarning({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_27});
  6486. return false;
  6487. } else {
  6488. $('.scoreMenuList li').click();
  6489. if(!canSaveVerify()){
  6490. return false;
  6491. }else{
  6492. //模拟提交操作,如果提交成功,则直接调用下达
  6493. var isDoTransmit = doSubmitForTransmit(_targetStatus , indicatorUpdateObj);
  6494. if(isDoTransmit) {
  6495. doTransmit(_targetStatus , updateIndicatorNameObj);
  6496. }
  6497. }
  6498. }
  6499. }else {
  6500. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_30,hideAfter : 5});
  6501. return false;
  6502. }
  6503. }
  6504. });
  6505. }
  6506. /*
  6507. * 下达前执行的提交操作
  6508. * */
  6509. function doSubmitForTransmit(targetStatus , _indicatorUpdateObj){
  6510. //1.组装数据
  6511. var flag = that.assembleTargetData();
  6512. var ret = true;
  6513. if(!flag){
  6514. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_75,hideAfter : 5});
  6515. return false;
  6516. }else{
  6517. //2.保存指标和记录表
  6518. var _indicatorUpdateArr = [];
  6519. if(2 == targetStatus && _indicatorUpdateObj) {
  6520. //拼接指标的修改记录信息
  6521. //indicatorUpdateObj[indicatorId][fieldName] = {originVal : _fieldOriginVal , newVal : fieldValue , showName : _showName};
  6522. // updateIndicatorNameObj
  6523. for(var indicatorId in _indicatorUpdateObj) {
  6524. //获取指标名称
  6525. var _indicatorUpdateStr = '【'+ updateIndicatorNameObj[indicatorId] +'】:{';
  6526. //字段修改名称拼接
  6527. var _indicatorItem = _indicatorUpdateObj[indicatorId];
  6528. for(var fieldName in _indicatorItem) {
  6529. var _fieldItem = _indicatorItem[fieldName];
  6530. _indicatorUpdateStr += _fieldItem.showName + ":";
  6531. _indicatorUpdateStr += _fieldItem.originVal + ' '+
  6532. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_91+
  6533. ' ';
  6534. _indicatorUpdateStr += _fieldItem.newVal + ";";
  6535. }
  6536. _indicatorUpdateStr += "}";
  6537. _indicatorUpdateArr.push(_indicatorUpdateStr);
  6538. }
  6539. //拼接新增的指标
  6540. if(newIndicatorNameObj) {
  6541. var _indicatorUpdateStr = '';
  6542. for(var indicatorId in newIndicatorNameObj) {
  6543. _indicatorUpdateStr += newIndicatorNameObj[indicatorId] + ',';
  6544. }
  6545. if(_indicatorUpdateStr != '') {
  6546. _indicatorUpdateArr.push(
  6547. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_88 +
  6548. _indicatorUpdateStr
  6549. );
  6550. }
  6551. }
  6552. }
  6553. that.selfRemoteCall({
  6554. method : "saveTarget",
  6555. param : {
  6556. recordList : JSON.stringify(recordListObj),
  6557. indicatorList : JSON.stringify(indicatorListObj),
  6558. recordFieldArr : JSON.stringify(recordFieldArr),
  6559. indicatorFieldArr : JSON.stringify(indicatorFieldArr),
  6560. toDeleteIndicatorIds : toDeleteIndicatorIds.toString(),
  6561. evaObj : evaObj,
  6562. periodId : periodId,
  6563. indicatorUpdateObj: _indicatorUpdateArr.join(';') //指标修改的详细记录信息
  6564. },
  6565. async : false,
  6566. type:"post",
  6567. success : function(data) {
  6568. if(data != null && data.result == 'SUCCESS'){
  6569. if(2 == targetStatus) {
  6570. //已经提交的指标,保存成功之后,不再进行提交
  6571. ret = true;
  6572. }else {
  6573. //3.指标保存成功后将评估对象的目标状态设置成已提交状态
  6574. that.selfRemoteCall({
  6575. method : "submitPersonalTarget",
  6576. param : {
  6577. evaObj : evaObj,
  6578. periodId : periodId,
  6579. submitType : "301"
  6580. },
  6581. async : false,
  6582. success : function(data) {
  6583. if(data != null && data.detectedResult == '200' && data.submitResult == '200'){
  6584. ret = true;
  6585. }else{
  6586. //将提交替换成下达
  6587. shr.showError({
  6588. message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_85 +
  6589. data.detectedResult.replace(
  6590. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_76 ,
  6591. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_83
  6592. ),
  6593. hideAfter : 5});
  6594. ret = false;
  6595. }
  6596. }
  6597. });
  6598. }
  6599. }else{
  6600. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_109,hideAfter : 5});
  6601. ret = false;
  6602. }
  6603. }
  6604. });
  6605. }
  6606. return ret;
  6607. }
  6608. /**
  6609. * 执行下达
  6610. */
  6611. function doTransmit(_targetStatus , _updateIndicatorNameObj) {
  6612. //如果目标下达人在指标提交状态下进行修改,则记录修改记录
  6613. var _updateIndicatorNameArr = [];
  6614. if(_updateIndicatorNameObj) {
  6615. for(var item in _updateIndicatorNameObj) {
  6616. _updateIndicatorNameArr.push(_updateIndicatorNameObj[item]);
  6617. }
  6618. }
  6619. //拼接详细的指标修改信息
  6620. that.selfRemoteCall({
  6621. method : "transmit",
  6622. param : {
  6623. evaObj : evaObj,
  6624. period : periodId,
  6625. targetStatus : _targetStatus, //目标状态
  6626. updateIndicatorNameArr : _updateIndicatorNameArr.join(',') //被修改的指标名称
  6627. },
  6628. async : false,
  6629. type:"post",
  6630. success : function(data) {
  6631. if(data.successCount != 0 ){
  6632. shr.showInfo({
  6633. message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_84,
  6634. hideAfter : 5
  6635. });
  6636. sessionStorage.prevgoalsfillindex = $('.workMate.current').index();
  6637. // 都打回完了,返回列表页
  6638. if ($('.workerList').find('li').length == 1) {
  6639. goTransmitList();
  6640. } else {
  6641. //location.reload();
  6642. $('#selectionList').utilsSelectionList('reloadList', {fetchOthers: 1});
  6643. }
  6644. }else{
  6645. shr.showError({
  6646. message: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_85+ data.result[0].muitTipsMessage,
  6647. hideAfter : 5
  6648. });
  6649. }
  6650. }
  6651. });
  6652. }
  6653. // 返回下达列表页
  6654. function goTransmitList() {
  6655. var serviceId = shr.getUrlRequestParam("serviceId", window.parent.location.href);
  6656. var uipk = 'com.kingdee.shr.perfweb.app.teamPersonalTarget.core';
  6657. if(isOrg == "1") {
  6658. uipk = 'com.kingdee.shr.perfweb.app.teamPersonalTarget4Org.core';
  6659. }
  6660. that.reloadPage({
  6661. uipk: uipk,
  6662. serviceId: serviceId,
  6663. period: periodId,
  6664. isOrg: isOrg,
  6665. perfshruicode: shr.getUrlRequestParam('shruicode') //yien 表单越权
  6666. })
  6667. }
  6668. //单击其他地方下拉选择框隐藏
  6669. $(document).click(function(e){
  6670. if(!$(e.target).hasClass('instructions') && !$(e.target).hasClass('instructionsboxwrap') && $(e.target).closest('.instructionsboxwrap').length < 1){
  6671. $(".instructionsboxwrap").fadeOut();
  6672. }
  6673. });
  6674. //判断数组中是否已有指定字段name
  6675. function isExistInArr(name,arr){
  6676. for(var i=0; i<arr.length; i++){
  6677. if(name == arr[i]){
  6678. return true;
  6679. }
  6680. }
  6681. return false;
  6682. }
  6683. //输入框失去焦点后自动校验信息
  6684. function inputOnblur(_this){
  6685. var indicatorVal = $(_this).attr("indicator");
  6686. var nameVal = $(_this).attr("fname");
  6687. var msgShow = $("span[id='MSG_"+indicatorVal+nameVal+"']");
  6688. var fieldLenMsgSpan = $("span[msgId='MSG_"+nameVal+indicatorVal+"Itag0']");
  6689. fieldLenMsgSpan.hide();
  6690. var errObj = new Object();
  6691. errObj.indicator = indicatorVal;
  6692. errObj.name = nameVal;
  6693. var fieldVal = $(_this).val();
  6694. existInArrThenDelete(_noPassVerifyArr,errObj);
  6695. //校验指标编码
  6696. if(nameVal == 'FNUMBER'){
  6697. if(isEmpty(fieldVal)){
  6698. $(_this).focus();
  6699. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_112);
  6700. msgShow.show();
  6701. _noPassVerifyArr.push(errObj);
  6702. }else{
  6703. msgShow.hide();
  6704. }
  6705. }
  6706. //校验指标名称
  6707. if(nameVal == 'FNAME'){
  6708. if(isEmpty(fieldVal)){
  6709. $(_this).focus();
  6710. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_120);
  6711. msgShow.show();
  6712. _noPassVerifyArr.push(errObj);
  6713. }else{
  6714. $("li[numval='" +indicatorVal+ "']").find("div[name='liName']").text(fieldVal);
  6715. msgShow.hide();
  6716. }
  6717. }
  6718. //校验权重
  6719. if(nameVal == 'FWEIGHT'){
  6720. if(!isNumberVerify(fieldVal)){
  6721. $(_this).focus();
  6722. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_52);
  6723. msgShow.show();
  6724. existInArrThenDelete(_noPassVerifyArr,errObj);
  6725. _noPassVerifyArr.push(errObj);
  6726. }else{
  6727. //转换成数字类型,防止权重输入第一个数字为0的情况出现 yien_fan
  6728. if(fieldVal != '') {
  6729. fieldVal = Number(fieldVal);
  6730. }
  6731. $(_this).val(fieldVal);
  6732. var liWeightObj = $("li[numval='" +indicatorVal+ "']").find("div[name='liWeight']");
  6733. liWeightObj.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_66
  6734. +fieldVal+ '%');
  6735. liWeightObj.attr("weight",fieldVal);
  6736. msgShow.hide();
  6737. existInArrThenDelete(_noPassVerifyArr,errObj);
  6738. //BT1363381 动态计算区域权重
  6739. calcAndSetCurAreaWeight();
  6740. }
  6741. }
  6742. //校验权重
  6743. if(nameVal == 'FTARSCORE'){
  6744. if(!isNumberVerify(fieldVal)){
  6745. $(_this).focus();
  6746. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_52);
  6747. msgShow.show();
  6748. existInArrThenDelete(_noPassVerifyArr,errObj);
  6749. _noPassVerifyArr.push(errObj);
  6750. }else{
  6751. //转换成数字类型,防止权重输入第一个数字为0的情况出现 yien_fan
  6752. if(fieldVal != '') {
  6753. fieldVal = Number(fieldVal);
  6754. }
  6755. $(_this).val(fieldVal);
  6756. var liWeightObj = $("li[numval='" +indicatorVal+ "']").find("div[name='liWeight']");
  6757. liWeightObj.text(
  6758. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_17 +
  6759. fieldVal+
  6760. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_16);
  6761. liWeightObj.attr("weight",fieldVal);
  6762. msgShow.hide();
  6763. existInArrThenDelete(_noPassVerifyArr,errObj);
  6764. //BT1363381 动态计算区域权重
  6765. calcAndSetCurAreaWeight();
  6766. }
  6767. }
  6768. //校验关键举措编码
  6769. // if(nameVal == 'FKEYCODE'){
  6770. // if(isEmpty(fieldVal)){
  6771. // $(_this).focus();
  6772. // msgShow.text('校验关键举措编码为空!');
  6773. // msgShow.show();
  6774. // _noPassVerifyArr.push(errObj);
  6775. // }else{
  6776. // msgShow.hide();
  6777. // }
  6778. // }
  6779. //校验关键举措
  6780. if(nameVal == 'FKEYITEM'){
  6781. if(isEmpty(fieldVal)){
  6782. $(_this).focus();
  6783. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_87);
  6784. msgShow.show();
  6785. _noPassVerifyArr.push(errObj);
  6786. }else{
  6787. $("li[numval='" +indicatorVal+ "']").find("div[name='liName']").text(fieldVal);
  6788. msgShow.hide();
  6789. }
  6790. }
  6791. //校验完成时间
  6792. if(nameVal == 'FCOMPLETETIME'){
  6793. var dateReg = /^(\d{4})-(\d{2})-(\d{2})$/;
  6794. if(isEmpty(fieldVal) || !fieldVal.match(dateReg) || !(new Date(fieldVal).getDate()==fieldVal.substring(fieldVal.length-2))){
  6795. //$(_this).focus();
  6796. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_57);
  6797. msgShow.show();
  6798. _noPassVerifyArr.push(errObj);
  6799. }else{
  6800. msgShow.hide();
  6801. }
  6802. }
  6803. //校验目标值
  6804. if(nameVal == 'FTARGETVALUE'){
  6805. if(!isNumberVerify(fieldVal , 2)){
  6806. $(_this).focus();
  6807. //msgShow.text("请输入数字且最多不超过十位小数!");
  6808. msgShow.text(jsBizMultLan.perfweb_achivementDataList_20220818ht_01);
  6809. msgShow.show();
  6810. _noPassVerifyArr.push(errObj);
  6811. }else {
  6812. //转换成数字类型,防止权重输入第一个数字为0的情况出现 yien_fan
  6813. if(fieldVal != '') {
  6814. fieldVal = Number(fieldVal);
  6815. }
  6816. if(fieldVal > 999999999.99){
  6817. msgShow.text(shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_55,[999999999.99]));
  6818. msgShow.show();
  6819. _noPassVerifyArr.push(errObj);
  6820. }else{
  6821. $(_this).val(fieldVal);
  6822. msgShow.hide();
  6823. }
  6824. }
  6825. }
  6826. }
  6827. //textArea去焦点后自动校验信息
  6828. function textAreaOnblur(_this){
  6829. var id = $(_this).attr("id");
  6830. var nameVal = $(_this).attr("fname");
  6831. var fieldLenMsgSpan = $("span[msgId='MSG_"+id+"']");
  6832. fieldLenMsgSpan.hide();
  6833. $(_this).attr('title',$(_this).val());
  6834. }
  6835. /**
  6836. * 判断是否保留小数点后两位
  6837. * @param _fieldVal
  6838. * @param _type 1:整数或带两位小数;undefined/0:整数或带两位小数;2十位小数之内
  6839. * @returns {boolean}
  6840. */
  6841. function isNumberVerify(_fieldVal , _type) {
  6842. var reg = /^\d+(\.\d{1,2})?$/;
  6843. if(1 == _type) {
  6844. reg = /^(-)?\d+(\.\d{1,2})?$/;
  6845. }
  6846. if(2 == _type) {
  6847. reg = /^(-)?\d+(\.\d{1,10})?$/;
  6848. }
  6849. if(_fieldVal) {
  6850. return reg.test(_fieldVal);
  6851. }
  6852. return true;
  6853. }
  6854. //数组中存在某个对象则删除
  6855. function existInArrThenDelete(arr,obj){
  6856. for(var i=0; i<arr.length; i++){
  6857. if(arr[i].indicator == obj.indicator && arr[i].name == obj.name){
  6858. arr.splice(i,1);
  6859. }
  6860. }
  6861. return;
  6862. }
  6863. //判断值是否为空
  6864. function isEmpty(fieldVal){
  6865. if(fieldVal == '' || fieldVal == undefined){
  6866. return true;
  6867. }
  6868. return false;
  6869. }
  6870. //校验页上所有的指标类型是否为空
  6871. function verifyIndicatorType(){
  6872. var indicatorTypeDom = $("input[name ^='indicatorType']");
  6873. //_indicatorTypeNoPassVerifyArr.splice(0,_indicatorTypeNoPassVerifyArr.length); //清空数组
  6874. for(var i=0; i<indicatorTypeDom.length; i++){
  6875. var _this = $("input[name ^='indicatorType']")[i];
  6876. var indicatorType = $(_this).val();
  6877. var indicator = $(_this).attr("indicator");
  6878. var indicatorObjName = 'indicatorType' +indicator+ 'Itag0';
  6879. var indicatorObj = $("input[name='" +indicatorObjName+ "']");
  6880. var errObj = new Object();
  6881. errObj.indicator = indicator;
  6882. errObj.name = 'indicatorType';
  6883. existInArrThenDelete(_indicatorTypeNoPassVerifyArr,errObj);
  6884. var msgShow = $("span[id='MSG_indicatorType"+indicator+"Itag0']");
  6885. if(isEmpty(indicatorType)){
  6886. existInArrThenDelete(_indicatorTypeNoPassVerifyArr,errObj);
  6887. _indicatorTypeNoPassVerifyArr.push(errObj);
  6888. msgShow.text(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_115);
  6889. msgShow.show();
  6890. // $(indicatorObj).attr("style","border : 1px solid red");
  6891. }else{
  6892. // $(indicatorObj).attr("style","border : 1px solid #ccc");
  6893. msgShow.hide();
  6894. }
  6895. }
  6896. }
  6897. function canSaveVerify(optionType){
  6898. var flag = that.assembleTargetData(optionType);
  6899. // if(!flag){
  6900. // // shr.showError({message : '数据校验不通过,请检查!',hideAfter : 5});
  6901. // shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_i18n_b10_15626131368_8,hideAfter : 5});
  6902. // return false;
  6903. // }
  6904. return flag;
  6905. // golbalVerify(); //全局字段合法性校验
  6906. // verifyIndicatorType(); //指标类型字段为空校验
  6907. // //将校验不通过的数据从待删除的数据中除去
  6908. // var noPassVerifyArrLen = _noPassVerifyArr.length;
  6909. // for(var i=noPassVerifyArrLen-1; i>=0; i--){
  6910. // if($.inArray(_noPassVerifyArr[i].indicator,toDeleteIndicatorIds) != -1){
  6911. // _noPassVerifyArr.splice(i,1);
  6912. // }
  6913. // }
  6914. // var indiTypeNoPassArrLen = _indicatorTypeNoPassVerifyArr.length;
  6915. // for(var j=indiTypeNoPassArrLen-1; j>=0; j--){
  6916. // if($.inArray(_indicatorTypeNoPassVerifyArr[j].indicator,toDeleteIndicatorIds) != -1){
  6917. // _indicatorTypeNoPassVerifyArr.splice(j,1);
  6918. // }
  6919. // }
  6920. //
  6921. // if(_noPassVerifyArr.length>0 || _indicatorTypeNoPassVerifyArr.length>0){
  6922. // if(_noPassVerifyArr.length>0){
  6923. // $("li[numval='" +_noPassVerifyArr[0].indicator+ "']").click();
  6924. // var inputObj = $("input[indicator='" +_noPassVerifyArr[0].indicator+"'][fname='" +_noPassVerifyArr[0].name+ "']");
  6925. // $(inputObj).focus();
  6926. // inputOnblur(inputObj);
  6927. // }else{
  6928. // $("li[numval='" +_indicatorTypeNoPassVerifyArr[0].indicator+ "']").click();
  6929. // var indicator = _indicatorTypeNoPassVerifyArr[0].indicator;
  6930. // var indicatorObjName = 'indicatorType' +indicator+ 'Itag0';
  6931. // var indicatorObj = $("input[name='" +indicatorObjName+ "']");
  6932. // $(indicatorObj).focus();
  6933. // $(indicatorObj).blur();
  6934. // }
  6935. // shr.showWarning({message : '数据校验不通过,请检查!',hideAfter : 5});
  6936. // return false;
  6937. // }
  6938. // return true;
  6939. }
  6940. /*
  6941. * 对指标编码、指标名称、权重、关键举措三个字段进行全局校验
  6942. * */
  6943. function golbalVerify(){
  6944. //校验指标编码
  6945. commonVerify('FNUMBER');
  6946. //校验指标名称
  6947. commonVerify('FNAME');
  6948. //校验关键举措编码
  6949. // commonVerify('FKEYCODE');
  6950. //校验关键举措
  6951. commonVerify('FKEYITEM');
  6952. //权重校验
  6953. weightVerify();
  6954. }
  6955. /*
  6956. * 字段为空校验(指标编码、指标名称、关键举措)
  6957. * */
  6958. function commonVerify(fname){
  6959. var baseDom = $($('input[fname="' +fname+ '"]'));
  6960. for(var i=0; i<baseDom.length; i++){
  6961. var errObj = new Object();
  6962. var _this = $(baseDom[i]);
  6963. var _thisVal = _this.val();
  6964. errObj.indicator = _this.attr("indicator");
  6965. errObj.name = fname;
  6966. //补丁10 是否必填-yien
  6967. var _isRequired = _this.data('isrequired');
  6968. var _isDisabled = _this.attr('disabled');
  6969. if(_isRequired == '1' && _isDisabled != 'disabled' && isEmpty(_thisVal)){
  6970. existInArrThenDelete(_noPassVerifyArr,errObj);
  6971. _noPassVerifyArr.push(errObj);
  6972. }else{
  6973. existInArrThenDelete(_noPassVerifyArr,errObj);
  6974. }
  6975. }
  6976. }
  6977. /*
  6978. * 权重校验
  6979. * */
  6980. function weightVerify(){
  6981. var reg = /^\d+(\.\d{1,2})?$/;
  6982. var baseDom = $($("input[fname='FWEIGHT']"));
  6983. var errObj = new Object();
  6984. for(var i=0; i<baseDom.length; i++){
  6985. var _this = $(baseDom[i]);
  6986. var _thisVal = _this.val();
  6987. errObj.indicator = _this.attr("indicator");
  6988. errObj.name = 'FWEIGHT';
  6989. //yien 增加否决项判断
  6990. var isRejection = _this.attr('isRejection');
  6991. if(isRejection != 1 && (isEmpty(_thisVal) || !reg.test(_thisVal))){
  6992. existInArrThenDelete(_noPassVerifyArr,errObj);
  6993. _noPassVerifyArr.push(errObj);
  6994. }else{
  6995. existInArrThenDelete(_noPassVerifyArr,errObj);
  6996. }
  6997. }
  6998. }
  6999. //获取自定义过滤条件
  7000. function getFilterItems(operate){
  7001. var rows = $("#indicatorPageSelect").val();
  7002. var page = $("#indicatorCurPage").val().trim();
  7003. if(isNaN(parseInt(page))){
  7004. shr.showError({message : jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_58,hideAfter : 5});
  7005. }else{
  7006. if('nextPage' == operate){//下一页
  7007. page = parseInt(page) + 1;
  7008. }else if('prevPage' == operate){//上一页
  7009. page = parseInt(page) - 1;
  7010. }else{
  7011. page = 1;
  7012. }
  7013. }
  7014. var indecatorType = null;
  7015. var $indiType = $('#indiType').shrPromptBox("getValue");
  7016. if ($indiType) {
  7017. indecatorType = $indiType.id;
  7018. }
  7019. var filterItems = "{rows : '" +rows+ "'; page : '" +page+ "'; sord:'DESC';indecatorType:'" +indecatorType+"'}";
  7020. return filterItems;
  7021. }
  7022. /**
  7023. * 初始化自定义快速搜索
  7024. * @param options
  7025. */
  7026. var referencePIParam = {gridId: 'PIall' , rowsNum: 10 , pageNum: 1 , filterItems:''}; //引用指标库查询条件
  7027. var referencePIFilterItems = ""; //快速搜索查询条件
  7028. var existingPIallParam = {rowsNum: 10 , pageNum: 1 , period: '' , useMyOwnTarget: useMyOwnTargetVal}; //已有指标查询条件
  7029. var existingPIallFilterItems = "";
  7030. function initCustomQuickSearcher(options) {
  7031. if(typeof options != "undefined" && options && options['searcherId']) {
  7032. var searcherId = options['searcherId'];
  7033. if(typeof options.fields == 'undefined' || options.fields == '') {
  7034. //组织考核-yien
  7035. if(isOrg == '1') {
  7036. options.fields = [
  7037. {columnName: 'name', label: $.perfwebI18n.tableConstant.msg7},
  7038. {columnName: 'number', label: $.perfwebI18n.tableConstant.msg6}
  7039. ];
  7040. }else {
  7041. options.fields = [
  7042. {
  7043. columnName:'name',
  7044. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_39
  7045. },
  7046. {
  7047. columnName:'number',
  7048. label:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_3
  7049. }
  7050. ];
  7051. }
  7052. }
  7053. $('#' + searcherId).shrSearchBar({fields : options.fields});
  7054. //高级搜索事件
  7055. $("#"+ searcherId +" i[class='icon-search icon-gray']").click(function(){
  7056. //触发表格重新加载
  7057. doCustomQuickSearch(options);
  7058. });
  7059. $('#'+ searcherId).bind('keyup', function(event) {
  7060. if (event.keyCode == "13") {
  7061. //触发表格重新加载
  7062. doCustomQuickSearch(options);
  7063. }
  7064. });
  7065. }
  7066. }
  7067. /**
  7068. * 初始化自定义翻页事件
  7069. */
  7070. function initCustomPageClick(pageId , gridId){
  7071. if(typeof pageId != "undefined" && pageId != '' && typeof gridId != "undefined" && gridId != '') {
  7072. var $pageNext = $('#'+ pageId +'PageNext');
  7073. var $pagePrev = $('#' + pageId + 'PagePrev');
  7074. var $curPage = $('#' + pageId + 'CurPage');
  7075. var $pageTotal = $('#' + pageId + 'PageTotal');
  7076. var $pageNumSelect = $('#' + pageId + 'PageSelect')
  7077. if(typeof $pageNext != "undefined" && $pageNext.length > 0) {
  7078. $pageNext.die().live('click',function(){
  7079. var totalPage = parseInt($pageTotal.html());
  7080. var page = parseInt($curPage.val());
  7081. if(page + 1 > totalPage){
  7082. return;
  7083. }else{
  7084. $curPage.val(page + 1);
  7085. page = page + 1;
  7086. }
  7087. reloadCustomSearcherGrid({gridId: gridId,pageNum : page});
  7088. });
  7089. }
  7090. if(typeof $pagePrev != "undefined" && $pagePrev.length > 0) {
  7091. $pagePrev.die().live('click',function(){
  7092. var page = parseInt($curPage.val());
  7093. if(page - 1 < 1 ){
  7094. return;
  7095. }else{
  7096. $curPage.val(page - 1);
  7097. page = page - 1;
  7098. }
  7099. reloadCustomSearcherGrid({gridId:gridId,pageNum : page});
  7100. });
  7101. }
  7102. //每页显示记录数下拉事件
  7103. if(typeof $pageNumSelect != "undefined" && $pageNumSelect.length > 0) {
  7104. $pageNumSelect.live('change',function(){
  7105. var numval = $(this).val();
  7106. reloadCustomSearcherGrid({gridId : gridId ,rowsNum : numval , pageNum : 1})
  7107. });
  7108. }
  7109. }
  7110. }
  7111. /**
  7112. * 获取自定义快速搜索条件
  7113. * @param options
  7114. */
  7115. function doCustomQuickSearch(options) {
  7116. if(typeof options != "undefined" && options.searcherId && options.gridId) {
  7117. var searcherId = options.searcherId;
  7118. var gridId = options.gridId;
  7119. var filter = $('#'+ searcherId).shrSearchBar('option', 'filterView');
  7120. if(filter != null && filter.filterItems){
  7121. filter = filter.filterItems;
  7122. }else{
  7123. filter = "";
  7124. }
  7125. if(gridId == 'existingPIall_2') {
  7126. existingPIallFilterItems = filter;
  7127. }else {
  7128. referencePIFilterItems = filter;
  7129. }
  7130. reloadCustomSearcherGrid({gridId : gridId , pageNum: 1});
  7131. }
  7132. }
  7133. /**
  7134. * 重新加载自定义搜索列表
  7135. * @param options
  7136. */
  7137. function reloadCustomSearcherGrid(options) {
  7138. if(typeof options != "undefined" && options.gridId) {
  7139. var gridId = options.gridId; //关联列表id
  7140. var postParam = {}; //重新加载列表查询参数
  7141. var curPageId = ''; //当前页码元素id
  7142. var filterItems = ''; //自定义查询条件
  7143. var filterItemsName = 'filterItems'; //自定义查询条件键
  7144. if(gridId == 'existingPIall_2') {
  7145. curPageId = 'hadIndicator_2CurPage';
  7146. postParam = existingPIallParam;
  7147. filterItems = existingPIallFilterItems;
  7148. }else if(gridId == 'existingOrgPI') {
  7149. //补丁11 目标对齐-yien
  7150. curPageId = 'hadIndicatorOrgCurPage';
  7151. postParam = {
  7152. filterOrg : options.filterOrg
  7153. }
  7154. }
  7155. else {
  7156. curPageId = 'indicatorCurPage';
  7157. postParam = referencePIParam;
  7158. filterItems = referencePIFilterItems;
  7159. filterItemsName = 'fastFilterItems';
  7160. }
  7161. $.extend(postParam , options);
  7162. if(gridId == 'existingPIall_2') {
  7163. if(!postParam['period']) {
  7164. return;
  7165. }
  7166. }
  7167. //返写当前页码
  7168. $('#' + curPageId).val(postParam['pageNum']);
  7169. $('#' + gridId)
  7170. .jqGrid("option",filterItemsName, filterItems)
  7171. .jqGrid('setGridParam',{
  7172. datatype:'json',
  7173. postData: postParam
  7174. })
  7175. .jqGrid("reloadGrid");
  7176. }
  7177. }
  7178. //引用已有指标仅显示我的指标
  7179. function useMyOwnTarget() {
  7180. //组织考核-yien
  7181. var useMyOwnTarget = '1';
  7182. if(isOrg == '1') {
  7183. useMyOwnTarget = '0';
  7184. }else {
  7185. useMyOwnTarget = $("#useMyOwnTarget").shrCheckbox('getValue') ? "1" : "0";
  7186. }
  7187. reloadCustomSearcherGrid({gridId:'existingPIall_2',pageNum : 1 , useMyOwnTarget : useMyOwnTarget})
  7188. }
  7189. /**
  7190. * 获取校验不通过的定量业绩指标
  7191. */
  7192. function getUnvalidPerfAchievement() {
  7193. //组装要保存的指标数据
  7194. // var indicatorDom = $(".scoreContentbox");
  7195. var indicatorDom = $("div[evaObj='"+evaObj+"']");
  7196. var unvalidArr = [];
  7197. for(var i=0; i<indicatorDom.length ; i++){
  7198. var scoreContentbox = $(indicatorDom[i]);
  7199. var areaType = scoreContentbox.attr("areatype");
  7200. if(areaType == '200'){//评估表单
  7201. var fid = scoreContentbox.attr("id");
  7202. var valObject = {'FSCORINGFORMULA':'' , 'FQUALIORRATION':'' , 'FTARGETVALUE':'' , 'FNAME':''};
  7203. fid = fid.substr(0,fid.length-5);
  7204. var rowObj = $(scoreContentbox).find(".row1");
  7205. for(var j=0 ; j<rowObj.length; j++){
  7206. var labelObj = $(rowObj[j]).find("label");
  7207. if(labelObj.length >0){
  7208. var fieldName = labelObj.attr("name");
  7209. var fieldValue = '';
  7210. if(fieldName == 'FSCORINGFORMULA'
  7211. || fieldName == 'FQUALIORRATION'
  7212. ) {
  7213. //评分公式、定性定量
  7214. fieldValue = $(rowObj[j]).find("input[id='" + fieldName +fid+ "Itag0_el']").val();
  7215. valObject[fieldName] = fieldValue;
  7216. }else if(fieldName == 'FNAME' || fieldName == 'FTARGETVALUE') {
  7217. //指标名称、目标值
  7218. var valueObj = $(rowObj[j]).find(".textOverflow");
  7219. fieldValue = valueObj.val();
  7220. valObject[fieldName] = fieldValue;
  7221. }
  7222. }
  7223. }
  7224. //判断定量指标是否维护 评分公式和目标值
  7225. if(valObject['FQUALIORRATION'] == 1) {
  7226. if(valObject['FSCORINGFORMULA'] == '' || valObject['FTARGETVALUE'] == '') {
  7227. unvalidArr.push(valObject['FNAME']);
  7228. }
  7229. }
  7230. }
  7231. }
  7232. return unvalidArr;
  7233. }
  7234. function addCellAttr(rowId, val, rawObject, cm, rdata) {
  7235. return "style='color:#0088cc' onclick=setTargetNodeHandler()";
  7236. }
  7237. function setTargetNodeHandler() {
  7238. var eventObj = $(event.target);
  7239. var wfNodeId = eventObj.attr("aria-describedby").split("_")[1].split("#")[0];
  7240. var targetId = $(eventObj.parent().find("td")[0]).attr("title");
  7241. that.createDialogDiv(targetId, wfNodeId, event);
  7242. }
  7243. /**
  7244. * 处理内容修改事件
  7245. * @param tagId
  7246. */
  7247. function handlerTagChange(tagId) {
  7248. // var $tag = $('#' + tagId);
  7249. var $tag = $('input[id="'+ tagId +'"]').length > 0 ?$('input[id="'+ tagId +'"]'): $('textarea[id="'+ tagId +'"]');
  7250. //yien 增加安全判断
  7251. if($tag.length == 0) {
  7252. return false;
  7253. }
  7254. var objVal = $tag.val();
  7255. var msgShow = $("span[id='WHOLECOMMENT']");
  7256. var errObj = new Object();
  7257. var commentLen = objVal && objVal.length;
  7258. msgShow.text(shr.formatMsg(jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_48,[2000,commentLen]));
  7259. msgShow.show();
  7260. $tag.attr('title',objVal);
  7261. var indicatorId4Tag = $tag.attr('indicatorId');
  7262. if(indicatorId4Tag) {
  7263. var indicatorId = indicatorId4Tag.replace('Itag0' , '');
  7264. var fieldName = $tag.attr('fname');
  7265. //获取修改之后的值
  7266. var fieldValue = $tag.val();
  7267. if(indicatorOriginObj[evaObj]) {
  7268. var _originIndicator = indicatorOriginObj[evaObj][indicatorId];
  7269. var _fname = '';
  7270. if(_originIndicator) {
  7271. //指标有可能被修改
  7272. var _fieldOriginVal = _originIndicator[fieldName];
  7273. var _showName = _originIndicator[fieldName + '-SHOWNAME'];
  7274. if(_fieldOriginVal == undefined) {
  7275. _fieldOriginVal = '';
  7276. }
  7277. if(fieldValue != _fieldOriginVal) {
  7278. //指标内容被修改,保持指标名称
  7279. _fname = _originIndicator['FNAME'];
  7280. //记录修改详情
  7281. if(!indicatorUpdateObj[indicatorId]) {
  7282. indicatorUpdateObj[indicatorId] = {};
  7283. }
  7284. //评分公式单独处理
  7285. if(_showName == undefined && fieldName == 'FSCORINGFORMULA') {
  7286. _showName = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_45;
  7287. }
  7288. //目标分值单独处理
  7289. if( fieldName == 'FTARSCORE') {
  7290. _showName = jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_41;
  7291. }
  7292. indicatorUpdateObj[indicatorId][fieldName] = {originVal : _fieldOriginVal , newVal : fieldValue , showName : _showName};
  7293. updateIndicatorNameObj[indicatorId] = _fname;
  7294. }else {
  7295. //移除该字段的修改日志记录
  7296. if(indicatorUpdateObj[indicatorId]) {
  7297. delete indicatorUpdateObj[indicatorId][fieldName];
  7298. }
  7299. }
  7300. }else {
  7301. //新的指标,获取新的指标名称,并保存
  7302. // _fname = $('#FNAME' + indicatorId4Tag).val();
  7303. _fname = $('input[id="FNAME'+ indicatorId4Tag +'"]').val();
  7304. //保存到新增的指标修改对象
  7305. newIndicatorNameObj[indicatorId] = _fname;
  7306. updateIndicatorNameObj[indicatorId] = _fname;
  7307. }
  7308. }
  7309. }
  7310. }
  7311. /**
  7312. * 初始化指标修改日志信息
  7313. * @param evaObj
  7314. */
  7315. function initUpdateIndicatorLog(evaObj) {
  7316. //获取当前员工的编码
  7317. if(!indicatorOriginObj[evaObj]) {
  7318. //如果该员工信息不存在,则将indicatorOriginVal进行清空,保证只保留当前员工的指标信息
  7319. updateIndicatorNameObj = {}; //被修改的指标名称集合
  7320. indicatorUpdateObj = {}; //指标修改详情集合
  7321. indicatorOriginObj = {}; //原指标初始值
  7322. newIndicatorNameObj = {}; //新增的指标名称集合
  7323. var _indicatorObj = {};
  7324. //获取评估指标信息
  7325. var _evaAreaList = globalIndicatorData.rows.evaAreaList;
  7326. var _isExistIndicator = false;
  7327. _evaAreaList.forEach(function(item , i){
  7328. if(item.areaType == '200') {
  7329. var _evaIndicatorList = item.evaIndicatorList;
  7330. //保存表单字段的信息
  7331. var _fieldFormList = item.fieldList;
  7332. var _fieldFormObj = {};
  7333. _fieldFormList.forEach(function(field , index){
  7334. _fieldFormObj[field.colName] = field.showName;
  7335. });
  7336. _evaIndicatorList.forEach(function(indicator , index){
  7337. var _indicatorId = indicator.FID;
  7338. if(_indicatorId) {
  7339. //遍历每一个直接对象
  7340. _isExistIndicator = true;
  7341. var _fieldObj = {};
  7342. for(var fieldName in indicator) {
  7343. var _fieldValue = indicator[fieldName];
  7344. //需要特殊处理评分公式、指标类型
  7345. if(fieldName == 'FINDECATORTYPE' || fieldName == 'FSCORINGFORMULA') {
  7346. _fieldValue = indicator[fieldName].name;
  7347. }else if(fieldName == 'FISVISIBLE') {
  7348. //可见性
  7349. _fieldValue = _fieldValue == 1 ?
  7350. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_35 :
  7351. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_4;
  7352. }else if(fieldName == 'FQUALIORRATION') {
  7353. //定性定量
  7354. _fieldValue = _fieldValue == 1 ?
  7355. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_13 :
  7356. jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_14;
  7357. }else if(fieldName == 'FUPDATEDATE' || fieldName == 'FPLANEDDATE' || fieldName == 'FCOMPLETETIME') {
  7358. //需要特殊处理日期
  7359. _fieldValue = _fieldValue.replace(' 00:00:00.0' , '');
  7360. }
  7361. _fieldObj[fieldName] = _fieldValue;
  7362. _fieldObj[fieldName+'-SHOWNAME'] = _fieldFormObj[fieldName];
  7363. }
  7364. //增加字段在表单中的显示名称
  7365. _indicatorObj[_indicatorId] = _fieldObj;
  7366. }
  7367. });
  7368. }
  7369. });
  7370. if(_isExistIndicator) {
  7371. indicatorOriginObj[evaObj] = _indicatorObj;
  7372. }
  7373. }
  7374. }
  7375. /*
  7376. * 加载数据
  7377. */
  7378. function LoadingSelectData(id,data){
  7379. var personArr = data;
  7380. if(personArr != null) {
  7381. for(var i=0;i < personArr.length;i++) {
  7382. $("#"+id).jqGrid('delRowData',personArr[i].id);
  7383. $("#"+id).jqGrid('addRowData',personArr[i].id,personArr[i]);
  7384. }
  7385. }
  7386. }
  7387. function getSelectDate(gridid,isAll,ids){
  7388. var rowList = new Array();
  7389. //获取多选到的id集合
  7390. if(isAll=="NO_ALL"){
  7391. var row = $('#' + gridid).jqGrid('getRowData', ids);
  7392. row['id'] = ids;
  7393. rowList.push(row);
  7394. return rowList;
  7395. }
  7396. //遍历访问这个集合
  7397. $(ids).each(function (index, id){
  7398. //由id获得对应数据行
  7399. var row = $('#' + gridid).jqGrid('getRowData', id);
  7400. row['id'] = id;
  7401. rowList.push(row);
  7402. })
  7403. return rowList;
  7404. }
  7405. /*
  7406. * 加载数据
  7407. */
  7408. function LoadingRemovSelectData(id,data){
  7409. var personArr = data;
  7410. if(personArr != null) {
  7411. for(var i=0;i < personArr.length;i++) {
  7412. $("#"+id).jqGrid('delRowData',personArr[i].id);
  7413. }
  7414. //$("#"+id).trigger("reloadGrid");
  7415. }
  7416. }
  7417. /**
  7418. * 计算并设置当前区域的权重
  7419. */
  7420. function calcAndSetCurAreaWeight() {
  7421. var $currentMenu = $(".currentMenu:eq(0)");
  7422. var numberReg = /^\d+(\.\d{1,2})?$/;
  7423. var areaWeight = Number(0);
  7424. if($currentMenu.length > 0) {
  7425. //保存当前指标的权重
  7426. var $currMenuWeight = $currentMenu.find('div[name="liWeight"]:eq(0)');
  7427. if($currMenuWeight.length > 0) {
  7428. var _weight = $currMenuWeight.attr('weight');
  7429. if(numberReg.test(_weight)) {
  7430. areaWeight += Number(_weight);
  7431. }
  7432. }
  7433. //计算同级的指标
  7434. $currentMenu.siblings('li').each(function(){
  7435. var $sibingsWeight = $(this).find('div[name="liWeight"]:eq(0)');
  7436. if($sibingsWeight.length > 0) {
  7437. var _sibingsWeight = $sibingsWeight.attr('weight');
  7438. if(numberReg.test(_sibingsWeight)) {
  7439. areaWeight += Number(_sibingsWeight);
  7440. }
  7441. }
  7442. });
  7443. //设置区域权重
  7444. var $areaWeight = $currentMenu.parent(".scoreMenuList:eq(0)").siblings('.menuTitle:eq(0)').find('#areaWeight');
  7445. if($areaWeight.length == 0) {
  7446. //查询记录表区域
  7447. $areaWeight = $currentMenu.parent(".scoreMenuList:eq(0)").siblings('.menuTitle:eq(0)').find('#recordAreaWeight')
  7448. }
  7449. if($areaWeight.length > 0) {
  7450. $areaWeight.html(areaWeight.toFixed(2));
  7451. $areaWeight.attr('areaweight' , areaWeight.toFixed(2));
  7452. }
  7453. }
  7454. calcAndSetCurAreaWeightAll();
  7455. return areaWeight.toFixed(2);
  7456. }
  7457. /**
  7458. * 计算所有的区域权重(分值)
  7459. * @returns {string}
  7460. */
  7461. function calcAndSetCurAreaWeightAll() {
  7462. var $scoreMenu = $(".scoreMenu");
  7463. $scoreMenu.each(function(){
  7464. var numberReg = /^\d+(\.\d{1,2})?$/;
  7465. var areaWeight = Number(0);
  7466. //计算同级的指标
  7467. $(this).find('li').each(function () {
  7468. var $sibingsWeight = $(this).find('div[name="liWeight"]:eq(0)');
  7469. if ($sibingsWeight.length > 0) {
  7470. var _sibingsWeight = $sibingsWeight.attr('weight');
  7471. if (numberReg.test(_sibingsWeight)) {
  7472. areaWeight += Number(_sibingsWeight);
  7473. }
  7474. }
  7475. });
  7476. //设置区域权重partGrade
  7477. var $areaWeight = $(this).find('[areaweight]');
  7478. if ($areaWeight.length > 0) {
  7479. $areaWeight.html(areaWeight.toFixed(2));
  7480. $areaWeight.attr('areaweight', areaWeight.toFixed(2));
  7481. }
  7482. });
  7483. }
  7484. function editGrader(_self,rowid, iCol, e, isNormalEvalu,serviceId, nodeHandlerParam){
  7485. $('#editNodeHandlerDiv').remove();
  7486. // 未生成dialog
  7487. var editNodeHandlerDiv = $('<div id="editNodeHandlerDiv"></div>').appendTo($('body'));
  7488. editNodeHandlerDiv.dialog({
  7489. modal: true,
  7490. title: jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_90,
  7491. width: 650,
  7492. minWidth: 650,
  7493. height: 430,
  7494. minHeight: 430,
  7495. open: function (event, ui) {
  7496. document.getElementById("operationDialog").contentWindow.dialogOpenEvent(serviceId,$('#editNodeHandlerDiv'), nodeHandlerParam);
  7497. },
  7498. close: function (event, ui) {
  7499. editNodeHandlerDiv.empty();
  7500. },
  7501. buttons: [{
  7502. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_69,
  7503. click: function () {
  7504. var childIframe = window.frames["editNodeHandlerFrame"];
  7505. document.getElementById("operationDialog").contentWindow.confirmEvent(_self,e,rowid,iCol,childIframe);
  7506. }},{
  7507. text:jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_64,
  7508. click: function () {
  7509. $(this).dialog('close');
  7510. }
  7511. }],
  7512. });
  7513. document.getElementById("operationDialog").contentWindow.setDialogStyle(_self,isNormalEvalu);
  7514. }
  7515. function editGraderDialogClose(){
  7516. $('#editNodeHandlerDiv').dialog('close');
  7517. }
  7518. /**
  7519. * 获取评估对象其他周期的指标信息
  7520. * @param evaObj
  7521. * @param period
  7522. */
  7523. function getOtherEvaObj(evaObj,period) {
  7524. var obj = null;
  7525. //加载考核规则、考核计划、考核模式
  7526. that.selfRemoteCall({
  7527. method : "compositeOtherPeriodEvaObjectData",
  7528. param : {
  7529. evaObj : evaObj,
  7530. period : period, //选择的周期
  7531. thisPeriod : periodId, //当前页面评估对象的周期
  7532. personId: personId, //BT1442270 评估对象档案发生变化,引用已有指标报错问题
  7533. isOrg:isOrg
  7534. },
  7535. async : false,
  7536. success : function(data) {
  7537. if(data != null){
  7538. obj = shr.xssFilter(data.rows.evaAreaList);
  7539. }
  7540. }
  7541. });
  7542. return obj;
  7543. }
  7544. /**
  7545. * 补丁11 目标对齐-yien
  7546. * @param evaObj
  7547. * @param period
  7548. * @returns {*}
  7549. */
  7550. function getOrgTargetObj(evaObj, areaType) {
  7551. var obj = null;
  7552. //加载考核规则、考核计划、考核模式
  7553. that.selfRemoteCall({
  7554. method : "compositeOrgTargetData",
  7555. param : {
  7556. evaObj : evaObj,
  7557. areaType : areaType
  7558. },
  7559. async : false,
  7560. success : function(data) {
  7561. if(data != null){
  7562. obj = shr.xssFilter(data.rows.evaAreaList);
  7563. }
  7564. }
  7565. });
  7566. return obj;
  7567. }
  7568. function processGoalsGiver(obj){
  7569. if(!obj){
  7570. return;
  7571. }
  7572. var text = obj.text();
  7573. if(pageType != 0 || null == text || '' == text){
  7574. $(obj).hide();
  7575. $('span[name="goalsGiverSpan"]').hide();
  7576. return;
  7577. }
  7578. var str = text.split(",");
  7579. var show = "";
  7580. if(str.length > 3){
  7581. show = str[0] + ",";
  7582. show += str[1] + ",";
  7583. show += str[2] + "...";
  7584. }else{
  7585. show = text;
  7586. }
  7587. obj.text(show);
  7588. obj.attr('title',text);
  7589. }
  7590. //补丁10 是否必填-yien
  7591. //根据colName判断字段是否必填
  7592. function isRequiredOfField(isRequiredMap, colName, areaId) {
  7593. if(isRequiredMap == '' || isRequiredMap.length < 1) {
  7594. return '0';
  7595. }
  7596. var _isRequired = isRequiredMap[colName + '#' + areaId];
  7597. if(_isRequired != '1') {
  7598. _isRequired = '0';
  7599. }
  7600. return _isRequired;
  7601. }
  7602. function array_contain(array, obj){
  7603. for (var i = 0; i < array.length; i++){
  7604. if (array[i] == obj)//如果要求数据类型也一致,这里可使用恒等号===
  7605. return true;
  7606. }
  7607. return false;
  7608. }
  7609. function getAttachcount() {
  7610. that.selfRemoteCall({//附件数
  7611. method: "initialAttachment",
  7612. param: {evaObj: evaObj},
  7613. // async: false, //补丁11 绩效工作台性能优化 改成异步执行
  7614. success: function (data) {
  7615. // 计算附件数量
  7616. var attachcount = data.length;
  7617. $('.attachcount').html(attachcount);
  7618. }
  7619. });
  7620. }
  7621. juicer.register('formatMsg', shr.formatMsg); //注册自定义函数
  7622. /**
  7623. * 判断是否为数字
  7624. * @param fieldVal
  7625. * @returns {boolean}
  7626. */
  7627. function isNumber(fieldVal) {
  7628. var reg = /^\d+(\.\d+)?$/;
  7629. if(fieldVal) {
  7630. return reg.test(fieldVal);
  7631. }
  7632. return false;
  7633. }
  7634. //补丁11 指标实例多语言改造-yien
  7635. function getDefaultLang() {
  7636. return $.shrMultiLangBoxService.getLangObjByLocale(shr.getContext().locale).lang;
  7637. }
  7638. function isMultiField(field) {
  7639. return isUseMultiLan && multiFields.indexOf(field) > -1;
  7640. }
  7641. function initMultiFieldsInput() {
  7642. if(isUseMultiLan) {
  7643. for(var i=0,fieldLen= multiFields.length; i<fieldLen; i++) {
  7644. var $input = $('#'+multiFields[i]);
  7645. if($input) {
  7646. //获取多语言信息
  7647. var _multiVal = {
  7648. l1 : $input.data('value_l1') || '',
  7649. l2 : $input.data('value_l2') || '',
  7650. l3 : $input.data('value_l3') || ''
  7651. };
  7652. //处理不可编辑的情况
  7653. var disabled = $input.attr('disabled') == 'disabled';
  7654. $input.shrMultiLangBox({
  7655. value: '', // 默认值,必填
  7656. readonly: false, // 是否只读,非必填
  7657. disabled: disabled, // 是否禁用
  7658. trimAll: false // 是否去除字符串之间的空格,只去除左右的空格,如果为true,则去除所有空格
  7659. });
  7660. $input.shrMultiLangBox('setValue',_multiVal);
  7661. }
  7662. }
  7663. }
  7664. }
  7665. var dealWithOptions = function(data){
  7666. var options = '';
  7667. if(data.fieldTypeConfig && typeof data.fieldTypeConfig === 'string'){
  7668. var fieldTypeConfig = JSON.parse(data.fieldTypeConfig);
  7669. options = fieldTypeConfig.options;
  7670. }
  7671. if(data.options && typeof data.options === 'object'){
  7672. options = data.options.options || data.options;
  7673. }
  7674. return encodeURIComponent(JSON.stringify(options));
  7675. }
  7676. juicer.register('dealWithOptions', dealWithOptions);
  7677. var dealWithFieldType = function(fieldType){
  7678. var options = '';
  7679. if(typeof fieldType === 'string'){
  7680. return fieldType;
  7681. }
  7682. if(typeof fieldType === 'object'){
  7683. var type = '';
  7684. switch (fieldType.value) {
  7685. case '10':
  7686. type = 'Text';
  7687. break;
  7688. case '20':
  7689. type = 'LongText';
  7690. break;
  7691. case '30':
  7692. type = 'Number';
  7693. break;
  7694. case '40':
  7695. type = 'Boolean';
  7696. break;
  7697. case '50':
  7698. type = 'Select';
  7699. break;
  7700. case '60':
  7701. type = 'Date';
  7702. break;
  7703. case '70':
  7704. type = 'TimeStamp';
  7705. break;
  7706. default:
  7707. break;
  7708. }
  7709. return type;
  7710. }
  7711. }
  7712. juicer.register('dealWithFieldType', dealWithFieldType);
  7713. // 返回指定区域的区域说明数据
  7714. var getAreaRema = function(areaId){
  7715. var rema = '';
  7716. globalIndicatorData.areaBaseList.forEach(function(item){
  7717. if(item.id === areaId){
  7718. rema = item.rema;
  7719. return false;
  7720. }
  7721. })
  7722. return rema;
  7723. }
  7724. // 控制查看更多区域说明信息
  7725. function showMoreRema(e, areaId){
  7726. var remabox = $('.area-rema-box[area-id="'+areaId+'"]');
  7727. var textArr = [jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_102,jsBizMultLan.perfweb_perfGoalsFillNew_26551296_i18n_73]; // 展开、收起
  7728. if(remabox.hasClass('opened')){
  7729. remabox.removeClass('opened');
  7730. $(e).text(textArr[0]);
  7731. }else{
  7732. remabox.addClass('opened');
  7733. $(e).text(textArr[1]);
  7734. }
  7735. }
  7736. (function($,shr){
  7737. waf.defineCustomeClass("cellformatter.operateBtn", cellformatter.defaultFormatter, {
  7738. format:function (cellvalue, rwd) {
  7739. var dom = '', btntxt = '', otherMsg = rwd.otherMsg;
  7740. // 删除指标
  7741. // if(cellvalue.canEdit && ((rwd.FISUNITED == '1' && targetCanEdit==1 ) || rwd.FISUNITED == '0')){
  7742. // btntxt = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_44;
  7743. // dom += '<div class="list-btn" title="'+btntxt+'">'+btntxt+'</div>';
  7744. // }
  7745. // 查看进度、进度更新
  7746. if(otherMsg.hasUpdataBtn && rwd.FGOALSSTATUS.value > 1){
  7747. btntxt = pageType == 4 ? jsBizMultLan.perfweb_perfgoalsfillhtml_888 : jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_18;
  7748. dom += '<div class="list-btn" title="'+btntxt+'" onclick="it.openTargetDecomposePage(\''+otherMsg.areaId+'\',\''+rwd.FID+'\',0)">'+btntxt+'</div>';
  7749. }
  7750. // 指标分解
  7751. if(otherMsg.hasDecompseBtn){
  7752. btntxt = jsBizMultLan.perfweb_perfgoalsfill_26551093_i18n_65;
  7753. dom += '<div class="list-btn" title="'+btntxt+'" onclick="it.openTargetDecomposePage(\''+otherMsg.areaId+'\',\''+rwd.FID+'\',1)">'+btntxt+'</div>';
  7754. }
  7755. return dom;
  7756. },
  7757. unformat:function (cell, rowId) {
  7758. }
  7759. });
  7760. $.extend($.jgrid, {
  7761. focusKnv: function($t){}
  7762. })
  7763. })(jQuery);