dlshouwen.grid.js 140 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850
  1. /*!
  2. * DLShouWen Grid v1.2.1
  3. *
  4. * includes: jquery, bootstrap, fontawesome, My97 DatePicker
  5. * Copyright 2016, http://os.dlshouwen.com/grid, http://www.dlshouwen.com
  6. */
  7. (function($) {
  8. if(!$.fn.dlshouwen){
  9. $.fn.dlshouwen = {};
  10. }
  11. $.fn.dlshouwen.grid = {
  12. //初始化方法
  13. init : function(options, name) {
  14. /**
  15. * 1. 初始化参数
  16. */
  17. for(var i=0; i<options.columns.length; i++){
  18. //初始化列参数
  19. options.columns[i] = $.extend({}, $.fn.dlshouwen.grid.defaultOptions.column, options.columns[i]);
  20. }
  21. //初始化表格参数
  22. options = $.extend({}, $.fn.dlshouwen.grid.defaultOptions.grid, options);
  23. //如果没有定义编号则设置默认GUID编号
  24. if(!options.id){
  25. options.id = $.fn.dlshouwen.grid.tools.guid();
  26. }
  27. //如果语言错误则默认为英文
  28. if(!$.fn.dlshouwen.grid.lang[options.lang]){
  29. options.lang = 'en';
  30. }
  31. /**
  32. * 2. 定义对象
  33. */
  34. var gridObject = {
  35. /**
  36. * 参数相关
  37. */
  38. //初始化参数
  39. init : {
  40. //工具条是否初始化加载
  41. toolsIsInit : false,
  42. //打印窗体是否初始化
  43. printWindowIsInit : false,
  44. //导出窗体是否初始化
  45. exportWindowIsInit : {},
  46. //快速查询窗体是否初始化
  47. fastQueryWindowIsInit : false,
  48. //高级查询窗体是否初始化
  49. advanceQueryWindowIsInit : false
  50. },
  51. //页面参数对象
  52. pager : {
  53. //每页显示条数
  54. pageSize : 0,
  55. //开始记录数
  56. startRecord : 0,
  57. //当前页数
  58. nowPage : 0,
  59. //总记录数
  60. recordCount : 0,
  61. //总页数
  62. pageCount : 0
  63. },
  64. //表格参数对象
  65. option : options,
  66. //原始数据集
  67. originalDatas : null,
  68. //基础数据集
  69. baseDatas : null,
  70. //展现数据集
  71. exhibitDatas : null,
  72. //排序参数
  73. sortParameter : {
  74. //排序列编号
  75. columnId : '',
  76. //排序类型:0-不排序;1-正序;2-倒序
  77. sortType : 0
  78. },
  79. //排序缓存的原生数据
  80. sortOriginalDatas : null,
  81. //参数列表
  82. parameters : null,
  83. //快速查询的参数列表
  84. fastQueryParameters : null,
  85. //快速查询缓存的原生数据
  86. fastQueryOriginalDatas : null,
  87. //高级查询的参数列表
  88. advanceQueryParameter : {
  89. //高级查询条件信息
  90. advanceQueryConditions : null,
  91. //高级查询排序信息
  92. advanceQuerySorts : null
  93. },
  94. //打印列
  95. printColumns : null,
  96. //导出列
  97. exportColumns : null,
  98. //导出数据
  99. exportDatas : null,
  100. /**
  101. * 构件表格相关
  102. */
  103. //构建表格方法
  104. load : function(){
  105. //定义表格对象映像
  106. var gridReflectionObj = this;
  107. //显示工具条
  108. gridReflectionObj.showProcessBar();
  109. //首次加载
  110. if(gridReflectionObj.init.toolsIsInit==false){
  111. //设置初始化完成
  112. gridReflectionObj.init.toolsIsInit = true;
  113. //加载工具按钮
  114. gridReflectionObj.constructGridToolBar();
  115. //设置初始分页属性:每页显示数量、开始记录、当前页号
  116. gridReflectionObj.pager.pageSize = gridReflectionObj.option.pageSize;
  117. gridReflectionObj.pager.startRecord = 0;
  118. gridReflectionObj.pager.nowPage = 1;
  119. //如果不是ajax加载,则处理所有数据
  120. if(!gridReflectionObj.option.ajaxLoad){
  121. gridReflectionObj.hideProcessBar(function(){
  122. //处理原始数据集
  123. gridReflectionObj.originalDatas = gridReflectionObj.option.datas;
  124. gridReflectionObj.originalDatas = gridReflectionObj.originalDatas?gridReflectionObj.originalDatas:new Array();
  125. //处理基础数据集
  126. gridReflectionObj.baseDatas = gridReflectionObj.originalDatas.slice(0, gridReflectionObj.originalDatas.length);
  127. //处理分页属性
  128. gridReflectionObj.pager.recordCount = gridReflectionObj.baseDatas.length;
  129. gridReflectionObj.pager.pageCount = Math.floor((gridReflectionObj.pager.recordCount-1)/gridReflectionObj.pager.pageSize)+1;
  130. //获取展现数据集
  131. gridReflectionObj.exhibitDatas = gridReflectionObj.baseDatas.slice(gridReflectionObj.pager.startRecord, gridReflectionObj.pager.startRecord+gridReflectionObj.pager.pageSize);
  132. //获取排序数据集备份
  133. gridReflectionObj.sortOriginalDatas = gridReflectionObj.exhibitDatas.slice(0, gridReflectionObj.exhibitDatas.length);
  134. //构建表格、工具条
  135. gridReflectionObj.constructGrid();
  136. gridReflectionObj.constructGridPageBar();
  137. });
  138. return;
  139. }else{
  140. //如果是一次加载,则加载所有数据到原始数据
  141. if(gridReflectionObj.option.loadAll){
  142. var url = gridReflectionObj.option.loadURL;
  143. $.ajax({
  144. type:'post',
  145. url:url,
  146. data:null,
  147. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  148. beforeSend: function(xhr) {xhr.setRequestHeader("__REQUEST_TYPE", "AJAX_REQUEST");},
  149. success:function(datas){
  150. gridReflectionObj.hideProcessBar(function(){
  151. //处理原始数据集
  152. gridReflectionObj.originalDatas = $.parseJSON(datas);
  153. gridReflectionObj.originalDatas = gridReflectionObj.originalDatas?gridReflectionObj.originalDatas:new Array();
  154. //处理基础数据集
  155. gridReflectionObj.baseDatas = gridReflectionObj.originalDatas.slice(0, gridReflectionObj.originalDatas.length);
  156. //处理分页属性
  157. gridReflectionObj.pager.recordCount = gridReflectionObj.baseDatas.length;
  158. gridReflectionObj.pager.pageCount = Math.floor((gridReflectionObj.pager.recordCount-1)/gridReflectionObj.pager.pageSize)+1;
  159. //获取展现数据集
  160. gridReflectionObj.exhibitDatas = gridReflectionObj.baseDatas.slice(gridReflectionObj.pager.startRecord, gridReflectionObj.pager.startRecord+gridReflectionObj.pager.pageSize);
  161. //获取排序数据集备份
  162. gridReflectionObj.sortOriginalDatas = gridReflectionObj.exhibitDatas.slice(0, gridReflectionObj.exhibitDatas.length);
  163. //构建表格、工具条
  164. gridReflectionObj.constructGrid();
  165. gridReflectionObj.constructGridPageBar();
  166. });
  167. },
  168. error:function(XMLHttpRequest, textStatus, errorThrown){
  169. gridReflectionObj.hideProcessBar(function(){
  170. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].errors.ajaxLoadError, 'error', 5000);
  171. //构建表格、工具条
  172. gridReflectionObj.constructGrid();
  173. gridReflectionObj.constructGridPageBar();
  174. });
  175. }
  176. });
  177. return;
  178. }
  179. }
  180. }
  181. //非初始化运行
  182. if(!gridReflectionObj.option.ajaxLoad||gridReflectionObj.option.loadAll){
  183. gridReflectionObj.hideProcessBar(function(){
  184. //处理快速查询及高级查询
  185. if(gridReflectionObj.fastQueryParameters||gridReflectionObj.advanceQueryParameter){
  186. //传递所有数据
  187. gridReflectionObj.baseDatas = gridReflectionObj.originalDatas;
  188. //处理快速查询
  189. if(gridReflectionObj.fastQueryParameters){
  190. gridReflectionObj.baseDatas = gridReflectionObj.doFastQueryDatasFilter(gridReflectionObj.baseDatas, gridReflectionObj.fastQueryParameters);
  191. }
  192. //处理高级查询
  193. if(gridReflectionObj.advanceQueryParameter){
  194. gridReflectionObj.baseDatas = gridReflectionObj.doAdvanceQueryDatasFilter(gridReflectionObj.baseDatas, gridReflectionObj.advanceQueryParameter);
  195. }
  196. }
  197. //记录数、页数重算
  198. gridReflectionObj.pager.recordCount = gridReflectionObj.baseDatas.length;
  199. gridReflectionObj.pager.pageCount = gridReflectionObj.pager.recordCount==0?0:(Math.floor((gridReflectionObj.pager.recordCount-1)/gridReflectionObj.pager.pageSize)+1);
  200. //如果当前页数大于现在的总页数,则显示最后一页
  201. if(gridReflectionObj.pager.nowPage>gridReflectionObj.pager.pageCount){
  202. gridReflectionObj.pager.nowPage = gridReflectionObj.pager.pageCount;
  203. gridReflectionObj.pager.startRecord = gridReflectionObj.pager.pageSize*(gridReflectionObj.pager.nowPage-1);
  204. }
  205. //重新计算开始记录
  206. gridReflectionObj.pager.startRecord = gridReflectionObj.pager.pageSize*(gridReflectionObj.pager.nowPage-1);
  207. //如果没有数据,则重设开始记录、当前页
  208. if(gridReflectionObj.baseDatas.length==0){
  209. gridReflectionObj.pager.nowPage = 1;
  210. gridReflectionObj.pager.startRecord = 0;
  211. }
  212. //获取展现数据集
  213. gridReflectionObj.exhibitDatas = gridReflectionObj.baseDatas.slice(gridReflectionObj.pager.startRecord, gridReflectionObj.pager.startRecord+gridReflectionObj.pager.pageSize);
  214. //获取排序数据集备份
  215. gridReflectionObj.sortOriginalDatas = gridReflectionObj.exhibitDatas.slice(0, gridReflectionObj.exhibitDatas.length);
  216. //构建表格、工具条
  217. gridReflectionObj.constructGrid();
  218. gridReflectionObj.constructGridPageBar();
  219. });
  220. }else{
  221. //将参数传递后台AJAX获取数据
  222. var url = gridReflectionObj.option.loadURL;
  223. var pager = new Object();
  224. pager.isExport = false;
  225. pager.pageSize = gridReflectionObj.pager.pageSize;
  226. pager.startRecord = gridReflectionObj.pager.startRecord;
  227. pager.nowPage = gridReflectionObj.pager.nowPage;
  228. pager.recordCount = gridReflectionObj.pager.recordCount?gridReflectionObj.pager.recordCount:-1;
  229. pager.pageCount = gridReflectionObj.pager.pageCount?gridReflectionObj.pager.pageCount:-1;
  230. pager.parameters = gridReflectionObj.parameters?gridReflectionObj.parameters:new Object();
  231. pager.fastQueryParameters = gridReflectionObj.fastQueryParameters?gridReflectionObj.fastQueryParameters:new Object();
  232. pager.advanceQueryConditions = (gridReflectionObj.advanceQueryParameter&&gridReflectionObj.advanceQueryParameter.advanceQueryConditions)?gridReflectionObj.advanceQueryParameter.advanceQueryConditions:new Array();
  233. pager.advanceQuerySorts = (gridReflectionObj.advanceQueryParameter&&gridReflectionObj.advanceQueryParameter.advanceQuerySorts)?gridReflectionObj.advanceQueryParameter.advanceQuerySorts:new Array();
  234. var params = new Object();
  235. params.gridPager = JSON.stringify(pager);
  236. $.ajax({
  237. type:'post',
  238. url:url,
  239. data:params,
  240. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  241. beforeSend: function(xhr) {xhr.setRequestHeader("__REQUEST_TYPE", "AJAX_REQUEST");},
  242. success:function(pager){
  243. pager = $.parseJSON(pager);
  244. //如果出错表示有可能是程序问题或高级查询方案配置有误
  245. if(!pager.isSuccess){
  246. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].errors.ajaxLoadError, 'error', 5000);
  247. gridReflectionObj.hideProcessBar();
  248. return;
  249. }
  250. gridReflectionObj.hideProcessBar(function(){
  251. //处理展示数据和分页相关信息
  252. gridReflectionObj.exhibitDatas = pager.exhibitDatas;
  253. //获取排序数据集备份
  254. gridReflectionObj.sortOriginalDatas = gridReflectionObj.exhibitDatas.slice(0, gridReflectionObj.exhibitDatas.length);
  255. //处理分页信息
  256. gridReflectionObj.pager.pageSize = pager.pageSize;
  257. gridReflectionObj.pager.startRecord = pager.startRecord;
  258. gridReflectionObj.pager.nowPage = pager.nowPage;
  259. gridReflectionObj.pager.recordCount = pager.recordCount;
  260. gridReflectionObj.pager.pageCount = pager.pageCount;
  261. //构建表格、工具条
  262. gridReflectionObj.constructGrid();
  263. gridReflectionObj.constructGridPageBar();
  264. });
  265. },
  266. error:function(XMLHttpRequest, textStatus, errorThrown){
  267. gridReflectionObj.hideProcessBar(function(){
  268. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].errors.ajaxLoadError, 'error', 5000);
  269. //构建表格、工具条
  270. gridReflectionObj.constructGrid();
  271. gridReflectionObj.constructGridPageBar();
  272. });
  273. }
  274. });
  275. }
  276. },
  277. //构建主体内容
  278. constructGrid : function(){
  279. //定义表格对象映像
  280. var gridReflectionObj = this;
  281. //获取扩展列列头
  282. var extraColumnClass = gridReflectionObj.getExtraColumnClass();
  283. //构件表头
  284. var gridContent = '';
  285. gridContent += '<table class="dlshouwen-grid '+gridReflectionObj.option.tableClass+'" id="dlshouwen_grid_'+gridReflectionObj.option.id+'" style="'+gridReflectionObj.option.tableStyle+'">';
  286. if(gridReflectionObj.option.showHeader!=false){
  287. var columns = gridReflectionObj.option.columns;
  288. gridContent += '<thead>';
  289. gridContent += ' <tr class="dlshouwen-grid-headers">';
  290. if(gridReflectionObj.option.extraWidth!=null){
  291. gridContent += ' <th class="extra-column '+extraColumnClass+'" width="'+gridReflectionObj.option.extraWidth+'"></th>';
  292. }else{
  293. gridContent += ' <th class="extra-column '+extraColumnClass+'"></th>';
  294. }
  295. if(gridReflectionObj.option.check){
  296. if(gridReflectionObj.option.checkWidth!=null){
  297. gridContent += ' <th class="check-column" width="'+gridReflectionObj.option.checkWidth+'"><input type="checkbox" id="dlshouwen_grid_'+gridReflectionObj.option.id+'_check" value="check"></th>';
  298. }else{
  299. gridContent += ' <th class="check-column"><input type="checkbox" id="dlshouwen_grid_'+gridReflectionObj.option.id+'_check" value="check"></th>';
  300. }
  301. }
  302. for(var i=0; i<columns.length; i++){
  303. if(columns[i].width!=null){
  304. gridContent += ' <th width="'+columns[i].width+'" columnNo="'+i+'" columnId="'+columns[i].id+'" class="dlshouwen-grid-header '+gridReflectionObj.getColumnClassForHide(columns[i])+' '+columns[i].headerClass+' can-sort" style="'+columns[i].headerStyle+'">';
  305. }else{
  306. gridContent += ' <th columnNo="'+i+'" columnId="'+columns[i].id+'" class="dlshouwen-grid-header '+gridReflectionObj.getColumnClassForHide(columns[i])+' '+columns[i].headerClass+' can-sort" style="'+columns[i].headerStyle+'">';
  307. }
  308. if(gridReflectionObj.sortParameter&&gridReflectionObj.sortParameter.columnId&&gridReflectionObj.sortParameter.columnId==columns[i].id){
  309. if(gridReflectionObj.sortParameter.sortType=='1'){
  310. gridContent += '<span class="dlshouwen-grid-sort">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].sortColumn.asc+'</span>';
  311. }
  312. if(gridReflectionObj.sortParameter.sortType=='2'){
  313. gridContent += '<span class="dlshouwen-grid-sort dlshouwen-grid-sort-desc">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].sortColumn.desc+'</span>';
  314. }
  315. }
  316. gridContent += ' '+columns[i].title;
  317. gridContent += ' </th>';
  318. }
  319. gridContent += ' </tr>';
  320. gridContent += '</thead>';
  321. }
  322. //构建表格
  323. gridContent += ' <tbody>';
  324. if(gridReflectionObj.exhibitDatas!=null){
  325. if(gridReflectionObj.sortParameter&&gridReflectionObj.sortParameter.columnId){
  326. if(gridReflectionObj.sortParameter.sortType!=0){
  327. gridReflectionObj.exhibitDatas = gridReflectionObj.exhibitDatas.sort(function(record1, record2){
  328. var value1 = record1[gridReflectionObj.sortParameter.columnId];
  329. var value2 = record2[gridReflectionObj.sortParameter.columnId];
  330. //数值比较
  331. if(!isNaN(value1)&&!isNaN(value2)){
  332. if(gridReflectionObj.sortParameter.sortType==1){
  333. return value1-value2;
  334. }
  335. if(gridReflectionObj.sortParameter.sortType==2){
  336. return value2-value1;
  337. }
  338. }
  339. //日期比较
  340. if(value1 instanceof Date&&value2 instanceof Date){
  341. if(gridReflectionObj.sortParameter.sortType==1){
  342. return value1.getTime()-value2.getTime();
  343. }
  344. if(gridReflectionObj.sortParameter.sortType==2){
  345. return value2.getTime()-value1.getTime();
  346. }
  347. }
  348. //普通比较
  349. if(value1!=null&&gridReflectionObj.sortParameter.sortType==1){
  350. return value1.localeCompare(value2);
  351. }
  352. if(value2!=null&&gridReflectionObj.sortParameter.sortType==2){
  353. return value2.localeCompare(value1);
  354. }
  355. return 0;
  356. });
  357. }else{
  358. gridReflectionObj.exhibitDatas = gridReflectionObj.sortOriginalDatas.slice(0, gridReflectionObj.sortOriginalDatas.length);
  359. }
  360. }
  361. for(var i=0; i<gridReflectionObj.exhibitDatas.length; i++){
  362. gridContent += ' <tr class="dlshouwen-grid-row" dataNo="'+i+'">';
  363. if(gridReflectionObj.option.extraWidth!=null){
  364. gridContent += ' <td class="extra-column extra-column-event '+extraColumnClass+'" width="'+gridReflectionObj.option.extraWidth+'" dataNo="'+i+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].extraColumn.open+'</td>';
  365. }else{
  366. gridContent += ' <td class="extra-column extra-column-event '+extraColumnClass+'" dataNo="'+i+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].extraColumn.open+'</td>';
  367. }
  368. if(gridReflectionObj.option.check){
  369. if(gridReflectionObj.option.checkWidth!=null){
  370. gridContent += ' <td class="check-column text-center" width="'+gridReflectionObj.option.checkWidth+'"><input type="checkbox" dataNo="'+i+'" id="dlshouwen_grid_'+gridReflectionObj.option.id+'_check_'+i+'" class="dlshouwen-grid-check" value="'+i+'"></td>';
  371. }else{
  372. gridContent += ' <td class="check-column text-center"><input type="checkbox" dataNo="'+i+'" id="dlshouwen_grid_'+gridReflectionObj.option.id+'_check_'+i+'" class="dlshouwen-grid-check" value="'+i+'"></td>';
  373. }
  374. }
  375. var columns = gridReflectionObj.option.columns;
  376. for(var j=0; j<columns.length; j++){
  377. if(columns[j].width!=null){
  378. gridContent += ' <td width="'+columns[j].width+'" dataNo="'+i+'" columnNo="'+j+'" class="dlshouwen-grid-cell '+gridReflectionObj.getColumnClassForHide(columns[j])+' '+columns[j].columnClass+'" style="'+columns[j].columnStyle+'">';
  379. }else{
  380. gridContent += ' <td dataNo="'+i+'" columnNo="'+j+'" class="dlshouwen-grid-cell '+gridReflectionObj.getColumnClassForHide(columns[j])+' '+columns[j].columnClass+'" style="'+columns[j].columnStyle+'">';
  381. }
  382. var value = gridReflectionObj.exhibitDatas[i][columns[j].id];
  383. value = value==null?'':value;
  384. if(columns[j].resolution){
  385. gridContent += columns[j].resolution(value, gridReflectionObj.exhibitDatas[i], columns[j], gridReflectionObj, i, j);
  386. }else{
  387. gridContent += gridReflectionObj.formatContent(columns[j], value);
  388. }
  389. gridContent += ' </td>';
  390. }
  391. gridContent += ' </tr>';
  392. gridContent += ' <tr id="dlshouwen_grid_'+gridReflectionObj.option.id+'_extra_columns_'+i+'" class="dlshouwen-grid-extra-columns hidden">';
  393. gridContent += ' <td dataNo="'+i+'" colspan="'+(columns.length+1+(gridReflectionObj.option.check?1:0))+'">';
  394. for(var j=0; j<columns.length; j++){
  395. if(columns[j].extra==false){
  396. continue;
  397. }
  398. gridContent += ' <p dataNo="'+i+'" columnNo="'+j+'" class="dlshouwen-grid-cell '+gridReflectionObj.getExtraColumnClassForHide(columns[j])+'">';
  399. gridContent += ' '+columns[j].title+' : ';
  400. var value = gridReflectionObj.exhibitDatas[i][columns[j].id];
  401. value = value==null?'':value;
  402. if(columns[j].resolution){
  403. gridContent += columns[j].resolution(value, gridReflectionObj.exhibitDatas[i], columns[j], gridReflectionObj, i, j);
  404. }else{
  405. gridContent += gridReflectionObj.formatContent(columns[j], value);
  406. }
  407. gridContent += ' </p>';
  408. }
  409. gridContent += ' </td>';
  410. gridContent += ' </tr>';
  411. }
  412. }
  413. gridContent += ' </tbody>';
  414. gridContent += '</table>';
  415. $('#dlshouwen_grid_'+gridReflectionObj.option.id).remove();
  416. $('#'+gridReflectionObj.option.gridContainer).append(gridContent);
  417. //备份gridId
  418. var gridId = gridReflectionObj.option.id;
  419. //绑定单元格单击方法
  420. if(gridReflectionObj.option.onCellClick){
  421. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').click(function(e){
  422. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellClick, this, e);
  423. });
  424. }
  425. //绑定单元格双击方法
  426. if(gridReflectionObj.option.onCellDblClick){
  427. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').dblclick(function(e){
  428. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellDblClick, this, e);
  429. });
  430. }
  431. //绑定单元格鼠标滑过方法
  432. if(gridReflectionObj.option.onCellMouseOver){
  433. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseover(function(e){
  434. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellMouseOver, this, e);
  435. });
  436. }
  437. //绑定单元格鼠标移动方法
  438. if(gridReflectionObj.option.onCellMouseMove){
  439. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mousemove(function(e){
  440. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellMouseMove, this, e);
  441. });
  442. }
  443. //绑定单元格鼠标滑出方法
  444. if(gridReflectionObj.option.onCellMouseOut){
  445. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseout(function(e){
  446. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellMouseOut, this, e);
  447. });
  448. }
  449. //绑定单元格鼠标按下方法
  450. if(gridReflectionObj.option.onCellMouseDown){
  451. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mousedown(function(e){
  452. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellMouseDown, this, e);
  453. });
  454. }
  455. //绑定单元格鼠标释放方法
  456. if(gridReflectionObj.option.onCellMouseUp){
  457. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseup(function(e){
  458. gridReflectionObj.bindCellEvent(gridReflectionObj.option.onCellMouseUp, this, e);
  459. });
  460. }
  461. //绑定行单击方法
  462. if(gridReflectionObj.option.onRowClick){
  463. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').click(function(e){
  464. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowClick, this, e);
  465. });
  466. }
  467. //绑定行双击方法
  468. if(gridReflectionObj.option.onRowDblClick){
  469. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').dblclick(function(e){
  470. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowDblClick, this, e);
  471. });
  472. }
  473. //绑定行鼠标滑过方法
  474. if(gridReflectionObj.option.onRowMouseOver){
  475. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseover(function(e){
  476. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowMouseOver, this, e);
  477. });
  478. }
  479. //绑定行鼠标移动方法
  480. if(gridReflectionObj.option.onRowMouseMove){
  481. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mousemove(function(e){
  482. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowMouseMove, this, e);
  483. });
  484. }
  485. //绑定行鼠标滑出方法
  486. if(gridReflectionObj.option.onRowMouseOut){
  487. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseout(function(e){
  488. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowMouseOut, this, e);
  489. });
  490. }
  491. //绑定行鼠标按下方法
  492. if(gridReflectionObj.option.onRowMouseDown){
  493. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mousedown(function(e){
  494. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowMouseDown, this, e);
  495. });
  496. }
  497. //绑定行鼠标释放方法
  498. if(gridReflectionObj.option.onRowMouseUp){
  499. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-cell').mouseup(function(e){
  500. gridReflectionObj.bindRowEvent(gridReflectionObj.option.onRowMouseUp, this, e);
  501. });
  502. }
  503. //绑定表头单击方法
  504. if(gridReflectionObj.option.onHeaderClick){
  505. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').click(function(e){
  506. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderClick, this, e);
  507. });
  508. }
  509. /**
  510. * 修复:表头双加方法由于表头的单击排序需要重新加载,所以双击事件无法响应,取消该事件
  511. */
  512. /**
  513. //绑定表头双击方法
  514. if(gridReflectionObj.option.onHeaderDblClick){
  515. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').dblclick(function(e){
  516. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderDblClick, this, e);
  517. });
  518. }
  519. */
  520. //绑定表头鼠标滑过方法
  521. if(gridReflectionObj.option.onHeaderMouseOver){
  522. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').mouseover(function(e){
  523. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderMouseOver, this, e);
  524. });
  525. }
  526. //绑定表头鼠标移动方法
  527. if(gridReflectionObj.option.onHeaderMouseMove){
  528. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').mousemove(function(e){
  529. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderMouseMove, this, e);
  530. });
  531. }
  532. //绑定表头鼠标滑出方法
  533. if(gridReflectionObj.option.onHeaderMouseOut){
  534. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').mouseout(function(e){
  535. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderMouseOut, this, e);
  536. });
  537. }
  538. //绑定表头鼠标按下方法
  539. if(gridReflectionObj.option.onHeaderMouseDown){
  540. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').mousedown(function(e){
  541. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderMouseDown, this, e);
  542. });
  543. }
  544. //绑定表头鼠标释放方法
  545. if(gridReflectionObj.option.onHeaderMouseUp){
  546. $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-header').mouseup(function(e){
  547. gridReflectionObj.bindHeaderEvent(gridReflectionObj.option.onHeaderMouseUp, this, e);
  548. });
  549. }
  550. //绑定表格单击方法
  551. if(gridReflectionObj.option.onGridClick){
  552. $('#dlshouwen_grid_'+gridId).click(function(e){
  553. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridClick, e);
  554. });
  555. }
  556. //绑定表格双击方法
  557. if(gridReflectionObj.option.onGridDblClick){
  558. $('#dlshouwen_grid_'+gridId).dblclick(function(e){
  559. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridDblClick, e);
  560. });
  561. }
  562. //绑定表格鼠标滑过方法
  563. if(gridReflectionObj.option.onGridMouseOver){
  564. $('#dlshouwen_grid_'+gridId).mouseover(function(e){
  565. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridMouseOver, e);
  566. });
  567. }
  568. //绑定表格鼠标移动方法
  569. if(gridReflectionObj.option.onGridMouseMove){
  570. $('#dlshouwen_grid_'+gridId).mousemove(function(e){
  571. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridMouseMove, e);
  572. });
  573. }
  574. //绑定表格鼠标滑出方法
  575. if(gridReflectionObj.option.onGridMouseOut){
  576. $('#dlshouwen_grid_'+gridId).mouseout(function(e){
  577. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridMouseOut, e);
  578. });
  579. }
  580. //绑定表格鼠标按下方法
  581. if(gridReflectionObj.option.onGridMouseDown){
  582. $('#dlshouwen_grid_'+gridId).mousedown(function(e){
  583. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridMouseDown, e);
  584. });
  585. }
  586. //绑定表格鼠标释放方法
  587. if(gridReflectionObj.option.onGridMouseUp){
  588. $('#dlshouwen_grid_'+gridId).mouseup(function(e){
  589. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridMouseUp, e);
  590. });
  591. }
  592. //绑定表格加载完成方法
  593. if(gridReflectionObj.option.onGridComplete){
  594. gridReflectionObj.bindGridEvent(gridReflectionObj.option.onGridComplete);
  595. }
  596. //绑定显隐方法
  597. $('#dlshouwen_grid_'+gridId+' .extra-column-event').click(function(e){
  598. var dataNo = $(this).attr('dataNo');
  599. if($('#dlshouwen_grid_'+gridId+'_extra_columns_'+dataNo).hasClass('hidden')){
  600. $('#dlshouwen_grid_'+gridId+'_extra_columns_'+dataNo).removeClass('hidden');
  601. $(this).html($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].extraColumn.close);
  602. //绑定扩展行展开方法
  603. if(gridReflectionObj.option.onExtraOpen){
  604. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  605. gridReflectionObj.bindExtraEvent(gridReflectionObj.option.onExtraOpen, row, e);
  606. }
  607. }else{
  608. $('#dlshouwen_grid_'+gridId+'_extra_columns_'+dataNo).addClass('hidden');
  609. $(this).html($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].extraColumn.open);
  610. //绑定扩展行关闭方法
  611. if(gridReflectionObj.option.onExtraClose){
  612. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  613. gridReflectionObj.bindExtraEvent(gridReflectionObj.option.onExtraClose, row, e);
  614. }
  615. }
  616. });
  617. //绑定排序方法
  618. $('#dlshouwen_grid_'+gridId+' .can-sort').click(function(){
  619. //获取列编号
  620. var columnId = $(this).attr('columnId');
  621. //根据当前的排序参数设置显示的排序图标
  622. if(gridReflectionObj.sortParameter==null){
  623. gridReflectionObj.sortParameter = new Object();
  624. }
  625. if(!gridReflectionObj.sortParameter.columnId||gridReflectionObj.sortParameter.columnId!=columnId){
  626. gridReflectionObj.sortParameter.columnId = columnId;
  627. gridReflectionObj.sortParameter.sortType = 1;
  628. }else{
  629. var sortType = gridReflectionObj.sortParameter.sortType;
  630. if(sortType==0){
  631. gridReflectionObj.sortParameter.sortType = 1;
  632. }else if(sortType==1){
  633. gridReflectionObj.sortParameter.sortType = 2;
  634. }else if(sortType==2){
  635. gridReflectionObj.sortParameter.sortType = 0;
  636. }
  637. }
  638. //重新加载数据
  639. gridReflectionObj.reload();
  640. });
  641. //绑定复选方法
  642. if(gridReflectionObj.option.onCheck){
  643. $('input[id*=dlshouwen_grid_'+gridId+'_check_]').click(function(e){
  644. gridReflectionObj.bindCheckEvent(gridReflectionObj.option.onCheck, this, e);
  645. });
  646. }
  647. //绑定复选方法(全选反选)
  648. if(gridReflectionObj.option.check){
  649. $('#dlshouwen_grid_'+gridId+'_check').click(function(e){
  650. $('input[id*=dlshouwen_grid_'+gridId+'_check_]').prop('checked', this.checked);
  651. if(gridReflectionObj.option.onCheck){
  652. $('input[id*=dlshouwen_grid_'+gridId+'_check_]').each(function(){
  653. gridReflectionObj.bindCheckEvent(gridReflectionObj.option.onCheck, this, e);
  654. });
  655. }
  656. });
  657. }
  658. },
  659. //绑定单元格事件
  660. bindCellEvent : function(func, cellObject, e){
  661. //定义表格对象映像
  662. var gridReflectionObj = this;
  663. //备份gridId
  664. var gridId = gridReflectionObj.option.id;
  665. //获取数据号、列号
  666. var dataNo = $(cellObject).attr('dataNo');
  667. var columnNo = $(cellObject).attr('columnNo');
  668. //获取当前Column对象
  669. var column = gridReflectionObj.option.columns[columnNo];
  670. //获取当前记录
  671. var record = gridReflectionObj.exhibitDatas[dataNo];
  672. //获取当前值(处理后的)
  673. var value;
  674. if(column.resolution){
  675. value = column.resolution(record[column.id], record, column, gridReflectionObj, dataNo, columnNo);
  676. }else{
  677. value = gridReflectionObj.formatContent(column, record[column.id]);
  678. }
  679. //获取当前单元格jQuery对象
  680. var cell = $(cellObject);
  681. //获取当前行jQuery对象
  682. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  683. //获取扩展行jQuery对象
  684. var extraCell = $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-extra-columns>td[dataNo="'+dataNo+'"]');
  685. func(value, record, column, gridReflectionObj, dataNo, columnNo, cell, row, extraCell, e);
  686. },
  687. //绑定行事件
  688. bindRowEvent : function(func, cellObject, e){
  689. //定义表格对象映像
  690. var gridReflectionObj = this;
  691. //备份gridId
  692. var gridId = gridReflectionObj.option.id;
  693. //获取数据号、列号
  694. var dataNo = $(cellObject).attr('dataNo');
  695. var columnNo = $(cellObject).attr('columnNo');
  696. //获取当前Column对象
  697. var column = gridReflectionObj.option.columns[columnNo];
  698. //获取当前记录
  699. var record = gridReflectionObj.exhibitDatas[dataNo];
  700. //获取当前值(处理后的)
  701. var value;
  702. if(column.resolution){
  703. value = column.resolution(record[column.id], record, column, gridReflectionObj, dataNo, columnNo);
  704. }else{
  705. value = gridReflectionObj.formatContent(column, record[column.id]);
  706. }
  707. //获取当前单元格jQuery对象
  708. var cell = $(cellObject);
  709. //获取当前行jQuery对象
  710. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  711. //获取扩展行jQuery对象
  712. var extraCell = $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-extra-columns>td[dataNo="'+dataNo+'"]');
  713. func(value, record, column, gridReflectionObj, dataNo, columnNo, cell, row, extraCell, e);
  714. },
  715. //绑定表头事件
  716. bindHeaderEvent : function(func, headerObject, e){
  717. //定义表格对象映像
  718. var gridReflectionObj = this;
  719. //备份gridId
  720. var gridId = gridReflectionObj.option.id;
  721. //获取列号
  722. var columnNo = $(headerObject).attr('columnNo');
  723. //获取当前Column对象
  724. var column = gridReflectionObj.option.columns[columnNo];
  725. //获取当前表头名称
  726. var title = column.title;
  727. //获取当前单元格jQuery对象
  728. var header = $(headerObject);
  729. //获取当前行jQuery对象
  730. var headerRow = $('#dlshouwen_grid_'+gridId+' tr.dlshouwen-grid-headers');
  731. func(title, column, gridReflectionObj, columnNo, header, headerRow, e);
  732. },
  733. //绑定表头事件
  734. bindGridEvent : function(func, e){
  735. //定义表格对象映像
  736. var gridReflectionObj = this;
  737. func(gridReflectionObj, e);
  738. },
  739. //绑定扩展行事件
  740. bindExtraEvent : function(func, rowObject, e){
  741. //定义表格对象映像
  742. var gridReflectionObj = this;
  743. //备份gridId
  744. var gridId = gridReflectionObj.option.id;
  745. //获取数据号
  746. var dataNo = $(rowObject).attr('dataNo');
  747. //获取当前记录
  748. var record = gridReflectionObj.exhibitDatas[dataNo];
  749. //获取当前行jQuery对象
  750. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  751. //获取扩展行jQuery对象
  752. var extraCell = $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-extra-columns>td[dataNo="'+dataNo+'"]');
  753. func(record, gridReflectionObj, dataNo, row, extraCell, e);
  754. },
  755. //绑定复选事件
  756. bindCheckEvent : function(func, checkInput, e){
  757. //定义表格对象映像
  758. var gridReflectionObj = this;
  759. //备份gridId
  760. var gridId = gridReflectionObj.option.id;
  761. //获取数据号、列号
  762. var dataNo = $(checkInput).attr('dataNo');
  763. //获取当前记录
  764. var record = gridReflectionObj.exhibitDatas[dataNo];
  765. //获取当前行jQuery对象
  766. var row = $('#dlshouwen_grid_'+gridId+' tr[dataNo="'+dataNo+'"]');
  767. //获取扩展行jQuery对象
  768. var extraCell = $('#dlshouwen_grid_'+gridId+' .dlshouwen-grid-extra-columns>td[dataNo="'+dataNo+'"]');
  769. func(checkInput.checked, record, gridReflectionObj, dataNo, row, extraCell, e);
  770. },
  771. //构建分页内容
  772. constructGridPageBar : function(){
  773. //定义表格对象映像
  774. var gridReflectionObj = this;
  775. //清空工具条
  776. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-pager').html('');
  777. //获取当前页、每页条数、总页数
  778. var nowPage = gridReflectionObj.pager.nowPage;
  779. var pageCount = gridReflectionObj.pager.pageCount;
  780. //设置工具条初始内容
  781. var gridStatus = document.createElement('span');
  782. if(gridReflectionObj.exhibitDatas==null||gridReflectionObj.exhibitDatas.length<=0){
  783. gridStatus.className = 'dlshouwen-grid-pager-status text-primary';
  784. gridStatus.innerHTML = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nothing;
  785. }else{
  786. gridStatus.className = 'dlshouwen-grid-pager-status text-primary';
  787. var info = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.info;
  788. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{startRecord}', gridReflectionObj.pager.startRecord);
  789. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{nowPage}', gridReflectionObj.pager.nowPage);
  790. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{recordCount}', gridReflectionObj.pager.recordCount);
  791. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{pageCount}', gridReflectionObj.pager.pageCount);
  792. //设置每页数量的DOM对象
  793. var pageSizeElement = '';
  794. var pageSize = gridReflectionObj.pager.pageSize;
  795. //数组类型
  796. if(typeof gridReflectionObj.option.pageSizeLimit == 'object'){
  797. pageSizeElement += '<select id="dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id+'" name="dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id+'" class="form-control change-page-size">';
  798. //整合可用页码
  799. var isHasNowPageSize = false;
  800. var pageSizeLimit = new Array();
  801. for(var i=0; i<gridReflectionObj.option.pageSizeLimit.length; i++){
  802. var loopPageSize = gridReflectionObj.option.pageSizeLimit[i];
  803. pageSizeLimit.push(parseFloat(loopPageSize));
  804. if(pageSize==loopPageSize){
  805. isHasNowPageSize = true;
  806. }
  807. }
  808. if(!isHasNowPageSize){
  809. pageSizeLimit.push(pageSize);
  810. }
  811. //对当前页码内容排序
  812. pageSizeLimit.sort(function(s1, s2){
  813. return s1>s2;
  814. });
  815. //写入代码
  816. for(var i=0; i<pageSizeLimit.length; i++){
  817. var loopPageSize = pageSizeLimit[i];
  818. pageSizeElement += ' <option '+(pageSize==loopPageSize?'selected="selected"':'')+' value="'+loopPageSize+'">'+loopPageSize+'</option>';
  819. }
  820. pageSizeElement += '</select>';
  821. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{pageSize}', pageSizeElement);
  822. }else if(typeof gridReflectionObj.option.pageSizeLimit == 'number'){
  823. //如果是数值类型则为文本框
  824. pageSizeElement += '<input id="dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id+'" name="dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id+'" type="text" class="form-control change-page-size" value="'+gridReflectionObj.pager.pageSize+'" />';
  825. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{pageSize}', pageSizeElement);
  826. }else{
  827. info = $.fn.dlshouwen.grid.tools.replaceAll(info, '{pageSize}', pageSize);
  828. }
  829. gridStatus.innerHTML = info;
  830. }
  831. var operations = document.createElement('ul');
  832. operations.id = gridReflectionObj.option.id+'_dlshouwenGridOperations';
  833. operations.className = 'pagination pagination-sm dlshouwen-grid-pager-button';
  834. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-pager').append(operations);
  835. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-pager').append(gridStatus);
  836. //绑定修改每页显示条数的事件
  837. $('#dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id).change(function(){
  838. var changePageSize = parseFloat(this.value);
  839. if(isNaN(changePageSize)){
  840. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.errors.notANumber, 'warning', 3000);
  841. $('#dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id).val(gridReflectionObj.pager.pageSize);
  842. return;
  843. }
  844. if(typeof gridReflectionObj.option.pageSizeLimit == 'number'){
  845. if(changePageSize>gridReflectionObj.option.pageSizeLimit){
  846. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.errors.maxPageSize, '{pageSizeLimit}', gridReflectionObj.option.pageSizeLimit), 'warning', 3000);
  847. $('#dlshouwen_grid_change_page_size_'+gridReflectionObj.option.id).val(gridReflectionObj.pager.pageSize);
  848. return;
  849. }
  850. }
  851. gridReflectionObj.pager.pageSize = changePageSize;
  852. gridReflectionObj.reload(true);
  853. });
  854. //处理分页按钮
  855. if(gridReflectionObj.exhibitDatas!=null&&gridReflectionObj.exhibitDatas.length>0){
  856. //第一页按钮
  857. var goFirstBtn = document.createElement('li');
  858. goFirstBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_first';
  859. goFirstBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.firstPageTitle;
  860. if(nowPage<=1){
  861. goFirstBtn.className = 'disabled';
  862. goFirstBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.alreadyFirstPage;
  863. }
  864. goFirstBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.firstPage+'</a>';
  865. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goFirstBtn);
  866. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_first').click(function(){
  867. gridReflectionObj.loadByPage('first');
  868. });
  869. //上一页按钮
  870. var goPrevBtn = document.createElement('li');
  871. goPrevBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_prev';
  872. goPrevBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.prevPageTitle;
  873. if(nowPage<=1){
  874. goPrevBtn.className = 'disabled';
  875. goPrevBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.alreadyFirstPage;
  876. }
  877. goPrevBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.prevPage+'</a>';
  878. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goPrevBtn);
  879. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_prev').click(function(){
  880. gridReflectionObj.loadByPage('prev');
  881. });
  882. //页面列表
  883. if(pageCount<=5){
  884. for(var i=1; i<=pageCount; i++){
  885. var goPageBtn = document.createElement('li');
  886. goPageBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_'+i;
  887. goPageBtn.setAttribute('page', i);
  888. goPageBtn.title = $.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nowPageTitle, '{nowPage}', i);
  889. goPageBtn.className = i==nowPage?'active':'';
  890. goPageBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nowPage, '{nowPage}', i)+'</a>';
  891. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goPageBtn);
  892. if(i!=nowPage){
  893. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_'+i).click(function(){
  894. gridReflectionObj.goPage($(this).attr('page'));
  895. });
  896. }
  897. }
  898. }else{
  899. //获取开始、结束号
  900. var before = 2;
  901. var after = 2;
  902. var start = (nowPage-before)<1?1:(nowPage-before);
  903. var end = (nowPage+after)>pageCount?pageCount:(nowPage+after);
  904. if((end-start+1)<(before+after+1)){
  905. if(start==1){
  906. end = end+((before+after+1)-(end-start+1));
  907. end = end>pageCount?pageCount:end;
  908. }
  909. if(end==pageCount){
  910. start = start-((before+after+1)-(end-start+1));
  911. start = start<1?1:start;
  912. }
  913. }
  914. for(var i=start; i<=end; i++){
  915. var goPageBtn = document.createElement('li');
  916. goPageBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_'+i;
  917. goPageBtn.setAttribute('page', i);
  918. goPageBtn.title = $.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nowPageTitle, '{nowPage}', i);
  919. goPageBtn.className = i==nowPage?'active':'';
  920. goPageBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nowPage, '{nowPage}', i)+'</a>';
  921. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goPageBtn);
  922. if(i!=nowPage){
  923. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_'+i).click(function(){
  924. gridReflectionObj.goPage($(this).attr('page'));
  925. });
  926. }
  927. }
  928. }
  929. var showPageText = document.createElement('li');
  930. showPageText.className = 'active';
  931. showPageText.innerHTML = '<a href="javascript:void(0);">'+gridReflectionObj.pager.nowPage+'</a>';
  932. //下一页按钮
  933. var goNextBtn = document.createElement('li');
  934. goNextBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_next';
  935. goNextBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nextPageTitle;
  936. if(nowPage>=pageCount){
  937. goNextBtn.className = 'disabled';
  938. goNextBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.alreadyLastPage;
  939. }
  940. goNextBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.nextPage+'</a>';
  941. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goNextBtn);
  942. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_next').click(function(){
  943. gridReflectionObj.loadByPage('next');
  944. });
  945. //最后一页按钮
  946. var goLastBtn = document.createElement('li');
  947. goLastBtn.id = 'dlshouwen_grid_'+gridReflectionObj.option.id+'_page_last';
  948. goLastBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.lastPageTitle;
  949. if(nowPage>=pageCount){
  950. goLastBtn.className = 'disabled';
  951. goLastBtn.title = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.alreadyLastPage;
  952. }
  953. goLastBtn.innerHTML = '<a href="javascript:void(0);">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].pageInfo.lastPage+'</a>';
  954. $('#'+gridReflectionObj.option.id+'_dlshouwenGridOperations').append(goLastBtn);
  955. $('#dlshouwen_grid_'+gridReflectionObj.option.id+'_page_last').click(function(){
  956. gridReflectionObj.loadByPage('last');
  957. });
  958. }
  959. //清除浮动
  960. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-pager').append('<div class="clearfix"></div>');
  961. $('#'+gridReflectionObj.option.toolbarContainer).append('<div class="clearfix"></div>');
  962. },
  963. //工具条基础内容
  964. toolbar : function(type){
  965. //映射表格对象
  966. var gridReflectionObj = this;
  967. //定义工具条内容
  968. var toolbars = {
  969. refresh : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.refreshTitle+'"><a href="javascript:void(0);" id="refreshGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.refresh+'</a></li>',
  970. fastQuery : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.fastQueryTitle+'"><a href="javascript:void(0);" id="fastQuery_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.fastQuery+'</a></li>',
  971. advanceQuery : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.advanceQueryTitle+'"><a href="javascript:void(0);" id="advanceQuery_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.advanceQuery+'</a></li>',
  972. exportExcel : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportExcelTitle+'"><a href="javascript:void(0);" id="exportExcelGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportExcel+'</a></li>',
  973. exportCsv : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportCsvTitle+'"><a href="javascript:void(0);" id="exportCsvGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportCsv+'</a></li>',
  974. exportPdf : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportPdfTitle+'"><a href="javascript:void(0);" id="exportPdfGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportPdf+'</a></li>',
  975. exportTxt : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportTxtTitle+'"><a href="javascript:void(0);" id="exportTxtGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.exportTxt+'</a></li>',
  976. print : '<li title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.printTitle+'"><a href="javascript:void(0);" id="printGrid_replaceId">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].toolbar.print+'</a></li>'
  977. };
  978. return toolbars[type];
  979. },
  980. //构建工具条
  981. constructGridToolBar : function(){
  982. //映射表格对象
  983. var gridReflectionObj = this;
  984. //清空工具条
  985. $('#'+gridReflectionObj.option.toolbarContainer).html('<span class="pagination pagination-sm dlshouwen-grid-tools"></span><span class="dlshouwen-grid-pager"></span>');
  986. //如果为空则不做任何操作
  987. if(gridReflectionObj.option.tools==undefined||gridReflectionObj.option.tools==null||gridReflectionObj.option.tools==''){
  988. return;
  989. }
  990. //遍历工具条定义列表
  991. var tools = gridReflectionObj.option.tools;
  992. for(var i=0; i<tools.split('|').length; i++){
  993. var tool = tools.split('|')[i];
  994. //处理刷新
  995. if(tool=='refresh'){
  996. var content = $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('refresh'), 'replaceId', gridReflectionObj.option.id);
  997. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-tools').append(content);
  998. //绑定方法
  999. $('#refreshGrid_'+gridReflectionObj.option.id).click(function(){
  1000. gridReflectionObj.reload(true);
  1001. });
  1002. }
  1003. //处理快速查询
  1004. if(tool=='fastQuery'){
  1005. var content = $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('fastQuery'), 'replaceId', gridReflectionObj.option.id);
  1006. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-tools').append(content);
  1007. //绑定方法
  1008. $('#fastQuery_'+gridReflectionObj.option.id).click(function(){
  1009. gridReflectionObj.fastQuery();
  1010. });
  1011. }
  1012. //处理高级查询
  1013. if(tool=='advanceQuery'){
  1014. var content = $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('advanceQuery'), 'replaceId', gridReflectionObj.option.id);
  1015. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-tools').append(content);
  1016. //绑定方法
  1017. $('#advanceQuery_'+gridReflectionObj.option.id).click(function(){
  1018. gridReflectionObj.advanceQuery();
  1019. });
  1020. }
  1021. //处理导出
  1022. if(tool.indexOf('export')!=-1){
  1023. tool = $.fn.dlshouwen.grid.tools.replaceAll(tool, 'export', '');
  1024. tool = $.fn.dlshouwen.grid.tools.replaceAll(tool, '\\[', '');
  1025. tool = $.fn.dlshouwen.grid.tools.replaceAll(tool, '\\]', '');
  1026. var content = '';
  1027. for(var j=0; j<tool.split(',').length; j++){
  1028. var exportTool = tool.split(',')[j];
  1029. if(exportTool=='excel'){
  1030. content += $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('exportExcel'), 'replaceId', gridReflectionObj.option.id);
  1031. }
  1032. if(exportTool=='csv'){
  1033. content += $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('exportCsv'), 'replaceId', gridReflectionObj.option.id);
  1034. }
  1035. if(exportTool=='pdf'){
  1036. content += $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('exportPdf'), 'replaceId', gridReflectionObj.option.id);
  1037. }
  1038. if(exportTool=='txt'){
  1039. content += $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('exportTxt'), 'replaceId', gridReflectionObj.option.id);
  1040. }
  1041. }
  1042. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-tools').append(content);
  1043. //绑定方法
  1044. for(var j=0; j<tool.split(',').length; j++){
  1045. var exportTool = tool.split(',')[j];
  1046. if(exportTool=='excel'){
  1047. $('#exportExcelGrid_'+gridReflectionObj.option.id).click(function(){
  1048. gridReflectionObj.exportFile('excel');
  1049. });
  1050. }
  1051. if(exportTool=='csv'){
  1052. $('#exportCsvGrid_'+gridReflectionObj.option.id).click(function(){
  1053. gridReflectionObj.exportFile('csv');
  1054. });
  1055. }
  1056. if(exportTool=='pdf'){
  1057. $('#exportPdfGrid_'+gridReflectionObj.option.id).click(function(){
  1058. gridReflectionObj.exportFile('pdf');
  1059. });
  1060. }
  1061. if(exportTool=='txt'){
  1062. $('#exportTxtGrid_'+gridReflectionObj.option.id).click(function(){
  1063. gridReflectionObj.exportFile('txt');
  1064. });
  1065. }
  1066. }
  1067. }
  1068. //处理打印
  1069. if(tool=='print'){
  1070. var content = $.fn.dlshouwen.grid.tools.replaceAll(gridReflectionObj.toolbar('print'), 'replaceId', gridReflectionObj.option.id);
  1071. $('#'+gridReflectionObj.option.toolbarContainer+' .dlshouwen-grid-tools').append(content);
  1072. //绑定方法
  1073. $('#printGrid_'+gridReflectionObj.option.id).click(function(){
  1074. gridReflectionObj.print();
  1075. });
  1076. }
  1077. }
  1078. },
  1079. /**
  1080. * 构件表格内部使用方法
  1081. */
  1082. //创建滚动条
  1083. processBarThread : null,
  1084. processWidth : null,
  1085. showProcessBar : function(){
  1086. var gridReflectionObj = this;
  1087. clearInterval(gridReflectionObj.processBarThread);
  1088. $('#dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id).remove();
  1089. $('#dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id).remove();
  1090. gridReflectionObj.processWidth = 0;
  1091. gridReflectionObj.processBarThread = null;
  1092. var content = '';
  1093. content += '<div class="dlshouwen-grid-process-bar-top bg-primary" id="dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id+'"></div>';
  1094. content += '<div class="dlshouwen-grid-process-bar-bottom bg-primary" id="dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id+'"></div>';
  1095. $('#'+gridReflectionObj.option.gridContainer).append(content);
  1096. gridReflectionObj.processWidth += Math.random()*(100-gridReflectionObj.processWidth)*0.1;
  1097. $('#dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id).animate({width:gridReflectionObj.processWidth+'%'}, 200);
  1098. $('#dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id).animate({width:gridReflectionObj.processWidth+'%'}, 200);
  1099. gridReflectionObj.processBarThread = setInterval(function(){
  1100. gridReflectionObj.processWidth += Math.random()*(100-gridReflectionObj.processWidth)*0.1;
  1101. $('#dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id).animate({width:gridReflectionObj.processWidth+'%'}, 200);
  1102. $('#dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id).animate({width:gridReflectionObj.processWidth+'%'}, 200);
  1103. }, 200);
  1104. },
  1105. hideProcessBar : function(callback){
  1106. var gridReflectionObj = this;
  1107. clearInterval(gridReflectionObj.processBarThread);
  1108. var gridReflectionObj = this;
  1109. $('#dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id).animate({width:'100%'}, 100, function(){
  1110. $('#dlshouwen_grid_process_bar_top_'+gridReflectionObj.option.id).remove();
  1111. callback();
  1112. });
  1113. $('#dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id).animate({width:'100%'}, 100, function(){
  1114. $('#dlshouwen_grid_process_bar_bottom_'+gridReflectionObj.option.id).remove();
  1115. });
  1116. },
  1117. //格式化内容
  1118. formatContent:function(column, value){
  1119. try{
  1120. //如果是codeTable
  1121. if(column.codeTable){
  1122. var codeTableValue = column.codeTable[value];
  1123. return codeTableValue?codeTableValue:value;
  1124. }
  1125. //如果是number或date,则需要考虑格式化内容
  1126. if(column.type=='number'&&column.format){
  1127. return $.fn.dlshouwen.grid.tools.numberFormat(value, column.format);
  1128. }
  1129. if(column.type=='date'&&column.format){
  1130. if(column.otype){
  1131. if(column.otype=='time_stamp_s'){
  1132. value = new Date(parseFloat(value)*1000);
  1133. return $.fn.dlshouwen.grid.tools.dateFormat(value, column.format);
  1134. }else if(column.otype=='time_stamp_ms'){
  1135. value = new Date(parseFloat(value));
  1136. return $.fn.dlshouwen.grid.tools.dateFormat(value, column.format);
  1137. }else if(column.otype=='string'){
  1138. if(column.oformat){
  1139. value = $.fn.dlshouwen.grid.tools.toDate(value, column.oformat);
  1140. return $.fn.dlshouwen.grid.tools.dateFormat(value, column.format);
  1141. }
  1142. }
  1143. }else{
  1144. return $.fn.dlshouwen.grid.tools.dateFormat(value, column.format);
  1145. }
  1146. }
  1147. }catch(e){}
  1148. return value;
  1149. },
  1150. //判断列首的下拉按钮列是否显示
  1151. getExtraColumnClass : function(){
  1152. //定义表格对象映像
  1153. var gridReflectionObj = this;
  1154. var extraColumnClass = '';
  1155. var temp = [true, true, true, true];
  1156. var columns = gridReflectionObj.option.columns;
  1157. for(var i=0; i<columns.length; i++){
  1158. var column = columns[i];
  1159. if(column.hide!=true&&column.hideType!=undefined){
  1160. var hideTypeArr = column.hideType.split('|');
  1161. for(var j=0; j<hideTypeArr.length; j++){
  1162. var type = hideTypeArr[j];
  1163. if(type=='lg') temp[0]='visible-lg';
  1164. if(type=='md') temp[1]='visible-md';
  1165. if(type=='sm') temp[2]='visible-sm';
  1166. if(type=='xs') temp[3]='visible-xs';
  1167. }
  1168. }
  1169. }
  1170. for(var i=0; i<temp.length; i++){
  1171. if(temp[i]!=true) extraColumnClass += temp[i] + ' ';
  1172. }
  1173. if(extraColumnClass=='')
  1174. extraColumnClass = 'hidden ';
  1175. return extraColumnClass;
  1176. },
  1177. //获取显隐的列样式表
  1178. getColumnClassForHide : function(column){
  1179. var showClass = '';
  1180. if(column.hide==true){
  1181. showClass += 'hidden ';
  1182. return showClass;
  1183. }
  1184. if(column.hideType!=undefined){
  1185. var hideTypeArr = column.hideType.split('|');
  1186. for(var i=0; i<hideTypeArr.length; i++){
  1187. var type = hideTypeArr[i];
  1188. if(type=='lg') showClass += 'hidden-lg ';
  1189. if(type=='md') showClass += 'hidden-md ';
  1190. if(type=='sm') showClass += 'hidden-sm ';
  1191. if(type=='xs') showClass += 'hidden-xs ';
  1192. }
  1193. }
  1194. return showClass;
  1195. },
  1196. //获取扩展显隐的列样式表
  1197. getExtraColumnClassForHide : function(column){
  1198. var showClass = '';
  1199. if(column.hide==true){
  1200. showClass += 'hidden ';
  1201. return showClass;
  1202. }
  1203. if(column.hideType!=undefined){
  1204. var hideTypeArr = column.hideType.split('|');
  1205. for(var i=0; i<hideTypeArr.length; i++){
  1206. var type = hideTypeArr[i];
  1207. if(type=='lg') showClass += 'visible-lg ';
  1208. if(type=='md') showClass += 'visible-md ';
  1209. if(type=='sm') showClass += 'visible-sm ';
  1210. if(type=='xs') showClass += 'visible-xs ';
  1211. }
  1212. if(showClass=='')
  1213. showClass = 'hidden ';
  1214. }else{
  1215. showClass = 'hidden ';
  1216. }
  1217. return showClass;
  1218. },
  1219. //跳转页面
  1220. goPage : function(_page){
  1221. //定义表格对象映像
  1222. var gridReflectionObj = this;
  1223. var pageSize = gridReflectionObj.pager.pageSize;
  1224. var pageCount = gridReflectionObj.pager.pageCount;
  1225. var page = parseFloat(_page);
  1226. if(!isNaN(page)){
  1227. if(0<page&&page<=pageCount){
  1228. gridReflectionObj.pager.nowPage = page;
  1229. gridReflectionObj.pager.startRecord = pageSize*(page-1);
  1230. gridReflectionObj.load();
  1231. }
  1232. if(page<=0){
  1233. gridReflectionObj.loadByPage('first');
  1234. }
  1235. if(page>pageCount){
  1236. gridReflectionObj.loadByPage('last');
  1237. }
  1238. }
  1239. },
  1240. //根据页码重新加载,可配置参数:first、prev、next、last
  1241. loadByPage : function(type){
  1242. //定义表格对象映像
  1243. var gridReflectionObj = this;
  1244. type = type?type:'';
  1245. if(type=='first'){
  1246. var nowPage = gridReflectionObj.pager.nowPage;
  1247. if(nowPage>1){
  1248. gridReflectionObj.pager.startRecord = 0;
  1249. gridReflectionObj.pager.nowPage = 1;
  1250. gridReflectionObj.load();
  1251. }
  1252. }else if(type=='prev'){
  1253. var nowPage = gridReflectionObj.pager.nowPage;
  1254. var pageSize = gridReflectionObj.pager.pageSize;
  1255. if(nowPage>1){
  1256. nowPage--;
  1257. gridReflectionObj.pager.nowPage = nowPage;
  1258. gridReflectionObj.pager.startRecord = pageSize*(nowPage-1);
  1259. gridReflectionObj.load();
  1260. }
  1261. }else if(type=='next'){
  1262. var nowPage = gridReflectionObj.pager.nowPage;
  1263. var pageSize = gridReflectionObj.pager.pageSize;
  1264. var pageCount = gridReflectionObj.pager.pageCount;
  1265. if(nowPage<pageCount){
  1266. nowPage++;
  1267. gridReflectionObj.pager.nowPage = nowPage;
  1268. gridReflectionObj.pager.startRecord = pageSize*(nowPage-1);
  1269. gridReflectionObj.load();
  1270. }
  1271. }else if(type=='last'){
  1272. var nowPage = gridReflectionObj.pager.nowPage;
  1273. var pageCount = gridReflectionObj.pager.pageCount;
  1274. if(nowPage<pageCount){
  1275. var pageSize = gridReflectionObj.pager.pageSize;
  1276. var pageCount = gridReflectionObj.pager.pageCount;
  1277. gridReflectionObj.pager.nowPage = pageCount==0?1:pageCount;
  1278. gridReflectionObj.pager.startRecord = pageSize*(pageCount-1);
  1279. if(gridReflectionObj.pager.startRecord<0)
  1280. gridReflectionObj.pager.startRecord = 0;
  1281. gridReflectionObj.load();
  1282. }
  1283. }else{
  1284. gridReflectionObj.load();
  1285. }
  1286. },
  1287. /**
  1288. * 快速查询相关
  1289. */
  1290. //执行快速查询
  1291. fastQuery : function(){
  1292. //定义表格对象映像
  1293. var gridReflectionObj = this;
  1294. //如果已经初始化,则调用显示
  1295. if(gridReflectionObj.init.fastQueryWindowIsInit){
  1296. $('#fast_query_'+gridReflectionObj.option.id+'_modal').modal('show');
  1297. return;
  1298. }
  1299. var content = '';
  1300. content += $.fn.dlshouwen.grid.tools.getWindowStart('fast_query_'+gridReflectionObj.option.id, $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.title);
  1301. content += '<form id="fastQueryForm_'+gridReflectionObj.option.id+'">';
  1302. content += ' <div class="modal-body form-horizontal">';
  1303. for(var j=0; j<gridReflectionObj.option.columns.length; j++){
  1304. var column = gridReflectionObj.option.columns[j];
  1305. if(column.fastQuery==true){
  1306. content += '<div class="form-group">';
  1307. content += ' <label class="col-sm-3 control-label text-right">'+column.title+':</label>';
  1308. if(column.fastQueryType=='range'){
  1309. content += '<div class="col-sm-4">';
  1310. if(column.type=='date'){
  1311. content += '<div class="input-group">';
  1312. content += ' <input type="text" class="form-control" id="ge_'+column.id+'" name="ge_'+column.id+'" format="'+column.format+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.selectStart+column.title+'" onclick="WdatePicker({dateFmt:\''+$.fn.dlshouwen.grid.tools.replaceAll(column.format, 'h', 'H')+'\'});" />';
  1313. content += ' <div class="input-group-addon"><i class="fa fa-calendar"></i></div>';
  1314. content += '</div>';
  1315. }else{
  1316. content += '<input type="text" class="form-control" id="ge_'+column.id+'" name="ge_'+column.id+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.inputStart+column.title+'" />';
  1317. }
  1318. content += '</div>';
  1319. content += '<div class="col-sm-4">';
  1320. if(column.type=='date'){
  1321. content += '<div class="input-group">';
  1322. content += ' <input type="text" class="form-control" id="le_'+column.id+'" name="le_'+column.id+'" format="'+column.format+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.selectEnd+column.title+'" onclick="WdatePicker({dateFmt:\''+$.fn.dlshouwen.grid.tools.replaceAll(column.format, 'h', 'H')+'\'});" />';
  1323. content += ' <div class="input-group-addon"><i class="fa fa-calendar"></i></div>';
  1324. content += '</div>';
  1325. }else{
  1326. content += '<input type="text" class="form-control" id="le_'+column.id+'" name="le_'+column.id+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.inputEnd+column.title+'" />';
  1327. }
  1328. content += '</div>';
  1329. }else if(column.codeTable){
  1330. content += '<div class="col-sm-4">';
  1331. content += ' <select class="form-control" id="'+column.fastQueryType+'_'+column.id+'" name="'+column.fastQueryType+'_'+column.id+'">';
  1332. content += ' <option value="">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.codeTableSelectAll+'</option>';
  1333. for(var key in column.codeTable){
  1334. content += ' <option value="'+key+'">'+column.codeTable[key]+'</option>';
  1335. }
  1336. content += ' </select>';
  1337. content += '</div>';
  1338. }else{
  1339. content += '<div class="col-sm-4">';
  1340. if(column.type=='date'){
  1341. content += '<div class="input-group">';
  1342. var hoderName = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.selectStart;
  1343. if(column.fastQueryType=='lt'||column.fastQueryType=='le'){
  1344. hoderName = $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.selectEnd;
  1345. }
  1346. content += ' <input type="text" class="form-control" id="'+column.fastQueryType+'_'+column.id+'" name="'+column.fastQueryType+'_'+column.id+'" format="'+column.format+'" placeholder="'+hoderName+column.title+'" onclick="WdatePicker({dateFmt:\''+$.fn.dlshouwen.grid.tools.replaceAll(column.format, 'h', 'H')+'\'});" />';
  1347. content += ' <div class="input-group-addon"><i class="fa fa-calendar"></i></div>';
  1348. content += '</div>';
  1349. }else{
  1350. content += '<input type="text" class="form-control" id="'+column.fastQueryType+'_'+column.id+'" name="'+column.fastQueryType+'_'+column.id+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.input+column.title+'" />';
  1351. }
  1352. content += '</div>';
  1353. }
  1354. content += '</div>';
  1355. }
  1356. }
  1357. content += ' </div>';
  1358. content += '</form>';
  1359. var buttons = '';
  1360. buttons += '<button type="button" class="btn btn-warning" id="resetFastQuery_'+gridReflectionObj.option.id+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.buttons.reset+'</button>';
  1361. buttons += '<button type="button" class="btn btn-primary" id="doFastQuery_'+gridReflectionObj.option.id+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].fastQuery.buttons.query+'</button>';
  1362. content += $.fn.dlshouwen.grid.tools.getWindowEnd($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].buttons.close, buttons);
  1363. $('body').append(content);
  1364. //绑定方法
  1365. $('#resetFastQuery_'+gridReflectionObj.option.id).click(function(){
  1366. document.forms['fastQueryForm_'+gridReflectionObj.option.id].reset();
  1367. });
  1368. $('#doFastQuery_'+gridReflectionObj.option.id).click(function(){
  1369. gridReflectionObj.doFastQuery(document.forms['fastQueryForm_'+gridReflectionObj.option.id]);
  1370. $('#fast_query_'+gridReflectionObj.option.id+'_modal').modal('hide');
  1371. });
  1372. //显示快速查询
  1373. $('#fast_query_'+gridReflectionObj.option.id+'_modal').modal('show');
  1374. //标识初始化完成
  1375. gridReflectionObj.init.fastQueryWindowIsInit = true;
  1376. },
  1377. //快速查询方法
  1378. doFastQuery : function(form){
  1379. //定义表格对象映像
  1380. var gridReflectionObj = this;
  1381. //清空快速查询中的参数
  1382. gridReflectionObj.fastQueryParameters = new Object();
  1383. //遍历获取快速查询参数
  1384. var elements = form.elements;
  1385. for(var i=0;i<elements.length;i++){
  1386. var element = elements[i];
  1387. if($.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'text')
  1388. || $.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'hidden')
  1389. || $.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'textarea')
  1390. || $.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'select-one')
  1391. || $.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'password')){
  1392. if (element.name != ""){
  1393. gridReflectionObj.fastQueryParameters[element.name] = element.value;
  1394. gridReflectionObj.fastQueryParameters[element.name+'_format'] = element.getAttribute('format');
  1395. }
  1396. }else if (($.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'checkbox') || $.fn.dlshouwen.grid.tools.equalsIgnoreCase(element.type, 'radio')) && element.checked){
  1397. if (element.name != ""){
  1398. gridReflectionObj.fastQueryParameters[element.name] = element.value;
  1399. gridReflectionObj.fastQueryParameters[element.name+'_format'] = element.getAttribute('format');
  1400. }
  1401. }
  1402. }
  1403. gridReflectionObj.load();
  1404. },
  1405. //快速查询数据过滤(仅限非ajax分页加载模式)
  1406. doFastQueryDatasFilter : function(originalDatas, fastQueryParameters){
  1407. var returnDatas = new Array();
  1408. for(var i=0; i<originalDatas.length; i++){
  1409. var record = originalDatas[i];
  1410. var isShow = true;
  1411. for(var key in fastQueryParameters){
  1412. if(fastQueryParameters[key]&&fastQueryParameters[key]!=null&&fastQueryParameters[key]!=''){
  1413. if($.fn.dlshouwen.grid.tools.startsWith(key, 'eq_')){
  1414. var value = record[key.replace('eq_', '')];
  1415. value = value?value:'';
  1416. if(value!=fastQueryParameters[key]){
  1417. isShow = false;
  1418. continue;
  1419. }
  1420. }
  1421. if($.fn.dlshouwen.grid.tools.startsWith(key, 'ne_')){
  1422. var value = record[key.replace('ne_', '')];
  1423. value = value?value:'';
  1424. if(value==fastQueryParameters[key]){
  1425. isShow = false;
  1426. continue;
  1427. }
  1428. }
  1429. if($.fn.dlshouwen.grid.tools.startsWith(key, 'lk_')){
  1430. var value = record[key.replace('lk_', '')];
  1431. value = value?value:'';
  1432. if(value.indexOf(fastQueryParameters[key])==-1){
  1433. isShow = false;
  1434. continue;
  1435. }
  1436. }
  1437. if($.fn.dlshouwen.grid.tools.startsWith(key, 'll_')){
  1438. var value = record[key.replace('ll_', '')];
  1439. value = value?value:'';
  1440. if(!$.fn.dlshouwen.grid.tools.startsWith(value, fastQueryParameters[key])){
  1441. isShow = false;
  1442. continue;
  1443. }
  1444. }
  1445. if($.fn.dlshouwen.grid.tools.startsWith(key, 'rl_')){
  1446. var value = record[key.replace('rl_', '')];
  1447. value = value?value:'';
  1448. if(!$.fn.dlshouwen.grid.tools.endsWith(value, fastQueryParameters[key])){
  1449. isShow = false;
  1450. continue;
  1451. }
  1452. }
  1453. if($.fn.dlshouwen.grid.tools.startsWith(key, 'gt_')){
  1454. var value = record[key.replace('gt_', '')];
  1455. value = value?value:'';
  1456. //日期比较
  1457. if(value instanceof Date){
  1458. if((value.getTime()-$.fn.dlshouwen.grid.tools.toDate(fastQueryParameters[key], fastQueryParameters[key+'_format']).getTime())<=0){
  1459. isShow = false;
  1460. continue;
  1461. }
  1462. }
  1463. //数值比较
  1464. if(!(value instanceof Date)&&!isNaN(value)){
  1465. if((parseFloat(value) - parseFloat(fastQueryParameters[key]))<=0){
  1466. isShow = false;
  1467. continue;
  1468. }
  1469. }
  1470. //普通比较
  1471. if(!(value instanceof Date)&&isNaN(value)){
  1472. if(value.localeCompare(fastQueryParameters[key])<=0){
  1473. isShow = false;
  1474. continue;
  1475. }
  1476. }
  1477. }
  1478. if($.fn.dlshouwen.grid.tools.startsWith(key, 'ge_')){
  1479. var value = record[key.replace('ge_', '')];
  1480. value = value?value:'';
  1481. //日期比较
  1482. if(value instanceof Date){
  1483. if((value.getTime()-$.fn.dlshouwen.grid.tools.toDate(fastQueryParameters[key], fastQueryParameters[key+'_format']).getTime())<0){
  1484. isShow = false;
  1485. continue;
  1486. }
  1487. }
  1488. //数值比较
  1489. if(!(value instanceof Date)&&!isNaN(value)){
  1490. if((parseFloat(value) - parseFloat(fastQueryParameters[key]))<0){
  1491. isShow = false;
  1492. continue;
  1493. }
  1494. }
  1495. //普通比较
  1496. if(!(value instanceof Date)&&isNaN(value)){
  1497. if(value.localeCompare(fastQueryParameters[key])<0){
  1498. isShow = false;
  1499. continue;
  1500. }
  1501. }
  1502. }
  1503. if($.fn.dlshouwen.grid.tools.startsWith(key, 'lt_')){
  1504. var value = record[key.replace('lt_', '')];
  1505. value = value?value:'';
  1506. //日期比较
  1507. if(value instanceof Date){
  1508. if((value.getTime()-$.fn.dlshouwen.grid.tools.toDate(fastQueryParameters[key], fastQueryParameters[key+'_format']).getTime())>=0){
  1509. isShow = false;
  1510. continue;
  1511. }
  1512. }
  1513. //数值比较
  1514. if(!(value instanceof Date)&&!isNaN(value)){
  1515. if((parseFloat(value) - parseFloat(fastQueryParameters[key]))>=0){
  1516. isShow = false;
  1517. continue;
  1518. }
  1519. }
  1520. //普通比较
  1521. if(!(value instanceof Date)&&isNaN(value)){
  1522. if(value.localeCompare(fastQueryParameters[key])>=0){
  1523. isShow = false;
  1524. continue;
  1525. }
  1526. }
  1527. }
  1528. if($.fn.dlshouwen.grid.tools.startsWith(key, 'le_')){
  1529. var value = record[key.replace('le_', '')];
  1530. value = value?value:'';
  1531. //日期比较
  1532. if(value instanceof Date){
  1533. if((value.getTime()-$.fn.dlshouwen.grid.tools.toDate(fastQueryParameters[key], fastQueryParameters[key+'_format']).getTime())>0){
  1534. isShow = false;
  1535. continue;
  1536. }
  1537. }
  1538. //数值比较
  1539. if(!(value instanceof Date)&&!isNaN(value)){
  1540. if((parseFloat(value) - parseFloat(fastQueryParameters[key]))>0){
  1541. isShow = false;
  1542. continue;
  1543. }
  1544. }
  1545. //普通比较
  1546. if(!(value instanceof Date)&&isNaN(value)){
  1547. if(value.localeCompare(fastQueryParameters[key])>0){
  1548. isShow = false;
  1549. continue;
  1550. }
  1551. }
  1552. }
  1553. }
  1554. }
  1555. if(isShow){
  1556. returnDatas.push(record);
  1557. }
  1558. }
  1559. return returnDatas;
  1560. },
  1561. /**
  1562. * 高级查询相关
  1563. */
  1564. //高级查询方法
  1565. advanceQuery : function(){
  1566. //定义表格对象映像
  1567. var gridReflectionObj = this;
  1568. //如果已经初始化,则调用显示
  1569. if(gridReflectionObj.init.advanceQueryWindowIsInit){
  1570. $('#advance_query_'+gridReflectionObj.option.id+'_modal').modal('show');
  1571. return;
  1572. }
  1573. //加载查询内容
  1574. var content = '';
  1575. content += $.fn.dlshouwen.grid.tools.getWindowStart('advance_query_'+gridReflectionObj.option.id, $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.title);
  1576. content += '<div class="modal-body advance-query">';
  1577. content += ' <ul class="nav nav-tabs" role="tablist">';
  1578. // content += ' <li><a href="#advance_query_plan_'+gridReflectionObj.option.id+'" role="tab" data-toggle="tab">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.title+'</a></li>';
  1579. content += ' <li class="active"><a href="#advance_query_condition_'+gridReflectionObj.option.id+'" role="tab" data-toggle="tab">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.title+'</a></li>';
  1580. content += ' <li><a href="#advance_query_sort_'+gridReflectionObj.option.id+'" role="tab" data-toggle="tab">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.title+'</a></li>';
  1581. content += ' </ul>';
  1582. content += ' <div class="tab-content">';
  1583. // content += ' <div class="tab-pane" id="advance_query_plan_'+gridReflectionObj.option.id+'">';
  1584. // content += ' <div class="panel panel-default">';
  1585. // content += ' <input type="hidden" id="advanceQueryId_'+gridReflectionObj.option.id+'" name="advanceQueryId_'+gridReflectionObj.option.id+'" />';
  1586. // content += ' <div class="form-horizontal" style="padding-top:15px;">';
  1587. // content += ' <div class="form-group">';
  1588. // content += ' <label class="col-sm-3 control-label text-right">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.advanceQueryName+'</label>';
  1589. // content += ' <div class="col-sm-6">';
  1590. // content += ' <input type="text" class="form-control" id="advanceQueryName_'+gridReflectionObj.option.id+'" name="advanceQueryName_'+gridReflectionObj.option.id+'" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.advanceQueryNamePlaceHoder+'">';
  1591. // content += ' </div>';
  1592. // content += ' </div>';
  1593. // content += ' <div class="form-group">';
  1594. // content += ' <label class="col-sm-3 control-label text-right">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.remark+'</label>';
  1595. // content += ' <div class="col-sm-6">';
  1596. // content += ' <textarea id="remark_'+gridReflectionObj.option.id+'" name="remark_'+gridReflectionObj.option.id+'" class="form-control" placeholder="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.remarkPlaceHoder+'"></textarea>';
  1597. // content += ' </div>';
  1598. // content += ' </div>';
  1599. // content += ' <div class="form-group">';
  1600. // content += ' <div class="col-sm-offset-3 col-sm-12">';
  1601. // content += ' <button id="addAdvanceQuery_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.addAdvanceQueryTitle+'" class="btn btn-xs btn-primary">';
  1602. // content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.addAdvanceQuery;
  1603. // content += ' </button>';
  1604. // content += ' <button id="editAdvanceQuery_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.editAdvanceQueryTitle+'" class="btn btn-xs btn-primary">';
  1605. // content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.editAdvanceQuery;
  1606. // content += ' </button>';
  1607. // content += ' <button id="copyAdvanceQuery_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.copyAdvanceQueryTitle+'" class="btn btn-xs btn-warning">';
  1608. // content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.copyAdvanceQuery;
  1609. // content += ' </button>';
  1610. // content += ' <button id="deleteAdvanceQuery_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.deleteAdvanceQueryTitle+'" class="btn btn-xs btn-danger">';
  1611. // content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.plan.buttons.deleteAdvanceQuery;
  1612. // content += ' </button>';
  1613. // content += ' </div>';
  1614. // content += ' </div>';
  1615. // content += ' </div>';
  1616. // content += ' </div>';
  1617. // content += ' </div>';
  1618. content += ' <div class="tab-pane active" id="advance_query_condition_'+gridReflectionObj.option.id+'">';
  1619. content += ' <div class="panel panel-default">';
  1620. content += ' <div class="form-horizontal text-right advance-query-buttons">';
  1621. content += ' <button id="insertConditionTr_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.buttons.insertTitle+'" class="btn btn-xs btn-primary">';
  1622. content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.buttons.insert;
  1623. content += ' </button>';
  1624. content += ' <button id="clearConditionTr_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.buttons.clearTitle+'" class="btn btn-xs btn-danger">';
  1625. content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.buttons.clear;
  1626. content += ' </button>';
  1627. content += ' </div>';
  1628. content += ' <div class="advance-query-table-container">';
  1629. content += ' <table id="conditionTable_'+gridReflectionObj.option.id+'" class="table table-bordered table-striped table-hover table-condition table-center" style="width:860px;">';
  1630. content += ' <tr>';
  1631. content += ' <th style="width:50px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.sequence+'</th>';
  1632. content += ' <th style="width:100px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.operation+'</th>';
  1633. content += ' <th style="width:80px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.leftParentheses+'</th>';
  1634. content += ' <th style="width:140px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.field+'</th>';
  1635. content += ' <th style="width:120px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.condition+'</th>';
  1636. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.value+'</th>';
  1637. content += ' <th style="width:80px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.rightParentheses+'</th>';
  1638. content += ' <th style="width:90px;">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.logic+'</th>';
  1639. content += ' </tr>';
  1640. content += ' </table>';
  1641. content += ' </div>';
  1642. content += ' <div class="clearfix"></div>';
  1643. content += ' </div>';
  1644. content += ' </div>';
  1645. content += ' <div class="tab-pane" id="advance_query_sort_'+gridReflectionObj.option.id+'">';
  1646. content += ' <div class="panel panel-default">';
  1647. content += ' <div class="form-horizontal text-right advance-query-buttons">';
  1648. content += ' <button id="insertSortTr_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.buttons.insertTitle+'" class="btn btn-xs btn-primary">';
  1649. content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.buttons.insert;
  1650. content += ' </button>';
  1651. content += ' <button id="clearSortTr_'+gridReflectionObj.option.id+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.buttons.clearTitle+'" class="btn btn-xs btn-danger">';
  1652. content += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.buttons.clear;
  1653. content += ' </button>';
  1654. content += ' </div>';
  1655. content += ' <div class="advance-query-table-container">';
  1656. content += ' <table id="sortTable_'+gridReflectionObj.option.id+'" class="table table-bordered table-striped table-hover table-condition table-center">';
  1657. content += ' <tr>';
  1658. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.sequence+'</th>';
  1659. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.operation+'</th>';
  1660. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.field+'</th>';
  1661. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.logic+'</th>';
  1662. content += ' </tr>';
  1663. content += ' </table>';
  1664. content += ' </div>';
  1665. content += ' <div class="clearfix"></div>';
  1666. content += ' </div>';
  1667. content += ' </div>';
  1668. content += ' </div>';
  1669. content += '</div>';
  1670. var buttons = '';
  1671. buttons += '<button type="button" class="btn btn-primary" id="doAdvanceQuery_'+gridReflectionObj.option.id+'">';
  1672. buttons += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.buttons.query;
  1673. buttons += '</button>';
  1674. content += $.fn.dlshouwen.grid.tools.getWindowEnd($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].buttons.close, buttons);
  1675. $('body').append(content);
  1676. // //新增高级查询方案
  1677. // $('#insertConditionTr_'+gridReflectionObj.option.id).click(function(){
  1678. // });
  1679. // //编辑高级查询方案
  1680. // $('#editConditionTr_'+gridReflectionObj.option.id).click(function(){
  1681. // });
  1682. // //赋值高级查询方案
  1683. // $('#copyConditionTr_'+gridReflectionObj.option.id).click(function(){
  1684. // });
  1685. // //删除高级查询方案
  1686. // $('#deleteConditionTr_'+gridReflectionObj.option.id).click(function(){
  1687. // });
  1688. //新增一行查询条件
  1689. $('#insertConditionTr_'+gridReflectionObj.option.id).click(function(){
  1690. gridReflectionObj.insertConditionTr();
  1691. });
  1692. //清空查询条件
  1693. $('#clearConditionTr_'+gridReflectionObj.option.id).click(function(){
  1694. gridReflectionObj.clearConditionTr();
  1695. });
  1696. //新增一行排序条件
  1697. $('#insertSortTr_'+gridReflectionObj.option.id).click(function(){
  1698. gridReflectionObj.insertSortTr();
  1699. });
  1700. //清空排序条件
  1701. $('#clearSortTr_'+gridReflectionObj.option.id).click(function(){
  1702. gridReflectionObj.clearSortTr();
  1703. });
  1704. //绑定方法:执行高级查询
  1705. $('#doAdvanceQuery_'+gridReflectionObj.option.id).click(function(){
  1706. gridReflectionObj.doAdvanceQuery();
  1707. });
  1708. //显示高级查询
  1709. $('#advance_query_'+gridReflectionObj.option.id+'_modal').modal('show');
  1710. //标识初始化完成
  1711. gridReflectionObj.init.advanceQueryWindowIsInit = true;
  1712. },
  1713. //高级查询执行
  1714. doAdvanceQuery : function(){
  1715. //定义表格对象映像
  1716. var gridReflectionObj = this;
  1717. //校验
  1718. var pass = true;
  1719. var advanceQueryConditionList = new Array();
  1720. $('#conditionTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').each(function(){
  1721. var id = this.id.split('_')[2];
  1722. var seq = $('#conditionTable_'+gridReflectionObj.option.id+' #seqTd_'+gridReflectionObj.option.id+'_'+id).html();
  1723. var leftParentheses = $('#conditionTable_'+gridReflectionObj.option.id+' #leftParentheses_'+gridReflectionObj.option.id+'_'+id).val();
  1724. var field = $('#conditionTable_'+gridReflectionObj.option.id+' #field_'+gridReflectionObj.option.id+'_'+id).val();
  1725. var format = $('#conditionTable_'+gridReflectionObj.option.id+' #format_'+gridReflectionObj.option.id+'_'+id).val();
  1726. var condition = $('#conditionTable_'+gridReflectionObj.option.id+' #condition_'+gridReflectionObj.option.id+'_'+id).val();
  1727. var value = $('#conditionTable_'+gridReflectionObj.option.id+' #value_'+gridReflectionObj.option.id+'_'+id).val();
  1728. var rightParentheses = $('#conditionTable_'+gridReflectionObj.option.id+' #rightParentheses_'+gridReflectionObj.option.id+'_'+id).val();
  1729. var logic = $('#conditionTable_'+gridReflectionObj.option.id+' #logic_'+gridReflectionObj.option.id+'_'+id).val();
  1730. if(field==''){
  1731. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.errors.fieldMustSelect, '{sequence}', seq), 'warning', 3000);
  1732. pass = false;
  1733. return false;
  1734. }
  1735. if(condition==''){
  1736. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.errors.conditionMustSelect, '{sequence}', seq), 'warning', 3000);
  1737. pass = false;
  1738. return false;
  1739. }
  1740. var advanceQueryCondition = new Object();
  1741. advanceQueryCondition.id = id;
  1742. advanceQueryCondition.seq = seq;
  1743. advanceQueryCondition.leftParentheses = leftParentheses;
  1744. advanceQueryCondition.field = field;
  1745. advanceQueryCondition.format = format;
  1746. advanceQueryCondition.condition = condition;
  1747. advanceQueryCondition.value = value;
  1748. advanceQueryCondition.rightParentheses = rightParentheses;
  1749. advanceQueryCondition.logic = logic;
  1750. advanceQueryConditionList.push(advanceQueryCondition);
  1751. });
  1752. var advanceQuerySortList = new Array();
  1753. $('#sortTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').each(function(){
  1754. var id = this.id.split('_')[2];
  1755. var seq = $('#sortTable_'+gridReflectionObj.option.id+' #seqTd_'+gridReflectionObj.option.id+'_'+id).html();
  1756. var sortField = $('#sortTable_'+gridReflectionObj.option.id+' #sortField_'+gridReflectionObj.option.id+'_'+id).val();
  1757. var sortLogic = $('#sortTable_'+gridReflectionObj.option.id+' #sortLogic_'+gridReflectionObj.option.id+'_'+id).val();
  1758. if(sortField==''){
  1759. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.errors.fieldMustSelect, '{sequence}', seq), 'warning', 3000);
  1760. pass = false;
  1761. return false;
  1762. }
  1763. if(sortLogic==''){
  1764. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.tools.replaceAll($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.errors.logicMustSelect, '{sequence}', seq), 'warning', 3000);
  1765. pass = false;
  1766. return false;
  1767. }
  1768. var advanceQuerySort = new Object();
  1769. advanceQuerySort.field = sortField;
  1770. advanceQuerySort.logic = sortLogic;
  1771. advanceQuerySortList.push(advanceQuerySort);
  1772. });
  1773. if(pass){
  1774. gridReflectionObj.advanceQueryParameter = new Object();
  1775. gridReflectionObj.advanceQueryParameter.advanceQueryConditions = advanceQueryConditionList;
  1776. gridReflectionObj.advanceQueryParameter.advanceQuerySorts = advanceQuerySortList;
  1777. gridReflectionObj.load();
  1778. $('#advance_query_'+gridReflectionObj.option.id+'_modal').modal('hide');
  1779. }
  1780. },
  1781. //高级查询数据过滤(仅限非ajax及全部加载模式)
  1782. doAdvanceQueryDatasFilter : function(originalDatas, advanceQueryParameter){
  1783. var returnDatas = new Array();
  1784. for(var i=0; i<originalDatas.length; i++){
  1785. var record = originalDatas[i];
  1786. if(advanceQueryParameter.advanceQueryConditions&&advanceQueryParameter.advanceQueryConditions.length>0){
  1787. var condition = '';
  1788. for(var j=0; j<advanceQueryParameter.advanceQueryConditions.length; j++){
  1789. var advanceQueryCondition = advanceQueryParameter.advanceQueryConditions[j];
  1790. condition += advanceQueryCondition.leftParentheses;
  1791. if(advanceQueryCondition.condition=='0'){
  1792. condition += 'record["'+advanceQueryCondition.field+'"]=="'+advanceQueryCondition.value+'"';
  1793. }
  1794. if(advanceQueryCondition.condition=='1'){
  1795. condition += 'record["'+advanceQueryCondition.field+'"]!="'+advanceQueryCondition.value+'"';
  1796. }
  1797. if(advanceQueryCondition.condition=='2'){
  1798. condition += 'record["'+advanceQueryCondition.field+'"].indexOf("'+advanceQueryCondition.value+'")!=-1';
  1799. }
  1800. if(advanceQueryCondition.condition=='3'){
  1801. condition += '$.fn.dlshouwen.grid.tools.startsWith(record["'+advanceQueryCondition.field+'"], "'+advanceQueryCondition.value+'")';
  1802. }
  1803. if(advanceQueryCondition.condition=='4'){
  1804. condition += '$.fn.dlshouwen.grid.tools.endsWith(record["'+advanceQueryCondition.field+'"], "'+advanceQueryCondition.value+'")';
  1805. }
  1806. if(advanceQueryCondition.condition=='5'){
  1807. var value = record[advanceQueryCondition.field];
  1808. //日期比较
  1809. if(value instanceof Date){
  1810. condition += '(record["'+advanceQueryCondition.field+'"].getTime()-$.fn.dlshouwen.grid.tools.toDate("'+advanceQueryCondition.value+'", "'+advanceQueryCondition.format+'").getTime())>0';
  1811. }
  1812. //数值比较
  1813. if(!(value instanceof Date)&&!isNaN(value)){
  1814. condition += '(parseFloat(record["'+advanceQueryCondition.field+'"]) - parseFloat("'+advanceQueryCondition.value+'"))>0';
  1815. }
  1816. //普通比较
  1817. if(!(value instanceof Date)&&isNaN(value)){
  1818. condition += 'record["'+advanceQueryCondition.field+'"].localeCompare("'+advanceQueryCondition.value+'")>0';
  1819. }
  1820. }
  1821. if(advanceQueryCondition.condition=='6'){
  1822. var value = record[advanceQueryCondition.field];
  1823. //日期比较
  1824. if(value instanceof Date){
  1825. condition += '(record["'+advanceQueryCondition.field+'"].getTime()-$.fn.dlshouwen.grid.tools.toDate("'+advanceQueryCondition.value+'", "'+advanceQueryCondition.format+'").getTime())>=0';
  1826. }
  1827. //数值比较
  1828. if(!(value instanceof Date)&&!isNaN(value)){
  1829. condition += '(parseFloat(record["'+advanceQueryCondition.field+'"]) - parseFloat("'+advanceQueryCondition.value+'"))>=0';
  1830. }
  1831. //普通比较
  1832. if(!(value instanceof Date)&&isNaN(value)){
  1833. condition += 'record["'+advanceQueryCondition.field+'"].localeCompare("'+advanceQueryCondition.value+'")>=0';
  1834. }
  1835. }
  1836. if(advanceQueryCondition.condition=='7'){
  1837. var value = record[advanceQueryCondition.field];
  1838. //日期比较
  1839. if(value instanceof Date){
  1840. condition += '(record["'+advanceQueryCondition.field+'"].getTime()-$.fn.dlshouwen.grid.tools.toDate("'+advanceQueryCondition.value+'", "'+advanceQueryCondition.format+'").getTime())<0';
  1841. }
  1842. //数值比较
  1843. if(!(value instanceof Date)&&!isNaN(value)){
  1844. condition += '(parseFloat(record["'+advanceQueryCondition.field+'"]) - parseFloat("'+advanceQueryCondition.value+'"))<0';
  1845. }
  1846. //普通比较
  1847. if(!(value instanceof Date)&&isNaN(value)){
  1848. condition += 'record["'+advanceQueryCondition.field+'"].localeCompare("'+advanceQueryCondition.value+'")<0';
  1849. }
  1850. }
  1851. if(advanceQueryCondition.condition=='8'){
  1852. var value = record[advanceQueryCondition.field];
  1853. //日期比较
  1854. if(value instanceof Date){
  1855. condition += '(record["'+advanceQueryCondition.field+'"].getTime()-$.fn.dlshouwen.grid.tools.toDate("'+advanceQueryCondition.value+'", "'+advanceQueryCondition.format+'").getTime())<=0';
  1856. }
  1857. //数值比较
  1858. if(!(value instanceof Date)&&!isNaN(value)){
  1859. condition += '(parseFloat(record["'+advanceQueryCondition.field+'"]) - parseFloat("'+advanceQueryCondition.value+'"))<=0';
  1860. }
  1861. //普通比较
  1862. if(!(value instanceof Date)&&isNaN(value)){
  1863. condition += 'record["'+advanceQueryCondition.field+'"].localeCompare("'+advanceQueryCondition.value+'")<=0';
  1864. }
  1865. }
  1866. if(advanceQueryCondition.condition=='9'){
  1867. condition += '!record["'+advanceQueryCondition.field+'"]';
  1868. }
  1869. if(advanceQueryCondition.condition=='10'){
  1870. condition += 'record["'+advanceQueryCondition.field+'"]';
  1871. }
  1872. condition += advanceQueryCondition.rightParentheses;
  1873. if(advanceQueryCondition.logic=='0'){
  1874. condition += '&&';
  1875. }
  1876. if(advanceQueryCondition.logic=='1'){
  1877. condition += '||';
  1878. }
  1879. }
  1880. try{
  1881. if(eval(condition)){
  1882. returnDatas.push(record);
  1883. }
  1884. }catch(e){
  1885. $.fn.dlshouwen.grid.tools.toast($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.errors.conditionError, 'error', 3000);
  1886. return originalDatas;
  1887. }
  1888. }else{
  1889. returnDatas.push(record);
  1890. }
  1891. }
  1892. //处理排序
  1893. if(advanceQueryParameter.advanceQuerySorts&&advanceQueryParameter.advanceQuerySorts.length>0){
  1894. returnDatas = returnDatas.sort(function(record1, record2){
  1895. for(var i=0; i<advanceQueryParameter.advanceQuerySorts.length; i++){
  1896. var advanceQuerySort = advanceQueryParameter.advanceQuerySorts[i];
  1897. var value1 = record1[advanceQuerySort.field];
  1898. var value2 = record2[advanceQuerySort.field];
  1899. //如果相同则比较下一个
  1900. if(value1==value2){
  1901. continue;
  1902. }
  1903. //数值比较
  1904. if(!isNaN(value1)&&!isNaN(value2)){
  1905. if(advanceQuerySort.logic=='0'){
  1906. return value1-value2;
  1907. }
  1908. if(advanceQuerySort.logic=='1'){
  1909. return value2-value1;
  1910. }
  1911. }
  1912. //日期比较
  1913. if(value1 instanceof Date&&value2 instanceof Date){
  1914. if(advanceQuerySort.logic=='0'){
  1915. return value1.getTime()-value2.getTime();
  1916. }
  1917. if(advanceQuerySort.logic=='1'){
  1918. return value2.getTime()-value1.getTime();
  1919. }
  1920. }
  1921. //普通比较
  1922. if(value1!=null&&advanceQuerySort.logic=='0'){
  1923. return value1.localeCompare(value2);
  1924. }
  1925. if(value2!=null&&advanceQuerySort.logic=='1'){
  1926. return value2.localeCompare(value1);
  1927. }
  1928. }
  1929. return 0;
  1930. });
  1931. }
  1932. return returnDatas;
  1933. },
  1934. //查询条件序列号
  1935. sequenceCondition : 0,
  1936. //新增一行查询条件
  1937. insertConditionTr : function(){
  1938. //定义表格对象映像
  1939. var gridReflectionObj = this;
  1940. //处理内容
  1941. var content = '';
  1942. content += '<tr id="tr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'">';
  1943. content += ' <td id="seqTd_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'"></td>';
  1944. content += ' <td>';
  1945. content += ' <button type="button" id="moveUpConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="btn btn-primary btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons.upTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons.up+'</button>';
  1946. content += ' <button type="button" id="moveDownConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="btn btn-primary btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons.downTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons.down+'</button>';
  1947. content += ' <button type="button" id="deleteConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="btn btn-danger btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons.deleteTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.condition.table.buttons['delete']+'</button>';
  1948. content += ' </td>';
  1949. content += ' <td>';
  1950. content += ' <input type="text" id="leftParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="leftParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="form-control" />';
  1951. content += ' </td>';
  1952. content += ' <td>';
  1953. content += ' <select id="field_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="field_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="form-control">';
  1954. content += ' <option value=""></option>';
  1955. for(var i=0; i<gridReflectionObj.option.columns.length; i++){
  1956. var column = gridReflectionObj.option.columns[i];
  1957. if(column.advanceQuery!=false){
  1958. content += ' <option value="'+column.id+'">'+column.title+'</option>';
  1959. }
  1960. }
  1961. content += ' </select>';
  1962. content += ' <input type="hidden" id="format_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="format_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" />';
  1963. content += ' </td>';
  1964. content += ' <td>';
  1965. content += ' <select id="condition_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="condition_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="form-control">';
  1966. content += ' <option value=""></option>';
  1967. content += ' <option value="0">=</option>';
  1968. content += ' <option value="1">!=</option>';
  1969. content += ' <option value="2">like</option>';
  1970. content += ' <option value="3">start with</option>';
  1971. content += ' <option value="4">end with</option>';
  1972. content += ' <option value="5">&gt;</option>';
  1973. content += ' <option value="6">&gt;=</option>';
  1974. content += ' <option value="7">&lt;</option>';
  1975. content += ' <option value="8">&lt;=</option>';
  1976. content += ' <option value="9">is null</option>';
  1977. content += ' <option value="10">is not null</option>';
  1978. content += ' </select>';
  1979. content += ' </td>';
  1980. content += ' <td id="valueTd_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'"></td>';
  1981. content += ' <td>';
  1982. content += ' <input type="text" id="rightParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="rightParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="form-control" />';
  1983. content += ' </td>';
  1984. content += ' <td>';
  1985. content += ' <select id="logic_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" name="logic_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition+'" class="form-control">';
  1986. content += ' <option value=""></option>';
  1987. content += ' <option value="0">and</option>';
  1988. content += ' <option value="1">or</option>';
  1989. content += ' </select>';
  1990. content += ' </td>';
  1991. content += '</tr>';
  1992. $('#conditionTable_'+gridReflectionObj.option.id).append(content);
  1993. //绑定方法-上移
  1994. $('#moveUpConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).click(function(){
  1995. var sequenceCondition = this.id.split('_')[2];
  1996. gridReflectionObj.moveUpConditionTr(sequenceCondition);
  1997. });
  1998. //绑定方法-下移
  1999. $('#moveDownConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).click(function(){
  2000. var sequenceCondition = this.id.split('_')[2];
  2001. gridReflectionObj.moveDownConditionTr(sequenceCondition);
  2002. });
  2003. //绑定方法-删除
  2004. $('#deleteConditionTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).click(function(){
  2005. var sequenceCondition = this.id.split('_')[2];
  2006. gridReflectionObj.deleteConditionTr(sequenceCondition);
  2007. });
  2008. //绑定方法-左括号
  2009. $('#leftParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).keyup(function(){
  2010. var sequenceCondition = this.id.split('_')[2];
  2011. gridReflectionObj.validLeftParentheses(sequenceCondition);
  2012. });
  2013. //绑定方法-字段变更
  2014. $('#field_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).change(function(){
  2015. var sequenceCondition = this.id.split('_')[2];
  2016. gridReflectionObj.fieldChange(sequenceCondition);
  2017. });
  2018. //绑定方法-条件变更
  2019. $('#condition_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).change(function(){
  2020. var sequenceCondition = this.id.split('_')[2];
  2021. gridReflectionObj.conditionChange(sequenceCondition);
  2022. });
  2023. //绑定方法-右括号
  2024. $('#rightParentheses_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceCondition).keyup(function(){
  2025. var sequenceCondition = this.id.split('_')[2];
  2026. gridReflectionObj.validRightParentheses(sequenceCondition);
  2027. });
  2028. gridReflectionObj.sequenceCondition++;
  2029. gridReflectionObj.resetConditionSeq();
  2030. },
  2031. //清除所有行
  2032. clearConditionTr : function(){
  2033. //定义表格对象映像
  2034. var gridReflectionObj = this;
  2035. $('#conditionTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').remove();
  2036. },
  2037. //序列号重置
  2038. resetConditionSeq : function(){
  2039. //定义表格对象映像
  2040. var gridReflectionObj = this;
  2041. var seq = 1;
  2042. $('#conditionTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').each(function(){
  2043. var id = this.id.split('_')[2];
  2044. $('#conditionTable_'+gridReflectionObj.option.id+' #seqTd_'+gridReflectionObj.option.id+'_'+id).html(seq);
  2045. seq++;
  2046. });
  2047. },
  2048. //上移
  2049. moveUpConditionTr : function(id){
  2050. //定义表格对象映像
  2051. var gridReflectionObj = this;
  2052. $('#conditionTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).prev('#conditionTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').before($('#conditionTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id));
  2053. gridReflectionObj.resetConditionSeq();
  2054. },
  2055. //下移
  2056. moveDownConditionTr : function(id){
  2057. //定义表格对象映像
  2058. var gridReflectionObj = this;
  2059. $('#conditionTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).next('#conditionTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').after($('#conditionTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id));
  2060. gridReflectionObj.resetConditionSeq();
  2061. },
  2062. //删除当前行
  2063. deleteConditionTr : function(id){
  2064. //定义表格对象映像
  2065. var gridReflectionObj = this;
  2066. $('#conditionTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).remove();
  2067. gridReflectionObj.resetConditionSeq();
  2068. },
  2069. //左括号的验证函数
  2070. validLeftParentheses : function(id){
  2071. //定义表格对象映像
  2072. var gridReflectionObj = this;
  2073. //执行验证
  2074. var value = $('#leftParentheses_'+gridReflectionObj.option.id+'_'+id).val();
  2075. if(!value.match(/^[\(]*$/g)){
  2076. value = $.fn.dlshouwen.grid.tools.replaceAll(value, '(', '(');
  2077. value = value.replace(/[^\(]/g, '');
  2078. $('#leftParentheses_'+gridReflectionObj.option.id+'_'+id).val(value);
  2079. }
  2080. },
  2081. //列变更触发
  2082. fieldChange : function(id){
  2083. //定义表格对象映像
  2084. var gridReflectionObj = this;
  2085. //获取当前的值
  2086. var field = $('#field_'+gridReflectionObj.option.id+'_'+id).val();
  2087. //如果为空或条件一栏为9-10则滞空值栏
  2088. var condition = $('#condition_'+gridReflectionObj.option.id+'_'+id).val();
  2089. if(field=='' || condition=='9' || condition=='10'){
  2090. $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html('');
  2091. return;
  2092. }
  2093. //获取列对象
  2094. var column = new Object();
  2095. for(var i=0; i<gridReflectionObj.option.columns.length; i++){
  2096. if(gridReflectionObj.option.columns[i].id==field&&gridReflectionObj.option.columns[i].advanceQuery!=false){
  2097. column = gridReflectionObj.option.columns[i];
  2098. break;
  2099. }
  2100. }
  2101. //处理日期类型
  2102. if(column.type=='date'){
  2103. var content = '';
  2104. content += '<div class="input-group">';
  2105. content += ' <input id="value_'+gridReflectionObj.option.id+'_'+id+'" name="value_'+gridReflectionObj.option.id+'_'+id+'" class="form-control" onclick="WdatePicker({dateFmt:\''+$.fn.dlshouwen.grid.tools.replaceAll(column.format, 'h', 'H')+'\'})" />';
  2106. content += ' <div class="input-group-addon"><i class="fa fa-calendar"></i></div>';
  2107. content += '</div>';
  2108. $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html(content);
  2109. $('#format_'+gridReflectionObj.option.id+'_'+id).val(column.format);
  2110. return;
  2111. }
  2112. //处理codeTable内容
  2113. if(column.codeTable){
  2114. var content = '';
  2115. content += '<select id="value_'+gridReflectionObj.option.id+'_'+id+'" name="value_'+gridReflectionObj.option.id+'_'+id+'" class="form-control">';
  2116. content += ' <option value=""></option>';
  2117. for(var key in column.codeTable){
  2118. content += '<option value="'+key+'">'+column.codeTable[key]+'</option>';
  2119. }
  2120. content += '</select>';
  2121. $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html(content);
  2122. return;
  2123. }
  2124. //其他则为默认文本
  2125. var content = '<input id="value_'+gridReflectionObj.option.id+'_'+id+'" name="value_'+gridReflectionObj.option.id+'_'+id+'" class="form-control" />';
  2126. $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html(content);
  2127. },
  2128. //条件触发
  2129. conditionChange : function(id){
  2130. //定义表格对象映像
  2131. var gridReflectionObj = this;
  2132. var condition = $('#condition_'+gridReflectionObj.option.id+'_'+id).val();
  2133. if(condition == '9' || condition == '10'){
  2134. $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html('');
  2135. }else{
  2136. var valueHtml = $('#valueTd_'+gridReflectionObj.option.id+'_'+id).html();
  2137. if(valueHtml==''){
  2138. gridReflectionObj.fieldChange(id);
  2139. }
  2140. }
  2141. },
  2142. //右括号的验证函数
  2143. validRightParentheses : function(id){
  2144. //定义表格对象映像
  2145. var gridReflectionObj = this;
  2146. var value = $('#rightParentheses_'+gridReflectionObj.option.id+'_'+id).val();
  2147. if(!value.match(/^[\(]*$/g)){
  2148. value = $.fn.dlshouwen.grid.tools.replaceAll(value, ')', ')');
  2149. value = value.replace(/[^\)]/g, '');
  2150. $('#rightParentheses_'+gridReflectionObj.option.id+'_'+id).val(value);
  2151. }
  2152. },
  2153. //排序条件序列号
  2154. sequenceSort : 0,
  2155. //插入一行排序条件
  2156. insertSortTr : function(){
  2157. //定义表格对象映像
  2158. var gridReflectionObj = this;
  2159. //处理内容
  2160. var content = '';
  2161. content += '<tr id="tr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'">';
  2162. content += ' <td id="seqTd_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'"></td>';
  2163. content += ' <td>';
  2164. content += ' <button type="button" id="moveUpSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" class="btn btn-primary btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons.upTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons.up+'</button>';
  2165. content += ' <button type="button" id="moveDownSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" class="btn btn-primary btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons.downTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons.down+'</button>';
  2166. content += ' <button type="button" id="deleteSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" class="btn btn-danger btn-xs" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons.deleteTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.table.buttons['delete']+'</button>';
  2167. content += ' </td>';
  2168. content += ' <td>';
  2169. content += ' <select id="sortField_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" name="sortField_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" class="form-control">';
  2170. content += ' <option value=""></option>';
  2171. for(var i=0; i<gridReflectionObj.option.columns.length; i++){
  2172. var column = gridReflectionObj.option.columns[i];
  2173. if(column.advanceQuery!=false){
  2174. content += ' <option value="'+column.id+'">'+column.title+'</option>';
  2175. }
  2176. }
  2177. content += ' </select>';
  2178. content += ' </td>';
  2179. content += ' <td>';
  2180. content += ' <select id="sortLogic_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" name="sortLogic_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort+'" class="form-control">';
  2181. content += ' <option value=""></option>';
  2182. content += ' <option value="0">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.logic.asc+'</option>';
  2183. content += ' <option value="1">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].advanceQuery.sort.logic.desc+'</option>';
  2184. content += ' </select>';
  2185. content += ' </td>';
  2186. content += '</tr>';
  2187. $('#sortTable_'+gridReflectionObj.option.id).append(content);
  2188. //绑定方法-上移
  2189. $('#moveUpSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort).click(function(){
  2190. var sequenceSort = this.id.split('_')[2];
  2191. gridReflectionObj.moveUpSortTr(sequenceSort);
  2192. });
  2193. //绑定方法-下移
  2194. $('#moveDownSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort).click(function(){
  2195. var sequenceSort = this.id.split('_')[2];
  2196. gridReflectionObj.moveDownSortTr(sequenceSort);
  2197. });
  2198. //绑定方法-删除
  2199. $('#deleteSortTr_'+gridReflectionObj.option.id+'_'+gridReflectionObj.sequenceSort).click(function(){
  2200. var sequenceSort = this.id.split('_')[2];
  2201. gridReflectionObj.deleteSortTr(sequenceSort);
  2202. });
  2203. gridReflectionObj.sequenceSort++;
  2204. gridReflectionObj.resetSortSeq();
  2205. },
  2206. //清除所有排序条件
  2207. clearSortTr : function(){
  2208. //定义表格对象映像
  2209. var gridReflectionObj = this;
  2210. $('#sortTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').remove();
  2211. },
  2212. //序列号重置
  2213. resetSortSeq : function(){
  2214. //定义表格对象映像
  2215. var gridReflectionObj = this;
  2216. var seq = 1;
  2217. $('#sortTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').each(function(){
  2218. var id = this.id.split('_')[2];
  2219. $('#sortTable_'+gridReflectionObj.option.id+' #seqTd_'+gridReflectionObj.option.id+'_'+id).html(seq);
  2220. seq++;
  2221. });
  2222. },
  2223. //上移
  2224. moveUpSortTr : function(id){
  2225. //定义表格对象映像
  2226. var gridReflectionObj = this;
  2227. $('#sortTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).prev('#sortTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').before($('#sortTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id));
  2228. gridReflectionObj.resetSortSeq();
  2229. },
  2230. //下移
  2231. moveDownSortTr : function(id){
  2232. //定义表格对象映像
  2233. var gridReflectionObj = this;
  2234. $('#sortTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).next('#sortTable_'+gridReflectionObj.option.id+' tr[id*=tr_'+gridReflectionObj.option.id+'_]').after($('#sortTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id));
  2235. gridReflectionObj.resetSortSeq();
  2236. },
  2237. //删除当前行
  2238. deleteSortTr : function(id){
  2239. //定义表格对象映像
  2240. var gridReflectionObj = this;
  2241. $('#sortTable_'+gridReflectionObj.option.id+' #tr_'+gridReflectionObj.option.id+'_'+id).remove();
  2242. gridReflectionObj.resetSortSeq();
  2243. },
  2244. /**
  2245. * 打印相关
  2246. */
  2247. //打印
  2248. print : function(){
  2249. //映射参数
  2250. var gridReflectionObj = this;
  2251. //如果已经初始化,则调用显示
  2252. if(gridReflectionObj.init.printWindowIsInit){
  2253. $('#dlshouwen_grid_print_'+gridReflectionObj.option.id+'_modal').modal('show');
  2254. return;
  2255. }
  2256. //放置新的打印选项
  2257. var content = '';
  2258. content += $.fn.dlshouwen.grid.tools.getWindowStart('dlshouwen_grid_print_'+gridReflectionObj.option.id, $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.title);
  2259. content += ' <table class="table table-bordered table-print">';
  2260. content += ' <thead>';
  2261. content += ' <tr>';
  2262. content += ' <th><input type="checkbox" id="dlshouwen_grid_print_check_'+gridReflectionObj.option.id+'" checked="checked" /></th>';
  2263. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.column+'</th>';
  2264. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.operation+'</th>';
  2265. content += ' </tr>';
  2266. content += ' </thead>';
  2267. content += ' <tbody>';
  2268. //遍历列信息
  2269. for(var i=0; i<gridReflectionObj.option.columns.length; i++){
  2270. var column = gridReflectionObj.option.columns[i];
  2271. if(column.print==false){
  2272. continue;
  2273. }
  2274. //获取记录号
  2275. content += ' <tr id="dlshouwen_grid_print_tr_'+gridReflectionObj.option.id+'_'+i+'">';
  2276. content += ' <td><input type="checkbox" id="dlshouwen_grid_print_check_'+gridReflectionObj.option.id+'_'+i+'" checked="checked" value="'+i+'" /></td>';
  2277. content += ' <td>'+column.title+'</td>';
  2278. content += ' <td>';
  2279. content += ' <button type="button" class="btn btn-primary btn-xs" dataId="'+i+'" id="dlshouwen_grid_print_up_'+gridReflectionObj.option.id+'_'+i+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.buttons.upTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.buttons.up+'</button>';
  2280. content += ' <button type="button" class="btn btn-primary btn-xs" dataId="'+i+'" id="dlshouwen_grid_print_down_'+gridReflectionObj.option.id+'_'+i+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.buttons.downTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.table.buttons.down+'</button>';
  2281. content += ' </td>';
  2282. content += ' </tr>';
  2283. }
  2284. content += ' </tbody>';
  2285. content += ' </table>';
  2286. var buttons = '';
  2287. buttons += '<button type="button" class="btn btn-primary" id="dlshouwen_grid_print_execute_'+gridReflectionObj.option.id+'">';
  2288. buttons += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].print.buttons.print;
  2289. buttons += '</button>';
  2290. content += $.fn.dlshouwen.grid.tools.getWindowEnd($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].buttons.close, buttons);
  2291. $('body').append(content);
  2292. //绑定复选全选反选方法
  2293. $('#dlshouwen_grid_print_check_'+gridReflectionObj.option.id).click(function(){
  2294. $('input[id*=dlshouwen_grid_print_check_'+gridReflectionObj.option.id+'_]').prop('checked', this.checked);
  2295. });
  2296. //绑定上移方法
  2297. $('button[id*=dlshouwen_grid_print_up_'+gridReflectionObj.option.id+'_]').click(function(){
  2298. var dataId = $(this).attr('dataId');
  2299. var gridId = gridReflectionObj.option.id;
  2300. $('#dlshouwen_grid_print_tr_'+gridId+'_'+dataId).prev('#dlshouwen_grid_print_'+gridId+'_modal tr[id*=dlshouwen_grid_print_tr_'+gridId+']').before($('#dlshouwen_grid_print_tr_'+gridId+'_'+dataId));
  2301. });
  2302. //绑定下移方法
  2303. $('button[id*=dlshouwen_grid_print_down_'+gridReflectionObj.option.id+'_]').click(function(){
  2304. var dataId = $(this).attr('dataId');
  2305. var gridId = gridReflectionObj.option.id;
  2306. $('#dlshouwen_grid_print_tr_'+gridId+'_'+dataId).next('#dlshouwen_grid_print_'+gridId+'_modal tr[id*=dlshouwen_grid_print_tr_'+gridId+']').after($('#dlshouwen_grid_print_tr_'+gridId+'_'+dataId));
  2307. });
  2308. //绑定打印方法
  2309. $('#dlshouwen_grid_print_execute_'+gridReflectionObj.option.id).click(function(){
  2310. //画表格
  2311. var content = '';
  2312. content += '<table class="dlshouwen-grid '+gridReflectionObj.option.tableClass+'" id="dlshouwen_grid_print_'+gridReflectionObj.option.id+'" style="'+gridReflectionObj.option.tableStyle+'">';
  2313. if(gridReflectionObj.option.showHeader!=false){
  2314. content += '<thead>';
  2315. content += ' <tr>';
  2316. $('input[id*=dlshouwen_grid_print_check_'+gridReflectionObj.option.id+'_]:checked').each(function(){
  2317. var columnNo = this.value;
  2318. content += '<th class="'+gridReflectionObj.option.columns[columnNo].headerClass+'" style="'+gridReflectionObj.option.columns[columnNo].headerStyle+'">'+gridReflectionObj.option.columns[columnNo].title+'</th>';
  2319. });
  2320. content += ' </tr>';
  2321. content += '</thead>';
  2322. }
  2323. //构建表格
  2324. content += ' <tbody>';
  2325. if(gridReflectionObj.exhibitDatas!=null){
  2326. for(var i=0; i<gridReflectionObj.exhibitDatas.length; i++){
  2327. content += ' <tr>';
  2328. $('input[id*=dlshouwen_grid_print_check_'+gridReflectionObj.option.id+'_]:checked').each(function(){
  2329. var columnNo = this.value;
  2330. content += ' <td class="'+gridReflectionObj.option.columns[columnNo].columnClass+'" style="'+gridReflectionObj.option.columns[columnNo].columnStyle+'">';
  2331. if(gridReflectionObj.option.columns[columnNo].resolution){
  2332. content += gridReflectionObj.option.columns[columnNo].resolution(gridReflectionObj.exhibitDatas[i][gridReflectionObj.option.columns[columnNo].id], gridReflectionObj.exhibitDatas[i], gridReflectionObj.option.columns[columnNo], gridReflectionObj, i, columnNo);
  2333. }else{
  2334. content += gridReflectionObj.formatContent(gridReflectionObj.option.columns[columnNo], gridReflectionObj.exhibitDatas[i][gridReflectionObj.option.columns[columnNo].id]);
  2335. }
  2336. content += ' </td>';
  2337. });
  2338. content += ' </tr>';
  2339. }
  2340. }
  2341. content += ' </tbody>';
  2342. content += '</table>';
  2343. //隐藏body,放置打印对象
  2344. var scrollTop = $('body').scrollTop();
  2345. $('body').hide();
  2346. $('html').append(content);
  2347. window.print();
  2348. $('#dlshouwen_grid_print_'+gridReflectionObj.option.id).remove();
  2349. $('body').show();
  2350. $('#dlshouwen_grid_print_'+gridReflectionObj.option.id+'_modal').modal('hide');
  2351. $('body').scrollTop(scrollTop);
  2352. });
  2353. //显示打印选项
  2354. $('#dlshouwen_grid_print_'+gridReflectionObj.option.id+'_modal').modal('show');
  2355. //标识初始化完成
  2356. gridReflectionObj.init.printWindowIsInit = true;
  2357. },
  2358. /**
  2359. * 导出相关
  2360. */
  2361. //导出
  2362. exportFile : function(exportType){
  2363. //映射参数
  2364. var gridReflectionObj = this;
  2365. //如果已经初始化,则显示导出选项
  2366. if(gridReflectionObj.init.exportWindowIsInit[exportType]){
  2367. //显示导出选项
  2368. $('#dlshouwen_grid_export_'+exportType+'_'+gridReflectionObj.option.id+'_modal').modal('show');
  2369. return;
  2370. }
  2371. //放置新的导出选项
  2372. var content = '';
  2373. content += $.fn.dlshouwen.grid.tools.getWindowStart('dlshouwen_grid_export_'+exportType+'_'+gridReflectionObj.option.id, $.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].title);
  2374. content += ' <div class="form-export modal-body form-horizontal form-export">';
  2375. content += ' <div class="form-group">';
  2376. content += ' <label class="col-sm-3 control-label">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].exportType.title+'</label>';
  2377. content += ' <div class="col-sm-9">';
  2378. content += ' <div class="checkbox">';
  2379. content += ' <label><input type="radio" name="dlshouwen_grid_export_export_all_data_'+exportType+'_'+gridReflectionObj.option.id+'" value="0" checked="checked" /> '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].exportType.now+'</label>';
  2380. content += ' <label><input type="radio" name="dlshouwen_grid_export_export_all_data_'+exportType+'_'+gridReflectionObj.option.id+'" value="1" /> '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].exportType.all+'</label>';
  2381. content += ' </div>';
  2382. content += ' </div>';
  2383. content += ' </div>';
  2384. content += ' </div>';
  2385. content += ' <table class="table table-bordered table-export">';
  2386. content += ' <thead>';
  2387. content += ' <tr>';
  2388. content += ' <th><input type="checkbox" id="dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id+'" checked="checked" /></th>';
  2389. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.column+'</th>';
  2390. content += ' <th>'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.operation+'</th>';
  2391. content += ' </tr>';
  2392. content += ' </thead>';
  2393. content += ' <tbody>';
  2394. //遍历列信息
  2395. for(var i=0; i<gridReflectionObj.option.columns.length; i++){
  2396. var column = gridReflectionObj.option.columns[i];
  2397. if(column['export']==false){
  2398. continue;
  2399. }
  2400. content += ' <tr id="dlshouwen_grid_export_tr_'+exportType+'_'+gridReflectionObj.option.id+'_'+i+'">';
  2401. content += ' <td><input type="checkbox" id="dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id+'_'+i+'" checked="checked" value="'+i+'" /></td>';
  2402. content += ' <td>'+column.title+'</td>';
  2403. content += ' <td>';
  2404. content += ' <button type="button" class="btn btn-primary btn-xs" dataId="'+i+'" id="dlshouwen_grid_export_up_'+exportType+'_'+gridReflectionObj.option.id+'_'+i+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.buttons.upTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.buttons.up+'</button>';
  2405. content += ' <button type="button" class="btn btn-primary btn-xs" dataId="'+i+'" id="dlshouwen_grid_export_down_'+exportType+'_'+gridReflectionObj.option.id+'_'+i+'" title="'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.buttons.downTitle+'">'+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].table.buttons.down+'</button>';
  2406. content += ' </td>';
  2407. content += ' </tr>';
  2408. }
  2409. content += ' </tbody>';
  2410. content += ' </table>';
  2411. var buttons = '';
  2412. buttons += '<button type="button" class="btn btn-primary" id="dlshouwen_grid_export_execute_'+exportType+'_'+gridReflectionObj.option.id+'">';
  2413. buttons += ' '+$.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang]['export'][exportType].buttons['export'];
  2414. buttons += '</button>';
  2415. content += $.fn.dlshouwen.grid.tools.getWindowEnd($.fn.dlshouwen.grid.lang[gridReflectionObj.option.lang].buttons.close, buttons);
  2416. $('body').append(content);
  2417. //绑定复选方法
  2418. $('#dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id).click(function(){
  2419. $('input[id*=dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id+'_]').prop('checked', this.checked);
  2420. });
  2421. //绑定上移方法
  2422. $('button[id*=dlshouwen_grid_export_up_'+exportType+'_'+gridReflectionObj.option.id+'_]').click(function(){
  2423. var dataId = $(this).attr('dataId');
  2424. var gridId = gridReflectionObj.option.id;
  2425. $('#dlshouwen_grid_export_tr_'+exportType+'_'+gridId+'_'+dataId).prev('#dlshouwen_grid_export_'+exportType+'_'+gridId+'_modal tr[id*=dlshouwen_grid_export_tr_'+exportType+'_'+gridId+']').before($('#dlshouwen_grid_export_tr_'+exportType+'_'+gridId+'_'+dataId));
  2426. });
  2427. //绑定下移方法
  2428. $('button[id*=dlshouwen_grid_export_down_'+exportType+'_'+gridReflectionObj.option.id+'_]').click(function(){
  2429. var dataId = $(this).attr('dataId');
  2430. var gridId = gridReflectionObj.option.id;
  2431. $('#dlshouwen_grid_export_tr_'+exportType+'_'+gridId+'_'+dataId).next('#dlshouwen_grid_export_'+exportType+'_'+gridId+'_modal tr[id*=dlshouwen_grid_export_tr_'+exportType+'_'+gridId+']').after($('#dlshouwen_grid_export_tr_'+exportType+'_'+gridId+'_'+dataId));
  2432. });
  2433. //绑定导出方法
  2434. $('#dlshouwen_grid_export_execute_'+exportType+'_'+gridReflectionObj.option.id).click(function(){
  2435. //删除原表单
  2436. $('#dlshouwen_grid_export_form_container_'+exportType+'_'+gridReflectionObj.option.id).remove();
  2437. //将参数传递后台使用伪表单进行导出
  2438. var exportFormContainer = document.createElement('div');
  2439. exportFormContainer.id = 'dlshouwen_grid_export_form_container_'+exportType+'_'+gridReflectionObj.option.id;
  2440. exportFormContainer.className = 'hidden';
  2441. var exportIframe = document.createElement('iframe');
  2442. exportIframe.name = 'dlshouwen_grid_export_iframe_'+exportType+'_'+gridReflectionObj.option.id;
  2443. exportFormContainer.appendChild(exportIframe);
  2444. var exportForm = document.createElement('form');
  2445. exportForm.id = 'dlshouwen_grid_export_form_'+exportType+'_'+gridReflectionObj.option.id;
  2446. exportForm.method = 'post';
  2447. exportForm.target = 'dlshouwen_grid_export_iframe_'+exportType+'_'+gridReflectionObj.option.id;
  2448. if(gridReflectionObj.option.ajaxLoad==false||gridReflectionObj.option.loadAll==true){
  2449. exportForm.action = gridReflectionObj.option.exportURL;
  2450. }else{
  2451. exportForm.action = gridReflectionObj.option.loadURL;
  2452. }
  2453. var gridPager = new Object();
  2454. gridPager.pageSize = gridReflectionObj.pager.pageSize;
  2455. gridPager.startRecord = gridReflectionObj.pager.startRecord;
  2456. gridPager.nowPage = gridReflectionObj.pager.nowPage;
  2457. gridPager.recordCount = gridReflectionObj.pager.recordCount;
  2458. gridPager.pageCount = gridReflectionObj.pager.pageCount;
  2459. gridPager.isExport = true;
  2460. gridPager.exportFileName = gridReflectionObj.option.exportFileName;
  2461. gridPager.exportType = exportType;
  2462. gridPager.exportAllData = $('input[name*=dlshouwen_grid_export_export_all_data_'+exportType+'_'+gridReflectionObj.option.id+']:checked').val()=='1'?true:false;
  2463. gridPager.parameters = new Object();
  2464. gridPager.fastQueryParameters = new Object();
  2465. gridPager.advanceQueryConditions = new Array();
  2466. gridPager.advanceQuerySorts = new Array();
  2467. if(gridReflectionObj.parameters){
  2468. gridPager.parameters = gridReflectionObj.parameters;
  2469. }
  2470. if(gridReflectionObj.fastQueryParameters){
  2471. gridPager.fastQueryParameters = gridReflectionObj.fastQueryParameters;
  2472. }
  2473. if(gridReflectionObj.advanceQuery&&gridReflectionObj.advanceQuery.advanceQueryConditions){
  2474. gridPager.advanceQueryConditions = gridReflectionObj.advanceQuery.advanceQueryConditions;
  2475. }
  2476. if(gridReflectionObj.advanceQuery&&gridReflectionObj.advanceQuery.advanceQuerySorts){
  2477. gridPager.advanceQuerySorts = gridReflectionObj.advanceQuery.advanceQuerySorts;
  2478. }
  2479. var exportColumns = new Array();
  2480. $('input[id*=dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id+'_]:checked').each(function(){
  2481. exportColumns.push(gridReflectionObj.option.columns[this.value]);
  2482. });
  2483. gridPager.exportColumns = exportColumns;
  2484. //获取原生数据
  2485. var originalDatas = new Array();
  2486. var exportDataIsProcessed = false;
  2487. if(!gridPager.exportAllData){
  2488. originalDatas = gridReflectionObj.exhibitDatas;
  2489. exportDataIsProcessed = true;
  2490. }else{
  2491. if(gridReflectionObj.option.ajaxLoad==false||gridReflectionObj.option.loadAll==true){
  2492. originalDatas = gridReflectionObj.originalDatas;
  2493. exportDataIsProcessed = true;
  2494. }
  2495. }
  2496. gridPager.exportDataIsProcessed = exportDataIsProcessed;
  2497. //拼接导出数据
  2498. var exportDatas = new Array();
  2499. for(var i=0; i<originalDatas.length; i++){
  2500. var data = originalDatas[i];
  2501. var exportData = new Object();
  2502. $('input[id*=dlshouwen_grid_export_check_'+exportType+'_'+gridReflectionObj.option.id+'_]:checked').each(function(){
  2503. var column = gridReflectionObj.option.columns[this.value];
  2504. var fieldContent = gridReflectionObj.formatContent(column, data[column.id]);
  2505. exportData[column.id] = fieldContent;
  2506. });
  2507. exportDatas.push(exportData);
  2508. }
  2509. gridPager.exportDatas = exportDatas;
  2510. var gridPagerInput = document.createElement('input');
  2511. gridPagerInput.type = 'hidden';
  2512. gridPagerInput.id = 'gridPager';
  2513. gridPagerInput.name = 'gridPager';
  2514. gridPagerInput.value = JSON.stringify(gridPager);
  2515. exportForm.appendChild(gridPagerInput);
  2516. exportFormContainer.appendChild(exportForm);
  2517. $('body').append(exportFormContainer);
  2518. $('#dlshouwen_grid_export_form_'+exportType+'_'+gridReflectionObj.option.id).submit();
  2519. $('#dlshouwen_grid_export_'+exportType+'_'+gridReflectionObj.option.id+'_modal').modal('hide');
  2520. });
  2521. //设置初始化完成
  2522. gridReflectionObj.init.exportWindowIsInit[exportType] = true;
  2523. //显示导出选项
  2524. $('#dlshouwen_grid_export_'+exportType+'_'+gridReflectionObj.option.id+'_modal').modal('show');
  2525. },
  2526. /**
  2527. * 对外开放工具方法
  2528. */
  2529. //获取选中内容
  2530. getCheckedRecords: function(){
  2531. //设置本体映射
  2532. gridReflectionObj = this;
  2533. //获取数据
  2534. var records = new Array();
  2535. $('input[id*=dlshouwen_grid_'+gridReflectionObj.option.id+'_check_]:checked').each(function(){
  2536. records.push(gridReflectionObj.exhibitDatas[this.value]);
  2537. });
  2538. return records;
  2539. },
  2540. //重新加载,true为重新从数据库中获取数据
  2541. reload : function(allReload){
  2542. //定义表格对象映像
  2543. var gridReflectionObj = this;
  2544. if(allReload){
  2545. gridReflectionObj.load();
  2546. }else{
  2547. //重新加载数据
  2548. gridReflectionObj.constructGrid();
  2549. gridReflectionObj.constructGridPageBar();
  2550. }
  2551. },
  2552. //重新加载重载方法
  2553. refresh : function(allReload){
  2554. //定义表格对象映像
  2555. var gridReflectionObj = this;
  2556. gridReflectionObj.reload(allReload);
  2557. }
  2558. };
  2559. return gridObject;
  2560. },
  2561. //工具方法
  2562. tools : {
  2563. //生成guid
  2564. guid : function(){
  2565. return 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  2566. var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  2567. return v.toString(16);
  2568. });
  2569. },
  2570. //创建一个模态窗口(开始)
  2571. getWindowStart : function(id, title){
  2572. var content = '';
  2573. content += '<div class="modal fade" id="'+id+'_modal" tabindex="-1" role="dialog" aria-labelledby="'+id+'ModalLabel" aria-hidden="true">';
  2574. content += ' <div class="modal-dialog">';
  2575. content += ' <div class="modal-content">';
  2576. content += ' <div class="modal-header">';
  2577. content += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>';
  2578. content += ' <h4 class="modal-title" id="'+id+'ModalLabel">'+title+'</h4>';
  2579. content += ' </div>';
  2580. return content;
  2581. },
  2582. //创建一个模态窗口(结束)
  2583. getWindowEnd : function(closeButtonTitle, buttons){
  2584. var content = '';
  2585. content += ' <div class="modal-footer">';
  2586. content += ' <button type="button" class="btn btn-default" data-dismiss="modal">';
  2587. content += ' '+closeButtonTitle;
  2588. content += ' </button>';
  2589. content += ' '+buttons;
  2590. content += ' </div>';
  2591. content += ' </div>';
  2592. content += ' </div>';
  2593. content += '</div>';
  2594. return content;
  2595. },
  2596. /**
  2597. * 提示框
  2598. */
  2599. toastZIndex : 1090,
  2600. toastThread : null,
  2601. toastFadeInAnimateTime : 500,
  2602. toastFadeOutAnimateTime : 500,
  2603. openToast : function(content, level, time){
  2604. // default level、time
  2605. level = level?level:'info';
  2606. time = time?time:3000;
  2607. // get the level class
  2608. var levelClass = '';
  2609. if(level=='info') levelClass='text-primary';
  2610. if(level=='warning') levelClass='text-warning';
  2611. if(level=='error') levelClass='text-danger';
  2612. if(level=='success') levelClass='text-success';
  2613. // close other toast div
  2614. clearTimeout($.fn.dlshouwen.grid.tools.toastThread);
  2615. $('.toast').remove();
  2616. // constructs the html content
  2617. var toastContent = '<div class="toast '+levelClass+'" style="z-index:'+$.fn.dlshouwen.grid.tools.toastZIndex+'">'+content+'</div>';
  2618. // append to the ducoment
  2619. $('body').append(toastContent);
  2620. // set the offset
  2621. var x = $(window).width()/2-$('.toast').width()/2-20;
  2622. //toast(x);
  2623. $('.toast').css("left", x);
  2624. // show the div
  2625. $('.toast').fadeIn($.fn.dlshouwen.grid.tools.toastFadeInAnimateTime, function(){
  2626. // callback close
  2627. if(time){
  2628. $.fn.dlshouwen.grid.tools.toastThread = setTimeout($.fn.dlshouwen.grid.tools.removeToast, time);
  2629. }
  2630. });
  2631. },
  2632. //close an toast
  2633. removeToast : function(){
  2634. $('.toast').fadeOut($.fn.dlshouwen.grid.tools.toastFadeOutAnimateTime, function(){
  2635. $('.toast').remove();
  2636. });
  2637. },
  2638. //整理Toast方法
  2639. toast : function(content, level, time){
  2640. $.fn.dlshouwen.grid.tools.openToast(content, level, time);
  2641. },
  2642. //将字符串转换成日期时间,有默认格式
  2643. toDate : function(date, pattern) {
  2644. if (!pattern||pattern == null)
  2645. pattern = 'yyyy-MM-dd hh:mm:ss';
  2646. var compare = {
  2647. 'y+' : 'y',
  2648. 'M+' : 'M',
  2649. 'd+' : 'd',
  2650. 'h+' : 'h',
  2651. 'm+' : 'm',
  2652. 's+' : 's'
  2653. };
  2654. var result = {
  2655. 'y' : '',
  2656. 'M' : '',
  2657. 'd' : '',
  2658. 'h' : '00',
  2659. 'm' : '00',
  2660. 's' : '00'
  2661. };
  2662. var tmp = pattern;
  2663. for ( var k in compare) {
  2664. if (new RegExp('(' + k + ')').test(pattern)) {
  2665. result[compare[k]] = date.substring(tmp.indexOf(RegExp.$1), tmp.indexOf(RegExp.$1) + RegExp.$1.length);
  2666. }
  2667. }
  2668. return new Date(result['y'], result['M'] - 1, result['d'], result['h'], result['m'], result['s']);
  2669. },
  2670. // 格式化时间
  2671. dateFormat : function(value, format){
  2672. if(value==''){
  2673. return '';
  2674. }
  2675. if(value.time){
  2676. value = new Date(value.time);
  2677. }
  2678. var o = {
  2679. "M+" : value.getMonth()+1, //month
  2680. "d+" : value.getDate(), //day
  2681. "h+" : value.getHours(), //hour
  2682. "m+" : value.getMinutes(), //minute
  2683. "s+" : value.getSeconds(), //second
  2684. "q+" : Math.floor((value.getMonth()+3)/3), //quarter
  2685. "S" : value.getMilliseconds() //millisecond
  2686. };
  2687. if(/(y+)/.test(format)) format=format.replace(RegExp.$1, (value.getFullYear()+"").substr(4 - RegExp.$1.length));
  2688. for(var k in o)if(new RegExp("("+ k +")").test(format))
  2689. format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
  2690. return format;
  2691. },
  2692. //字符串全局替换
  2693. replaceAll : function(s, s1, s2){
  2694. return s.replace(new RegExp(s1, "gm"), s2);
  2695. },
  2696. //判断字符串开始内容
  2697. startsWith : function(str, prefix){
  2698. if(prefix==undefined)
  2699. return false;
  2700. if(str.indexOf(prefix)==0)
  2701. return true;
  2702. return false;
  2703. },
  2704. //判断字符串结束内容
  2705. endsWith : function(str, suffix){
  2706. if(suffix==undefined)
  2707. return false;
  2708. if(str.lastIndexOf(suffix)==str.length-suffix.length)
  2709. return true;
  2710. return false;
  2711. },
  2712. //字符串不区分大小写的比较
  2713. equalsIgnoreCase : function(str1, str2){
  2714. return (new String(str1.toLowerCase()) == (new String(str2)).toLowerCase());
  2715. },
  2716. //数字格式化函数[#,0格式]
  2717. numberFormat : function(number, pattern){
  2718. var negFlag = "false";
  2719. var str = Number(number).toString();
  2720. if (str.indexOf("-")==0){
  2721. negFlag = "true";
  2722. str = str.replace("-","");
  2723. number = -number;
  2724. }
  2725. var strInt;
  2726. var strFloat;
  2727. var formatInt;
  2728. var formatFloat;
  2729. if($.trim(str)=="")
  2730. return "";
  2731. //判断模式串是否有小数格式
  2732. if(/\./g.test(pattern)){
  2733. formatInt = pattern.split('.')[0];
  2734. formatFloat = pattern.split('.')[1];
  2735. }else{
  2736. formatInt = pattern;
  2737. formatFloat = null;
  2738. }
  2739. if(/\./g.test(str)){
  2740. //如果字符串有小数
  2741. if(formatFloat!=null){
  2742. var tempFloat = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
  2743. strInt = (Math.floor(number)+Math.floor(tempFloat)).toString();
  2744. strFloat = /\./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';
  2745. }else{
  2746. strInt = Math.round(number).toString();
  2747. strFloat = '0';
  2748. }
  2749. }else{
  2750. strInt = str;
  2751. strFloat = '0';
  2752. }
  2753. //处理整数数位的格式化
  2754. if(formatInt!=null){
  2755. var outputInt = '';
  2756. var zero = formatInt.match(/0*$/)[0].length;
  2757. var comma = null;
  2758. if(/,/g.test(formatInt)){
  2759. comma = formatInt.match(/,[^,]*/)[0].length-1;
  2760. }
  2761. var newReg = new RegExp('(\\d{'+comma+'})','g');
  2762. if(strInt.length<zero){
  2763. outputInt = new Array(zero+1).join('0')+strInt;
  2764. outputInt = outputInt.substr(outputInt.length-zero,zero);
  2765. }else{
  2766. outputInt = strInt;
  2767. }
  2768. outputInt = outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1');
  2769. outputInt = outputInt.replace(/^,/,'');
  2770. strInt = outputInt;
  2771. }
  2772. //处理小数位的格式化
  2773. if(formatFloat!=null){
  2774. var outputFloat = '';
  2775. var zero = formatFloat.match(/^0*/)[0].length;
  2776. if(strFloat.length<zero){
  2777. outputFloat = strFloat+new Array(zero+1).join('0');
  2778. var outputFloat1 = outputFloat.substring(0,zero);
  2779. var outputFloat2 = outputFloat.substring(zero,formatFloat.length);
  2780. outputFloat = outputFloat1+outputFloat2.replace(/0*$/,'');
  2781. }else{
  2782. //如果小数是0,而且模式串的小数格式中也不包含0,则只保留整数部分。
  2783. if(strFloat==0&&zero==0)
  2784. outputFloat = '';
  2785. else
  2786. outputFloat = strFloat.substring(0,formatFloat.length);
  2787. }
  2788. strFloat = outputFloat;
  2789. }else{
  2790. if(pattern!='' || (pattern=='' && strFloat=='0'))
  2791. strFloat = '';
  2792. }
  2793. if(negFlag == "true")
  2794. return "-" + strInt+(strFloat==''?'':'.'+strFloat);
  2795. else
  2796. return strInt+(strFloat==''?'':'.'+strFloat);
  2797. }
  2798. }
  2799. };
  2800. })(jQuery);
  2801. //默认属性
  2802. (function($) {
  2803. $.fn.dlshouwen.grid.defaultOptions = {
  2804. grid : {
  2805. lang : 'en',
  2806. ajaxLoad : true,
  2807. loadAll : false,
  2808. loadURL : '',
  2809. datas : null,
  2810. extraWidth : null,
  2811. check : false,
  2812. checkWidth : null,
  2813. exportFileName : 'datas',
  2814. tableStyle : '',
  2815. tableClass : 'table table-bordered table-hover table-responsive',
  2816. showHeader : true,
  2817. gridContainer : 'gridContainer',
  2818. toolbarContainer : 'gridToolBarContainer',
  2819. tools : 'refresh|fastQuery|advanceQuery|export[excel,csv,pdf,txt]|print',
  2820. exportFileName : 'datas',
  2821. exportURL : '/grid/export',
  2822. pageSize : 20,
  2823. pageSizeLimit : [20, 50, 100]
  2824. },
  2825. column : {
  2826. id : 'field',
  2827. title : 'field',
  2828. width : null,
  2829. type : 'string',
  2830. format : null,
  2831. otype : null,
  2832. oformat : null,
  2833. columnStyle : '',
  2834. columnClass : '',
  2835. headerStyle : '',
  2836. headerClass : '',
  2837. hide : false,
  2838. hideType : '',
  2839. extra : true,
  2840. codeTable : null,
  2841. fastQuery : false,
  2842. fastQueryType : '',
  2843. advanceQuery : true,
  2844. 'export' : true,
  2845. print : true,
  2846. resolution : null
  2847. }
  2848. };
  2849. })(jQuery);