| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198 |
- //拼音字典字典缓存全局变量
- window.PINYIN_DICT_CACHE = null;
- /**
- * Purpose:全角转半角,返回转换后的字符串
- * Inputs: String
- * Returns:String
- */
- function qj2bj(str){
- //全角字符
- var qj = new Array('0','1','2','3','4','5','6','7','8','9','(',')','-','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
- //半角字符
- var bj = new Array('0','1','2','3','4','5','6','7','8','9','(',')','-','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
-
- var newStr = "";
- var change = false;
- for(var i=0;i<str.length;i++){
- var ch = str.charAt(i);
- var isQj = false;
- for(var j=0;j<qj.length;j++){
- if(qj[j]==ch){
- newStr += bj[j];
- isQj = true;
- change = true;
- break;
- }
- }
- if(!isQj){
- newStr += ch;
- }
- }
- if(change){
- return newStr;
- }
- }
- /**
- * Purpose: 将数值类型转化为String
- * Inputs: int
- * Returns: String
- */
- function CStr(inp)
- {
- return(""+inp+"");
- }
- /**
- * Purpose: 判断输入是否为整数字
- * Inputs: String
- * Returns: True, False
- */
- function isInteger(str)
- {
- var i,strlength,tempchar;
- str=CStr(str);
- if(str=="") return false;
- strlength=str.length;
- for(i=0;i<strlength;i++)
- {
- tempchar=str.substring(i,i+1);
- if(!(tempchar==0||tempchar==1||tempchar==2||tempchar==3||tempchar==4||tempchar==5||tempchar==6||tempchar==7||tempchar==8||tempchar==9))
- {
- //alert("只能输入数字 ");
- return false;
- }
- }
- return true;
- }
- /**
- * Purpose: 判断输入是否为数值(包括小数点)
- * Inputs: String
- * Returns: True, False
- */
- function isFloat(str) {
-
- var tmp;
- var temp;
- var i;
- tmp =str;
- if(str=="")
- return false;
- for(i=0;i<tmp.length;i++)
- {
- temp=tmp.substring(i,i+1);
- if((temp>='0'&& temp<='9')||(temp=='.'))
- {} //check input in 0-9 and '.'
- else
- {
- return false;
- }
- }
- return true;
- }
- /**
- * Purpose: 判断输入是否为电话号码
- * Inputs: String
- * Returns: True, False
- */
- function isPhoneNumber(str)
- {
- var i,strlengh,tempchar;
- str=CStr(str);
- if(str=="")
- return false;
- strlength=str.length;
- for(i=0;i<strlength;i++)
- {
- tempchar=str.substring(i,i+1);
- if(!(tempchar==0||tempchar==1||tempchar==2||tempchar==3||tempchar==4||tempchar==5||tempchar==6||tempchar==7||tempchar==8||tempchar==9||tempchar=='-'||tempchar=='+'||tempchar==' '||tempchar=='/'||tempchar=='('||tempchar==')'))
- {
- return(false);
- }
- }
- return(true);
- }
- /**
- * Purpose: 判断输入是否为Email
- * Inputs: String
- * Returns: True, False
- */
- function isEmail(str)
- {
- var bflag=true;
- if (str.indexOf("'")!=-1)
- {
- bflag=false;
- }
- if (str.indexOf("@")==-1)
- {
- bflag=false;
- }
- else if(str.charAt(0)=="@")
- {
- bflag=false;
- }
- return bflag;
- }
- /**
- * Purpose: 判断输入是否含有为中文
- * Inputs: String
- * Returns: True, False
- */
- function hasChinese(str)
- {
- if(escape(str).indexOf("%u")!=-1)
- {
- return true;
- }
- return false;
- }
- /**
- * Purpose: 判断输入是否全为中文
- * Inputs: String
- * Returns: True, False
- */
- function isAllChinese(str)
- {
- if(/[^\u4E00-\u9FA5]/gi.test(str))
- {
- return false;
- }
- return true;
- }
- /**
- * Purpose: 判断输入是否含有空格
- * Inputs: String
- * Returns: True, False
- */
- function hasBlank(str)
- {
- var strlength;
- var k;
- var ch;
- strlength=str.length;
- for(k=0;k<=strlength;k++)
- {
- ch=str.substring(k,k+1);
- if(ch==" ")
- {
- FWalert("对不起 不能输入空格 ");
- return false;
- }
- }
- return true;
- }
- /**
- * Purpose: 15位身份号码转18位
- * Inputs: String
- * Returns: 18位身份号码
- */
- function transformSfzh_na(str){
- var newstr="new";
- if ((isNull(str)) || (str == "null") || (str == "")){
- return 0;
- }
- if (str.length!=15 && str.length !=18){
- //alert("公民身份证长度不正确应该为15或18位!");
- return -1;
- }
- if (str.length==15){
- if (isNaN(str)==true){
- //alert("15位公民身份证应该为数字!");
- return -2;
- }
- newstr = transact_na(str);
- }
- if (str.length==18){
- if (isNaN(str.substr(0,17))==true){
- //alert("18位公民身份证前17位应该为数字!");
- return -3;
- }
- newstr = str;
- }
- if (IDCard_validate(newstr)==true){
- return newstr;
- }else{
- return -4;
- }
- }
- /**
- * Purpose: 替代字符
- * Inputs: 目标String,欲替代的字符,替代成为字符串,大小写是否敏感,是否整字代替
- * Returns: String
- */
- function replace(target,oldTerm,newTerm,caseSens,wordOnly)
- {
- var wk ;
- var ind = 0;
- var next = 0;
- wk=CStr(target);
- if (!caseSens)
- {
- oldTerm = oldTerm.toLowerCase();
- wk = target.toLowerCase();
- }
- while ((ind = wk.indexOf(oldTerm,next)) >= 0)
- {
- if (wordOnly)
- {
- var before = ind - 1;
- var after = ind + oldTerm.length;
- if (!(space(wk.charAt(before)) && space(wk.charAt(after))))
- {
- next = ind + oldTerm.length;
- continue;
- }
- }
- target = target.substring(0,ind) + newTerm + target.substring(ind+oldTerm.length,target.length);
- wk = wk.substring(0,ind) + newTerm + wk.substring(ind+oldTerm.length,wk.length);
- next = ind + newTerm.length;
- if (next >= wk.length)
- {
- break;
- }
- }
- return target;
- }
- /**
- *判断输入是否为年月(格式:yyyymm)
- *输入:string
- *返回:true-是,false-否
- */
- function isNY(str){
- if(str.length != 6) return false;
- var yy=str.substring(0,4);
- var mm=str.substring(4,6);
- if(!isInteger(yy)) return false;
- if(!isInteger(mm)) return false;
- if(yy<"1900"||yy>"2999") return false;
- if(mm<"01"||mm>"12") return false;
- return true;
- }
- /**
- * Purpose: 判断输入是否为日期,录入的格式可以为yyyy-mm-dd,yyyymmdd,yyyy/mm/dd
- * Inputs: String
- * Returns: True, False
- */
- function isDate(str)
- {
- var sYear ='';
- var sMonth='';
- var sDay ='';
- var arry;
- var j =0;
- var i =0;
- var s="-";
-
- i = str.indexOf(s);
- if(i==-1){s="/";}
-
- i = str.indexOf(s);
- if(i==-1){s="";}
-
- if(i>-1){
- j = str.lastIndexOf(s);
- }
-
- //yyyy-mm-dd 或 yyyy/mm/dd
- if(i>0 && str.length != 10){
- return false;
- }
- if(i>0){
-
- if((i != 4)||(j != 7)) return false;
-
- arry = str.split(s);
- sYear =arry[0];
- sMonth =arry[1];
- sDay =arry[2];
- }
-
- if(i==-1 && str.length != 8){
- return false;
- }
-
- //yyyymmdd
- if(i==-1 && str.length == 8){
- sYear =str.substr(0,4);
- sMonth =str.substr(4,2);
- sDay =str.substr(6,2);
- }
-
- if(sDay==""){return false;}
-
- if(sDay!=""&&!FWisDate(sYear,sMonth,sDay)){
- return false;
- }else{
- return true;
- }
-
- return false;
- }
- /**
- * Purpose: 判断输入是否为日期 格式:yyyy-MM-dd,且为合法的日期
- * Inputs: String
- * Returns: True, False
- */
- function isDate2(strDate)
- {
- strDate = strDate.replace(/(^\s+)?(\s+$)?/gi, "");
- var strSeparator = "-";
- var strDateArray;
- var intYear;
- var intMonth;
- var intDay;
- var boolLeapYear;
- var ln_len=strDate.length;
- if(ln_len<8||ln_len>10) return false;//长度判断
- strDateArray = strDate.split(strSeparator);
- if(strDateArray.length!=3) return false;
- intYear = parseInt(strDateArray[0],10);
- intMonth = parseInt(strDateArray[1],10);
- intDay = parseInt(strDateArray[2],10);
- if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;
- if(intYear<1900||intYear>2999) return false;
- if(intMonth>12||intMonth<1) return false;
- if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;
- if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;
- if(intMonth==2){
- if(intDay<1) return false;
- boolLeapYear = false;
- if((intYear%100)==0){
- if((intYear%400)==0) boolLeapYear = true;
- }
- else{
- if((intYear%4)==0) boolLeapYear = true;
- }
- if(boolLeapYear){
- if(intDay>29) return false;
- }
- else{
- if(intDay>28) return false;
- }
- }
- return true;
- }
- /**
- * Purpose: 判断输入是否为日期 格式:yyyy-MM-dd 或者 yyyy-MM-dd hh:mm:ss,且为合法的日期
- * Inputs: String
- * Returns: True, False
- */
- function isDate3(strDate)
- {
- strDate = strDate.replace(/(^\s+)?(\s+$)?/gi, "");
- var ln_len=strDate.length;
- if((ln_len<8||ln_len>10) && (ln_len<17||ln_len>19)) return false;//长度判断
- if ( ln_len >=8 && ln_len <= 10 )
- return isDate(strDate);
- if ( ln_len >=17 && ln_len <= 19 )
- return isDateTime(strDate);
- return false;
- }
- /**
- * Purpose: 判断输入是否为日期 格式:yyyy-MM,且为合法的日期
- * Inputs: String
- * Returns: True, False
- */
- function isDateShort(strDate)
- {
- var strSeparator = "-";
- var strDateArray;
- var intYear;
- var intMonth;
- var intDay;
- var boolLeapYear;
- var ln_len=strDate.length;
- if(ln_len<6||ln_len>7) return false;//长度判断
- strDateArray = strDate.split(strSeparator);
- if(strDateArray.length!=2) return false;
- intYear = parseInt(strDateArray[0],10);
- intMonth = parseInt(strDateArray[1],10);
- if(isNaN(intYear)||isNaN(intMonth)) return false;
- if(intYear<1900||intYear>2999) return false;
- if(intMonth>12||intMonth<1) return false;
- return true;
- }
- /**
- * Purpose: 判断输入是否为日期 格式:yyyyMM,且为合法的日期
- * Inputs: String
- * Returns: True, False
- */
- function isDateClose(strDate)
- {
- var strSeparator = "-";
- var strDateArray;
- var intYear;
- var intMonth;
- var intDay;
- var boolLeapYear;
- var charMonth;
- var ln_len=strDate.length;
- if(ln_len!=6) return false;//长度判断
- intYear = parseInt(strDate.substr(0,4));
- intMonth = parseInt(strDate.substr(4,6));
- charMonth = strDate.substr(4,6);
- if(isNaN(intYear)||isNaN(intMonth)) return false;
- if(intYear<1900||intYear>2999) return false;
- if(charMonth>12||charMonth<1) return false;
- return true;
- }
- /**
- * Purpose: 判断输入是否为时间,格式:hh:mm:ss,且为合法的24小时制时间
- * Inputs: String
- * Returns: True, False
- */
- function isTime2(strTime)
- {
- var hStr;
- var mStr;
- var sStr;
- var h;
- var m;
- var s;
- if(strTime.length == 8)
- {
- if((strTime.substring(2,3)==":")&&(strTime.substring(5,6)==":"))
- {
- hStr = strTime.substring(0,2);
- mStr = strTime.substring(3,5);
- sStr = strTime.substring(6,8);
- h = parseInt(hStr);
- m = parseInt(mStr);
- s = parseInt(sStr);
- if((h<=23)&&(m<=59)&&(s<=59))
- return true;
- else
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- /**
- * Purpose: 判断输入是否为日期+时间,格式:yyyy-MM-dd hh:mm:ss,且为合法的日期和合法的24小时制时间
- * Inputs: String
- * Returns: True, False
- */
- function isDateTime(str){
- // alert(str);
- var ln_len=str.length;
- if(ln_len<17||ln_len>19) return false;//长度判断
- var str1=str.split(" ");
- // alert(str1.length);
- // alert(str1[0]);
- // alert(str1[1]);
- if(isDate(str1[0])){
- if(isDate2(str1[0])){
- if(isTime2(str1[1])){
- return true;
- }
- }
- }
- return false;
-
-
- }
- /**
- * Purpose: 从身份证号码取生日
- * Inputs: String
- * Returns: String
- */
- function getBirthday(str)
- {
- if(str!="")
- {
- if(str.length==15)
- {
- var year = "19" + str.substring(6,8);
- var month = str.substring(8,10);
- var day = str.substring(10,12);
- var retStr = year + "-" + month + "-" + day;
- //window.alert(year);
- //window.alert(month);
- //window.alert(day);
- //window.alert(retStr);
- return retStr;
- }
- else if(str.length==18)
- {
- var year = str.substring(6,10);
- var month = str.substring(10,12);
- var day = str.substring(12,14);
- var retStr = year + "-" + month + "-" + day;
- return retStr;
- }
- }
- else
- return "";
- }
- /**
- * Purpose: 判断输入是否为空
- * Inputs: String
- * Returns: True, False
- */
- function isNull(str)
- {
- var temp;
- temp = CStr(str);
- try{
- temp =$.trim(temp);
- }catch(e){}
- if(typeof(str)=="undefined" || str==null || (temp=="")||(temp.length==0))
- {
- return true;
- }
- return false;
- }
- /**
- * added by runfly on 07-06-12
- * Purpose: 类似oracle数据库的nvl函数
- * Inputs: String str
- * Inputs: String defv 默认值
- * Returns: 如果str为空,则返回defv,若不为空,返回str
- */
- function nvl(str,defv)
- {
- if(typeof(str)=="undefined" || str==null || str=="" || str.toLowerCase()=="null"){
- return defv;
- }else{
- return str;
- }
- }
- /**
- * Purpose: 判断输入是否为数值(包括小数点)
- * Inputs: String ,lenStr表示要判断的小数位数,如4,表示小数点后不能超过4位
- * Returns: True, False
- */
- function checkFloat(str, lenStr) {
- if(str=="")
- return true;
- //alert('str=' + str);
- var tmp;
- var temp;
- var i;
- var num;
- num = -1;
- tmp =str;
- for(i=0;i<tmp.length;i++) {
- temp=tmp.substring(i,i+1);
- if((temp>='0'&& temp<='9')||(temp=='.')){
- if (num >= 0){num = num+1;}
- if (temp=='.'){num = 0;}
- } //check input in 0-9 and '.'
- else
- {
- return false;
- }
- }
- if (num > lenStr || num == 0){return false;}
- return true;
- }
- /**
- *
- * Purpose: 检查整个表单中输入组件的输入情况的合法性,只包含非空、字符和日期型的校验
- * Inputs: 表单,
- * Inputs: options,其它校验规则,格式如:{valLenRule:'char'}
- * 长度校验规则valLenRule,byte:按字节校验,char:按字符校验,默认按字节校验
- * Returns: True, False
- */
- function validateForm(dform,options){
-
- var notnullStr = '';
- var notnullArr = [];
- var numberStr = '';
- var numberArr = [];
- var numberAgeStr = '';
- var numberAgeArr = [];
- var numberAgeLawMaleStr = '';
- var numberAgeLawMaleArr = [];
- var numberAgeLawFemaleStr = '';
- var numberAgeLawFemaleArr = [];
- var numberHeightStr = '';
- var numberHeightArr = [];
- var numberWeightStr = '';
- var numberWeightArr = [];
- var postcodeStr = '';
- var postcodeArr = [];
- var dateStr = '';
- var dateArr = [];
- var mailStr = '';
- var mailArr = [];
- var dateLongStr = '';
- var dateLongArr = [];
- var dateShortStr = '';
- var dateShortArr = [];
- var dateCloseStr = '';
- var dateCloseArr = [];
- var dateTimeStr = '';
- var dateTimeArr = [];
- var floatStr = '';
- var floatArr = [];
- var floatSightStr = '';
- var floatSightArr = [];
- var bitLStr ='';
- var bitLArr = [];
- var telLStr ='';
- var telLArr = [];
- var colorStr ='';
- var colorArr = [];
- var sfzStr ='';
- var sfzArr = [];
- var chineseStr = '';
- var chineseArr = [];
- var notHasChineseStr = '';
- var notHasChineseArr = [];
- var basicCondiction ={length:0};
- theForm = dform;
-
- //检查不安全的字符串
- for (i = 0; i < theForm.elements.length; i ++){//遍历form中的字段
- var isInvalide=false;
- ele = theForm.elements[i];
- if(null != ele.value){
- for(var unsafei=0;unsafei<fwUnsafeValidateFormTokens.length;unsafei++){
- var lowerEleValue = ele.value.toLowerCase();
- var lowerUnsafe = fwUnsafeValidateFormTokens[unsafei].toLowerCase();
- if(-1 != lowerEleValue.indexOf(lowerUnsafe)){
- alert("请求包含不安全的字符串: " + fwUnsafeValidateFormTokens[unsafei] + "\n" + ele.name + ": " + ele.value);
- return false;
- }
- }
- }
- //身份证号码
- if($(ele).hasClass('idcardbox')){
- ele.className = ele.className.replace(/valueInvalide/,'');
- if(ele.value!=''){
- if(!FWidcardCheck(ele.value)){
- sfzStr = sfzStr + '\n' + _IDCARD_MSG;
- sfzArr.push(ele);
- jQuery(ele).addClass('valueInvalide');
- }
- }
- }
- //邮政编码
- if($(ele).hasClass('postbox')){
- var s = ele.value;
- if(s.length>0&&s.length!=6){
- postcodeArr.push(ele);
- }
- }
- //证件类型
- if($(ele).hasClass('combobox')){
- ele.className = ele.className.replace(/valueInvalide/,'');
- if(ele.cn!=null){
- if(ele.value=='6'){//证件类型为身份证
- var zjhm;
- eval("zjhm=theForm."+ele.cn);
- zjhm.className = ele.className.replace(/valueInvalide/,'');
- if(zjhm.value!=''){
- if(!FWidcardCheck(zjhm.value)){
- sfzStr = sfzStr + '\n' + _IDCARD_MSG;
- sfzArr.push(zjhm);
- jQuery(zjhm).addClass('valueInvalide');
- }
- }
- }//=6
- }//ele.cn!=null
- }//combobox
-
-
-
- if(ele.vldStr==null){
- continue;
- }else if(ele.vldStr==''){
- continue;
- }
-
- colName = theForm.elements[i].name;//字段的名称
- validStrs = theForm.elements[i].vldStr;
- name_validStrs = validStrs.split('=');//得到字段的中文名称
-
- if (name_validStrs.length == 2){
- colName = name_validStrs[0];
- validStrs = name_validStrs[1];
- pint=parseInt(theForm.elements[i].value);
- pfloat=parseFloat(theForm.elements[i].value);
- }
-
-
- tmpArray = validStrs.split('+');
- for (j = 0; j < tmpArray.length; j ++){//检查该字段的校验类型
-
- if (tmpArray[j] == 'nn' ){
- if(isNull(theForm.elements[i].value)){
- //有非空却为空的字段
- notnullStr = notnullStr + '\n' + colName;
- notnullArr.push(theForm.elements[i]);
- //属于封装过的下拉框
- var eleName = theForm.elements[i].className;
- if(eleName.indexOf('combobox')!=-1 ||eleName.indexOf('incombox')!=-1
- ||eleName.indexOf('dbcombox')!=-1||eleName.indexOf('zjcombox')!= -1){
- try{
- var span = jQuery.data(theForm.elements[i], 'fwcombox').fwcombox;
- var input = jQuery('.fwcombox-text',span);
- input.addClass('valueInvalide');
- isInvalide=true;
- }catch(e){
- jQuery(theForm.elements[i]).addClass('valueInvalide');
- }
- }else{
- //加入底框的颜色
- jQuery(theForm.elements[i]).addClass('valueInvalide');
- }
- }else{
- //取消valueInvalide标志
- //属于封装过的下拉框
- var eleName = theForm.elements[i].className;
- if(eleName.indexOf('combobox')!=-1 ||eleName.indexOf('incombox')!=-1
- ||eleName.indexOf('dbcombox')!=-1||eleName.indexOf('zjcombox')!= -1){
- try{
- var span = jQuery.data(theForm.elements[i], 'fwcombox').fwcombox;
- var input = jQuery('.fwcombox-text',span);
- input.removeClass('valueInvalide');
- }catch(e){
- jQuery(theForm.elements[i]).removeClass('valueInvalide');
- }
- }else{
- //加入底框的颜色
- jQuery(theForm.elements[i]).removeClass('valueInvalide');
- }
- }
-
- }else if(tmpArray[j] == 'n' && !isNull(theForm.elements[i].value) && !isInteger(theForm.elements[i].value)){//有不合法的数字型字段
- numberStr = numberStr + '\n' + colName;
- numberArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'h' && !isNull(theForm.elements[i].value)){//有不合法的身高型字段
- if(isInteger(theForm.elements[i].value) && (pint>0) && (pint<300)){
- }else{
- numberHeightStr = numberHeightStr + '\n' + colName;
- numberHeightArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'w' && !isNull(theForm.elements[i].value)){//有不合法的体重型字段
- if(isInteger(theForm.elements[i].value) && (pint>0) && (pint<200)){
- }else{
- numberWeightStr = numberWeightStr + '\n' + colName;
- numberWeightArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'a' && !isNull(theForm.elements[i].value)){//有不合法的年龄型字段
- if(isInteger(theForm.elements[i].value) && (pint>0) && (pint<200)){
- }else{
- numberAgeStr = numberAgeStr + '\n' + colName;
- numberAgeArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'alm' && !isNull(theForm.elements[i].value)){//有不合法的法定男性年龄型字段
- if(isInteger(theForm.elements[i].value) && (pint>=16) && (pint<=60)){
- }else{
- numberAgeLawMaleStr = numberAgeLawMaleStr + '\n' + colName;
- numberAgeLawMaleArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'alf' && !isNull(theForm.elements[i].value)){//有不合法的法定女性年龄型字段
- if(isInteger(theForm.elements[i].value) && (pint>=16) && (pint<=55)){
- }else{
- numberAgeLawFemaleStr = numberAgeLawFemaleStr + '\n' + colName;
- numberAgeLawFemaleArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'p' && !isNull(theForm.elements[i].value)){//有不合法的邮政编码型字段
- if(isInteger(theForm.elements[i].value) && (theForm.elements[i].value.length == 6)){
- }else{
- postcodeStr = postcodeStr + '\n' + colName;
- postcodeArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j]=='ml' && !isNull(theForm.elements[i].value) && !isEmail(theForm.elements[i].value)){//有不合法的邮箱字段
- mailStr = mailStr + '\n' + colName;
- mailArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 't' && !isNull(theForm.elements[i].value) && !isPhoneNumber(theForm.elements[i].value)){//有不合法的电话号码型字段
- telLStr = telLStr + '\n' + colName;
- telLArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'd' && !isNull(theForm.elements[i].value) && !isDate3(theForm.elements[i].value)){//有不合法的日期型字典
- dateStr = dateStr + '\n' + colName;
- dateArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'dl' && !isNull(theForm.elements[i].value) && !isDateTime(theForm.elements[i].value)){//有不合法的(YYYY-MM-DD HH24:MI:SS)日期型字典
- dateLongStr = dateLongStr + '\n' + colName;
- dateLongArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'ds' && !isNull(theForm.elements[i].value) && !isDateShort(theForm.elements[i].value)){//有不合法的(YYYY-MM)日期型字典
- dateShortStr = dateShortStr + '\n' + colName;
- dateShortArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'dc' && !isNull(theForm.elements[i].value) && !isDateClose(theForm.elements[i].value)){//有不合法的(YYYYMM)日期型字典
- dateCloseStr = dateCloseStr + '\n' + colName;
- dateCloseArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'dt' && !isNull(theForm.elements[i].value) && !isTime2(theForm.elements[i].value)){//有不合法的(HH24:MI:SS)时间型字典
- dateTimeStr = dateTimeStr + '\n' + colName;
- dateTimeArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'ac' && !isNull(theForm.elements[i].value) && !isAllChinese(theForm.elements[i].value)){//不合法的纯中文字符串
- chineseStr = chineseStr + '\n' + colName;
- chineseArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 'nc' && !isNull(theForm.elements[i].value) && hasChinese(theForm.elements[i].value)){//不合法的非中文字符串
- notHasChineseStr = notHasChineseStr + '\n' + colName;
- notHasChineseArr.push(theForm.elements[i]);
- }else if(tmpArray[j].indexOf('f')!=-1&&tmpArray[j]!='alf'){ //校验浮点型数据类型
- var tmp = tmpArray[j];
- var len = tmp.length;
- var ips = tmp.indexOf('f');
- var str = "";
- var val = theForm.elements[i].value;
- var ixu =0; //小数位数
- var izu =0; //整数位数
- if(val==''){
- continue;
- }else{
- val = val.replace(/,/gi,'');
- }
-
- if(!isFloat(val)){
- floatStr = floatStr + '\n' + colName +' 必须为数值 ';
- floatArr.push(theForm.elements[i]);
- continue;
- }
-
- if(ips!=-1&&(ips+1)!=len){
- str = tmp.split('f');
- ixu = parseInt(str[1],10);
- if(!checkFloat(val, ixu)){
- floatStr = floatStr + '\n' + colName +' 必须为'+ixu+'位小数 ';
- floatArr.push(theForm.elements[i]);
- continue;
- }
- }else{
- var ips2 = val.indexOf('.');
- if(ips2!=-1){
- floatStr = floatStr + '\n' + colName +' 不能带有小数 ';
- floatArr.push(theForm.elements[i]);
- continue;
- }
- }
-
- str = tmp.split('f');
- if(str[0]==''){
- izu = 1;
- }else{
- izu = parseInt(str[0],10);
- }
- str = val.split('.');
- tmp = str[0];
- len = tmp.length;
- if(parseInt(len,10) > izu){
- floatStr = floatStr + '\n' + colName +' 不能大于'+izu+'位整数 ';
- floatArr.push(theForm.elements[i]);
- continue;
- }
- }else if(tmpArray[j] == 'sfz' && !isNull(theForm.elements[i].value) && !FWidcardCheck(theForm.elements[i].value)){//有不合法的身份证型字段
- sfzStr = sfzStr + '\n' + colName +' '+_IDCARD_MSG;
- sfzArr.push(theForm.elements[i]);
- }else if(tmpArray[j] == 's'&& !isNull(theForm.elements[i].value)){//有不合法的视力型字段
- if(checkFloat(theForm.elements[i].value, 1) && (((pfloat>=0.1) && (pfloat<=1.5))||((pfloat>=4.0)&&(pfloat<=5.2))) ){
- }else{
- floatSightStr = floatSightStr + '\n' + colName;
- floatSightArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j] == 'c'&& !isNull(theForm.elements[i].value)){//有不合法的颜色型字段
- var c1=theForm.elements[i].value.substr(0,1);
- var c2=theForm.elements[i].value.substr(1,6);
- if((theForm.elements[i].value.length==7) && (c1=="#") && (parseInt(c2,16)>=0) && (parseInt(c2,16)<=16777215)){
- }else{
- colorStr = colorStr + '\n' + colName;
- colorArr.push(theForm.elements[i]);
- }
- }else if(tmpArray[j].substr(0,1) == 'l'){
- var tmpA1=new String();
- var bitL;
- tmpA=tmpArray[j];
- if(arguments.length==2){
- if(options.valLenRule=='char'){
- bitL=(theForm.elements[i].value).length;
- }else{
- bitL=bitLength(theForm.elements[i].value);
- }
- }else{
- bitL=bitLength(theForm.elements[i].value);
- }
- var tmpAL=tmpA.length;
- var pos1=tmpA.indexOf("(");
- var pos2=tmpA.indexOf("-");
- var pos3=tmpA.indexOf(")");
- var bitL1=0;
- var bitL2=0;
-
- if(pos2!=-1){
- bitL1=tmpA.substring(pos1+1,pos2);
- bitL2=tmpA.substring(pos2+1,pos3);
- }else{
- bitL1=0;
- bitL2=tmpA.substring(pos1+1,pos3);
- }
-
- if(bitL!=0){
- if(isInteger(bitL1)&&isInteger(bitL2)){
- if(bitL<bitL1||bitL>bitL2){
- bitLStr = bitLStr + '\n' +colName+'(字母或数字长度应在'+bitL1+'和'+bitL2+'之间,汉字长度应在'+Math.floor(parseInt(bitL1)/2)+'和'+Math.floor(parseInt(bitL2)/2)+'之间)';
- bitLArr.push(theForm.elements[i]);
- }
- }
- }
- }else if(tmpArray[j].substr(0,2) == 'sn'){
- var tmpA=tmpArray[j].substr(2);
- if(!basicCondiction[tmpA]){
- basicCondiction[tmpA]=[];
- basicCondiction.length++;
- }
- var one={
- 'colName':colName,
- 'title':colName,
- 'isNull':isNull(theForm.elements[i].value),
- 'target':theForm.elements[i]
- };
- basicCondiction[tmpA].push(one);
- }
- }
- }
-
- if (notnullStr.length > 0){
- FWalert('以下字段不能为空!' + notnullStr);
- tryFocusEditableOne(notnullArr);
- return false;
- }else if (sfzStr.length > 0){
- FWalert('以下身份证型字段不合法!' + sfzStr);
- tryFocusEditableOne(sfzArr);
- return false;
- }else if (numberStr.length > 0){
- FWalert('以下数字型字段不合法!' + numberStr);
- tryFocusEditableOne(numberArr);
- return false;
- }else if (numberHeightStr.length > 0){
- FWalert('以下身高型字段不合法!' + numberHeightStr);
- tryFocusEditableOne(numberHeightArr);
- return false;
- }else if (numberWeightStr.length > 0){
- FWalert('以下体重型字段不合法!' + numberWeightStr);
- tryFocusEditableOne(numberWeightArr);
- return false;
- }else if (numberAgeStr.length > 0){
- FWalert('以下年龄型字段不合法!' + numberAgeStr);
- tryFocusEditableOne(numberAgeArr);
- return false;
- }else if (numberAgeLawMaleStr.length > 0){
- FWalert('以下法定男性年龄(16~60)型字段不合法!' + numberAgeLawMaleStr);
- tryFocusEditableOne(numberAgeLawMaleArr);
- return false;
- }else if (numberAgeLawFemaleStr.length > 0){
- FWalert('以下法定女性年龄(16~55)型字段不合法!' + numberAgeLawFemaleStr);
- tryFocusEditableOne(numberAgeLawFemaleArr);
- return false;
- }else if (postcodeStr.length > 0){
- FWalert('以下邮政编码型字段不合法!' + postcodeStr);
- tryFocusEditableOne(postcodeArr);
- return false;
- }else if (telLStr.length > 0){
- FWalert('以下电话型字段不合法!(格式示例:+86020-12345678)' + telLStr);
- tryFocusEditableOne(telLArr);
- return false;
- }else if (dateStr.length > 0){
- FWalert('以下日期型字段格式不合法!(格式示例:2005-05-05)' + dateStr);
- tryFocusEditableOne(dateArr);
- return false;
- }else if (dateLongStr.length > 0){
- FWalert('以下日期型字段格式不合法!(格式示例:2005-05-05 23:59:59)' + dateLongStr);
- tryFocusEditableOne(dateLongArr);
- return false;
- }else if (dateShortStr.length > 0){
- FWalert('以下日期型字段格式不合法!(格式示例:2005-05)' + dateShortStr);
- tryFocusEditableOne(dateShortArr);
- return false;
- }else if (dateCloseStr.length > 0){
- FWalert('以下日期型字段格式不合法!(格式示例:200505)' + dateCloseStr);
- tryFocusEditableOne(dateCloseArr);
- return false;
- }else if (dateTimeStr.length > 0){
- FWalert('以下时间型字段格式不合法!(格式示例:23:59:59)' + dateTimeStr);
- tryFocusEditableOne(dateTimeArr);
- return false;
- }else if (chineseStr.length > 0){
- FWalert('以下纯中文字符串不合法!' + chineseStr);
- tryFocusEditableOne(chineseArr);
- return false;
- }else if (notHasChineseStr.length > 0){
- FWalert('以下非中文字符串不合法!' + notHasChineseStr);
- tryFocusEditableOne(notHasChineseArr);
- return false;
- }else if (floatStr.length > 0){
- FWalert('以下浮点型字段不合法!' + floatStr);
- tryFocusEditableOne(floatArr);
- return false;
- }else if (floatSightStr.length > 0){
- FWalert('以下浮点型字段不合法!(示例:0.1~1.5 或者 4.0~5.2)' + floatSightStr);
- tryFocusEditableOne(floatSightArr);
- return false;
- }else if (bitLStr.length > 0){
- FWalert('以下字段长度不合法!' + bitLStr);
- tryFocusEditableOne(bitLArr);
- return false;
- }else if (colorStr.length > 0){
- FWalert('以下颜色型字段不合法!' + colorStr);
- tryFocusEditableOne(colorArr);
- return false;
- }else if (mailStr.length > 0){
- FWalert('以下email地址型字段不合法!' + mailStr);
- tryFocusEditableOne(mailArr);
- return false;
- }
- if(basicCondiction.length>0){
- for(var att in basicCondiction){
- if(att=='length')continue;
- var flag=false;
- var msg='下列字段之一必录:';
- var arr = [];
- for(v_index=0;v_index<basicCondiction[att].length;v_index++){
- if(basicCondiction[att][v_index].isNull){
- msg+=basicCondiction[att][v_index].title+'、';
- arr.push(basicCondiction[att][v_index].target);
- }else{
- flag=true;
- }
- }
- if(!flag){
- msg=msg.substr(0,msg.length-1);
- FWalert(msg);
- tryFocusEditableOne(arr);
- return false;
- }
- }
- }
- return true;
- }
- /**
- * 遍历控件数组,设置焦点到第一个可以见且可编辑的控件上
- * @param eleArr 控件数组
- */
- function tryFocusEditableOne(eleArr){
- for(index in eleArr){
- //顺序找,找到第一个可编辑的控件
- var visible = isObjVisible(eleArr[index]);
- var enable = isObjEnable(eleArr[index]);
- if(visible&&enable){
- $(eleArr[index]).focus();
- break;
- }
- }
- }
- /**
- * 根据列表中的选择(checkbox,可选多条)要进行某项操作前(如批量删除),调用
- * 该函数进行检查,如果没有打勾,提示没有选择,如果有打勾,确认是否要执行某项操作
- * 使用方式: confirmOper(aform,'checkbox','删除');
- */
- function confirmOper(theForm, checkboxName, confirmStr){
- var flag = false;
- if(theForm.elements == null){
- FWalert("要提交的表单没有数据");
- }else{
- for(i = 0; i < theForm.elements.length; i ++){
- if(theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio"){
- if(theForm.elements[i].name == checkboxName || theForm.elements[i].name.substr(0,checkboxName.length) == checkboxName){
- if (theForm.elements[i].checked){
- flag = true;
- break;
- }
- }
- }
- }
-
- }
- if (flag){
- answer = window.confirm("您确定要" + confirmStr + "所选的记录吗?");
- if (answer != "0"){
- return true;
- }
- }else{
- FWalert("您没有选择要操作的记录!");
- }
- return false;
- }
- /**
- * Purpose: 根据列表中的选择(checkbox,可选多条)进行修改操作,调用
- * 该函数进行检查,如果勾选项数量为空或者超过一个时,提示出错,
- * 否则直接将checkbox 的值赋给inputID
- * Inputs: 表单,勾选框的名字、存取ID的变量
- * Returns: true、false
- * 使用方法
- * confirmEdit(document.saveform,'checkbox', editform.saveId)
- * 从saveform多记录表内把checkbox的值赋给saveID
- */
- function confirmEdit(aform, checkboxName,inputID){
- theForm = aform;
- flag = false;
- var id;
- var count=0;
- if(theForm.elements == null){
- FWalert("要提交的表单没有数据");
- }else{
- for (i = 0; i < theForm.elements.length; i ++){
- if (theForm.elements[i].name == checkboxName
- && (theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio" )){
- if (theForm.elements[i].checked){
- flag = true;
- inputID.value = theForm.elements[i].value;
- count = count + 1;
- continue;
- }
- }
- }
- }
- if(count == 0){
- FWalert("您没有选择要操作的记录!");
- return false;
- }
- if (flag && count > 1){
- FWalert("您只能选择一条记录!");
- return false;
- }
- if (flag && count == 1){
- return true;
- }
- return false;
- }
- /**
- * Purpose: 根据列表中的选择(checkbox,可选多条)进行修改操作,调用
- * 该函数进行检查,如果勾选项数量为空或者超过一个时,提示出错,
- * 否则从多记录表中checkbox 的VALUE中取值例如: value=”001|002”
- * Inputs: 表单,勾选框的名字、表单、存取ID的变量(2个以上)
- * Returns: true、false
- * 使用方法:confirmEditCon2(document.showform,
- * 'checkbox',
- * hiddenform,
- * 'AAA100|AAA102')
- *调用上面的函数后,以下的的AAA100以及AAA102的值为001和002
- * <form name="hiddenform" >
- * <input type=hidden name=AAA100 value="">
- * <input type=hidden name=AAA102 value="">
- * </form>
- */
- function confirmEditCon2(aform, checkboxName,editform,eles){
- theForm = aform;
- if(theForm.elements == null){
- FWalert("要提交的表单没有数据");
- return false;
- }
- var count=0;
- index = -1;
- flag = false;
- for (i = 0; i < theForm.elements.length; i ++){
- if (theForm.elements[i].name == checkboxName
- && (theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio" )){
- if (theForm.elements[i].checked){
- flag = true;
- index = i;
- count = count + 1;
- continue;
- }
- }
- }
- if(count == 0){
- FWalert("您没有选择要操作的记录!");
- return false;
- }
- if (flag && count > 1){
- FWalert("您只能选择一条记录!");
- return false;
- }
- if (flag && count == 1){
- split_pot=theForm.elements[index].value;
- split_array=split_pot.split("|");
- arr2=eles.split("|");
- if (arr2.length != split_array.length){
- FWalert("主键数目不匹配");
- FWalert("checkbox:"+split_array.length+";form.value:"+arr2.length);
- }
- for(j=0; j<arr2.length; j++){
- inputs = editform.getElementsByTagName('input');
- flag = false;
- for(k = 0; k < inputs.length; k ++){
- inputname = inputs[k].name;
- if (inputname == arr2[j]){
- inputs[k].value=split_array[j];
- flag = true;
- break;
- }
- }
- if (!flag){
- FWalert ("editform中没有找到明为" + arr2[j] + "的元素");
- return false;
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- *能: 将指定表单中的部分(或者所有)的复选框设置为选中状态
- *@param opform form的名称
- *@param chkname 复选框名称(可选),如果不提供这个参数,将选中状表单中所有多选框。
- */
- function checkAll(opform, chkname){
- eval('var obj = document.' + opform);
- if(!chkname){
- $(':checkbox',obj).each(function(){
- if (!this.disabled) {
- this.checked=true;
- }
- });
- }else{
- $(':checkbox[name="'+chkname+'"]',obj).each(function(){
- if (!this.disabled) {
- this.checked=true;
- }
- });
- }
- }
- /**
- *功能: 将指定表单中的部分(或者所有)的复选框设置为非选中状态
- *@param opform form的名称
- *@param chkname 复选框名称(可选),如果不提供这个参数,将清除表单中所有多选框的选中状态。
- */
- function unCheckAll(opform, chkname){
- eval('var obj = document.' + opform);
- if(!chkname){
- $(':checkbox',obj).each(function(){
- if (!this.disabled) {
- this.checked=false;
- }
- });
- }else{
- $(':checkbox[name="'+chkname+'"]',obj).each(function(){
- if (!this.disabled) {
- this.checked=false;
- }
- });
- }
- }
- /**
- * 要使用这个函数,直接用checkAll
- *功能描述: 对包含在form的复选框,根据给定的名称设置成已选
- *@param opform 表单名称
- *@param chkname 复选框名称
- */
- function checkAll2(opform, chkname){
- checkAll(opform, chkname);
- }
- /**
- * 不要使用这个函数,直接用unCheckAll
- * 功能描述: 对包含在form的复选框,根据给定的名称设置成未选中
- *@param opform 表单名称
- *@param chkname 复选框名称
- *
- */
- function unCheckAll2(opform, chkname){
- unCheckAll(opform, chkname);
- }
- /**
- * Purpose: clear the elements of the form called formName
- * Inputs: formName
- * Returns: no return value
- * Author: runfly
- */
- function clear(formName){
-
- //清除表单前先提示
- var confFlag = window.confirm("您确定要清除表单吗?");
- if (!confFlag){
- return ;
- }else{
- clearNoPrompt(formName);
- }
- }
- /**
- * Purpose: clear the elements of the form called formName
- * Inputs: formName
- * Returns: no return value
- * Author: runfly
- */
- function clearNoPrompt(formName){
- var obj;
-
- if(typeof formName =="object"){
- obj = formName;
- }else{
- eval("obj = document."+ formName + ";");
- }
-
- if(obj.elements.length==0){
- return;
- }
- for(var i=0;i<obj.elements.length;i++){
- var eleObj = obj.elements[i];
- var type = eleObj.type;
-
- switch(type){
- case "text":
- if(eleObj.readOnly==true){
- break;
- }else{
- //封装后下拉框实际为INPUT
- if($(eleObj).hasClass('fwcombox-text')){
- break;
- }
- eleObj.value = "";
- break;
- }
- case "hidden":break;
- case "password":
- if(eleObj.readOnly==true){
- break;
- }else{
- eleObj.value = "";break;
- }
- case "file":eleObj.value = "";break;
- case "textarea":
- if(eleObj.readOnly==true){
- break;
- }else{
- eleObj.value = "";break;
- }
- case "checkbox":
- eleObj.checked = false;break;
- case "radio":
- eleObj.checked = false;break;
- case "select-one":
- if(eleObj.disabled){
- break;
- }
- for(var j=0;j<eleObj.options.length;j++){
- eleObj.options[j].selected = false;
- if(eleObj.options[j].text == ""){//the Chinese is "please select"
- eleObj.options[j].selected = true;
- }
- }
-
- //处理被封装过的下拉框
- if(jQuery.data(eleObj,'fwcombox')!=null){
- var span = jQuery.data(eleObj,'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- eleObj.value='';
- }
- break;
- case "select-multiple":
- for(var j=0;j<eleObj.options.length;j++){
- eleObj.options[j].selected = false;
- }
- break;;
- }
- }
- }
- function bitLength(str){
- if(str==null || str == "") return 0;
- var len = 0;
- for(var i=0; i < str.length; i++){
- var t=str.substring(i,i+1);
- if(t.charCodeAt(0) < 0x4e00&&t.charCodeAt(0)!=0x3002&&t.charCodeAt(0)!=0x2018&&t.charCodeAt(0)!=0x2019){
- len ++;
- continue;
- }
- len += 2;
- }
- return len;
- }
- function transact(inputStr){
- var getno=inputStr;
- if(getno.length==15){
- var wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
- // alert("wi="+wi[1]);
- var ai=new Array(1,0,'X',9,8,7,6,5,4,3,2);
- // alert("ai="+ai);
- var F1=getno.substr(0,6)+"19"+getno.substr(6,15);
- // alert("F1="+F1);
- var F2=new Array();
- F2=F1.split("");
- // alert("F2="+F2[1]);
- var i=0;
- var j=0;
- var sum =0;
- for(i = 0 ; i<17; i++)
- {
- j = wi[i]*F2[i];
- sum = sum + j;
-
- }
- // alert("sum="+sum);
- sum=sum%11;
- // alert("again.sum="+sum);
- F2[17]=ai[sum];
- var F3=new String();
- for(i=0;i<18;i++){
- if(F2[i]=='X'){
- F3=F3+"X";
- break;
- }
- eval("F3=F3+"+F2[i]);
- }
- alert("身份证自动升位为"+F3);
- return F3;
-
- }else{
- return inputStr;
- }
-
-
- }
- function transact_na(inputStr){
- var getno=inputStr;
- if(getno.length==15){
- var wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
- // alert("wi="+wi[1]);
- var ai=new Array(1,0,'X',9,8,7,6,5,4,3,2);
- // alert("ai="+ai);
- var F1=getno.substr(0,6)+"19"+getno.substr(6,15);
- // alert("F1="+F1);
- var F2=new Array();
- F2=F1.split("");
- // alert("F2="+F2[1]);
- var i=0;
- var j=0;
- var sum =0;
- for(i = 0 ; i<17; i++)
- {
- j = wi[i]*F2[i];
- sum = sum + j;
-
- }
- // alert("sum="+sum);
- sum=sum%11;
- // alert("again.sum="+sum);
- F2[17]=ai[sum];
- var F3=new String();
- for(i=0;i<18;i++){
- if(F2[i]=='X'){
- F3=F3+"X";
- break;
- }
- eval("F3=F3+"+F2[i]);
- }
- //alert("身份证自动升位为"+F3);
- return F3;
-
- }else{
- return inputStr;
- }
-
-
- }
- function IDCard_validate(inputStr){
- var inputPro = "公民身份号码";
- if(inputStr == null) inputStr = "";
- var format=inputStr.length;
- if(!is0AndPosInteger(inputStr)){
- FWalert(inputPro + "输入不合法!");
- return false; }
- if(inputStr == "") return true;
- if((format==18)&&(!checkCheckStr(inputStr))) return false;
- if(format==15){
- inputStr=transact(inputStr);
- format=18;
- }
- if(format==15 || format==18){
- if(!checkID(inputStr,inputPro,format))
- return false;
- }else{
- FWalert("公民身份号码的位数输入不正确!");
- return false;
- }
- return true;
- }
- function checkCheckStr(inputstr){
- var i=(inputstr.substr(0,1)*7+inputstr.substr(1,1)*9+inputstr.substr(2,1)*10+inputstr.substr(3,1)*5+inputstr.substr(4,1)*8+inputstr.substr(5,1)*4+inputstr.substr(6,1)*2+inputstr.substr(7,1)*1+inputstr.substr(8,1)*6+inputstr.substr(9,1)*3+inputstr.substr(10,1)*7+inputstr.substr(11,1)*9+inputstr.substr(12,1)*10+inputstr.substr(13,1)*5+inputstr.substr(14,1)*8+inputstr.substr(15,1)*4+inputstr.substr(16,1)*2 )% 11 ;
- if(i>2)i=12-i;
- else if(i==2)i="X";
- else if(i<2)i=1-i;
- if(inputstr.substr(17,1)==i) {return true;}
- else
- {
- FWalert("公民身份号码输入不合法!校验位错误");
- return false;}
- }
- function checkID(inputStr,objName,format){
- var temp;
- var year,month,day;
- if(inputStr.length != format){
- FWalert(objName+"格式不对,应为“"+format+"”位。");
- return false;
- }
- else {
-
- if(format==18){
- temp=inputStr.substring(6,10);
- year=parseInt(temp,10);
- if(year<1900 || year>2200){
- FWalert(objName+"年份应介于1900与2200之间,请重新输入!");
- return false;
- }
- }
- else if(format==15){
- temp=inputStr.substring(6,8);
- year=parseInt(temp,10);
- if(year<00 || year>99){
- FWalert(objName+"年份应介于00与99之间,请重新输入!");
- return false;
- }
- }
-
- if(format==18)
- temp=inputStr.substring(10,12);
- else if(format==15)
- temp=inputStr.substring(8,10);
- month=parseInt(temp,10);
- if(month<1 ||month>12){
- FWalert(objName+"月份必须介于1与12之间!");
- return false;
- }
-
- if(format==18)
- temp=inputStr.substring(12,14);
- else if(format==15)
- temp=inputStr.substring(10,12);
- day=parseInt(temp,10);
- if((day==0)||(day>31)){
- FWalert(objName+"日必须介于0与31之间!");
- return false;
- }else if(day>28 && day<31){
- if(month==2){
- if(day!=29){
- FWalert(objName+year+"年"+month+"月无"+day+"日。");
- return false;
- }
- else {
- if((year%4)!=0){
- FWalert(objName+year+"年"+month+"月无"+day+"日。");
- return false;
- }
- else {
- if((year%100==0)&&(year%400!=0)){
- FWalert(objName+year+"年"+month+"月无"+day+"日。");
- return false;
- }
- }
- }
- }
- }
- else if(day==31){
- if((month==2)||(month==4)||(month==6)||(month==9)||(month==11)){
- FWalert(objName+month+"月无"+day+"日");
- return false;
- }
- }
- }
- return true;
- }
- function is0AndPosInteger(inputVal) {
- var format=inputVal.length;
- if(format==18){
- var lastChar = inputVal.charAt(inputVal.length-1);
- if(lastChar=="X")
- inputVal=inputVal.substring(0, inputVal.length-1);
- }
- for (var i = 0; i < inputVal.length; i++) {
- var oneChar = inputVal.charAt(i);
- if (oneChar < "0" || oneChar > "9") {
- return false;
- }
- }
- return true;
- }
- /**
- ** 获取中文字符串的拼音首字母
- **
- **/
- var CH2EN = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY";
- function GetChFirstLetter(str){
- if(!str || str.length==0) return "";
- var py = "";
- for(var i=0;i<str.length;i++){
- var utfcode = str.charCodeAt(i);
- var ind = utfcode - 19968;
- if(ind<0 || ind>=CH2EN.length){//不是汉字,返回字符本身
- py += str.charAt(i);
- }else{
- py += CH2EN.charAt(ind);
- }
- }
- return py;
- }
- /**
- *置输入框为不可编辑状态
- *theForm : FORM 名字 string 如:'aform'
- *fields : FORM 中的输入框名字 string 如:'GMSFHM',有多个的写法:['XM','GMSFHM']
- *flag : -1 表示,除了指定的fields之外
- *author : herong
- */
- function toDisabled(theForm,fields,flag){
- if (typeof theForm == 'string') {
- var formStr = " var theForm = document."+theForm+" ;";
- eval(formStr);
- }
-
- if(fields == null || fields == ''){
- var tagObjs = theForm.elements;
- for(var i=0,j=0; i<tagObjs.length; i++){
- toDisabledObj(tagObjs[i]);
- }
- return true;
- }
-
- if(flag == -1 && typeof fields =='string'){
- var tagObjs = theForm.elements;
- for(var i=0,j=0; i<tagObjs.length; i++){
- if($(tagObjs[i]).hasClass('fwcombox-text' )){
- continue;
- }
- if(tagObjs[i].name != fields){
- toDisabledObj(tagObjs[i]);
- } else {
- reObjReadOnly(tagObjs[i]);
- }
- }
- return true;
-
- }else if(flag == -1 && typeof fields !='string'){
- var tagObjs = theForm.elements;
- jQuery.each(tagObjs,
- function(i,o){
- if($(tagObjs[i]).hasClass('fwcombox-text' )){
- return ;
- }
- var dFlag = false;
- jQuery.each(fields,function(i1,o1){
- var obj = o;
- if(obj.type == 'text' || obj.type == 'select-one' || obj.type == 'textarea'){
- if (obj.name == o1){
- dFlag = true ;
- }
- }
- });
-
- if(dFlag){
- reObjReadOnly(o);
- } else {
- toDisabledObj(o);
- }
- }
- );
- return true;
- }else if(typeof fields =='string'){
- var obj;
- var eStr = 'obj=document.'+theForm.name+'.'+fields;
- eval(eStr);
- toDisabledObj(obj);
- }else{
- jQuery.each(fields,function(i,o){
- var obj;
- var eStr = 'obj=document.'+theForm.name+'.'+o;
- eval(eStr);
- toDisabledObj(obj);
- });
- }
-
- }
- /**
- * @tableId 配置单记录表单的ID字符
- * 功能说明:设置单记录表内所有对象为只读属性
- */
- function toDisabledTable(tableId){
- jQuery('#'+tableId+' :input').each(function(){
- toDisabledObj(this);
- });
-
- jQuery('#'+tableId+' a[class^=buttonlink]').each(function(){
- $(this).linkbutton('disable');
- });
- }
- /**
- * 设置某个控件为只读
- * @param Obj
- */
- function toDisabledObj(Obj){
- var qObj = $(Obj);
- if(qObj.hasClass('searchgridbox')){
- qObj.searchgrid('disabled',true);
- }else if($.data(Obj, 'fwcombox')!=null){
- qObj.fwcombox('disabled',true);
- }else{
- disablePrimitiveInput(Obj);
- }
- }
- /**
- * 设置html原始控件的只读属性,仅供框架内部使用
- */
- function disablePrimitiveInput(obj){
- if(obj==null){return;}
- if(obj.type=='text'||obj.type=='textarea'|| obj.type=='file'){
- obj.readOnly=true;
- $(obj).addClass("readOnly");
- $(obj).css("background-color","");
- FWnoPointer(obj);
- }else if(obj.type=='checkbox'||obj.type=='radio'
- ||obj.type == 'select-one' ){
- obj.disabled=true;
- }
- }
- /**
- * 取消html原始控件的只读属性,仅供框架内部使用
- */
- function enablePrimitiveInput(obj){
- var qObj=$(obj);
- if(qObj.hasClass('searchgridbox')){
- qObj.searchgrid('disabled',false);
- }else if($.data(obj, 'fwcombox')!=null){
- qObj.fwcombox('disabled',false);
- }else if (obj.type == 'checkbox' ||obj.type == 'radio'
- ||obj.type == 'select-one'){
- obj.disabled=false;
- }else{
- qObj.removeAttr("readOnly");
- qObj.removeClass("readOnly");
- qObj.unbind("focus.readOnly");
- qObj.attr("tabindex","");
- }
- }
- /**
- * 判断控件是否可编辑
- * @param Obj 控件对象
- * @return true,表示可编辑;false,表示只读
- */
- function isObjEnable(obj){
- var qObj=$(obj);
- if(qObj.hasClass('searchgridbox')){
- return !qObj.searchgrid('disabled');
- }else if($.data(obj, 'fwcombox')!=null){
- return !qObj.fwcombox('disabled');
- }else if (obj.type == 'checkbox' ||obj.type == 'radio'
- ||obj.type == 'select-one'){
- return !obj.disabled;
- }else{
- return !qObj.hasClass("readOnly");
- }
- }
- /**
- * 判断控件是否可见
- * @param Obj 控件对象
- * @return true,表示可见;false,表示不可见
- */
- function isObjVisible(obj){
- var qObj=$(obj);
- if(qObj.hasClass('searchgridbox')){
- return qObj.searchgrid('visible');
- }else if($.data(obj, 'fwcombox')!=null){
- return qObj.fwcombox('visible');
- }else if (obj.type == 'checkbox' ||obj.type == 'radio'
- ||obj.type == 'select-one'){
- return qObj.is(":visible");
- }else{
- return qObj.is(":visible");
- }
- }
- /**
- *过滤掉select控制指定项
- *selectName :select控件名 类型:string 如:document.aform.GRBGYY
- *optValues : 要删除的项 类型:string|Array
- *opt : 反向如果为-1,则optValues表示是要保留的项
- *author :herong
- *date :2008.9.23
- *使用方法 1 filter('aform.XB','1');
- *使用方法2 var arr=[];
- *arr[0] = '1';
- *arr[1] = '2';
- *filter('aform.XB',arr);
- */
- function filter(selectName,optValues,opt){
- if(typeof selectName ==='undefined' || selectName =='' || selectName ==''){
- return;
- }
-
- var evalStr = selectName+'.options';
- var target = eval(selectName);
- var sObj = eval(evalStr);
- var selectObj = sObj;
- var i = 0;
-
- //2011-12-03 若使用到过滤则先初始化下拉框,因为下拉框是获取焦点才初始化的
- if(jQuery.data(target, 'fwcombox')!=null){
- var opts = jQuery.data(target, 'fwcombox').options;
- opts.setValue(target,target.value);
- opts.dataLoad = true;
- }
-
- if(typeof optValues == 'string'){
- jQuery.each(selectObj,function(){
- if(this.value==optValues){
- jQuery(this).remove();
- FWremoveItem(target,this.value);
- }
- });
- }else{
- //20100114 wuyingde modified
- var arr=[];
- //提取该删除的对象
- jQuery.each(selectObj,function(){
- var rst=jQuery.inArray(this.value,optValues);
- if(rst!=-1&&opt!=-1){
- arr.push(this);
- FWremoveItem(target,this.value);
- }else if(rst==-1&&-1==opt){
- arr.push(this);
- FWremoveItem(target,this.value);
- }
- });
- //一次性删除
- jQuery(arr).remove();
- }
-
- }
- /**
- *清除表单输入域
- *theForm : FORM 名字 form object
- *fields : FORM 中的输入框名字 string/Array 注意:非框架的输入域不要用”_“ 前缀 ,如:_XM ,此类是不会清除的
- *flag : -1 表示,除了指定的fields之外
- *isTip : 是否提示确认
- *author :herong
- *date :2008.10.7
- *
- *e.g:
- *doClear(wfForm,'','',false);//清除wfForm表单输入域,false表示清除时无需确定
- *doClear(wfForm,'','',true);//清除wfForm表单输入域,true表示清除时需确定
- *doClear(wfForm,'XM','',false);//清除wfForm表单'XM'输入域,false表示清除时无需确定
- *doClear(wfForm,['XM','XB'],'',false);//清除wfForm表单'XM','XB'输入域,false表示清除时无需确定
- *doClear(wfForm,['XM','XB'],'-1',false);//清除wfForm表单除'XM','XB'之外输入域,false表示清除时无需确定
- *
- *代码解析。该函数代码包含许多重复代码,而且分支条件写的不够明白,但是由于代码为遗留代码,应用多年以及许多地方,所以不敢随便更改,故留下代码分析(by liguocai)
- *经过分析,函数依次是5个分支判断
- *fields是空 // if(fields == null || fields == ''){
- *fields不是空 && fields是string && flag==-1 // else if(flag == -1 && typeof fields =='string')
- *fields不是空 && fields不是string && flag==-1 // else if(flag == -1 && typeof fields =='string')
- *fields不是空 && fields是string && flag=='' // else if (typeof fields =='string')
- *fields不是空 && fields不是string && flag=='' // else
- *
- *每个分支由于处理的实际逻辑一模一样,都是对不同的控件类型进行判断然后清空。如果维护代码的时候需要修改某个控件的清空逻辑,则对5个分支都需要更新。
- */
- function doClear(theForm,fields,flag,isTip){
-
- if(typeof theForm !="object"){
- eval("theForm = document."+ theForm + ";");
- }
-
- if (isTip ) {
- //清除表单前先提示
- var confFlag = window.confirm("您确定要清除表单吗?");
- if (!confFlag){
- return ;
- }
- }
-
- if(fields == null || fields == ''){//fields是空
- var tagObjs = theForm.elements;
- for(var i=0,j=0; i<tagObjs.length; i++){
-
- if(tagObjs[i].type == 'text' || tagObjs[i].type == 'select-one' || tagObjs[i].type == 'textarea' || tagObjs[i].type == 'hidden'){
- if (tagObjs[i].name.indexOf("_") == 0 || tagObjs[i].name == 'pid' || tagObjs[i].name == 'wid') {
- continue;
- }
- //封装后下拉框实际为INPUT
- if(!$(tagObjs[i]).hasClass('fwcombox-text' )){
- tagObjs[i].value='';
- }
- //02y清除
- if($(tagObjs[i]).hasClass('bankaccounthid' )){
- tagObjs[i].value='';
- jQuery(':input[name="_HID_'+tagObjs[i].name+'"]',theForm).val('');
- }
- //05q清除
- if($(tagObjs[i]).hasClass('searchgridbox')){
- var box = $.data(tagObjs[i], 'searchgrid').input;
- box.val('');
- }
-
- //处理被封装过的下拉框
- if(tagObjs[i].type == 'select-one'){
- if(jQuery.data(tagObjs[i],'fwcombox')!=null){
- var span = jQuery.data(tagObjs[i],'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- //将选中的项目清除,选中项为空白
- var fwpanel = $.data(tagObjs[i], 'fwcombox').fwpanel;
- var panelbody = $('.fwcombox-panel-body',fwpanel);
- panelbody.find('div.fwcombox-item-selected').removeClass('fwcombox-item-selected');
- panelbody.find('div.fwcombox-item[value=""]').addClass('fwcombox-item-selected');
- }
- }
-
- }
- }
-
- return true;
-
- } else if(flag == -1 && typeof fields =='string'){//fields不是空 && fields是string && flag==-1
- var tagObjs = theForm.elements;
- for(var i=0,j=0; i<tagObjs.length; i++){
- if( tagObjs[i].name != fields && (tagObjs[i].type == 'text' || tagObjs[i].type == 'select-one' || tagObjs[i].type == 'textarea' || tagObjs[i].type == 'hidden')){
- if ( tagObjs[i].name.indexOf("_") == 0 || tagObjs[i].name == 'pid' || tagObjs[i].name == 'wid') {
- continue;
- }
-
- //封装后下拉框实际为INPUT
- if(!$(tagObjs[i]).hasClass('fwcombox-text') &&!$(tagObjs[i]).hasClass('searchgrid-text')){
- tagObjs[i].value='';
- }
-
- //02y清除
- if($(tagObjs[i]).hasClass('bankaccounthid' )){
- tagObjs[i].value='';
- jQuery(':input[name="_HID_'+tagObjs[i].name+'"]',theForm).val('');
- }
-
- //05q清除
- if($(tagObjs[i]).hasClass('searchgridbox')){
- var box = $.data(tagObjs[i], 'searchgrid').input;
- box.val('');
- }
-
- //处理被封装过的下拉框
- if(tagObjs[i].type == 'select-one'){
- if(jQuery.data(tagObjs[i],'fwcombox')!=null){
- var span = jQuery.data(tagObjs[i],'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- //将选中的项目清除,选中项为空白
- var fwpanel = $.data(tagObjs[i], 'fwcombox').fwpanel;
- var panelbody = $('.fwcombox-panel-body',fwpanel);
- panelbody.find('div.fwcombox-item-selected').removeClass('fwcombox-item-selected');
- panelbody.find('div.fwcombox-item[value=""]').addClass('fwcombox-item-selected');
- }
- }
-
- }
- }
-
- } else if (flag == -1 && typeof fields !='string'){//fields不是空 && fields不是string && flag==-1
- var tagObjs = theForm.elements;
- var temps = fields;
-
- for(var i=0; i<tagObjs.length; i++){
- if(jQuery.inArray(tagObjs[i].name,fields)==-1){
- if(tagObjs[i].type == 'text' || tagObjs[i].type == 'select-one' || tagObjs[i].type == 'textarea' || tagObjs[i].type == 'hidden'){
-
- if (tagObjs[i].name.indexOf("_") == 0 || tagObjs[i].name == 'pid' || tagObjs[i].name == 'wid') {
- continue;
- }
-
- //封装后下拉框实际为INPUT
- if(!$(tagObjs[i]).hasClass('fwcombox-text') &&!$(tagObjs[i]).hasClass('searchgrid-text')){
- tagObjs[i].value='';
- }
-
- //02y清除
- if($(tagObjs[i]).hasClass('bankaccounthid' )){
- tagObjs[i].value='';
- jQuery(':input[name="_HID_'+tagObjs[i].name+'"]',theForm).val('');
- }
- //05q清除
- if($(tagObjs[i]).hasClass('searchgridbox')){
- var box = $.data(tagObjs[i], 'searchgrid').input;
- box.val('');
- }
- //处理被封装过的下拉框
- if(tagObjs[i].type == 'select-one'){
- if(jQuery.data(tagObjs[i],'fwcombox')!=null){
- var span = jQuery.data(tagObjs[i],'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- //将选中的项目清除,选中项为空白
- var fwpanel = $.data(tagObjs[i], 'fwcombox').fwpanel;
- var panelbody = $('.fwcombox-panel-body',fwpanel);
- panelbody.find('div.fwcombox-item-selected').removeClass('fwcombox-item-selected');
- panelbody.find('div.fwcombox-item[value=""]').addClass('fwcombox-item-selected');
- }
- }
- }
- }
- }
-
-
- } else if (typeof fields =='string'){//fields不是空 && fields是string && flag==''
- var tagObjs = theForm.elements;
- for(var i=0,j=0; i<tagObjs.length; i++){
- if($.trim(tagObjs[i].name) != '' && tagObjs[i].name == fields && (tagObjs[i].type == 'text' || tagObjs[i].type == 'select-one' || tagObjs[i].type == 'textarea' || tagObjs[i].type == 'hidden')){
- if ( tagObjs[i].name.indexOf("_") == 0 || tagObjs[i].name == 'pid' || tagObjs[i].name == 'wid') {
- continue;
- }
- //封装后下拉框实际为INPUT
- if(!$(tagObjs[i]).hasClass('fwcombox-text')){
- tagObjs[i].value='';
- }
-
- //02y清除
- if($(tagObjs[i]).hasClass('bankaccounthid' )){
- tagObjs[i].value='';
- jQuery(':input[name="_HID_'+tagObjs[i].name+'"]',theForm).val('');
- }
-
- //05q清除
- if($(tagObjs[i]).hasClass('searchgridbox')){
- var box = $.data(tagObjs[i], 'searchgrid').input;
- box.val('');
- }
-
- //处理被封装过的下拉框
- if(tagObjs[i].type == 'select-one'){
- if(jQuery.data(tagObjs[i],'fwcombox')!=null){
- //将显示的文本值清空
- var span = jQuery.data(tagObjs[i],'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- //将选中的项目清除,选中项为空白
- var fwpanel = $.data(tagObjs[i], 'fwcombox').fwpanel;
- var panelbody = $('.fwcombox-panel-body',fwpanel);
- panelbody.find('div.fwcombox-item-selected').removeClass('fwcombox-item-selected');
- panelbody.find('div.fwcombox-item[value=""]').addClass('fwcombox-item-selected');
- }
- }
- }
- }
- } else {//fields不是空 && fields不是string && flag==''
- //{这是一段遗留的代码,虽然一看来就是逻辑过于简单,有问题,但是不做修改
- var tagObjs = theForm.elements;
- jQuery.each(fields,function(i,o){
- var dd = $("[name='"+o+"']",$(theForm));
- if (dd != null) {
- if(dd.hasClass('searchgridbox')){
- var box = $.data(dd.get(0), 'searchgrid').input;
- box.val('');
- } else {
- dd.val('');
- }
- }
- });
- //}
- //新增更正的代码
- for(var i=0; i<tagObjs.length; i++){
- if(jQuery.inArray(tagObjs[i].name,fields)!=-1){
- if(tagObjs[i].type == 'text' || tagObjs[i].type == 'select-one' || tagObjs[i].type == 'textarea' || tagObjs[i].type == 'hidden'){
-
- if (tagObjs[i].name.indexOf("_") == 0 || tagObjs[i].name == 'pid' || tagObjs[i].name == 'wid') {
- continue;
- }
-
- //封装后下拉框实际为INPUT
- if(!$(tagObjs[i]).hasClass('fwcombox-text') &&!$(tagObjs[i]).hasClass('searchgrid-text')){
- tagObjs[i].value='';
- }
- //02y清除
- if($(tagObjs[i]).hasClass('bankaccounthid' )){
- tagObjs[i].value='';
- jQuery(':input[name="_HID_'+tagObjs[i].name+'"]',theForm).val('');
- }
- //05q清除
- if($(tagObjs[i]).hasClass('searchgridbox')){
- var box = $.data(tagObjs[i], 'searchgrid').input;
- box.val('');
- }
- //处理被封装过的下拉框
- if(tagObjs[i].type == 'select-one'){
- if(jQuery.data(tagObjs[i],'fwcombox')!=null){
- var span = jQuery.data(tagObjs[i],'fwcombox').fwcombox;
- var input = span.find('input.fwcombox-text');
- input.val('');
- //将选中的项目清除,选中项为空白
- var fwpanel = $.data(tagObjs[i], 'fwcombox').fwpanel;
- var panelbody = $('.fwcombox-panel-body',fwpanel);
- panelbody.find('div.fwcombox-item-selected').removeClass('fwcombox-item-selected');
- panelbody.find('div.fwcombox-item[value=""]').addClass('fwcombox-item-selected');
- }
- }
- }
- }
- }
-
- return true;
- }
- }
- /**
- * 在页面的左上角显示错误消息
- * @param msg 消息内容
- * @param timeout 秒为单位,0或者负数表示不自动隐藏
- * @author 吴英德
- **/
- var framework_message_layer;
- var clearIntervalID;
- function showErrMsg(msg,delay){
- if(framework_message_layer == null){
- framework_message_layer=document.createElement('div');
- framework_message_layer.className='err_message_blank_board';
- //Element.extend(framework_message_layer);
- document.body.appendChild(framework_message_layer);
- clearIntervalID=window.setInterval(recurrectLocation,100);
- recurrectLocation();
- }
- var my_div = document.createElement('div');
- my_div.className='err_message';
- //Element.extend(my_div);
- my_div.innerHTML=msg;
- framework_message_layer.appendChild(my_div);
- recurrectLocation();
- if(delay>0){
- setTimeout(function(){
- jQuery(my_div).remove();
- if(jQuery(framework_message_layer).is(':empty')){
- jQuery(framework_message_layer).remove();
- window.clearInterval(clearIntervalID);
- framework_message_layer=null;
- }
- },delay*1000);
- }
- }
- function recurrectLocation(){
- if(framework_message_layer==null)
- {clearInterval(clearIntervalID);return;}
- var posX,posY;
- if (window.innerHeight) {
- posX = window.pageXOffset;
- posY = window.pageYOffset;
- }
- else if (document.documentElement && document.documentElement.scrollTop) {
- posX = document.documentElement.scrollLeft;
- posY = document.documentElement.scrollTop;
- }
- else if (document.body) {
- posX = document.body.scrollLeft;
- posY = document.body.scrollTop;
- }
- framework_message_layer.style.top=String(posY+10)+'px';
- framework_message_layer.style.right=String(posX+10)+'px';
- }
- /**
- * 作者:刘斯宇
- * 日期:2005-08-24
- * 功能:转换身份证号(无提示信息)
- * 参数意义:str 身份证号码
- * 返回值:身份证号码 或
- * 0 传入参数str为null
- * -1 公民身份证长度不是15或18位
- * -1 15位公民身份证不是数字
- * -3 18位公民身份证前17位不是数字
- * -4 没有通过18位校验
- * 使用方法: transformSfzh_na("123456789");
- */
- function transformSfzh_na(str){
- var newstr="new";
- if ((isNull(str)) || (str == "null") || (str == "")){
- return 0;
- }
- if (str.length!=15 && str.length !=18){
- //alert("公民身份证长度不正确应该为15或18位!");
- return -1;
- }
- if (str.length==15){
- if (isNaN(str)==true){
- //alert("15位公民身份证应该为数字!");
- return -2;
- }
- newstr = transact_na(str);
- }
- if (str.length==18){
- if (isNaN(str.substr(0,17))==true){
- //alert("18位公民身份证前17位应该为数字!");
- return -3;
- }
- newstr = str;
- }
- if (IDCard_validate(newstr)==true){
- return newstr;
- }else{
- return -4;
- }
- }
- function OpenHelp(url){
- var w=600;
- var h=400;
- var l = (screen.Width-w)/2;
- var t = (screen.Height-h)/2;
- window.open(url,"","top=" +t+ ", left=" + l+",width="+w+",height="+h+",toolbar=no,resizable=yes,status=no");
- }
- /**
- *
- * 父下拉框 parentOBJ
- * 子录入框 childOBJ
- * 功能描述: 证件类型的处理 选择了证件类型为身份证号码后,录入的证件号码
- */
- function zjlx(parentOBJ,childOBJ){
- FWzjlx(parentOBJ,childOBJ);
- }
- /**功能描述:多记录列表数据显示完毕后调用
- *入参 :
- * ListID 多记录表的配置ID名称
- * FunName 自定义的函数名
- * 应用的方式:
- * jQuery(function(){
- * onListLoad('fw_blank_bulletin','myfun');
- * });
- * function myfun(){}
- * **/
- function onListLoad(ListID,FunName){
- FWonListLoad(ListID,FunName);
- }
- /**功能描述:双击多记录列表数据后调用自定义函数
- *入参 :
- * ListID 多记录表的配置ID名称
- * FunName 自定义的函数名,必须有入参 rowIndex,rowData
- *应用的方式:
- *jQuery(function(){
- *onDblClickListRow('fw_blank_bulletin','myfun');
- *});
- *function myfun(rowIndex,rowData){}
- * **/
- function onDblClickListRow(ListID,FunName){
- FWonDblClickListRow(ListID,FunName);
- }
- /**功能描述:单击多记录列表数据后调用自定义函数
- *入参 :
- *ListID 多记录表的配置ID名称
- *FunName 自定义的函数名,必须有入参 rowIndex,rowData
- *应用的方式:
- *jQuery(function(){
- *onClickListRow('fw_blank_bulletin','myfun');
- *});
- *function myfun(rowIndex,rowData){}
- * **/
- function onClickListRow(ListID,FunName){
- FWonClickListRow(ListID,FunName);
- }
- /**功能描述:where条件修改后,重新刷新多记录表的数据
- *入参 :
- *ListID 多记录表的配置ID名称
- *Where 新的查询条件
- *pageNum 为刷新列表后显示第几页的数据,-1表示当前页,默认为1
- *应用的方式:
- *getListData('fw_blank_todolist'," OPERID='23' ");
- **/
- function getListData(ListID,Where,pageNum){
- FWgetListData(ListID,Where,pageNum);
- }
-
- //form内部控件的设置和获取
- /**从html的form里面提取控件的值,用object表示,属性名是控件的名称,属性值是控件的值。
- * 如果form里面有重名控件,那么属性值是个数组。另外,checkbox和可以多选的下拉列表的值
- * 总是数组。
- */
- function GetForm(form){
- return FWGetForm(form);
- }
- /**设置form内各个控件的值
- * 与GetForm相对应,values是一个object,具体要求请参阅FWGetForm
- */
- function SetForm(form,values){
- return FWSetForm(form,values);
- }
- /**
- *
- * @param obj 下拉框对象
- * @param val 值
- * 功能说明:因为下拉框经过封装,在JS脚本内赋值给下拉框时,
- * 下拉框会没有反应,需要调用此函数来赋值
- */
- function setCombVal(combox,val){
- FWsetCombVal(combox,val);
- }
- /**
- *
- * @param obj 多记录表单内配置的对象
- * @param 第几行
- * 功能说明:一个多记录表格中,每一行记录有一个控件例如 checkbox,radion,超链接等
- * 使用方法 <input type="checkbox" onclick="myFun(this)"/>
- * <a href="#" onclick="myFun(this)" >测试</a>
- * function myFun(obj){
- * var rownum = getGridRowIndex(obj);
- * }
- */
- function getGridRowIndex(obj){
- var tr = $(obj).parent().parent();
- var rownum = tr.attr('fwdatagrid-row-index');
- rownum = parseInt(rownum,10);
- return rownum;
- }
- /**
- *
- * @param configID 配置表单的ID
- * @param query 查询的入参 例如 XB=1
- * 功能说明:查询多记录表单中符合查询条件的记录所在的行号,从0开始算
- * 若查询不到则返回-1
- * 举例:var i = getGridRowIndexBS('bxgx_cbgx_rydj','JFRYLB=22');
- * 多个查询条件
- * var i = getGridRowIndexBS('bxgx_cbgx_rydj','XM=张小小&&XB=9');
- */
- function getGridRowIndexBS(configID,query){
- var rows = $('#'+configID).fwdatagrid('getRows');
- var array = query.split("&&");
- var index = -1;
- if(rows==null){
- FWalert("配置表单不存在!");
- return index;
- }
-
- if(query==''||query==null){
- FWalert("查询条件不能为空!");
- return index;
- }
-
- for(var i=0;i<rows.length;i++){
- var data = rows[i];
- var b1 = false;
- var b2 = true;
-
- for(var j=0;j<array.length;j++){
- var search = array[j].split("=");
- var col = search[0];
- var val = search[1];
- b1 = true;
- if(data[col]!=val){
- b2 = false;
- break;
- }
- }
-
- if(b1&&b2){
- index = i;
- break;
- }
- }
-
- return index;
- }
- /**
- *
- * @form form对象
- * 功能说明:检验不能为空时会给录入框值为空的边框和底部加颜色
- * 此函数负责把颜色去掉,恢复原来的正常色
- */
- function reNullShow(form){
- var ele;
- var readOnly;
-
- for (i = 0; i < form.elements.length; i ++){//遍历form中的字段
- ele = form.elements[i];
- readOnly = form.elements[i].readOnly;
-
- if (ele.vldStr==null){
- continue;
- }
-
- if (ele.vldStr==''){
- continue;
- }
-
- if(readOnly&&ele.type!='select-one'){
- continue;
- }
-
- if($(ele).css("background-color")=="#ffffcc"){
- $(ele).css("background","white");
- $(ele).css("border","#B5B8C8 1px solid");
- }
-
- //处理下拉框的情况
- if(ele.type=='select-one'){
- if($.data(ele, 'fwcombox')!=null){
- var span = jQuery.data(ele, 'fwcombox').fwcombox;
- var input = jQuery('.fwcombox-text',span);
- if(input.css("background-color")=="#ffffcc"){
- input.css({background:'white'});
- span.css({border:'#B5B8C8 1px solid'});
- }
- }
- }
- }//for
-
- }
- /**
- * @obj 控件对象
- * 功能说明:撤销掉控件的只读属性
- */
- function reObjReadOnly(obj){
- var ele = obj;
- var qObj = $(obj);
- if(qObj.hasClass('searchgridbox')){
- qObj.searchgrid('disabled',false);
- obj.readOnly = false;
- }else if(qObj.hasClass('bankaccounthid')){
- enablePrimitiveInput($("input[name=_HID_" + qObj.attr("name") + "]",qObj.parent()).get(0));
- }else if($.data(ele, 'fwcombox')!=null){
- qObj.fwcombox('disabled',false);
- }else if (obj.type == 'checkbox' ||obj.type == 'radio'){
- enablePrimitiveInput(obj);
- }else{
- enablePrimitiveInput(obj);
- }
- }
- /**
- * @form form对象
- * @fields : FORM 中的输入框名字 string 如:'GMSFHM',有多个的写法:['XM','GMSFHM']
- * @flag : -1 表示,除了指定的fields之外
- * 功能说明:撤销掉form内所有对象的只读属性
- */
- function reFormReadOnly(form,fields,flag){
- if (typeof theForm == 'string') {
- var formStr = " var theForm = document."+theForm+" ;";
- eval(formStr);
- }
- //需处理的字段的j集合,无论前台是什么类型,一律转成object集合
- var fieldsSet ={};
- if(fields==null ||fields == ''){
- //全集
- for(i=0;i<form.elements.length;i++){
- fieldsSet[form.elements[i].name]=true;
- }
- }else if(typeof fields==='string'){
- //单元素集合
- fieldsSet[fields]=true;
- }else if($.isArray(fields)){
- //部分集合
- for(i=0;i<fields.length;i++){
- fieldsSet[fields[i]]=true;
- }
- }
- //反向选择
- if(flag ==-1){
- var revertSet = {};
- for(i=0;i<form.elements.length;i++){
- var name = form.elements[i].name;
- if(fieldsSet[name]!==true){
- revertSet[name]=true;
- }
- }
- fieldsSet = revertSet;
- }
- //遍历form中的字段
- for (i = 0; i < form.elements.length; i ++){
- var name = form.elements[i].name;
- if(name == '' || true!==fieldsSet[name]){
- //过滤无需处理的控件
- continue;
- }
- reObjReadOnly(form.elements[i]);
- }
- }
- /**
- * @tableId 配置单记录表单的ID字符
- * 功能说明:撤销掉单记录表内所有对象的只读属性
- */
- function reTableReadOnly(tableId){
- jQuery('#'+tableId+' :input').each(function(){
- reObjReadOnly(this);
- });
-
- jQuery('#'+tableId+' a[class^=buttonlink]').each(function(){
- $(this).linkbutton('enable');
- });
-
- }
- /**
- * @tableId 配置多记录表单的ID字符
- * 功能说明:获取可编辑多记录表的数据集
- */
- function getEditGridData(tableId){
- var rows = $("#"+tableId).fweditgrid("getRows");
- return rows;
- }
- /**
- * 功能说明:给可编辑多记录表的增加一行数据
- * @param tableId 配置多记录表单的ID字符
- * @param rows 新增行的行数据,具体入参请参考fweditgrid("addRows",rows)
- * @returns int 添加后当前页面的总行数
- */
- function addEditGridRow(tableId,rows){
- return $("#"+tableId).fweditgrid("addRows",rows);
- }
- /**
- * 功能说明:删除可编辑多记录表的一行或多行数据
- * @tableId 配置多记录表单的ID字符
- * @row 行号,具体入参请参考fweditgrid("removeRows",rows)
- */
- function delEditGridRow(tableId,row){
- $("#"+tableId).fweditgrid("removeRows",row);
- }
-
- /**
- * 计算两个年月之间的相差月数
- *
- * @param strDateBegin YYYYMM
- * @param strDateEnd YYYYMM
- * @return 无
- */
- function getMonthsBetween(strDateBegin, strDateEnd) {
-
- var strOut;
-
- if(!isNY(strDateBegin)){
- FWalert('年月:' + strDateBegin +' 格式不正确或数值不正确');
- return 0;
- }
-
- if(!isNY(strDateEnd)){
- FWalert('年月:' + strDateEnd +' 格式不正确或数值不正确');
- return 0;
- }
-
- var iB = parseInt(strDateBegin.substring(0,4),10)* 12 + parseInt(strDateBegin.substring(4, 6),10);
- var iE = parseInt(strDateEnd.substring(0, 4),10) * 12 + parseInt(strDateEnd.substring(4, 6),10);
-
- strOut = iE - iB;
- return strOut;
-
- }
- /**
- * 计算日期间隔的天数
- * @param strBeginDate
- * 开始日期 字符串 格式 yyyy-mm-dd
- * @param strEndDate
- * 结束日期 字符串 格式 yyyy-mm-dd
- * @return 无
- */
- function getDaysBetween(strBeginDate, strEndDate) {
- if(!isDate2(strBeginDate)){
- FWalert('日期字符串:' + strBeginDate +' 格式不正确或数值不正确');
- return 0;
- }
-
- if(!isDate2(strEndDate)){
- FWalert('日期字符串:' + strEndDate +' 格式不正确或数值不正确');
- return 0;
- }
-
- var arryB = strBeginDate.split("-");
- var arryE = strEndDate.split("-");
- var iY = parseInt(arryB[0],10);
- var iM = parseInt(arryB[1],10);
- var iD = parseInt(arryB[2],10);
-
- var dateB = new Date(iY, iM - 1, iD);
-
- iY = parseInt(arryE[0],10);
- iM = parseInt(arryE[1],10);
- iD = parseInt(arryE[2],10);
-
- var dateE = new Date(iY, iM - 1, iD);
- var iDay = (dateE - dateB )/(1000*60*60*24);
-
- return iDay;
- }
-
- /**
- * 计算间隔天数后的日期
- * date != null
- * @param strDate 日期 字符串 格式 yyyy-mm-dd
- * @param days 间隔的天数
- * @return 格式 yyyy-mm-dd
- */
- function addDayToDate(strDate, days){
-
- if(!isDate2(strDate)){
- FWalert('日期字符串:' + strBeginDate +' 格式不正确或数值不正确');
- return 0;
- }
-
- var monthString, monthString, dateString;
- var arry = strDate.split("-");
- var iY = parseInt(arry[0],10);
- var iM = parseInt(arry[1],10);
- var iD = parseInt(arry[2],10);
- var mdate = new Date(iY, iM - 1, iD);
- var num = parseInt(days,10);
- mdate.setDate(mdate.getDate()+num);
-
- //如果月份长度少于2,则前加 0 补位
- if((mdate.getMonth() + 1).toString().length == 1) {
- monthString = 0 + "" + (mdate.getMonth() + 1).toString();
- } else {
- monthString = (mdate.getMonth() + 1).toString();
- }
-
- //如果天数长度少于2,则前加 0 补位
- if (mdate.getDate().toString().length == 1) {
- dayString = 0 + "" + mdate.getDate().toString();
- } else {
- dayString = mdate.getDate().toString();
- }
- dateString = mdate.getFullYear() + "-" + monthString + "-" + dayString;
-
- return dateString;
- }
-
- /**
- * 计算月份指定累加或减少月数后的月份
- *
- * @param strDate
- * 初始年月 YYYYMM
- * @param months
- * 增加或减少的数量
- * @return YYYYMM
- */
- function addMonthToYM(strDate, months){
- if(!isNY(strDate)){
- FWalert('年月:' + strDate +' 格式不正确或数值不正确');
- return '0';
- }
- var iY = parseInt(strDate.substring(0,4),10);
- var iM = parseInt(strDate.substring(4,6),10);
- var mdate = new Date(iY, iM - 1, 1);
- var num = parseInt(months+"",10);
- mdate.setMonth(mdate.getMonth() + num);
- //如果月份长度少于2,则前加 0 补位
- if((mdate.getMonth() + 1).toString().length == 1) {
- mth = 0 + "" + (mdate.getMonth() + 1).toString();
- } else {
- mth = (mdate.getMonth() + 1).toString();
- }
- var str = mdate.getFullYear() + "" + mth;
- return str;
- }
-
- /**
- * 获取应用服务器时间
- *
- * @param formate
- * 日期的格式
- * @return 无
- */
-
- function getCurDate(formate){
- var str = "";
- $.ajax({
- url:contextPath+'/jsp/framework/sysdate.jsp'
- ,data:{FORMATE:formate}
- ,cache:false
- ,type:'post'
- ,async:false
- ,error:function (request, textStatus, errorThrown){alert("获取系统时间出错!");}
- ,success:function (data, textStatus){
- if("1"!=data.FHZ){//出错了,弹出错误提醒
- if("CSRF" == data.FHZ){
- showMsg(data.MSG||'',3);
- return;
- }
- }
- str = jQuery.trim(data);
- }
- ,beforeSend:function(XMLHttpRequest ){var cToken = $.cookie(headtoken) || token;XMLHttpRequest.setRequestHeader(headtoken,cToken); }
- });
- return str;
- }
-
- /**
- * 获取下拉框中字典项值对应的字典文本
- *@parm obj
- *@return 返回字典文本
- *使用方法 getComText(aform.XB)
- */
- function getComText(obj){
- var value = obj.value;
- var s ="";
- $('>option', obj).each(function(){
- var v = $(this).attr('value');
- if(v == value){
- s = $(this).html();
- return false;
- }
- });
-
- return s;
- }
-
- /**
- *将包含在form内的单记录表格的信息复制到多记录表格内
- * @param theform 为form对象
- * @param configID 多记录表单的配置ID
- * @return void
- * 使用方法 formToGird(aform,"zzy_t2");
- */
- function formToGird(theform,configID){
- var rst = GetForm(theform);
-
- jQuery('select',theform).each(function(){
- var txt="";
- if(this.value!=''){
- txt = getComText(this);
- }
- rst['_DIC_'+this.name]=txt;
- });
-
- var target =$('#'+configID).get(0);
- var headers = $.data(target, 'fwdatagrid').options.data.headers;
- var datas={};
-
- for(var i=0;i<headers.length;i++){
- if(typeof rst[headers[i]] !='undefined'){
- datas[headers[i]]=rst[headers[i]];
- }
- if(typeof rst['_DIC_'+headers[i]] !='undefined'){
- datas['_DIC_'+headers[i]]=rst['_DIC_'+headers[i]];
- }
- }
- $('#'+configID).fwdatagrid('addRows',datas);
-
- }
-
-
- /**
- *函数用于将list对象中str1里面字段的值包含str2替换为str3
- *list:所要处理的list对象
- *colNames:字段拼串字符串对象,如"AAE005,AAE006"
- *str2:指定字段值包含的字符串,需要替换的字符串
- *str3:替换的字符串,将str2替换成str3
- *
- */
- function replaceListValue(list,colNames,str1,str2){
- var a = colNames.split(','); //将字符串str转换为数组对象
- var aLen = a.length; //获取数组a的长度
- var rLen = list.length; //获取list对象的长度
-
- for(var j = 0; j < aLen; j++){
- for(var i = 0; i < rLen ; i++){
- var str = list[i][a[j]];
- var tmp="str = str.replace(/"+str1+"/g, str2)";
- eval(tmp);
- list[i][a[j]] = str; //将替换后的值重新保存到list中
- }
- }
- return list;
- }
-
- /**
- *将list对象中指定字段的值设为strV
- *使用方法:list = setListValue(rows,'GMSFHM','X');
- */
- function setListValue(list,colName,strV){
- var rLength = list.length; //list对象的行数
- for(var i = 0 ; i < rLength; i++){ //对list的每行循环
- list[i][colName] = strV; //给第i行的str1字段赋值strV
- }
- return list;
- }
-
-
- /**
- * 设置控件的焦点
- * 入参obj 为控件对象
- * 使用方法:
- * 方法1:setFocus(djspForm.AAC002);
- * 方法2:setFocus($('#bxgx_comm_cxtj [name=AAC002]'));
- * bxgx_comm_cxtj 为单记录表单ID
- */
- function setFocus(obj){
- var input;
- var tmpObj = $(obj);
- var textLen = 0;
-
- if(!tmpObj.hasClass('buttonlink')){
- if(jQuery.data(obj,"fwcombox")!=null){
- var span = jQuery.data(obj,'fwcombox').fwcombox;
- input = span.find('input.fwcombox-text');
- }else{
- input = tmpObj;
- }
- input.focus() ; //获取焦点
- try{
- textLen = input.val().length ;//获取当前文字对象长度
- }catch(e){
- textLen=0;
- }
-
- var rng = document.selection.createRange(); //获取焦点区域
- rng.moveStart("character",textLen) ;//向后移动指定长度
- rng.select();
- }else{
- input = $(obj);
- input.focus() ; //获取焦点
- }
- }
- /**
- * 判断比例是否在0至100范围内,并自动四舍五入保留小数后两位
- * @param obj 控件的对象
- * @returns 空
- */
- function blpd(obj){
- /*取数值*/
- var val = obj.value;
- if(val != null && (val > 100 || val < 0)){
- obj.value='';
- FWalert("比例必需在0至100范围内");
- setTimeout(function(){obj.focus();},0);
- }
- /*自动四舍五入保留小数后两位*/
- else{
- var valNew = Math.round(val*100)/100;
- obj.value=valNew;
- }
- }
- /**
- * 日期格式转换
- * @param str 日期字符串
- * @param ft1 当前的日期格式
- * @param ft2 转换后的日期格式
- * @returns 转换后的日期
- * 使用方法:var sDate = formateDateStr('20110131','yyyymmdd','yyyy-mm-dd');
- */
- function formateDateStr(str,ft1,ft2){
- var sYear ="";
- var sMm ="";
- var sDd ="";
- var sDate="";
- var ft_1 = ft1.toLowerCase();
- var ft_2 = ft2.toLowerCase();
- var iY=0,iM=0,iD=0;
-
- iY = ft_2.indexOf('yyyy');
- iM = ft_2.indexOf('mm');
- iD = ft_2.indexOf('dd');
-
- if(iY==-1||iM==-1||iD==-1){
- alert(ft2+' 格式不正确!');
- return '';
- }
-
- iY = ft_1.indexOf('yyyy');
- iM = ft_1.indexOf('mm');
- iD = ft_1.indexOf('dd');
-
- if(iY==-1||iM==-1||iD==-1){
- alert(ft1+' 格式不正确!');
- return '';
- }
-
- sYear = str.substr(iY,4);
- sMm = str.substr(iM,2);
- sDd = str.substr(iD,2);
-
- sDate=ft_2.replace(/yyyy/gi,sYear);
- sDate=sDate.replace(/mm/gi,sMm);
- sDate=sDate.replace(/dd/gi,sDd);
-
- return sDate;
- }
- /**
- * 日期比较函数
- * 判断如果date1大于date2就给出msg提示
- * @param date1 开始日期
- * @param date2 终止日期日期
- * @param msg 自定义的提示信息
- * 日期的格式支持 yyyymmdd、yyyy-mm-dd、yyyy/mm/dd
- * 使用方法:compareDate('2011-01-01','2011-01-02','日期比较失败');
- */
- function compareDate(date1,date2,msg){
- var sYear ='';
- var sMonth='';
- var sDay ='';
- var sDate1='';
- var sDate2='';
- var arry;
- var s='';
- var i=0,j=0,iDate1=0,iDate2=0;
- var b1 = isDate(date1);
- var b2 = isDate(date2);
-
-
- if(!b1){
- alert(date1+' 日期不正确!');
- return false;
- }
- if(!b2){
- alert(date2+' 日期不正确!');
- return false;
- }
-
- i = date1.indexOf('-');
- if(i>0){
- s="-";
- }
-
- i = date1.indexOf('/');
- if(i>0){
- s="/";
- }
-
- if(s==''){
- sDate1 = date1;
- }else{
- arry = date1.split(s);
- sYear =arry[0];
- sMonth =arry[1];
- sDay =arry[2];
- sDate1 =sYear+sMonth+sDay;
- }
-
- s="";
- i = date2.indexOf('-');
- if(i>0){
- s="-";
- }
-
- i = date2.indexOf('/');
- if(i>0){
- s="/";
- }
-
- if(s==''){
- sDate2 = date2;
- }else{
- arry = date2.split(s);
- sYear =arry[0];
- sMonth =arry[1];
- sDay =arry[2];
- sDate2 =sYear+sMonth+sDay;
- }
-
- iDate1 = parseInt(sDate1,10);
- iDate2 = parseInt(sDate2,10);
-
- if(iDate1<=iDate2){
- return true;
- }else{
- alert(msg);
- return false;
- }
-
- return false;
- }
- /**
- * 日期比较函数
- * 判断如果date1大于date2就给出msg提示,并光标自动定位到obj控件上
- * @param date1 开始日期
- * @param date2 终止日期日期
- * @param msg 自定义的提示信息
- * 日期的格式支持 yyyymmdd、yyyy-mm-dd、yyyy/mm/dd
- * 使用方法:compareDate2(aform.test,'2011-01-01','2011-01-02','日期比较失败');
- */
- function compareDate2(obj,date1,date2,msg){
- var b = compareDate(date1,date2,msg);
- var inp = $(obj);
- if(!b){
- setTimeout(function(){inp.focus();},0);
- }
-
- return b;
- }
- /**
- * 行选择函数
- * 改变选中行的颜色或是单击某行记录的任何地方进行勾选
- * 主要是配合 onClickListRow、onDblClickListRow 使用
- * @param idstr 只读多记录表单的配置ID
- * @param rowindex 行序号(从0开始)
- * @param type 应用的类型字符串例如:row=s|input=checkbox
- * 其中 row 属性表示行的颜色需要改变
- * 若 row=n 表示不需要改变行颜色
- * 若 row=s 表示单选行只改变选中行的颜色
- * 若 row=m 表示只要选中都改变颜色
- * input 属性表示选择行后勾选框的勾选上
- * 若 input=checkbox 表示多选框
- * 若 input=radio 表示单选框
- *使用方法:
- * 1.改变行颜色而且是单选行,若列表有勾选框不自动勾选
- * var sMark='row=s'
- * gridRowSelected('zhcx_grjbzltest3',0,sMark);
- * 2.改变行颜色,若列表有勾选框自动勾选
- * var sMark='row=s|input=checkbox'
- * gridRowSelected('zhcx_grjbzltest3',0,sMark);
- */
- function gridRowSelected(idstr,rowindex,type){
- var grid =$('#'+idstr);
- var tmp,chk,arry1,arry2,sRow='',sInput='';
- var str = type.toLowerCase();
-
- if(str==''||str==null){
- str='row=s|input=checkbox';
- }
-
- arry1 = str.split('|');
-
- for(var i=0;i<arry1.length;i++){
- tmp = arry1[i];
- arry2 = tmp.split('=');
-
- if(arry2[0]=='row'){sRow=arry2[1];}
- if(arry2[0]=='input'){sInput=arry2[1];}
- }
-
- //执行单行选择并改变颜色时,需要去掉已选的颜色
- if(sRow=='s'){
- $('.fwdatagrid-view tbody tr[class*=fwdatagrid-row-selected]', grid).each(function(){
- $(this).removeClass('fwdatagrid-row-selected');
- });
- }
-
- $('.fwdatagrid-view tbody tr[fwdatagrid-row-index='+rowindex+']', grid).each(function(){
- //单行或是多行选择
- if(sRow=='s'||sRow=='m'){
- $(this).addClass('fwdatagrid-row-selected');
- }
-
- //需要对选择框做处理
- if(sInput!=''){
- chk = $('[type="'+sInput+'"]',$(this)).attr("checked");
- if(!chk){
- $('[type="'+sInput+'"]',$(this)).attr("checked",true);
- }//else{
- // $('[type="'+sInput+'"]',$(this)).attr("checked",false);
- //}
- }
- });
- }
- /**
- * 取消行选择函数
- * 改变选取消行的颜色或是单击某行记录的任何地方取消勾选
- * 主要是配合 onClickListRow、onDblClickListRow 使用
- * @param idstr 只读多记录表单的配置ID
- * @param rowindex 行序号(从0开始)
- * @param type 应用的类型字符串例如:row=s|input=checkbox
- * 其中 row 属性表示行需要取消选中颜色,如果只是想处理勾选框此参数也不能少
- * 若 row=s 表示单选行只取消选中行的颜色
- * 若 row=a 表示全部取消选中行的颜色
- * input 属性表示取消勾选状态的控件类型
- * 若 input=checkbox 表示多选框
- * 若 input=radio 表示单选框
- *使用方法:
- * 1.改变行颜色而且是单选行,若列表有勾选框不自动取消勾选
- * var sMark='row=s'
- * gridRowUnSelected('zhcx_grjbzltest3',0,sMark);
- * 2.取消选中行颜色,若列表有勾选框全部取消勾选
- * var sMark='row=a|input=checkbox'
- * gridRowUnSelected('zhcx_grjbzltest3',0,sMark);
- */
- function gridRowUnSelected(idstr,rowindex,type){
- var grid =$('#'+idstr);
- var tmp,chk,arry1,arry2,sRow='',sInput='';
- var str = type.toLowerCase();
-
- if(str==''||str==null){
- str='row=a|input=checkbox';
- }
- arry1 = str.split('|');
-
- for(var i=0;i<arry1.length;i++){
- tmp = arry1[i];
- arry2 = tmp.split('=');
-
- if(arry2[0]=='row'){sRow=arry2[1];}
- if(arry2[0]=='input'){sInput=arry2[1];}
- }
-
- //全部去掉选择行的颜色
- if(sRow=='a'||sRow=='m'){
- $('.fwdatagrid-view tbody tr[class*=fwdatagrid-row-selected]', grid).each(function(){
- $(this).removeClass('fwdatagrid-row-selected');
- if(sInput!=''){
- $('[type="'+sInput+'"]',$(this)).attr("checked",false);
- }
- });
- }
-
- //只去掉指定选择行的颜色
- if(sRow=='s'){
- $('.fwdatagrid-view tbody tr[fwdatagrid-row-index='+rowindex+']', grid).each(function(){
- $(this).removeClass('fwdatagrid-row-selected');
- if(sInput!=''){
- $('[type="'+sInput+'"]',$(this)).attr("checked",false);
- }
- });
- }
-
- //去掉全部勾选
- if(sRow=='a'&&sInput!=''){
- $('[type="'+sInput+'"]',$(this)).attr("checked",false);
- }
- }
- /**
- * 获取单记录表单的所有字段并自动按指定的分隔符拼成串
- * @param idstr 单记录表单的ID
- * @param separator 分隔符
- * @param noParam 不需要拼接的字段数组
- * @returns 返还拼接后的串
- * 使用方法:
- * var noParam = new Array('XB','BZ');
- * var str = spliceStr('gentbl_test','\x03',noParam);
- * 以上的例子分隔符为chr(3)
- */
- function spliceStr(idstr,separator,noParam){
- var k,i,j=0,tmp='';
- var bMark = false;
- var tags = new Array();
- var gtObj = $('#'+idstr).get(0);
-
- if(separator==''||separator==null){
- alert('分隔符不能为空');
- return;
- }
-
- $(':input',gtObj).each(function(){
- //在此处停止,执行下一个循环
- if(this.name==null||this.name==''){return true;}
- bMark=false;
-
- for(k=0;k<noParam.length; k++){
- if(noParam[k]==this.name){
- bMark = true;
- break;
- }
- }
-
- if(!bMark){
- tags[j] = this.name+"="+this.value;
- j++;
- }
-
- });
-
- tmp = tags.join(separator);
-
- return tmp;
- }
- /**
- * 设置按钮按钮的可用或只读控制
- * @param btn 单按钮的NAME或是存放多个按钮名称的数组
- * @param status 固定值:true 或是 false
- * @returns 没有返回值
- * 使用方法1:
- * 设置按钮name="btnQuery" 和 name="btnCls" 只读
- * var arrBtn = new Array('btn','btn2');
- * btnStatus(arrBtn,false);
- *
- * 使用方法2:
- * 设置按钮name="btnQuery" 可用
- * btnStatus('btnQuery',true);
- */
- function btnStatus(btn,status){
- //判断是否为数组
- if(typeof btn == 'object' && typeof btn.sort == 'function' && typeof btn.length == 'number'){
- for(var i=0;i<btn.length;i++){
- $('a[name="'+btn[i]+'"]')[0].disabled=!status;
- }
- }else{
- $('a[name="'+btn+'"]')[0].disabled=!status;
- }
- }
- /**
- * 组装查询条件函数
- * @param idStr 单记录表单的配置ID名称
- * @param ColRow 特殊字段的设置的JSON数组
- * @returns 返回组装后的查询条件串
- * 使用方法1:
- * 没有任何特殊的设置
- * var con = spliceWhere('ybdy_spdjcx_sqxd_cxtj','');
- * 使用方法2:
- * var row = [{'colname':'CXRQ','type':'DATE','begin':'KSCXRQ','end':'ZZCXRQ'},
- * {'colname':'SHNY','type':'STRING','begin':'KSSHNY','end':'ZZSHNY','exp':'<,>'},
- * {'colname':'CSRQ','type':'DATE','exp':'>='},
- * {'colname':'JBRQ','type':'DATETIME'},
- * {'colname':'JE','type':'NUMBER'},
- * {'colname':'ZJBH','type':'STRING','begin':'','end':'%','exp':'like'},
- * {'colname':'YWLSH','type':''}
- * ];
- * var con = spliceWhere('ybdy_spdjcx_sqxd_cxtj',row);
- * 具体的含义详见开发手册
- */
- function spliceWhere(idStr,ColRow){
- var row = [];
- var b = false;
- var arrCol=[];
- var strWhere='',j=0;
- var myobj = $('#'+idStr).get(0);
-
- if(typeof ColRow =='object' && typeof ColRow.sort == 'function' && typeof ColRow.length == 'number'){
- row = ColRow;
- }
-
- //找出有特别设置的字段
- for(var i=0;i<row.length;i++){
- var item = row[i];
-
- var exp ='=';//表达式默认为等号
- var exp1='', exp2='';//有区间判断的表达式符合,例如 <、>
- var colname ='',colvalue='';
- var begin='', end='', tmp='', type='STRING';
- var date1='', date2='', iLen=0, iPos=0;
-
- if(row[i]['colname']==null){
- continue;
- }
-
- colname = row[i]['colname'];
-
- //判断是否存在值 有时需要查询的字段不在界面上 开始日期、终止日期对应的字段XXX日期等
- if(typeof $('[NAME="'+colname+'"]',myobj).get(0)=='object'){
- //取相应字段的值
- colvalue =$('[NAME="'+colname+'"]',myobj).get(0).value;
- if(colvalue==''||colvalue==null){
- continue;
- }
- }
-
- if(row[i]['begin']!=null){begin=row[i]['begin'];}
- if(row[i]['end']!=null){end=row[i]['end'];}
- type=row[i]['type'];
-
- arrCol[j]=colname;//放入数组的目的是为了下面过滤掉,不要重复组合
- j++;
-
- //处理需要过滤不组合到WHERE内的字段
- if(type==null||type==''){
- continue;
- }
-
- //是否配置了表达式
- if(row[i]['exp']!=null){
- exp = row[i]['exp'];
- exp = exp.toLowerCase();
- iPos = exp.indexOf(','); //检查是否配置了 <,> 等表达式
- if(iPos>0){
- var arrExp = exp.split(',');
- exp='=';
- exp1 = arrExp[0];
- exp2 = arrExp[1];
- }
- }
-
- if(strWhere==''){
- strWhere =' ' + colname;
- }else{
- strWhere = strWhere + ' and ' + colname;
- }
-
- //拼接上表达式
- strWhere += ' ' + exp +' ';
-
- if(exp!='like'){
- //调用内部函数组合查询条件
- strWhere = dt(myobj,strWhere,type,colname,colvalue,begin,end,exp1,exp2);
-
- if(begin!=''){ arrCol[j]=begin; j++;}
- if(end!=''){arrCol[j]=end;j++;}
- }
-
- if(exp=='like'){
- if((begin==''&&end=='')||(begin=='%'&&end=='%')){
- strWhere += "'%" + colvalue + "%'";
- }
- if(begin=='%'&&end==''){
- strWhere += "'%" + colvalue + "'";
- }
- if(begin==''&&end=='%'){
- strWhere += "'" + colvalue + "%'";
- }
- }
-
- }//for end here
-
- //下面开始处理没有特别设置的字段
- jQuery(':input',myobj).each(function(){
- b=false;
-
- if(this.name==null|| this.name==''||this.name=='_multiple'){
- return true; //循环下一个相当于FOR循环continue
- }
- //过滤掉已经特殊处理过的字段
- for(var k=0; k<arrCol.length;k++){
- if(arrCol[k]== this.name){
- b=true;
- break;
- }
- }
-
- if(b){
- return true; //循环下一个相当于FOR循环continue
- }
-
- if(this.value==''){
- return true; //循环下一个相当于FOR循环continue
- }
-
-
- if(strWhere==''){
- strWhere =' ' + this.name + '=';
- }else{
- strWhere = strWhere + ' and ' + this.name + '=';
- }
-
- strWhere += "'" + this.value + "' ";
-
- });
- return strWhere;
-
- //定义内部函数
- function dt(obj,sW,ty,cln,clv,bg,en,e1,e2){
- var d1,d2,iL,tp;
-
- if(e1==''){e1='>=';} //若没有配则设置默认值
- if(e2==''){e2='<=';}
- if(bg==''&&en==''){
- if(ty=='NUMBER'){sW += clv;}
- if(ty=='STRING'){sW += "'" + clv + "'";}
- if(ty=='DATE'){sW += "to_date('" + clv + "','yyyy-mm-dd')"; }
- if(ty=='DATETIME'){sW += "to_date('" + clv + "','yyyy-mm-dd hh24:mi:ss')"; }
- if(ty=='DATETONUM6'){
- clv = clv.replace(/-/gi, "");
- if(clv.length>6){
- clv = clv.substr(0,6);
- }
- sW += clv;
- }
- if(ty=='DATETONUM8'){
- clv = clv.replace(/-/gi, "");
- sW += clv;
- }
- if(ty=='DATETONUM14'){
- clv = clv.replace(/-/gi, "");
- clv = clv.replace(/:/gi, "");
- clv = clv.replace(/ /gi, "");
- var iL = clv.length;
- while(iL<14){
- clv+='0';
- iL = clv.length;
- }
- sW += clv;
- }
-
- return sW;
- }
-
- //说明是有开始字段跟终止字段
- if(bg!=''&&en!=''){
-
- if(typeof $('[NAME="'+bg+'"]',obj).get(0)!='object'){
- alert('字段='+bg+' 不存在!');
- return '';
- }
-
- if(typeof $('[NAME="'+en+'"]',obj).get(0)!='object'){
- alert('字段='+en+' 不存在!');
- return '';
- }
-
- d1=$('[NAME="'+bg+'"]',obj).get(0).value;
- d2=$('[NAME="'+en+'"]',obj).get(0).value;
- iL = sW.length-2;
- sW = sW.substr(0,iL); //去掉=号
-
- //开始字段录入值
- if(d1!=''){
- if(ty=='NUMBER'){sW += " "+e1+d1;}
- if(ty=='STRING'){sW += " "+e1+"'"+d1+"'";}
- if(ty=='DATE'){ sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd')";};
- if(ty=='DATETIME'){sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd hh24:mi:ss')";};
- if(ty=='DATETONUM6'){
- d1 = d1.replace(/-/gi, "");
- if(d1.length>6){
- d1 = d1.substr(0,6);
- }
- sW += " "+e1 + " " + d1;
- }
- if(ty=='DATETONUM8'){
- d1 = d1.replace(/-/gi, "");
- sW += " "+e1 + " " + d1;
- }
- if(ty=='DATETONUM14'){
- d1 = d1.replace(/-/gi, "");
- d1 = d1.replace(/:/gi, "");
- d1 = d1.replace(/ /gi, "");
- var iL = d1.length;
- while(iL<14){
- d1+='0';
- iL = d1.length;
- }
- sW += " "+e1 + " " + d1;
- }
-
- if(d2!=''){
- sW += " and " + cln;
- }
- }
-
- //终止字段录入值
- if(d2!=''){
- if(ty=='NUMBER'){ sW += " "+e2+" " + d2;};
- if(ty=='STRING'){ sW += " "+e2+" '" + d2 + "'";};
- if(ty=='DATE'){ sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd')";};
- if(ty=='DATETIME'){sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd hh24:mi:ss')";};
- if(ty=='DATETONUM6'){
- d2 = d2.replace(/-/gi, "");
- if(d2.length>6){
- d2 = d2.substr(0,6);
- }
- sW += " "+e2 + " " + d2;
- }
- if(ty=='DATETONUM8'){
- d2 = d2.replace(/-/gi, "");
- sW += " "+e2 + " " + d2;
- }
-
- if(ty=='DATETONUM14'){
- d2 = d2.replace(/-/gi, "");
- d2 = d2.replace(/:/gi, "");
- d2 = d2.replace(/ /gi, "");
- var iL = d2.length;
- if(iL==8){
- d2+='235959';//23:59:59
- }else{
- while(iL<14){
- d2+='0';
- iL = d2.length;
- }
- }
- sW += " "+e2 + " " + d2;
- }
-
- }
-
- //若开始字段和终止字段都没有录入值
- if(d1==''&&d2==''){
- tp = 'and ' + cln;
- iP = sW.indexOf(tp);
- sW = sW.substr(0,iP); //去掉and 和列名
- }
- }
- return sW;
- }//dt
- }
- /**
- *判断是否为正数,负数
- *event :事件对象
- *author :youyizhong
- *date :20110824
- */
- function zfpd(obj, flag){
- var val = obj.value;
- var vldStr = obj.vldStr;
- var arr = vldStr.split("=");
- var name = arr[0];
- /*不能为负数*/
- if(flag == 1){
- if(val < 0){
- obj.value = '';
- FWalert(name+"不能为负数");
- setTimeout(function(){obj.focus();},0);
- }
- }
- /*不能为正数*/
- if(flag == -1){
- if(val > 0){
- obj.value = '';
- FWalert(name+"不能为正数");
- setTimeout(function(){obj.focus();},0);
- }
- }
- }
- /**
- * 通用报表打印函数
- * @param cfgId 报表配置ID,应用fw_report_conf 内的ID
- * @param form 对象
- * @param ndp (true/false)是否显示直接调用默认的打印机打印的按钮
- * @param nsp (true/false)暂时没有用
- * @param target 指定报表显示方式 可以是 blank、_self、iframe.name
- * @param needSaveAsExcel 是否需要显示导出EXCEL按钮
- * @param excelPageStyle 导出EXCEL是否需要分页
- * 主要的功能是根据配置ID,查询fw_report_conf表的REPORTPARM字段的值
- * 即报表的全部入参。根据入参的名称查询form中相同名称的录入值,自动匹配
- * 后传给报表作为查询数据的条件,最后生成报表的预览。
- * 使用方法:
- * reportGenerate('bxgx_rydj_grjbzl_rpt',aform,false,true,'blank',true,false);
- * 具体的使用说明详见手册
- */
- function reportGenerate(cfgId,form,ndp,nsp,target,needSaveAsExcel,excelPageStyle){
- var _needSaveAsExcel = needSaveAsExcel||false;
- var _excelPageStyle = excelPageStyle||false;
- if(cfgId==''||cfgId==null){
- FWalert("入参报表的配置ID不能为空!");
- return;
- }
-
- //执行AJAX获取该ID对应的配置
- new Service().appendQuery([{
- configId:'FW_CONFIG.FW_REPORT_CONF_Q',
- parameters:{ID:cfgId},
- transform:'firstRow'
- }]).sentAjax(function(data){//处理成功的函数
- _rpt_1(cfgId,data,form,ndp,nsp,target,_needSaveAsExcel,_excelPageStyle);
- return true;
- },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数
- var tipMsg = XMLHttpRequest.responseText;
- FWalert("错误信息:" + tipMsg);
- if(window['fwReportGentBack']){
- //调用回调函数
- fwReportGentBack();
- }
- });
-
- //内置函数
- function _rpt_1(cfgId,data,dataForm,ndp,nsp,target,needSaveAsExcel,excelPageStyle){
- var frms = document.getElementsByTagName("form");
- var iLen = frms.length;
- var params = data[0]["REPORTPARM"];
- var commService = data[0]["COMMSERVICE"];
- var commProc = data[0]["COMMPROC"];
- var arrParams;
- var tmp="";
- var fw_id="";
- var fwparams="";
- var fwmap = {};
-
- //找出已经存在相同的form删掉
- for(var i=0;i<iLen;i++){
- if(frms[i].name=='fwrptForm'){
- document.body.removeChild(frms[i]);
- break;
- }
- }
-
- var sfc = '1'; //是否重新生成报表数据,默认1为重新生成
- try{
- sfc =dataForm['FWSFCXSC'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWSFCXSC\" value="+sfc+">";
-
- var where = ''; //WHERE条件
- try{
- where =dataForm['FWWHERE'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWWHERE\" value="+where+">";
-
- var btnBack ='YES'; //显示返回按钮
- try{
- btnBack =dataForm['FWBTNBACK'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWBTNBACK\" value="+btnBack+">";
-
-
- var btnClose ='YES'; //显示关闭按钮
- try{
- btnClose =dataForm['FWBTNCLOSE'].value;
- }catch(e){}
- tmp+=" <input type=\"hidden\" name=\"FWBTNCLOSE\" value="+btnClose+">";
-
-
- arrParams = params.split("|");
- iLen = arrParams.length;
-
- if(iLen==0){
- FWalert("报表入参不能为空!");
- return false;
- }
-
- for(var i=0;i<iLen;i++){
- var n = arrParams[i];
- var s = '';
-
- if(typeof dataForm[n]=='object'){
- s = dataForm[n].value;
- }
- tmp+=" <input type=\"hidden\" name=\""+n+"\" value="+s+"> ";
-
- if(fwparams==''){
- fwparams = n+'='+s;
- }else{
- fwparams+='***'+n+'='+s;
- }
- fwmap[n] = s;
- }
-
- fwmap["FWPARAMS"] = fwparams;
- fwmap["REPORTID"] = cfgId;
- fwmap["COMMPROC"] = commProc;
- fwmap["FWSFCXSC"] = sfc;
- fwmap["FWWHERE"] = where;
-
- if(commService==''||commService==null){
- _rpt_2(cfgId,fw_id,fwparams,tmp,ndp,nsp,target,needSaveAsExcel,excelPageStyle);
- }else{
- var arrP = commService.split(".");
- //执行AJAX获取该ID对应的配置
- new Service({
- serviceId:arrP[0],method:arrP[1],
- parameters:fwmap
- }).sentAjax(function(data){//处理成功的函数
- var t = data[0]["PO_FHZ"];
- if(t!=null){
- if(t!='1'){
- var msg = data[0]["PO_MSG"];
- FWalert("错误信息:" + msg);
- if(window['fwReportGentBack']){
- //调用回调函数
- fwReportGentBack(t);
- }
- return true;
- }
- }
- fw_id = data[0]["FW_ID"];
- _rpt_2(cfgId,fw_id,fwparams,tmp,ndp,nsp,target,needSaveAsExcel,excelPageStyle);
- return true;
- },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数
- var tipMsg = XMLHttpRequest.responseText;
- FWalert("错误信息:" + tipMsg);
- if(window['fwReportGentBack']){
- //调用回调函数
- fwReportGentBack();
- }
- });
- }
- }
- function _rpt_2(cfgId,fw_id,fwparams,tmp,ndp,nsp,tg,needSaveAsExcel,excelPageStyle){
- //动态创建报表form
- var frag = document.createDocumentFragment();
- var form = document.createElement("form");
- form.name="fwrptForm";
- form.action="${ctx}/report.do";
- if(tg==''||tg==null){
- tg = "blank";
- }
- form.target=tg;
-
- var str =" <input type=\"hidden\" name=\"configId\" value=\""+cfgId+"\"> ";
- str+=" <input type=\"hidden\" name=\"needDirectPrint\" value=\""+ndp+"\"> ";
- str+=" <input type=\"hidden\" name=\"needSelectPrinter\" value=\""+nsp+"\"> ";
- str+=" <input type=\"hidden\" name=\"ID\" value=\""+fw_id+"\"> ";
- str+=" <input type=\"hidden\" name=\"FWPARAMS\" value=\""+fwparams+"\"> ";
- str+=" <input type=\"hidden\" name=\"needSaveAsExcel\" value=\""+needSaveAsExcel+"\"> ";
- str+=" <input type=\"hidden\" name=\"excelPageStyle\" value=\""+excelPageStyle+"\"> ";
- str+=tmp;
- form.innerHTML=str;
- frag.appendChild(form);
- document.body.appendChild(frag);
- form.submit();
-
- if(window['fwReportGentBack']){
- //调用回调函数
- fwReportGentBack();
- }
-
- return true;
- }
- }
- /**
- * 设置按钮按钮的可显示或不可显示
- * @param btn 单按钮的NAME或是存放多个按钮名称的数组
- * @param status 固定值:true 或是 false
- * @returns 没有返回值
- * 使用方法1:
- * 设置按钮name="btnQuery" 和 name="btnCls" 不可显示
- * var arrBtn = new Array('btn','btn2');
- * btnDisplay (arrBtn,false);
- *
- * 使用方法2:
- * 设置按钮name="btnQuery" 可显示
- * btnDisplay ('btnQuery',true);
- */
- function btnDisplay(btn,status){
- if(status){status = '';}
- else{status = 'none';}
- //判断是否为数组
- if(typeof btn == 'object' && typeof btn.sort == 'function' && typeof btn.length == 'number'){
- for(var i=0;i<btn.length;i++){
- $('a[name="'+btn[i]+'"]')[0].style.display=status;
- }
- }else{
- $('a[name="'+btn+'"]')[0].style.display =status;
- }
- }
- /**
- * 单记录表格保存函数
- * @param idStr 单记录表配置ID
- * @param servFun Service名和方法
- * @param arrMapID MapperXML的数组
- * @param arrTypes 需要转换的字段JSON对象,若不需要转换可以为空,目前只支持INT、STRING、DOUBLE转换
- * @param callback 回调函数
- * 实现对单记录表格的保存,在保存前可以调用service进行校验
- * 使用方法:
- * var mappid = new Array('GRJBZL.JBXX_I','GRJBZL.JBXX_U');
- * var types =[{'name':'GRSXH','type':'INT'}, {'name':'SBGZ','type':'DOUBLE'}];
- * saveGentTable('bxgx_rydj_grjbzl','bxgxRydjService.ryxxJY',mappid,types,function(data){
- * alert('保存成功');
- * });
- * 具体的使用说明详见手册
- */
- function saveGentTable(idStr,servFun,arrMapID,arrTypes,callback){
- var arrUDI = new Array();
-
- if(arrTypes == undefined || arrTypes == null || !$.isArray(arrTypes)){
- arrTypes = [];
- }
-
- if(!$.isArray(arrMapID)){
- alert('MapperID不能为空而且必须为数组!');
- return false;
- }
-
- for(var i=0;i<arrMapID.length;i++){
- var tmp = arrMapID[i];
- var ar = tmp.split('_');
- var len = ar.length;
- var udi = ar[len-1];
- var iPos = "UDI".indexOf(udi);
-
- if(iPos==-1){
- alert(tmp+' 配置不正确,后缀必须为_U、_D、_I等格式! ');
- return false;
- }
-
- arrUDI[i] = udi;
- }
-
- var fwmap = {};
- var myobj = $('#'+idStr).get(0);
-
-
- //获取单记录表单的数据
- jQuery(':input',myobj).each(function(){
- if(this.name==null|| this.name==''||this.name=='_multiple'){
- return true;
- }
- fwmap[this.name] = this.value;
- });
-
- //按要求将格式转换成预定义的格式
- for(var i=0;i<arrTypes.length;i++){
- var val,tmp='';
- var type = arrTypes[i]["type"];
- var name = arrTypes[i]["name"];
- tmp = fwmap[name];
-
- if(type=='DOUBLE'||type=='INT'){
- tmp = tmp.replace(/-/gi, "");
- tmp = tmp.replace(/,/gi, "");
- }
-
- if(type=='INT'){
- val = parseInt(tmp,10);
- }
-
- if(type=='DOUBLE'){
- val = parseFloat(tmp,10);
- }
-
- if(type=='STRING'){
- val = tmp+'';
- }
-
- fwmap[name] = val;
- }
-
- if(servFun!=''){
- var arrP = servFun.split(".");
- new Service({
- serviceId:arrP[0],method:arrP[1],
- parameters:fwmap
- }).sentAjax(function(data){//处理成功的函数
- _a_b(arrMapID,fwmap,data);
- return true;
- },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数
- var tipMsg = XMLHttpRequest.responseText;
- FWalert("错误信息:" + tipMsg);
- });
- }else{
- _a_d(arrMapID,fwmap,idStr);
- }
-
- function _a_b(arrMapID,fwmap,data){
- var row = data[0];
- var po_fhz = row["PO_FHZ"];
- var po_msg = row["PO_MSG"];
-
- //执行SERVICE校验成功后把传回的参数写入到MAP内供更新表使用
- if(po_fhz=='1'){
- for(key in row){
- var val = row[key];
- if(key!='PO_FHZ' && key !='PO_MSG'){
- fwmap[key] = val;
- }
- }
- _a_d(arrMapID,fwmap,idStr);
- }else{
- alert(po_msg);
- }
- }
-
- function _a_d(Mp,fm,id){
-
- var Se = new Service();
-
- for(var i=0;i<Mp.length;i++){
- Se.appendQuery({
- configId:Mp[i],
- parameters:fm,
- transform:'firstRow'
- });
- }
-
- Se.sentAjax('数据更新',function(data){
-
- if(callback && $.isFunction(callback)){
- callback(data);
- }
-
- },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数
- var tipMsg = XMLHttpRequest.responseText;
- FWalert("错误信息:" + tipMsg);
- });
- return true;
- }
- return true;
- }
- /**
- * 获取单记录表获取指定列的JSON数据
- * @param gltId 单记录表单ID名称。
- * @param names 输入域名数组, 如:["XM","XB","CSRQ"]
- * @param dictZh 是否附加字典中文。指定true的效果{"XM":"XXX","XB":"2","CSRQ":"20119015","_DIC_XB":"男"}
- * 不指定或者指定为false的效果是{"XM":"XXX","XB":"2","CSRQ":"20119015"}
- * @return 返回JSON对象如: {"XM":"XXXX","XB":"2","CSRQ":"20119015","_DIC_XB":"男"}
- * 使用方法:
- * var params = ["XM","XB","CSRQ"];
- * getGentData(idStr,params,dictZh);
- */
- function getGentData(gltId, names,dictZh){
- names.push("_multiple");
- var rst = {};
- var gltObj = document.getElementById(gltId);
-
- if(!dictZh){
- dictZh = false;
- }
-
- //字符串转数组
- if("string" == typeof names){
- names = names.split(",");
- }
- names.push("_multiple");
- var rst = {};
- for(var i in names){
- var name = $.trim(names[i]);
- //如果names数组中的name有重复的话,那重复的不再执行下面代码
- if(rst[name] == null){
- var $item = $("[name='"+name+"']",gltObj);
- //页面只有一个这样的元素,直接赋值
- if($item.size() == 1){
- rst[name] = $item.val();
- }
- //页面多个name相同的元素,创建数组赋值
- else if($item.size() > 1 ){
- rst[name] = [];
- $item.each(function(){
- rst[name].push($(this).val());
- });
- }
- }
- }
- //字典中文的处理
- if(true == dictZh){
- //combox字典项的处理
- $(".combobox,.incombox,.dbcombox,.ldcombox",gltObj).each(function(){
- var $this = $(this);
- //如果rst[this.name]不是null的话,就查找字典项
- if(rst[this.name]!=null){
- var textName = "_DIC_"+ this.name;
- var textValue = $this.fwcombox("text");
- //新的字段
- if(rst[textName] == null){
- rst[textName] = textValue;
- }
- //多个同名字段
- else{
- //这是第一个同名字段,则将此数组元素改成数组
- if(!$.isArray(rst[textName])){
- rst[textName] = [rst[textName]];
- }
- rst[textName].push(textValue);
- }
- }
- });
- //searchgridbox字典项的处理
- $(".searchgridbox", gltObj).each(function(){
- var $this = $(this);
- if(rst[this.name]!=null){
- var textName = "_DIC_"+ this.name;
- var textValue = $this.searchgrid("text");
- //新的字段
- if(rst[textName] == undefined || rst[textName] == null){
- rst[textName] = textValue;
- }
- //多个同名字段
- else{
- //这是第一个同名字段,则将此数组元素改成数组
- if(!$.isArray(rst[textName])){
- rst[textName] = [rst[textName]];
- }
- rst[textName].push(textValue);
- }
- }
- });
- }
- //_multiple的处理
- if(rst["_multiple"]!=null && rst["_multiple"]!=""){
- if(!$.isArray(rst["_multiple"])){
- rst["_multiple"] = [rst["_multiple"]];
- }
- var multipleNames = rst["_multiple"].join(",").split(",");
- for(var i in multipleNames){
- var mName = $.trim(multipleNames[i]);
- if(mName != "" && null != rst[mName]){
- if(!$.isArray(rst[mName])){
- rst[mName] = [rst[mName]];
- }
- var dname = "_DIC_"+mName;
- if(null != rst[dname] && undefined != rst[dname] && !$.isArray(rst[dname])){
- rst[dname] = [rst[dname]];
- }
- }
- }
- }
- //移除对后台没有用处的_multiple
- delete rst["_multiple"];
- return rst;
- }
- /**
- * 获取多记录表指定列的JSON数据
- * @param gltId 多记录表配置ID字符串。 如:'cbgx_grzlgl_l'。
- * @param names 输入列名数组, 如:["GRBH","XB","XM"]
- * @return 指定列数据JSON对象,如:[{"ROWNUM_":"1","GRBH":"aaabbbccc","XB":"1","_DIC_XB":"女","XM":"姓名1114"},
- * {"ROWNUM_":"2","GRBH":"1231","XB":"2","_DIC_XB":"男","XM":"asdf123123123"}]
- * 使用方法:
- * var cols = ["XM","XB","CSRQ"];
- * getGltData('cbgx_grzlgl_l',cols);
- */
- function getGltData(gltId, cols){
- var rst = [];
-
- //获取多记录表元素
- var glt = document.getElementById(gltId);
- if(!glt){
- return rst;
- }
-
- var GridData = $.data(glt, 'fwdatagrid');
- var gridType ='fwdatagrid';
-
- if(GridData==null){
- GridData = $.data(glt, 'fweditgrid');
- }
-
- //获取多记录表元素绑定的JSON数据
- var rows= $.extend(true,[],GridData.options.data.rows);
-
- if(!rows){
- return rst;
- }
-
- //按行数设置返回的数组
- for(var c=0,len=rows.length;c<len;c++){
- rst.push({});
- }
- //把指定列数据拷贝到返回数组里面
- for(var i in cols){
- var name = cols[i];
- for(var j in rows){
- //拷贝行号
- rst[j]["ROWNUM_"]=rows[j]["ROWNUM_"];
- //拷贝列数据
- if(null != rows[j][name]){
- rst[j][name]=rows[j][name];
- }
- //拷贝字典
- var dname = "_DIC_"+name;
- if(null != rows[j][dname]){
- rst[j][dname]=rows[j][dname];
- }
- }
- }
- return rst;
- }
- /**
- * 多数据表单一次保存
- * @param params 数组,包含JSON数据元素,如上面例子所示。JSON数据元素的结构如下
- * 1 configId MAPPER配置ID。如"BATCHSAVE.BATCHSAVE_DW_I"
- * 2 data: 表单数据
- * @param callback 回调函数,后台执行完成后调用该函数。
- * @return data
- * 使用方法:
- * var fields = ["XM", "YDDH", "GRSXH", "DWSXH", "GMSFHM"];
- * var grxxData= getGentData('cbdj_grjbzl_grxx',fields,true);
- * var params = [];
- * var cbxxData={'XM':'张三', 'YDDH':13233424242, 'SBGZ':3000.00,'GRSXH':231113};
- * params.push({configId:"CBDJ_GRJBZL.GRXX_DJ_I",data:grxxData});
- * params.push({configId:"CBDJ_GRJBZL.CBXX_GX_U",data:cbxxData});
- * saveTables(params,function(data){
- * alert("批量保存成功");
- * });
- */
- function saveTables(params,callback){
- if(!$.isArray(params) || 0==params.length){
- return;
- }
- var service = new Service();
-
- for(var i=0, len=params.length; i<len; i++){
- var p = params[i];
- var configId = p.configId;
- var parameters =p.data;
- service.appendQuery({
- "configId":configId,
- "parameters":parameters,
- "transfrom":"firstRow"});
- }//for
-
- service.sentAjax("批量保存",function(data){
- if(callback && $.isFunction(callback)){
- callback(data);
- }
- },function(XMLHttpRequest, textStatus, errorThrown){//处理失败的函数
- var tipMsg = XMLHttpRequest.responseText;
- FWalert("错误信息:" + tipMsg);
- });
-
- return true;
- }
- /**
- * JS动态刷新单记录表单内容
- * 情况1:如果返回数据,则将返回值更新到单记录表
- * 情况2:如果没有返回数据,则单记录表保持不变
- * @param form 表单对象
- * @param dsId 数据源配置ID 即表FW_QUERYSQL的配置
- * @param whereCls where语句字符串
- * @returns
- * 使用方法
- var whereCls=" AAC002='425511198006171280'";
- * setGtData(aform, 'bxgx_ylstzhwh_ryjyzl', whereCls,function(data){
- * alert('执行成功!');
- * });
- */
- function setGtData(form,dsId,whereCls,callback){
- if(whereCls == null || $.trim(whereCls) == ""){
- alert("没有配置where语句");
- return false;
- }
- new Service().appendQuery({
- //从fw_querysql中获取到select语句
- configId:'FW_CONFIG.FW_QUERYSQL_Q',
- parameters:{ID:dsId},
- transform: 'firstRow',
- shareResults:{'SELECTSTR':'SELECTSTR'}
- }).appendQuery({
- //执行共享结果中的sql语句,
- configId:'FW_CONFIG.SELECTSTR_Q',
- useShare:{'SELECTSTR':'SELECTSTR'},
- parameters:{WHERECLS:whereCls},
- transfrom:'firstRow',
- shareNotNull:true
- }).sentAjax('正在更新表单', function(data){
- if(undefined != data[1][0]){
- FWSetForm(form, data[1][0]);
- if(callback && $.isFunction(callback)){
- callback(data[1][0]);
- }
- }else{
-
- if(callback && $.isFunction(callback)){
- callback(null);
- }else{
- alert("没有查询到符合条件的数据!");
- }
- return false;
- }
- });
- }
- /**
- *
- * @param param 上传的参数,例子:
- * var parameters = {
- * configId:'bxgx_cbgl_plxgzsfs_xgmd_i',//必填项目,FW_IMPEXP的配置ID
- * filePath:'C:/Documents and Settings/liguocai/桌面/excel643657087605952371.xls'//必填项目,上传文件的路径
- * _commDo:'workflowProxyService.doWork',//非必填项目,上传的后续服务
- * } ;
- * @param uploadEvents JSON类型,包含上传过程中的回调函数,例如,上传前的校验onStart,上传完成后的回调函数onComplete,
- * 上传过程中发生错误的回调函数onFail等等,后面可能会扩充更多的事件。
- * 例子:{onComplete:'myFunction1',
- * onFail:'myFunction2',
- * onStart:'myFunction3'}
- * 格式就是 事件名:函数名
- * 各个事件的解析:
- * 1. onComplete,如果上传成功完毕,调用该函数
- * 2. onFail,如果上传过程发生异常,调用该函数
- * 3. onStart,上传之前的检验函数,返回true往下执行applet,返回false直接返回,不往下执行
- *
- * @returns
- */
- function initUploadApplet(uploadEvents,appletId){
- var uploadFileAppletId = appletId||'UploadFileApplet';
- var attributes = {id : uploadFileAppletId,
- code:'UploadFileApplet',
- archive: contextPath+'/applet/UploadFileApplet.jar',
- width:710,
- height:40,
- align:'middle'};
- var parameters = { url: _getUrl(),
- MAYSCRIPT:true,
- onGetJsessionid:uploadEvents.onGetJsessionid,
- onGetParams:uploadEvents.onGetParams,
- onStart:uploadEvents.onStart,
- onFail:uploadEvents.onFail,
- onComplete:uploadEvents.onComplete,
- cache_option:"NO"
- } ;
- _setParameters(parameters);
- //要求JDK版本1.5或以上
- var version = '1.5';
- deployJava.runApplet(attributes, parameters, version);
- //获取上传的URL
- function _getUrl(){
-
- var url = window.location.toString();
- var count = 0;
- var pos = 0;
- for(var i=0;i<url.length;i++){
- if(url.charAt(i) == "/"){
- count++;
- }
- if(count == 4){
- pos = i;
- break;
- }
- }
- return url.substring(0,pos) + "/CommUpload.do";
- }
- function _setParameters(params){
- for(var key in params){
- if(null == params[key]){
- delete params[key];
- }
- }
- }
- }
- function setProgressBar(num, id){
- if(num<0 || num>100){
- return;
- }
- var uploadAppletId = id || 'UploadFileApplet';
- document.getElementById(uploadAppletId).setProgressBar(num);
- }
- /**
- * 把JSON对象的里面值转换成字符串,供applet上传使用
- * @param obj JSON对象
- * @returns
- */
- function setJSONAllStr(obj){
- for(var key in obj){
- if((typeof obj[key])!='string'){
- obj[key] = obj[key].toString();
- }
- }
- return obj;
- }
- /**
- * 功能:从初始化文件(.ini)中读取字符串型设置值
- * @param filename 字符串,必填,指定初始化文件的名称,包含路径
- * @param section 字符串,必填,指定要得到的值所在的节
- * @param key 字符串,必填,指定要得到的值的名称,不用区分大小写
- * @param defaultValue 字符串,必填,当指定的文件、节名、项目名不存在时,函数返回该参数指定的值返回值
- * @param id 字符串,非必填,applet的id,缺省为'UploadFileApplet'
- * @returns 函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;
- * 如果指定的文件、节名、项目名不存在,函数返回default参数指定的缺省值;
- * 如果发生错误,函数返回空字符串;
- * 如果任何参数的值为NULL,ProfileString()函数返回NULL。
- */
- function ProfileString ( filename, section, key, defaultValue,id) {
- //如果任何参数的值为NULL,ProfileString()函数返回NULL
- if(null == filename || null == section || null == key || null == defaultValue){
- return null;
- }
- var applet = null;
- if(null == id){
- applet = _getReadWriteApplet();
- }else{
- applet = document.getElementById(id);
- }
- if(null == applet){
- alert("找不到applet,无法读写文件");
- return "";
- }
- //文件不存在返回默认值
- if(false == applet.isFileExists(filename)){
- return defaultValue;
- }
- var lines = applet.readFile(filename);
- //读文件出错返回空字符串
- if(null == lines){
- return "";
- }
- var myCRLF = "_SINOBESTCRLF_";
- lines = lines.split(myCRLF);
- var DIVIDER = "_SINOBESTPARSEFILEDIVIDER_";
- var data = _parseFile(lines);
- //JSON的KEY都是大写格式,转换成大写查询数据
- if(null == data[section+DIVIDER+key.toUpperCase()]){
- //如果指定的文件、节名、项目名不存在,函数返回default参数指定的缺省值
- return defaultValue;
- }else{
- //函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值
- return data[section+DIVIDER+key.toUpperCase()];
- }
-
- //将ini文件转换成JSON对象
- function _parseFile(lines){
- var posSectionBeg = 0;
- var posSectionEnd = 0;
- var posEqual = 0;
- var section = "";
- var key = "";
- var value = "";
- var rtn = {};
- for(var i=0,len=lines.length;i<len;i++){
- posSectionBeg = lines[i].indexOf("[");
- posSectionEnd = lines[i].indexOf("]");
- posEqual = lines[i].indexOf("=");
- if(-1!=posSectionBeg && -1!=posSectionEnd){
- section = lines[i].substring(posSectionBeg+1,posSectionEnd);
- }else if(-1 != posEqual){
- key = $.trim(lines[i].substring(0,posEqual));
- value = $.trim(lines[i].substring(posEqual+1));
- rtn[section+DIVIDER+key.toUpperCase()] = value;//key作为大写保存
- }
- }
- return rtn;
- }
- /**
- * 功能:获取有读写本地文件能力的Applet
- * @returns 如果找到,则返回相应的applet对象,否则返回null
- */
- function _getReadWriteApplet(){
- //有读写本地文件能力的applet列表
- var appletIds = ["UploadFileApplet","DownloadFileApplet"];
- var applet = null;
- for(var i=0,len=appletIds.length;i<len;i++){
- if(null != document.getElementById(appletIds[i])){
- applet = document.getElementById(appletIds[i]);
- break;
- }
- }
- return applet;
- }
- }
- /***
- * 功能:设置初始化文件中指定项的值。
- * @param filename 字符串,必填,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件
- * @param section 字符串,必填,指定要设置的值所在的节
- * @param key 字符串,必填,指定要设置的值的名称,不用区分大小写
- * @param value 字符串,必填,指定要设置项的值
- * @param id 字符串,非必填,applet的id,缺省为'UploadFileApplet'
- * @returns 返回值 数字
- * 函数执行成功时返回1,
- * 指定的文件未找到或指定的文件不能访问时函数返回-1。
- * 如果任何参数的值为NULL,SetProfileString()函数返回NULL
- */
- function SetProfileString(filename, section, key,value,id){
- if(null == filename || null == section || null == key || null == value){
- return null;
- }
-
- var applet = null;
- if(null == id){
- applet = _getReadWriteApplet();
- }else{
- applet = document.getElementById(id);
- }
- if(null == applet){
- alert("找不到applet,无法读写文件");
- return "";
- }
-
- //applet返回一个字符串数组,但这个数组只能访问length属性,元素,但是不能使用splice等函数
- //这个数组其实JAVA中数组,所以没有JS数组的方法。
- var lines = applet.readFile(filename);
- if(null == lines){
- return -1;
- }
-
- //转换为JS的数组
- var myCRLF = "_SINOBESTCRLF_";
- var arrLines = lines.split(myCRLF);
- var head = "[" + section + "]";
- var newLine = key + " = " + value;
- var isSectionExist = false;
- var posSection = -1;
- var pos = -1;
- //判断section 是否存在,如果存在则获取所在行数写入posHead
- for(var i=0,len=arrLines.length;i<len;i++){
- pos = arrLines[i].indexOf(head);
- if(-1 != pos){
- posSection = i;
- isSectionExist = true;
- break;
- }
- }
-
- if(true == isSectionExist){
- var tKey;
- var posEqual = -1;
- var posSectionBeg = -1;
- var posSectionEnd = -1;
- var isKeyExist = false;
- var posKey = -1;
- //判断KEY是否已经存在
- for(var i=posSection+1,len=arrLines.length;i<len;i++){
- //先判断是否到达了下一个section
- posSectionBeg = arrLines[i].indexOf('[');
- posSectionEnd = arrLines[i].indexOf(']');
- posEqual = arrLines[i].indexOf('=');
- if(-1 != posSectionBeg && -1 != posSectionEnd){
- isKeyExist = false;
- break;
- }else if(-1 != posEqual){
- tKey = $.trim((arrLines[i].split('='))[0]);
- if(tKey.toUpperCase() == key.toUpperCase()){
- isKeyExist = true;
- posKey = i;
- break;
- }
- }
-
- }
- if(true == isKeyExist){
- arrLines[posKey] = newLine;
- }else if(false == isKeyExist){
- arrLines.splice(posSection + 1, 0, newLine);
- }
- }else if(false == isSectionExist){
- arrLines.push("");
- arrLines.push(head);
- arrLines.push(newLine);
- }
- return applet.writeFile(filename,arrLines);
-
- /**
- * 功能:获取有读写本地文件能力的Applet
- * @returns 如果找到,则返回相应的applet对象,否则返回null
- */
- function _getReadWriteApplet(){
- //有读写本地文件能力的applet列表
- var appletIds = ["UploadFileApplet","DownloadFileApplet"];
- var applet = null;
- for(var i=0,len=appletIds.length;i<len;i++){
- if(null != document.getElementById(appletIds[i])){
- applet = document.getElementById(appletIds[i]);
- break;
- }
- }
- return applet;
- }
- }
- /**
- * 判断拼音是否匹配中文,支持常用中文字,支持多音字。
- * 原理在于将字符串中的中文的的字符转换成英文字符,再用indexOf判断是否匹配。
- * 例如:
- * isPinyinMatch('我爱你','wo'),返回是true
- * isPinyinMatch('1-单位','1-da'),返回是true
- * isPinyinMatch('1-单位','wei'),返回是true
- * isPinyinMatch('1-单位','dw'),返回是false,不支持中文首字母搜索,需要完整拼音
- * isPinyinMatch('着急','zhe'),返回是true,因为“着”是多音字,
- * @param itemText 需要被匹配的含有中文的字符串
- * @param query 拼音
- * @returns 如果拼音匹配则返回true,否则为false
- */
- function isPinyinMatch(itemText,query){
- if(itemText==''||itemText==null){return false;}
-
- //获取存放在左侧树页面的拼音字典
- if(null == PINYIN_DICT_CACHE){
- var twindow = window;
- while(twindow.dialogArguments!=null){
- twindow = twindow.dialogArguments;
- }
- try{
- PINYIN_DICT_CACHE = twindow.top.opener.top.frames['TreeMenu'].PINYIN_DICT_CACHE;
- }catch(e){
- if(null == twindow.top.frames['TreeMenu']){
- return false;
- }
- PINYIN_DICT_CACHE = twindow.top.frames['TreeMenu'].PINYIN_DICT_CACHE;
- if(null == PINYIN_DICT_CACHE){
- return false;
- }
- }
- }
- query = query.toLowerCase();
- var itemTextPinyin = _getPinyin(itemText);
- var bPinyinMatch = false;
- for(var i=0,len=itemTextPinyin.length;i<len;i++){
- if((itemTextPinyin[i].toLowerCase()).indexOf(query)!=-1){
- bPinyinMatch = true;
- break;
- }
- }
- return bPinyinMatch;
-
- //获取字符串的拼音
- function _getPinyin(hans){
- //多音字的话,会有多种结果,所以用数组保存
- var rst = [];
-
- var len=hans.length;
- //r是一个二维数组,每个元素数组,存放一个字符的拼音,多音字的拼音有多个
- var r = [];
- var curChar;
- for(var i=0;i<len;i++){
- curChar = hans.charAt(i);
- var pattern = /^([\u4E00-\u9FA5])$/gi;
- var isCh = pattern.test(curChar);
- //如果是汉字
- if(true==isCh){
- //r.push(PINYIN_DICT_CACHE[curChar]);
- r.push(PINYIN_DICT_CACHE[curChar]==null?[""]:PINYIN_DICT_CACHE[curChar]);
- }else{
- r.push([curChar]);
- }
- }//for
- //计算笛卡尔积
- rst = _descartes(r);
- return rst;
- }
- //计算笛卡尔积,arr是二维数组,数组的每个元素都是是一个包含一个或多个字符串的数组
- function _descartes(arr){
- var len=arr.length;
- if(1 == len){
- return arr[0];
- }
- var d = _descartesTwo(arr[0],arr[1]);
- for(var i=2;i<len;i++){
- d = _descartesTwo(d,arr[i]);
- }
- return d;
- }
- //计算两个一维数组的笛卡尔积
- function _descartesTwo(arr1,arr2){
- var rst = [];
- for(var i=0,len1=arr1.length;i<len1;i++){
- for(var j=0,len2=arr2.length;j<len2;j++){
- rst.push(arr1[i]+arr2[j]);
- }
- }
- return rst;
- }
- }
-
- /**
- * 功能:指定hnisi:tabPanel第N个TAB换行
- * @param tabId 字符串,必填,指定hnisi:tabPanel的id
- * @param index 数字,或者数字数组,必填,指定要换行的TAB的序号
- * @returns
- * 例子1:指定id为mypanel的tabPanel第5个标签后换行
- * setTabHeader('mypanel',5);
- * 例子2:指定id为mypanel的tabPanel第5和第10个标签后换行
- * setTabHeader('mypanel',[5,10]);
- *
- */
- function setTabHeader(tabId,index){
- if(!$.isArray(index)){
- index = [index];
- }
- var $lis = $("#"+ tabId +" ul li");
- for(var i=0,len=index.length;i<len;i++){
- var $li = $lis.eq(index[i]-1);
- if(0 == i){
- $li.after("<LI id='crlf' style='font-size:40%; visibility:visible;float:none;clear:left;'></LI>");
- }else{
- $li.after("<LI id='crlf' style='font-size:50%; visibility:visible;float:none;clear:left;'></LI>");
- }
- }
- }
- /**
- * 功能
- * @param filePath 字符串,必填项,删除文件的路径
- * @param id 字符串,非必填项,有删除功能applet id,不填则程序会查找页面可用的applet
- * @returns 返回1,表示删除成功,返回-1表示删除失败,返回0,表示指定文件不存在
- */
- function appletDeleteFile(filePath,id){
- var applet = null;
- if(null == id){
- applet = _getDeleteFileApplet();
- }else{
- applet = document.getElementById(id);
- }
- if(null == applet){
- alert("找不到applet,无法删除文件");
- return "";
- }
- return applet.deleteFile(filePath);
-
- function _getDeleteFileApplet(){
- var applet = null;
- var appletIds = ["DownloadFileApplet"];
- for(var i=0,len=appletIds.length;i<len;i++){
- if(null != document.getElementById(appletIds[i])){
- applet = document.getElementById(appletIds[i]);
- break;
- }
- }
- return applet;
- }
- }
- /**
- * 功能:初始化下载applet
- * @param downloadEvents JSON对象,必填项,指定事件响应函数
- * 例子:
- * var downloadEvents = {
- * onGetParams : 'onGetParams',//获取参数
- * onFail : 'onFail'//错误响应
- * };
- * @param appletId 字符串,非必填项,applet的id,默认为'DownloadFileApplet'
- * @returns
- */
- function initDownloadApplet(downloadEvents,appletId){
- var downloadAppletId = appletId||'DownloadFileApplet';
- var attributes = { id: downloadAppletId,
- code:'DownloadFileApplet',
- archive: contextPath+'/applet/DownloadFileApplet.jar',
- width: 0,
- height: 0
- };
- var parameters = { url: _getUrl(),
- onFail: downloadEvents.onFail,
- onGetParams: downloadEvents.onGetParams,
- onGetmyxxid: downloadEvents.onGetmyxxid,
- cache_option:"NO",
- MAYSCRIPT:true
- };
- _setParameters(parameters);
- //要求JDK版本1.5或以上
- var version = '1.5';
- deployJava.runApplet(attributes,parameters,version);
-
- function _getUrl(){
- var url = window.location.toString();
- var count = 0;
- var pos = 0;
- for(var i=0;i<url.length;i++){
- if(url.charAt(i) == "/"){
- count++;
- }
- if(count == 4){
- pos = i;
- break;
- }
- }
- return url.substring(0,pos) + "/downFile.do";
- }
- function _setParameters(params){
- for(var key in params){
- if(null == params[key]){
- delete params[key];
- }
- }
- }
- }
- /**
- * 功能:提供给DownloadFileApplet调用的JS函数,用作拼接请求字符串
- * @param obj JSON对象,必填项,DownloadFileApplet的下载配置参数
- * @returns
- */
- function downloadAppletGetRquestString(obj){
- result = "";
- var DIVIDER = "_SINOBESTFILEPATHDIVIDER_";
- var filePath = obj["filePath"];
- for(var key in obj){
- if("filePath" != key){
- if('string' != obj[key]){
- obj[key] = obj[key].toString();
- }
- result += (encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]) + "&");
- }
- }
- var len = result.length;
- if(0 == len){
- return "" + DIVIDER + filePath;
- }else{
- return result.substring(0,len-1) + DIVIDER + filePath;
- }
- }
- /**
- * 功能:使用DownloadFileApplet下载文件
- * @param appletId 字符串,非必填项,默认为'DownloadFileApplet'
- * @returns 返回值为1, 表示下载成功,
- * 返回值为-1,表示下载失败
- */
- function appletDownload(appletId){
- var downloadAppletId = appletId||'DownloadFileApplet';
- var applet = document.getElementById(downloadAppletId);
- return applet.download();
- }
-
- /**
- * js 除法函数
- * @param arg1
- * @param arg2
- * @returns
- */
- function div(arg1,arg2){
- var t1=0,t2=0,r1,r2,v,r;
- try{t1=arg1.toString().split(".")[1].length;}catch(e){}
- try{t2=arg2.toString().split(".")[1].length;}catch(e){}
- with(Math){
- r1=Number(arg1.toString().replace(".",""));
- r2=Number(arg2.toString().replace(".",""));
- v =(r1/r2)*pow(10,t2-t1);
- }
- return v;
- }
- /**
- * js 乘法函数
- * @param arg1
- * @param arg2
- * @returns
- */
- function mult(arg1,arg2){
- var i,j,v,t;
- arg1=String(arg1);
- arg2=String(arg2);
- i=arg1.length-arg1.indexOf(".")-1;
- i=(i>=arg1.length)?0:i;
- j=arg2.length-arg2.indexOf(".")-1;
- j=(j>=arg2.length)?0:j;
- v=arg1.replace(".","")*arg2.replace(".","")/Math.pow(10,i+j);
- return v;
- }
- /**
- * js 加法函数
- * @param arg1
- * @param arg2
- * @returns
- */
- function add(arg1,arg2){
- var r1,r2,m,v,r,t;
- try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
- try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
- m = Math.pow(10,Math.max(r1,r2));
- v = (arg1*m+arg2*m)/m;
- if(v==0){return v;}
- r = Math.max(r1,r2);
- if(r!=0){
- v = v+0.000000001; //需要进行特殊处理 例如 135.67 + 1.2=136.869999999999998
- }
- t = v.toString();
- if(r!=0){
- var iPos = t.indexOf(".");
- var re = t.substr(0,iPos + r + 1);
- t = re;
- }
- return t;
- }
- /**
- * 生成批量打印按钮。每个页面只能有一个"批量打印"按钮。
- */
- function genBatchPrintBtn(){
- if(0 < document.getElementsByName('batchPrintForm').length){
- alert("生成批量打印按钮出错:一个页面只能有一个批量打印按钮");
- return;
- }
- var appRoot = _getUrl();
- var ctx = contextPath;
- var codebase = appRoot + "/j2re-1_4_1-windows-i586-i.exe#Version=1,4,1,0";
- var archive = ctx + "/runqianReport4Applet.jar";
- function _getUrl(){
- var url = window.location.toString();
- var count = 0;
- var pos = 0;
- for(var i=0;i<url.length;i++){
- if(url.charAt(i) == "/"){
- count++;
- }
- if(count == 4){
- pos = i;
- break;
- }
- }
- //返回类似 "http://127.0.0.1:8080/fw"
- return url.substring(0,pos);
- }
-
- var html = '<form name="batchPrintForm" >' +
- '<input type="hidden" name="reportStr" value=""/>'+
- '<input type="hidden" name="jy" value=""/>'+
- '<p align="center"><object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" '+
- 'id="report1_directPrintApplet" width="80" height="20" style="vertical-align: middle" ' +
- 'codebase="'+ codebase + '"' +
- ' >'+
- '<param name="name" value="report1_directPrintApplet">'+
- '<param name="code" value="com.runqian.report4.view.applet.DirectPrintApplet.class">'+
- '<param name="archive" value="'+archive+'">'+
- '<param name="type" value="application/x-java-applet;version=1.4">'+
- '<param name="appRoot" value="'+appRoot+'">'+
- '<param name="dataServlet" value="/reportServlet?action=1">'+
- '<param name="srcType" value="file">'+
- '<param name="fontFace" value="宋体">'+
- '<param name="fontSize" value="18pt">'+
- '<param name="fontColor" value="#0000FF">'+
- '<param name="backColor" value="#12632256">'+
- '<param name="label" value="批量打印">'+
- '<param name="savePrintSetup" value="yes"> '+
- '<param name="needPrintPrompt" value="no">'+
- '<param name="scriptable" value="true">'+
- '</object></p>'+
- '</form>'+
- '<script>'+
- 'function runqian_getPrintReports() {'+
- ' var jyFunc = batchPrintForm.jy.value;'+
- ' if(jyFunc!="" && window[jyFunc]!=null){'+
- ' if(false==eval(jyFunc+"()")){'+
- 'return "";'+
- '}'+
- ' }'+
- ' return batchPrintForm.reportStr.value;'+
- '}' + '</script'+'>';
-
- document.write(html);
- }//generateBatchPrintBtn() end
- /**
- * 功能:设置批量打印按钮,指定打印那些报表,传进什么参数。
- * 注意点1:可以多次调用该API,调用之后, "批量打印"按钮打印根据设置的字符串打印出相应的报表。
- * 注意点2:如果不想打印任何报表,请设置setBatchPrintBtn("");
- *
- * reportStr:字符串,必填项。
- * 格式为:"{无参数报表名}{报表1(参数1=value1;参数2=value2;...)}{报表2(参数1=value1;参数2=value2;...)}..."
- * jy : 字符串,可选项。点击批量打印按钮调用的校验函数,如果检验函数返回false,则不打印,否则,继续打印。
- * 例子,打印三份报表 "{test.raq}{test2.raq(ID=2;DWSXH=3;)}{test2.raq(ID=3;DWSXH=4;)}"
- * {}花括号包含一个报表模板,()小括号包含报表模板的入参,入参分号;隔开,开发人员根据实际情况构造reportStr。
- */
- function setBatchPrintBtn(reportStr,jy){
- batchPrintForm.jy.value = jy||"";
- batchPrintForm.reportStr.value = reportStr;
- }
- /**
- * 功能:通过指定配置ID数组,报表参数FORM,初始化批量打印按钮
- * @param cfgIds 字符串数组,必填项,配置ID字符串,例子
- * ["ybdy_yyqt_cyjs_jsjg","ybdy_yyqt_cyjs_ylfyjsd","ybdy_yyqt_cyjs_grzfxmqd","ybdy_yyqt_cyjs_ylzfxmqd"]
- * @param printForm FORM对象,必填项,包含报表参数
- * @param jy 字符串,可选项。点击批量打印按钮调用的校验函数,如果检验函数返回false,则不打印,否则,继续打印。
- * @returns
- * 代码解析:关键就是组装好如下格式的字符串"{报表1(参数1=参数值1;参数2=参数值2;)}{报 表2}",
- * 一个花括号包住一个报表模板,如果模板带有入参,则需要加个小括号,在小括号里边写参数。
- * 例如"{test.raq}{test2.raq(ID=2;DWSXH=3;)}{test2.raq(ID=3;DWSXH=4;)}"。
- * 润乾applet通过读取该字符串,批量打印报表
- */
- function initBatchReport(cfgIds,printForm,jy){
- var ajaxQuerys = [];
- for(var i=0,len=cfgIds.length;i<len;i++){
- ajaxQuerys.push({
- configId:'FW_CONFIG.FW_REPORT_CONF_Q',
- parameters:{ID:cfgIds[i]},
- transform:'firstRow'
- });
- }
- new Service().appendQuery(ajaxQuerys).sentAjax('设置批量打印参数',function(data){
- //设置成"{test.raq}{test2.raq(ID=2;DWSXH=3;)}{test2.raq(ID=3;DWSXH=4;)}"的格式
- var reportStr = "";
- for(var i=0,len=data.length;i<len;i++){
- reportStr += "{";
- reportStr += data[i].TEMPLATEFILE;
-
- var reportParm = data[i].REPORTPARM;
- if(reportParm != "" && reportParm !=null){
- reportStr += _getParamsString(reportParm,printForm);
- }
-
- reportStr += "}";
- }
- setBatchPrintBtn(reportStr,jy||"");
- },null,false);//同步执行
-
- //参数字符串,形式为(参数1=参数值1;参数2=参数值2;)
- function _getParamsString(reportParm,printForm){
- var rst = "";
- rst+="(";
- params = reportParm.split('|');
- for(var i=0,len=params.length;i<len;i++){
- rst += params[i] + "=" + (printForm[params[i]] ? printForm[params[i]].value : '')+ ";";
- }
- rst+=")";
- return rst;
- }//_getParamsString
- }//initBatchReport
- /**
- * 功能:动态按需加载script脚本
- * @param opts JSON对象,必填项
- * 格式是:{url:xxx,beforeFunc:function(){XXX},afterFunc:function(script)}
- * url是要加载js文件的地址,
- * beforeFunc是校验函数,只有返回true的时候才加载脚本,
- * afterFunc(script)是回调函数,可以自定以脚本加载完成后的动作,
- * 其中script参数是加载完毕的script元素对象
- * @returns
- * 例子:按顺序加载encrypt.js文件和encrypt2文件
- * loadScript({
- url:curSerUrl + "/js/fw/encrypt.js",
- beforeFunc: function(){return null==document.getElementById("fwencrypt");},//返回true的时候才载入脚本
- afterFunc: function(script){
- if(null != script){
- script.id = "fwencrypt";
- }
- loadScript({
- url:curSerUrl + "/js/fw/encrypt2.js",
- beforeFunc: function(){return null==document.getElementById("fwencrypt2");},//返回true的时候才载入脚本
- afterFunc: function(script){
- if(null != script){
- script.id = "fwencrypt2";
- }
- }
- });
- }
- });
- */
- function loadScript(opt){
- var url = opt.url || "";
- var afterFunc = opt.afterFunc || function(){};
- var beforeFunc = opt.beforeFunc || function(){return true};
-
- if('[object Function]' != Object.prototype.toString.call(beforeFunc)){
- beforeFunc = function(){return true};
- }
- if('[object Function]' != Object.prototype.toString.call(afterFunc)){
- afterFunc = function(){};
- }
- //校验不通过,直接调用回调函数
- if(false == beforeFunc()){
- afterFunc();
- return;
- }
- //校验通过,则下载script,并且下载执行完毕后调用afterFunc,并且把script作为参数传递
- var script = document.createElement('script');
- script.src = url;
- script.type= 'text/javascript';
- if(script.readyState){
- script.onreadystatechange = function(){
- if('complete' == this.readyState || 'loaded' == this.readyState){
- this.onreadystatechange = null;
- afterFunc(script);
- }
- }
- }else{
- script.onload = function(){
- afterFunc(script);
- }
- }
- document.getElementsByTagName("head")[0].appendChild(script);
- }
- /**
- * <pre>
- * 动态异步加载单记录表,多记录表或者JSP到当前页面的目标DIV中
- * @param divId 字符串,必填项,目标DIV的id值
- * @param type 字符串,必填项,加载的类型,值为'gt','glt','jsp'其中之一。
- * @param idOrJsp 字符串,必填项,值为加载gt的id,glt的id,或者是jsp路径。
- * 如果是jsp路径,为安全起见,路径后不能包含?a=xx&b=xx的字符串。参数请放在下面的data参数。
- * @param data JSON对象,选填项,用作指定gt,glt,jsp的参数.
- * 1. gt的参数仅支持defV
- * 2. glt的参数支持whereCls,height,width,showContent,editable,expBtns,
- * hasPage,pageSize,hasTitle
- * 如果gt,glt的参数没有在上述列出,请联系框架组改进,或者使用jsp方式动态加载
- * gt,glt方式仅仅用于动态产生简单的单记录表和多记录表,如果需要动态产生复杂的记录表,
- * 请编写jsp文件,用jsp方式动态载入
- * 3. jsp的参数无限制,与一般请求JSP的参数一样。
- * 动态载入JSP,对JSP文件的要求如下: (其实与hnisi:tabPanel下的hnisi:tab的要求类似)
- * 3.1 要动态载入的jsp文件,文件头部不能有这么一行
- * <%@ include file="/jsp/framework/head.jsp"%>
- * 需要将这一行改成
- * <%@ include file="/jsp/framework/taglib.jsp"%>
- * 从而避免重复导入js文件,
- * 3.2 jsp文件里面不要包含<html/>,<head/>,<body/>标签,因为动态载入会载入JSP所有内容
- * 如果被动态载入的JSP文件包含了<html/>,<head/>,<body/>那么载入后的页面会包含多个
- * <html/>,<head/>,<body/>
- *
- * 例子:
- * jsp页面:
- *
- * <!--动态内容将被加载到这个DIV中-->
- * <div id="dynDiv>
- * </div>
- *
- * js代码
- * //1. 动态加载ID=fw_operauth_oper_operator_q的单记录表
- * FWDynDiv('dynDiv','gt','fw_operauth_oper_operator_q'"});
- * FWDynDiv('dynDiv','gt','fw_operauth_oper_operator_q',{defV:"#{'OPERTYPE':'2','LOGINID':'test_jc1'}"});
- * //2.动态加载多记录表
- * FWDynDiv('dynDiv','glt','fw_operauth_oper_operator_list',{whereCls:"1=1"});
- * FWDynDiv('dynDiv','glt','fw_authmngr_role',{whereCls:"1=2",showContent:"false"});
- * 动态加载多记录表支持参数
- * //3.动态加载jsp页面
- * FWDynDiv('dynDiv','jsp','/jsp/sysmngr/web/operauth/oper/operator_right.jsp',{OPERTYPE:'2',BAE001:'441901'});
- * </pre>
- */
- function FWDynDiv(divId,type,idOrJsp,data){
- data = data || {};
- var type = type.toLowerCase();
- var url = "";
- var serverUrl = _getServerURL();
- if('jsp' == type){
- if(idOrJsp.indexOf('?') != -1){
- alert("出于安全考虑,不允许在URL上附带参数。请将参数写在函数的data入参。");
- return false;
- }
- url = serverUrl + idOrJsp;
- }else if('gt' == type){
- var gtId = idOrJsp;
- url = serverUrl + "/jsp/framework/gt.jsp";
- data.id = gtId;
- }else if('glt' == type){
- var gltId = idOrJsp;
- url = serverUrl + "/jsp/framework/glt.jsp";
- data.id = gltId;
- }
- $("#"+divId).html("<span><img style=\"vertical-align:bottom;\" src=\"" + contextPath + "/js/ui/fwwindow/images/panel_loading.gif\"/></span>" +
- "<span> </span>" +
- "<span>loading...</span>");
- $("#"+divId).load(url,data,function(responseText,status,xhr){
- if (status == "error") {
- $("#"+divId).html("<span style='color:red;'>动态加载失败: " + xhr.status + " " + xhr.statusText + "</span><br>" + responseText);
- }
- });
- function _getServerURL(){
- var href = window.location.href;
- var count = 0;
- var i=0;
- var pos = -1;
- for(;i<href.length;i++){
- var c = href.charAt(i);
- if('/' == c){
- count++ ;
- }
- if(4 == count){
- pos = i;
- break;
- }
- }
- return href.substring(0,pos);
- }
- }
- /**
- * 功能:构造一个form,发送HTTP请求。发送请求后,构造的form会被删除。
- *
- * @param action 字符串,必填项,form的action属性。
- * @param data 字符串,必填项,form的字段名值对。
- * @param method 字符串,非必填项,form的method属性,默认值是POST。
- * 为安全起见,尽可能使用post方法,而不是get方法
- * @returns
- *
- * 例子
- * var param = {"listWhereCls":" AAE100 ='1' and BAE001 like '4419%'",
- * "configId":"fw_authmngr_geneauth_list1",
- * "serviceId":"gltExcelService",
- * "method":"exportGlt"
- * };
- * sendRequest(contextPath + '/downFile.do',param);
- */
- function sendRequest(action,data,method){
- method = method || 'post';
- var div = document.createElement("div");
- var html = "<form method=\""+method+"\" action=\""+action+"\">";
- for(var key in data){
- var value = data[key];
- html += "<input type=\"hidden\" name=\""+key+"\" value=\""+value+"\"/>"
- }
- html += "</form>";
- div.innerHTML=html;
- var form = div.getElementsByTagName("form")[0];
- document.body.appendChild(form);
- form.submit();
- document.body.removeChild(form);
- }
- /**
- * 功能:非流程业务影像资料资料上传
- *
- * @param ywbh 业务编号(统一业务中区分不同笔业务的唯一键值)
- * @param ywlb (可选)业务类别(当传入的编号与其他业务的业务编号无法区分时,此字段必录)
- * @returns
- *
- * 例子
- *
- * flcYxzl("2222","HDSQ");
- */
- function flcYxzl(ywbh,ywlb) {
- if(isNull(ywbh)){
- FWalert('业务编号为空,请核实!');
- return;
- }
- var ywlsh=isNull(ywlb)?ywbh:(ywlb+ywbh);
- var url=contextPath + "/framework/web/uploadyx.do?ywlsh="+ywlsh;
- window.open (url, "newwindow", "height=300, width=800, toolbar =no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no")
- }
|