ajaxgrid.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. $(function(){
  2. $("a.link.search.ajax").unbind("click");
  3. });
  4. //处理删除一行
  5. function goPageAjax(obj,n,tableIdCode){
  6. var url = $("#_nav"+tableIdCode).attr('href');
  7. url = replacecurrentPage(url,n,tableIdCode);
  8. //在page.ftl中,$("#oldPageSize"+tableIdCode)的值被设为当前的分页大小
  9. url = replagePageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
  10. url = replageOldPageSize(url,$("#oldPageSize"+tableIdCode).val(),tableIdCode);
  11. updateAjax(obj,url);
  12. }
  13. function firstAjax(obj,tableIdCode){
  14. goPageAjax(obj,1,tableIdCode);
  15. }
  16. function lastAjax(obj,tableIdCode){
  17. var lastPage=parseInt($("#totalPage"+tableIdCode).val());
  18. if(lastPage<=0) return;
  19. goPageAjax(obj,lastPage,tableIdCode);
  20. }
  21. function previousAjax(obj,tableIdCode){
  22. var currentPage=parseInt($("#currentPage"+tableIdCode).val());
  23. currentPage-=1;
  24. if(currentPage<1)currentPage=1;
  25. goPageAjax(obj,currentPage,tableIdCode);
  26. }
  27. function nextAjax(obj,tableIdCode){
  28. var currentPage=parseInt($("#currentPage"+tableIdCode).val());
  29. var totalPage=parseInt($("#totalPage"+tableIdCode).val());
  30. if(totalPage<=0) return;
  31. currentPage+=1;
  32. if(currentPage>totalPage)currentPage=totalPage;
  33. goPageAjax(obj,currentPage,tableIdCode);
  34. }
  35. function changePageSizeAjax(obj,tableIdCode){
  36. var url=$("#_nav"+tableIdCode).attr('href');
  37. url = replagePageSize(url,obj.value,tableIdCode);
  38. url = replacecurrentPage(url,$("#currentPage"+tableIdCode).val(),tableIdCode);
  39. var container = $(obj).closest("div[ajax='ajax']");
  40. updateAjax(obj,url);
  41. }
  42. /**
  43. * 跳转至第n页
  44. */
  45. function jumpToAjax(obj,tableIdCode){
  46. var currentPage=$("#navNum"+tableIdCode).val();
  47. var str=/^[1-9]\d*$/;
  48. if(str.test(currentPage)){
  49. goPageAjax(obj,currentPage,tableIdCode);
  50. }else{
  51. $.ligerDialog.error("非法的页码!");
  52. $("#navNum"+tableIdCode).focus();
  53. }
  54. }
  55. function refreshAjax(obj,url){
  56. //把锚点标记先移除出来
  57. var index=url.indexOf("#");
  58. if(index!=-1){
  59. url=url.substring(0,index);
  60. }
  61. updateAjax(obj,url);
  62. }
  63. //组件中的点击事件
  64. function linkAjax(obj){
  65. var $obj = $(obj);
  66. var url=$obj.attr("action");
  67. updateAjax(obj,url);
  68. }
  69. function handlerSearchAjax(obj){
  70. var form = $(obj).closest("div.panel-top").find("form[name='searchForm']");
  71. //验证是否有效的规则
  72. var rtn=form.valid();
  73. if(!rtn){
  74. $.ligerDialog.warn("请检查输入查询条件是否有效!");
  75. return;
  76. }
  77. var href=form.attr("action");
  78. updateAjax(obj,href);
  79. }
  80. function updateAjax(obj,url){
  81. //查询参数
  82. var searchForm = $("div.panel-top").find("form[name='searchForm']");
  83. var params = serializeObject(searchForm);
  84. //自定义显示的最外层Div
  85. var container = $(obj).closest("div[ajax='ajax']");
  86. //自定义显示组件的ID
  87. var displayId=container.attr("displayId");
  88. var filterKey=container.attr("filterKey");
  89. params.__displayId=displayId;
  90. params.__filterKey__ = filterKey;
  91. $.ligerDialog.waitting("加载中...");
  92. //提交到后台,取得自更新后的Html元素,并替换掉之前的html元素
  93. $.post(url,params,function(data){
  94. $.ligerDialog.closeWaitting();
  95. if(data.success){
  96. container.replaceWith(data.html);
  97. initReplaceHtml();
  98. }else{
  99. $.ligerDialog.err( "提示","出错了",data.msg);
  100. }
  101. });
  102. }
  103. function initReplaceHtml(){
  104. //初始化查询
  105. handleAjaxSearchKeyPress();
  106. //初始化单选
  107. initDisplaytag();
  108. $.initRowOps();
  109. $.initAbsoulteInTop();
  110. //初始化查询
  111. $.initFoldBox();
  112. try{
  113. //初始化导出菜单
  114. Export.initExportMenu();
  115. }catch(e){
  116. }
  117. };
  118. /**
  119. * 处理回车查询
  120. */
  121. function handleAjaxSearchKeyPress(){
  122. $(".panel-search :input").keypress(function(e) {
  123. if( e.keyCode == 13){//回车
  124. $("a.link.ajaxSearch").click();
  125. }else if(e.keyCode == 27){//ESC
  126. var searchForm = $("#searchForm");
  127. if(searchForm)
  128. searchForm[0].reset();
  129. }
  130. })
  131. };
  132. /**
  133. * 序列化查询参数
  134. * @param {} form
  135. * @return {}
  136. */
  137. function serializeObject(form){
  138. var o = {};
  139. var a = $(form).serializeArray();
  140. $.each(a, function() {
  141. if (o[this.name]) {
  142. if (!o[this.name].push) {
  143. o[this.name] = [o[this.name]];
  144. }
  145. o[this.name].push(this.value || '');
  146. } else {
  147. o[this.name] = this.value || '';
  148. }
  149. });
  150. return o;
  151. }
  152. /**
  153. * 打开窗口链接
  154. * @param {} obj
  155. * @param {} width
  156. * @param {} height
  157. * @param {} isFull
  158. */
  159. function openLinkDialog(conf){
  160. conf = conf || {};
  161. var obj =conf.scope||this;
  162. var width= conf.width||800;
  163. var height=conf.height||600;
  164. var isFull =conf.isFull||false;
  165. var title =conf.title||'新增';
  166. var isStart = conf.isStart||false;
  167. var param = conf.param||{};//参数
  168. if(isFull){
  169. height=screen.availHeight-35;
  170. width=screen.availWidth-5;
  171. }
  172. if(isStart){
  173. $.ligerDialog.warn("请先绑定流程!");
  174. return;
  175. }
  176. var url=$(obj).attr("action");
  177. url=url.getNewUrl();
  178. DialogUtil.open({
  179. height:height,
  180. width: width,
  181. title : title,
  182. url: url,
  183. param:param,
  184. sucCall:function(){
  185. //刷新原来的当前的页面信息
  186. locationPrarentPage();
  187. location.href=location.href.getNewUrl();
  188. }
  189. });
  190. /*//刷新原来的当前的页面信息
  191. locationPrarentPage();*/
  192. /*if(rtn!=undefined){
  193. location.href=location.href.getNewUrl();
  194. }*/
  195. }
  196. //当执行返回内容时,把当前页面按本次设置的刷新一次
  197. function locationPrarentPage(){
  198. var btnloadDiv = $("div.l-bar-btnload"); //有刷新样式的DIV
  199. $("a",btnloadDiv).each(function(){ //有刷新样式的DIV的历遍超链接
  200. var aLink=$(this);
  201. var onclickStr = aLink.attr("onclick");
  202. if(onclickStr.indexOf("refreshAjax")>-1){
  203. aLink.click();
  204. };
  205. });
  206. }
  207. function datePicker(obj,type){
  208. if('yyyy-MM-dd'==type){
  209. WdatePicker({dateFmt:'yyyy-MM-dd',alwaysUseStartDate:true});
  210. }else{
  211. WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',alwaysUseStartDate:true});
  212. }
  213. $(obj).blur();
  214. }
  215. function linkSortAjax(obj,tableIdCode){
  216. var $obj = $(obj);
  217. var url=$obj.attr("action");
  218. var sortField=$obj.attr("sort");
  219. var orderSeq="DESC";
  220. var curSortField=$("#sortField"+tableIdCode).val();
  221. var curOrderSeq=$("#orderSeq"+tableIdCode).val();
  222. if(sortField==curSortField){
  223. if(curOrderSeq=="DESC"){
  224. orderSeq="ASC";
  225. }
  226. }
  227. url = replaceOrderSeq(url,orderSeq,tableIdCode);
  228. url = replaceSortField(url,sortField,tableIdCode);
  229. updateAjax(obj,url);
  230. }
  231. /**
  232. * 替换url中的sortField参数,用于排序显示
  233. */
  234. function replaceSortField(url,sortField,tableIdCode){
  235. //把锚点标记先移除出来
  236. var index=url.indexOf("#");
  237. if(index!=-1){
  238. url=url.substring(0,index);
  239. }
  240. var sortFieldParam=tableIdCode+'s';
  241. //查询的页码需要替换
  242. var reg=new RegExp(sortFieldParam + '=\\w*');
  243. if(reg.test(url)){
  244. url=url.replace(reg,sortFieldParam+'='+sortField);
  245. }else if(url.indexOf('?')!=-1){
  246. url+='&'+sortFieldParam+'='+sortField;
  247. }else{
  248. url+='?'+sortFieldParam+'='+sortField;
  249. }
  250. return url;
  251. }
  252. /**
  253. * 替换url中的orderSeq参数,用于排序显示
  254. */
  255. function replaceOrderSeq(url,orderSeq,tableIdCode){
  256. //把锚点标记先移除出来
  257. var index=url.indexOf("#");
  258. if(index!=-1){
  259. url=url.substring(0,index);
  260. }
  261. var orderSeqParam=tableIdCode+'o';
  262. //查询的页码需要替换
  263. var reg=new RegExp(orderSeqParam + '=\\w*');
  264. if(reg.test(url)){
  265. url=url.replace(reg,orderSeqParam+'='+orderSeq);
  266. }else if(url.indexOf('?')!=-1){
  267. url+='&'+orderSeqParam+'='+orderSeq;
  268. }else{
  269. url+='?'+orderSeqParam+'='+orderSeq;
  270. }
  271. return url;
  272. }