5 lines
11 KiB
JavaScript
5 lines
11 KiB
JavaScript
![]() |
/**
|
|||
|
* 表格扩展模块
|
|||
|
* date:2019-07-12 License By http://easyweb.vip
|
|||
|
*/
|
|||
|
layui.define(["layer","table","laytpl","form","util","contextMenu"],function(r){var g=layui.jquery;var q=layui.layer;var m=layui.table;var d=layui.laytpl;var c=layui.form;var a=layui.util;var s=layui.contextMenu;var k=layui.device;var b="tb-search";var i="tb-refresh";var j="tb-export";var e="txField_";var p={merges:function(y,A,u,x){if(!y){console.error("table filter not be null");return}if(!A){console.warn("merge indexs not be null");return}if(typeof u==="boolean"){x=u;u=undefined}var t=g('[lay-filter="'+y+'"]+.layui-table-view>.layui-table-box>.layui-table-body>table');var v=t.find(">tbody>tr");t.addClass("layui-table-x");function z(B,G,H){var E=m.cache[B];if(E.length>0){var I,C=1;if(H){I=E[0][H]}else{I=v.eq(0).find("td").eq(G).find(".layui-table-cell").html()}for(var F=1;F<E.length;F++){var J;if(H){J=E[F][H]}else{J=v.eq(F).find("td").eq(G).find(".layui-table-cell").html()}if(J==I){C++;if(F==E.length-1){v.eq(F-C+1).find("td").eq(G).attr("rowspan",C);for(var D=1;D<C;D++){v.eq(F-D+1).find("td").eq(G).attr("del","true")}}}else{v.eq(F-C).find("td").eq(G).attr("rowspan",C);for(var D=1;D<C;D++){v.eq(F-D).find("td").eq(G).attr("del","true")}C=1;I=J}}}}for(var w=0;w<A.length;w++){if(!u){z(y,A[w],undefined)}else{z(y,A[w],u[w])}}v.find('[del="true"]').remove();(x==undefined)&&(x=true);if(x){m.on("sort("+y+")",function(B){p.merges(y,A,u)})}},exportData:function(x){var z=x.cols;var y=x.data;var J=x.fileName;var t=x.expType;var A=x.option;A||(A={});if(k.ie){return q.msg("不支持ie导出")}if(y&&typeof y==="string"){var I=q.msg("加载中..",{icon:16,shade:0.01,time:0});A.url=y;p.loadUrl(A,function(L){q.close(I);x.data=L;p.exportData(x)});return}for(var G=0;G<z.length;G++){for(var F=0;F<z[G].length;F++){if(z[G][F].type==undefined){z[G][F].type="normal"}if(z[G][F].hide==undefined){z[G][F].hide=false}}}var K=[],D=[],B=[];m.eachCols(undefined,function(L,M){if(M.type=="normal"&&!M.hide){K.push(M.title?M.title:"");D.push(M.field?M.field:(e+L))}},z);var E=p.parseTbData(z,p.deepClone(y),true);for(var G=0;G<E.length;G++){var w=[];for(var F=0;F<D.length;F++){var H=E[G][D[F]];if(typeof H=="string"){H=H.replace(/,/g,",")}w.push(H)}B.push(w)}var u=({csv:"text/csv",xls:"application/vnd.ms-excel"})[t];var v=document.createElement("a");var C=function(){var M=[],L=[];layui.each(B,function(O,N){var P=[];layui.each(K,function(Q,R){O==0&&M.push(R||"")});layui.each(m.clearCacheKey(N),function(R,Q){P.push(Q)});L.push(P.join(","))});return K.join(",")+"\r\n"+B.join("\r\n")};v.href="data:"+u+";charset=utf-8,\ufeff"+encodeURIComponent(C());v.download=(J||"table")+"."+(t?t:"xls");document.body.appendChild(v);v.click();document.body.removeChild(v)},exportDataBack:function(v,y,t){y||(y={});if(!t||t.toString().toLowerCase()=="get"){var x="";for(var A in y){if(!x){x="?"+A+"="+y[A]}else{x+=("&"+A+"="+y[A])}}window.open(v+x)}else{var u='<html><body style="display: none;"><form id="eFrom" action="'+v+'" method="'+t+'">';for(var A in y){u+=('<textarea name="'+A+'">'+y[A]+"</textarea>")}u+="</form></body></html>";g("#exportFrame").remove();g("body").append('<iframe id="exportFrame" style="display: none;"></iframe>');var B=document.getElementById("exportFrame");var z=B.contentWindow;var w=z.document;z.focus();w.open();w.write(u);w.close();w.getElementById("eFrom").submit()}},render:function(v){var t=g(v.elem).attr("lay-filter");v.autoSort=false;var u=m.render(v);m.on("sort("+t+")",function(y){var w=y.field,z=y.type;var x=g.extend(v.where,{sort:w,order:z});u.reload({where:x,page:{curr:1}})});return u},renderFront:function(z){var y,w=g(z.elem).attr("lay-filter");z.autoSort=false;for(var v=0;v<z.cols.length;v++){for(var u=0;u<z.cols[v].length;u++){if(z.cols[v][u].templet&&!z.cols[v][u].field){z.cols[v][u].field=e+v+"_"+u}}}if(z.url){var x=p.deepClone(z);x.data=[],x.url="";y=m.render(x);y.reloadUrl=function(C){var B=p.deepClone(z);C&&(B=g.extend(B,C));var A=q.msg("加载中..",{icon:16,shade:0.01,time:0});p.loadUrl(B,function(D){q.close(A);p.parseTbData(B.cols,D);p.putTbData(w,D);g("input["+b+'="'+w+'"]').val("");window.tbX.cacheSearch[w]=undefined;y.reload({url:"",
|