fw.str.js 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. /**
  2. * @author herong
  3. * 字符组件
  4. */
  5. var CFWStr = _FW.fCreateClass();
  6. /**
  7. * 字符组件API
  8. */
  9. CFWStr.prototype = {
  10. /**
  11. * 初始化
  12. * */
  13. fInitialize : function(options) {
  14. },
  15. /**
  16. * 将数值类型转化为String
  17. * 主要是将传入的数值类型入参变量转换为字符串
  18. * @param Integer iInputs (必需)数据类型入参
  19. * @return String 转换后的字符串
  20. * <pre>
  21. * 使用举例:
  22. * CFW.oStr.fnNub2Str(iInputs);
  23. * </pre>
  24. */
  25. fnNub2Str : function (iInputs) {
  26. //由于入参可能不是数字型也调用此方法,暂时不判断是否为数值型
  27. return("" + iInputs + "");
  28. },
  29. /**
  30. * 全角转半角,返回转换后的字符串
  31. * 主要是将传入的字符串入参中的全角输入法下输入的字母、数字等全部转换为半角字符
  32. * @param String sInputs (必需)字符类型入参
  33. * @return String 转换后的字符串
  34. * <pre>
  35. * 使用举例:
  36. * var _iInputs = "0123ABC";
  37. * CFW.oStr.fnQj2Bj(_iInputs);
  38. * </pre>
  39. */
  40. fnQj2Bj : function (sInputs) {
  41. //全角字符
  42. var qj = new Array('0','1','2','3','4','5','6','7','8','9','`','~',
  43. '=','+','-','_','(',')','×','&','……','%','¥','#','@','!',
  44. '<','>','?',':','"',',','.','、',';','【','】','{','}','|',
  45. 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
  46. 'Q','R','S','T','U','V','W','X','Y','Z'
  47. ,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
  48. 'q','r','s','t','u','v','w','x','y','z');
  49. //半角字符
  50. var bj = new Array('0','1','2','3','4','5','6','7','8','9','`','~',
  51. '=','+','-','_','(',')','*','&','^','%','$','#','@','!',
  52. '<','>','?',':','"',',','.','/',';','[',']','{','}','|',
  53. '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',
  54. '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'
  55. );
  56. var newStr = "";
  57. //循环获取入参的每个字符
  58. for(var i = 0 ; i < sInputs.length ; i++){
  59. var ch = sInputs.charAt(i);
  60. var isQj = false;
  61. //循环比较,是否为全角字符
  62. for(var j = 0 ; j < qj.length ; j++){
  63. //若为全角字符,则替换
  64. if(qj[j] == ch){
  65. newStr += bj[j];
  66. isQj = true;
  67. break;
  68. }
  69. }
  70. //若不为全角字符,还使用原字符
  71. if(!isQj){
  72. newStr += ch;
  73. }
  74. }
  75. //如果没有输入全角字符,也应该输出
  76. return newStr;
  77. },
  78. /**
  79. * 替代字符
  80. * 主要是将字符串中需要替代的子字符串替换为指定的子字符串,并可传入大小写敏感标志以及整字代替标志
  81. * @param String sSrc (必需) 目标String
  82. * @param String sOldSub (必需) 欲替代的子字符串
  83. * @param String sNewSub (必需) 替代成为的子字符串
  84. * @param boolean bCaseSens 大小写是否敏感
  85. * @param boolean bwordOnly 是否整字代替
  86. * @return String 替代字符后的字符串
  87. * <pre>
  88. * 使用举例:
  89. * var _sSrc = "替代字符ABC";
  90. * var _sOldSub = "ABC";
  91. * var _sNewSub = "abc";
  92. * CFW.oStr.fnReplace(_sSrc,sOldSub,sNewSub,bCaseSens,bwordOnly);
  93. * </pre>
  94. */
  95. fnReplace : function (sSrc,sOldSub,sNewSub,bCaseSens,bwordOnly) {
  96. var wk ;
  97. var ind = 0;
  98. var next = 0;
  99. wk = sSrc+"";
  100. if(CFW.oValid.fnIsNull(sSrc,"CFW.oStr.fnReplace 目标字符串")){
  101. return '';
  102. }
  103. if(CFW.oValid.fnIsNull(sOldSub,"CFW.oStr.fnReplace 欲替代的子字符串")){
  104. return '';
  105. }
  106. //若大小写不敏感,替换字符串和被替换字符串,小写处理
  107. if (!bCaseSens)
  108. {
  109. sOldSub = sOldSub.toLowerCase();
  110. wk = sSrc.toLowerCase();
  111. }
  112. //循环获取替换字符串中,下一个被替换子字符串的位置,进行替换
  113. while ((ind = wk.indexOf(sOldSub,next)) >= 0)
  114. {
  115. //如果整字替换
  116. if (bwordOnly)
  117. {
  118. var before = ind - 1;
  119. var after = ind + sOldSub.length;
  120. //charAt() 方法可返回指定位置的字符
  121. //如果找到的字符串前后都为空格(此处为空不为非法),才能替换
  122. if (!(CFW.oValid.fnIsNull(wk.charAt(before)) && CFW.oValid.fnIsNull(wk.charAt(after))))
  123. {
  124. next = ind + sOldSub.length;
  125. continue;
  126. }
  127. }
  128. //其前段+替换字符串+其后段
  129. sSrc = sSrc.substring(0,ind) + sNewSub + sSrc.substring(ind+sOldSub.length,sSrc.length);
  130. wk = wk.substring(0,ind) + sNewSub + wk.substring(ind+sOldSub.length,wk.length);
  131. //下次开始位置:本次位置+替换字符串长度
  132. next = ind + sNewSub.length;
  133. //如果已完成循环,则退出
  134. if (next >= wk.length)
  135. {
  136. break;
  137. }
  138. }
  139. return sSrc;
  140. },
  141. /**
  142. * 返回字符串的比特长度
  143. * 主要是计算字符串的字节长度并返回
  144. * @param String sInputs (非必需)目标String
  145. * @return int 字符串的比特长度
  146. * <pre>
  147. * 使用举例:
  148. * var _sInputs = "字符串ABC";
  149. * CFW.oStr.fnLengthB(_sInputs);
  150. * </pre>
  151. */
  152. fnLengthB : function (sInputs) {
  153. if(sInputs == null || sInputs == "") return 0;
  154. var len = 0;
  155. for(var i = 0; i < sInputs.length; i++){
  156. var t = sInputs.substring(i,i+1);
  157. var c=t.charCodeAt(0) ;
  158. //单字节加1
  159. if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
  160. len++;
  161. }else {
  162. len+=2;
  163. }
  164. }
  165. return len;
  166. },
  167. /**
  168. * 获取中文字符串的拼音首字母
  169. * 主要是获取传入的字符串中的中文字符串,如果传入的字符串中有中文之外的字符则返回字符本身
  170. * @param String sInputs (必需)目标String
  171. * @return String 获取到的拼音首字母字符串
  172. * <pre>
  173. * 使用举例:
  174. * var _sInputs = "字符串1";
  175. * CFW.oStr.fnGetChFirstLetter(_sInputs);
  176. * </pre>
  177. */
  178. fnGetChFirstLetter : function (sInputs) {
  179. if(!sInputs || sInputs.length==0) return "";
  180. var CH2EN = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY";
  181. var py = "";
  182. for(var i = 0 ; i < sInputs.length ; i++){
  183. var utfcode = sInputs.charCodeAt(i);
  184. var ind = utfcode - 19968;
  185. if(ind<0 || ind>=CH2EN.length){//不是汉字,返回字符本身
  186. py += sInputs.charAt(i);
  187. }else{
  188. py += CH2EN.charAt(ind);
  189. }
  190. }
  191. return py;
  192. },
  193. /**
  194. * 函数用于将list对象中sColNames字段的值包含sOldSub替换为sNewSub
  195. * @param List lParam (必需):所要处理的list对象
  196. * @param String sColNames (必需):字段拼串字符串对象,如"AAE005,AAE006"
  197. * @param String sOldSub (必需):指定字段值包含的字符串,需要替换的字符串
  198. * @param String sNewSub (必需):替换的字符串,将sOldSub替换成sNewSub
  199. * <pre>
  200. * 使用举例:
  201. * rows = CFW.oStr.fnReplaceListValue(rows,"AAE005,AAE006","XX","YY");//如将rows中的AAE005与AAE006字段中XX
  202. * 替换成YY
  203. * </pre>
  204. */
  205. fnReplaceListValue : function (lParam,sColNames,sOldSub,sNewSub) {
  206. //若lParam为空,则不处理
  207. if(CFW.oValid.fnIsNull(lParam,"CFW.oStr.fnReplaceListValue 所要处理的list对象")){
  208. return lParam;
  209. }
  210. //若sColNames为空,则不处理
  211. if(CFW.oValid.fnIsNull(sColNames,"CFW.oStr.fnReplaceListValue 字段拼串字符串对象")){
  212. return lParam;
  213. }
  214. var a = sColNames.split(','); //将字符串str转换为数组对象
  215. var aLen = a.length; //获取数组a的长度
  216. var rLen = lParam.length; //获取lParam对象的长度
  217. //循环需替换字段
  218. for(var j = 0 ; j < aLen ; j++){
  219. for(var i = 0 ; i < rLen ; i++){
  220. var str =lParam[i][a[j]];
  221. //运算新对象值
  222. if(!CFW.oValid.fnIsNull(str)&&!CFW.oValid.fnIsNull(sOldSub)){
  223. str = eval("'"+str+"'.replace(/" + sOldSub + "/g,'"+ sNewSub+"')") ;
  224. //eval(tmp);
  225. }else if(CFW.oValid.fnIsNull(sOldSub)){
  226. str=sNewSub;
  227. }
  228. //设置新对象值
  229. try{
  230. lParam[i][a[j]] = str; //将替换后的值重新保存到lParam中
  231. }catch(e){
  232. continue;
  233. }
  234. }
  235. }
  236. return lParam;
  237. },
  238. /**
  239. * 函数用于将list对象中sColName字段的值设置为sParam
  240. * 主要是将传入的list对象中的指定的某个字段的值统一设置为指定的值,并返回此list对象
  241. * @param List lParam(必需):所要处理的list对象
  242. * @param String sColNames(必需):字段拼串字符串对象,如"AAE005"
  243. * @param String sParam(必需):要设定的值
  244. * @return list 完成值设定后的list对象
  245. * <pre>
  246. * 使用举例:
  247. * rows = CFW.oStr.fnSetListValue(rows,"AAE005","X");//如将rows中的AAE005字段值替换成X
  248. * </pre>
  249. */
  250. fnSetListValue : function (lParam,sColNames,sParam) {
  251. //若lParam为空,则不处理
  252. if(CFW.oValid.fnIsNull(lParam,"CFW.oStr.fnSetListValue 所要处理的list对象")){
  253. return lParam;
  254. }
  255. //若sColNames为空,则不处理
  256. if(CFW.oValid.fnIsNull(sColNames,"CFW.oStr.fnSetListValue 字段拼串字符串对象")){
  257. return lParam;
  258. }
  259. var a = sColNames.split(','); //将字符串str转换为数组对象
  260. var aLen = a.length; //获取数组a的长度
  261. var rLen = lParam.length; //获取lParam对象的长度
  262. //循环需替换字段
  263. for(var j = 0 ; j < aLen ; j++){
  264. for(var i = 0 ; i < rLen ; i++){
  265. try{ //替换
  266. lParam[i][a[j]] = sParam; //给第i行的str1字段赋值sParam
  267. }catch(e){//可能不存在该对象名
  268. continue;
  269. }
  270. }
  271. }
  272. return lParam;
  273. },
  274. /**
  275. * 获取单记录表单的所有字段并自动按指定的分隔符拼成串
  276. * 主要是将传入的单记录表单中所有字段名、字段值按指定的分隔符拼成值串,以便传给后台使用。还可以指定不需要拼接的字段。
  277. * @param String sFormId (必需)单记录表单的ID
  278. * @param String sSeparator 分隔符,默认逗号
  279. * @param Array aNoParam 不需要拼接的字段数组
  280. * @param Array aNoParam 是否需要过滤为空的字符串
  281. * @returns String 返还拼接后的串
  282. * <pre>
  283. * 使用举例:
  284. * var _aNoParam = new Array('XB','BZ');//不需要拼接的字段串
  285. * var _aStr = CFW.oStr.fnSpliceStr('gentbl_test','\x03',_aNoParam); //例子中使用的分隔符为chr(3)
  286. * </pre>
  287. */
  288. fnSpliceStr : function (sFormId,sSeparator,aNoParam,bFlag) {
  289. var k,i,j = 0,tmp = '';
  290. var bMark = false;
  291. var tags = new Array();
  292. var gtObj = $('#' + sFormId).get(0);//获取单记录表对象
  293. $(':input',gtObj).each(function(){
  294. //在此处停止,执行下一个循环
  295. if(this.name == null || this.name == ''){return true;}
  296. bMark = false;
  297. //循环排除对象名
  298. for(k = 0 ; k < aNoParam.length ; k++){
  299. if(aNoParam[k] == this.name){
  300. bMark = true;
  301. break;
  302. }
  303. }
  304. //若不是排除对象,则获取键值对
  305. if(!bMark){
  306. if(bFlag){
  307. if(!CFW.oValid.fnIsNull(this.value)){
  308. tags[j] = this.name + "=" + this.value;
  309. j++;
  310. }
  311. }else{
  312. tags[j] = this.name + "=" + this.value;
  313. j++;
  314. }
  315. }
  316. });
  317. tmp = tags.join(sSeparator);//指定分隔符拼字符串
  318. return tmp;
  319. },
  320. /**
  321. * 组装查询条件函数
  322. * 主要将传入的单记录表中的字段拼接成SQL语句查询条件串,如果字段需要进行特殊设置,则在sColRow中进行相应的特殊配置。
  323. * @param String sFormId (必需)单记录表单的配置ID名称
  324. * @param JSON数组 aColRow (必需)特殊字段的设置的JSON数组,
  325. * 定义空的数组格式默认为 var row=[]; 若无特殊要求,也可以不必设置,默认为用等号拼接
  326. * 其中colname,type为必录,若为空或不设置则不执行,还可设置begin、end、exp
  327. * exp设置为like时,begin和end只能设置为空或%
  328. * exp不为like时,可用逗号隔开两个符号,如果begin和end有值,则默认exp设置为'<=,>='
  329. * type目前可支持:NUMBER,STRING,DATE,DATETIME,DATETONUM6,DATETONUM8,DATETONUM14
  330. * DATE格式为'yyyy-mm-dd',DATETIME格式为'yyyy-mm-dd hh24:mi:ss',DATETONUM+6/8/14,分别为6、8、14位时间格式
  331. * @returns String 返回组装后的查询条件串
  332. * <pre>
  333. * 使用举例:
  334. * 例1:
  335. * 没有任何特殊的设置
  336. * var _sWhere = spliceWhere('ybdy_spdjcx_sqxd_cxtj','');
  337. * 例2:
  338. * var _aRow = [{'colname':'CXRQ','type':'DATE','begin':'KSCXRQ','end':'ZZCXRQ'},
  339. * {'colname':'SHNY','type':'STRING','begin':'KSSHNY','end':'ZZSHNY','exp':'<,>'},
  340. * {'colname':'CSRQ','type':'DATE','exp':'>='},
  341. * {'colname':'JBRQ','type':'DATETIME'},
  342. * {'colname':'JE','type':'NUMBER'},
  343. * {'colname':'ZJBH','type':'STRING','begin':'','end':'%','exp':'like'},
  344. * {'colname':'YWLSH','type':''}
  345. * ];
  346. * var _aWhere = CFW.oStr.fnSpliceWhere('ybdy_spdjcx_sqxd_cxtj',_aRow);
  347. * </pre>
  348. */
  349. fnSpliceWhere : function (sFormId,aColRow) {
  350. var row = [];
  351. var b = false;
  352. var arrCol=[];
  353. var strWhere='',j=0;
  354. var myobj = $('#'+sFormId).get(0);//获取单记录表对象
  355. if(typeof aColRow =='object' && typeof aColRow.sort == 'function' && typeof aColRow.length == 'number'){
  356. row = aColRow;
  357. }
  358. //找出有特别设置的字段
  359. for(var i=0;i<row.length;i++){
  360. var item = row[i];
  361. var exp ='=';//表达式默认为等号
  362. var exp1='', exp2='';//有区间判断的表达式符合,例如 <、>
  363. var colname ='',colvalue='';
  364. var begin='', end='', tmp='', type='STRING';
  365. var date1='', date2='', iLen=0, iPos=0;
  366. if(row[i]['colname']==null){
  367. continue;
  368. }
  369. colname = row[i]['colname'];
  370. //判断是否存在值 有时需要查询的字段不在界面上 开始日期、终止日期对应的字段XXX日期等
  371. if(typeof $('[NAME="'+colname+'"]',myobj).get(0)=='object'){
  372. //取相应字段的值
  373. colvalue =$('[NAME="'+colname+'"]',myobj).get(0).value;
  374. if(colvalue==''||colvalue==null){
  375. continue;
  376. }
  377. }
  378. if(colvalue!=null&&colvalue!=''&& typeof(colvalue)=='string'){
  379. colvalue=colvalue.replace(/'/g, "''");
  380. }
  381. if(row[i]['begin']!=null){begin=row[i]['begin'];}
  382. if(row[i]['end']!=null){end=row[i]['end'];}
  383. type=row[i]['type'];
  384. arrCol[j]=colname;//放入数组的目的是为了下面过滤掉,不要重复组合
  385. j++;
  386. //处理需要过滤不组合到WHERE内的字段
  387. if(type==null||type==''){
  388. continue;
  389. }
  390. //是否配置了表达式
  391. if(row[i]['exp']!=null){
  392. exp = row[i]['exp'];
  393. exp = exp.toLowerCase();
  394. iPos = exp.indexOf(','); //检查是否配置了 <,> 等表达式
  395. if(iPos>0){
  396. var arrExp = exp.split(',');
  397. exp='=';
  398. exp1 = arrExp[0];
  399. exp2 = arrExp[1];
  400. }
  401. }
  402. if(strWhere==''){
  403. strWhere =' ' + colname;
  404. }else{
  405. strWhere = strWhere + ' and ' + colname;
  406. }
  407. //拼接上表达式
  408. strWhere += ' ' + exp +' ';
  409. if(exp!='like'){
  410. //调用内部函数组合查询条件
  411. strWhere = dt(myobj,strWhere,type,colname,colvalue,begin,end,exp1,exp2);
  412. if(begin!=''){ arrCol[j]=begin; j++;}
  413. if(end!=''){arrCol[j]=end;j++;}
  414. }
  415. //若传入的like,则更加begin和end的%值,拼串
  416. if(exp=='like'){
  417. if((begin==''&&end=='')||(begin=='%'&&end=='%')){
  418. strWhere += "'%" + colvalue + "%'";
  419. }
  420. if(begin=='%'&&end==''){
  421. strWhere += "'%" + colvalue + "'";
  422. }
  423. if(begin==''&&end=='%'){
  424. strWhere += "'" + colvalue + "%'";
  425. }
  426. }
  427. }//for end here
  428. //下面开始处理没有特别设置的字段
  429. jQuery(':input',myobj).each(function(){
  430. b=false;
  431. if(this.name==null|| this.name==''||this.name=='_multiple'){
  432. return true; //循环下一个相当于FOR循环continue
  433. }
  434. //过滤掉已经特殊处理过的字段
  435. for(var k=0; k<arrCol.length;k++){
  436. if(arrCol[k]== this.name){
  437. b=true;
  438. break;
  439. }
  440. }
  441. if(b){
  442. return true; //循环下一个相当于FOR循环continue
  443. }
  444. if(this.value==''){
  445. return true; //循环下一个相当于FOR循环continue
  446. }
  447. //没有特殊设置的字段,直接用等号拼接
  448. if(strWhere==''){
  449. strWhere =' ' + this.name + '=';
  450. }else{
  451. strWhere = strWhere + ' and ' + this.name + '=';
  452. }
  453. var valStr=this.value;
  454. if(this.value!=null&&this.value!=''&& typeof(this.value)=='string'){
  455. valStr=valStr.replace(/'/g,"''");
  456. }
  457. strWhere += "'" + valStr + "' ";
  458. });
  459. return strWhere;
  460. //定义内部函数
  461. function dt(obj,sW,ty,cln,clv,bg,en,e1,e2){
  462. var d1,d2,iL,tp;
  463. if(e1==''){e1='>=';} //若没有配则设置默认值
  464. if(e2==''){e2='<=';}
  465. if(bg==''&&en==''){
  466. if(ty=='NUMBER'){sW += clv;}
  467. if(ty=='STRING'){sW += "'" + clv + "'";}
  468. if(ty=='DATE'){sW += "to_date('" + clv + "','yyyy-mm-dd')"; }
  469. if(ty=='DATETIME'){sW += "to_date('" + clv + "','yyyy-mm-dd hh24:mi:ss')"; }
  470. if(ty=='DATETONUM6'){
  471. clv = clv.replace(/-/gi, "");
  472. if(clv.length>6){
  473. clv = clv.substr(0,6);
  474. }
  475. sW += clv;
  476. }
  477. if(ty=='DATETONUM8'){
  478. clv = clv.replace(/-/gi, "");
  479. sW += clv;
  480. }
  481. if(ty=='DATETONUM14'){
  482. clv = clv.replace(/-/gi, "");
  483. clv = clv.replace(/:/gi, "");
  484. clv = clv.replace(/ /gi, "");
  485. iL = clv.length;
  486. while(iL<14){
  487. clv+='0';
  488. iL = clv.length;
  489. }
  490. sW += clv;
  491. }
  492. return sW;
  493. }
  494. //说明是有开始字段跟终止字段
  495. if(bg!=''&&en!=''){
  496. if(typeof $('[NAME="'+bg+'"]',obj).get(0)!='object'){
  497. CFW.oWin.fnAlert('字段='+bg+' 不存在!');
  498. return '';
  499. }
  500. if(typeof $('[NAME="'+en+'"]',obj).get(0)!='object'){
  501. CFW.oWin.fnAlert('字段='+en+' 不存在!');
  502. return '';
  503. }
  504. d1=$('[NAME="'+bg+'"]',obj).get(0).value;
  505. d2=$('[NAME="'+en+'"]',obj).get(0).value;
  506. iL = sW.length-2;
  507. sW = sW.substr(0,iL); //去掉=号
  508. //开始字段录入值
  509. if(d1!=''){
  510. if(ty=='NUMBER'){sW += " "+e1+d1;}
  511. if(ty=='STRING'){sW += " "+e1+"'"+d1+"'";}
  512. if(ty=='DATE'){ sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd')";};
  513. if(ty=='DATETIME'){sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd hh24:mi:ss')";};
  514. if(ty=='DATETONUM6'){
  515. d1 = d1.replace(/-/gi, "");
  516. if(d1.length>6){
  517. d1 = d1.substr(0,6);
  518. }
  519. sW += " "+e1 + " " + d1;
  520. }
  521. if(ty=='DATETONUM8'){
  522. d1 = d1.replace(/-/gi, "");
  523. sW += " "+e1 + " " + d1;
  524. }
  525. if(ty=='DATETONUM14'){
  526. d1 = d1.replace(/-/gi, "");
  527. d1 = d1.replace(/:/gi, "");
  528. d1 = d1.replace(/ /gi, "");
  529. iL = d1.length;
  530. while(iL<14){
  531. d1+='0';
  532. iL = d1.length;
  533. }
  534. sW += " "+e1 + " " + d1;
  535. }
  536. if(d2!=''){
  537. sW += " and " + cln;
  538. }
  539. }
  540. //终止字段录入值
  541. if(d2!=''){
  542. if(ty=='NUMBER'){ sW += " "+e2+" " + d2;};
  543. if(ty=='STRING'){ sW += " "+e2+" '" + d2 + "'";};
  544. if(ty=='DATE'){ sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd')";};
  545. if(ty=='DATETIME'){sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd hh24:mi:ss')";};
  546. if(ty=='DATETONUM6'){
  547. d2 = d2.replace(/-/gi, "");
  548. if(d2.length>6){
  549. d2 = d2.substr(0,6);
  550. }
  551. sW += " "+e2 + " " + d2;
  552. }
  553. if(ty=='DATETONUM8'){
  554. d2 = d2.replace(/-/gi, "");
  555. sW += " "+e2 + " " + d2;
  556. }
  557. if(ty=='DATETONUM14'){
  558. d2 = d2.replace(/-/gi, "");
  559. d2 = d2.replace(/:/gi, "");
  560. d2 = d2.replace(/ /gi, "");
  561. iL = d2.length;
  562. if(iL==8){
  563. d2+='235959';//23:59:59
  564. }else{
  565. while(iL<14){
  566. d2+='0';
  567. iL = d2.length;
  568. }
  569. }
  570. sW += " "+e2 + " " + d2;
  571. }
  572. }
  573. //若开始字段和终止字段都没有录入值
  574. if(d1==''&&d2==''){
  575. tp = 'and ' + cln;
  576. iP = sW.indexOf(tp);
  577. sW = sW.substr(0,iP); //去掉and 和列名
  578. }
  579. }
  580. return sW;
  581. }//dt
  582. },
  583. fnJsonWhere : function (sFormId,aColRow) {
  584. var row = [];
  585. var b = false;
  586. var arrCol=[];
  587. var strWhere='',j=0;
  588. var whereArr=[];
  589. var myobj = $('#'+sFormId).get(0);//获取单记录表对象
  590. if(typeof aColRow =='object' && typeof aColRow.sort == 'function' && typeof aColRow.length == 'number'){
  591. row = aColRow;
  592. }
  593. //找出有特别设置的字段
  594. for(var i=0;i<row.length;i++){
  595. var item = row[i];
  596. var exp ='=';//表达式默认为等号
  597. var exp1='', exp2='';//有区间判断的表达式符合,例如 <、>
  598. var colname ='',colvalue='';
  599. var begin='', end='', tmp='', type='STRING';
  600. var date1='', date2='', iLen=0, iPos=0;
  601. if(row[i]['colname']==null){
  602. continue;
  603. }
  604. colname = row[i]['colname'];
  605. //判断是否存在值 有时需要查询的字段不在界面上 开始日期、终止日期对应的字段XXX日期等
  606. if(typeof $('[NAME="'+colname+'"]',myobj).get(0)=='object'){
  607. //取相应字段的值
  608. colvalue =$('[NAME="'+colname+'"]',myobj).get(0).value;
  609. if(colvalue==''||colvalue==null){
  610. continue;
  611. }
  612. }
  613. if(colvalue!=null&&colvalue!=''&& typeof(colvalue)=='string'){
  614. colvalue=colvalue.replace(/'/g, "''");
  615. }
  616. if(row[i]['begin']!=null){begin=row[i]['begin'];}
  617. if(row[i]['end']!=null){end=row[i]['end'];}
  618. type=row[i]['type'];
  619. arrCol[j]=colname;//放入数组的目的是为了下面过滤掉,不要重复组合
  620. j++;
  621. //处理需要过滤不组合到WHERE内的字段
  622. if(type==null||type==''){
  623. continue;
  624. }
  625. //是否配置了表达式
  626. if(row[i]['exp']!=null){
  627. exp = row[i]['exp'];
  628. exp = exp.toLowerCase();
  629. iPos = exp.indexOf(','); //检查是否配置了 <,> 等表达式
  630. if(iPos>0){
  631. var arrExp = exp.split(',');
  632. exp='=';
  633. exp1 = arrExp[0];
  634. exp2 = arrExp[1];
  635. }
  636. }
  637. if(exp!='like'){
  638. //调用内部函数组合查询条件
  639. var d1=$('[NAME="'+begin+'"]',myobj).get(0).value;
  640. var d2=$('[NAME="'+end+'"]',myobj).get(0).value;
  641. if(d1!=''||d2!=''){
  642. var whereCOl=new Object();
  643. whereCOl.colname=colname;
  644. whereCOl.colvalue=colvalue;
  645. whereCOl.exp=exp;
  646. whereCOl.exp1=exp1;
  647. whereCOl.exp2=exp2;
  648. whereCOl.begin=begin;
  649. whereCOl.end=end;
  650. whereCOl.d1=d1;
  651. whereCOl.d2=d2;
  652. whereCOl.type=type;
  653. whereCOl.special="true";
  654. whereArr[whereArr.length]=whereCOl;
  655. }
  656. if(begin!=''){ arrCol[j]=begin; j++;}
  657. if(end!=''){arrCol[j]=end;j++;}
  658. }else{ //若传入的like,则更加begin和end的%值,拼串
  659. var whereCOl=new Object();
  660. whereCOl.colname=colname;
  661. whereCOl.colvalue=colvalue;
  662. whereCOl.exp=exp;
  663. whereCOl.exp1=exp1;
  664. whereCOl.exp2=exp2;
  665. whereCOl.begin=begin;
  666. whereCOl.end=end;
  667. whereCOl.special="true";
  668. whereArr[whereArr.length]=whereCOl;
  669. }
  670. }//for end here
  671. //下面开始处理没有特别设置的字段
  672. jQuery(':input',myobj).each(function(){
  673. b=false;
  674. if(this.name==null|| this.name==''||this.name=='_multiple'){
  675. return true; //循环下一个相当于FOR循环continue
  676. }
  677. //过滤掉已经特殊处理过的字段
  678. for(var k=0; k<arrCol.length;k++){
  679. if(arrCol[k]== this.name){
  680. b=true;
  681. break;
  682. }
  683. }
  684. if(b){
  685. return true; //循环下一个相当于FOR循环continue
  686. }
  687. if(this.value==''){
  688. return true; //循环下一个相当于FOR循环continue
  689. }
  690. //没有特殊设置的字段,直接用等号拼接
  691. var valStr=this.value;
  692. if(this.value!=null&&this.value!=''&& typeof(this.value)=='string'){
  693. valStr=valStr.replace(/'/g,"''");
  694. }
  695. var whereCOl=new Object();
  696. whereCOl.colname=this.name;
  697. whereCOl.colvalue=valStr;
  698. whereCOl.exp="=";
  699. whereCOl.special="false";
  700. whereArr[whereArr.length]=whereCOl;
  701. });
  702. //alert(JSON.stringify(whereArr));
  703. // var data={};
  704. // data["fnJsonWhere"] = whereArr;
  705. return whereArr;
  706. }
  707. };