GridTable_wev8.js
13.8 KB
define("GridTable_html",function(){return'<div id="NMEC_${id}" class="wev-comp-${compType}">\t<div class="wev-search" {@if normalSearch.hide == true}style="display:none;"{@/if}>\t\t<div class="wev-search-inner">\t\t\t<form action="javascript:void(0)">\t\t\t\t<input type="search" placeholder="${normalSearch.tip}">\t\t\t</form>\t\t\t<div class="wev-placeholder">\t\t\t\t<div class="wev-placeholder-inner wev-ellipsis">\t\t\t\t\t<span class="wev-small-icon wev-icon-search"></span><span class="wev-placeholder-text">$${normalSearch.tip}</span>\t\t\t\t</div>\t\t\t</div>\t\t\t<div class="wev-clear-btn"></div>\t\t\t{@if advancedSearch.enable}\t\t\t<a href="javascript:void(0);" class="wev-search-advanced"><div></div></a>\t\t\t{@/if}\t\t</div>\t\t{@if btns.length}\t\t<div class="wev-list-btn-container">\t\t\t{@each btns as btn, index}\t\t\t<button class="btn">$${btn.text}</button>\t\t\t{@/each} \t\t</div>\t\t{@/if}\t</div>\t$${loading.content}\t<div class="wev-table-view-wrapper wev-gridtable-view-wrapper">\t\t<div class="wev-gridtable-content-wrapper">\t\t\t<div class="wev-gridtable-main-content-wrapper">\t\t\t\t<table style="${options.width}">\t\t\t\t\t<thead>\t\t\t\t\t\t<tr>\t\t\t\t\t\t\t{@each headerView.normal as viewCol}\t\t\t\t\t\t\t<th {@if viewCol.fixedColumn === true}class="wev-gridtable-fixed-col"{@/if} style="${viewCol.width}">$${viewCol.text}</th>\t\t\t\t\t\t\t{@/each} \t\t\t\t\t\t</tr>\t\t\t\t\t</thead>\t\t\t\t</table>\t\t\t\t<div class="wev-gridtable-main-content-body-wrapper" style="${options.height}">\t\t\t\t\t{@if options.autoHeight !== true}\t\t\t\t\t<div class="wev-gridtable-fixed-content-body-wrapper-mapping">\t\t\t\t\t\t\t\t\t\t\t</div>\t\t\t\t\t{@/if}\t\t\t\t\t<table style="${options.width}">\t\t\t\t\t\t<tbody>\t\t\t\t\t\t\t\t\t\t\t\t\t</tbody>\t\t\t\t\t</table>\t\t\t\t</div>\t\t\t</div>\t\t\t\t\t\t<div class="wev-gridtable-fixed-content-wrapper">\t\t\t\t<table>\t\t\t\t\t<thead>\t\t\t\t\t\t<tr>\t\t\t\t\t\t\t{@each headerView.fixed as viewCol}\t\t\t\t\t\t\t<th style="${viewCol.width}">$${viewCol.text}</th>\t\t\t\t\t\t\t{@/each} \t\t\t\t\t\t</tr>\t\t\t\t\t</thead>\t\t\t\t</table>\t\t\t\t<div class="wev-gridtable-fixed-content-body-wrapper" style="${options.height}">\t\t\t\t\t\t\t\t\t</div>\t\t\t\t</div>\t\t</div>\t\t$${moreLoading.content}\t</div></div>'}),define(["mUtil","Component","wev-loading","fieldParseHelper","mApi/popup"],function(w,e,i,b){return e.init(function(t){var m={};e.super(this,t),this.type="GridTable",this.tpl=this.type+"_html",this.css=this.type+"_css",this.keysOfSkipedVarParse=["dataurl"],this.dataload=!0,this.components={loading:new i({delay:300,animation:1}),moreLoading:new i({btn:1,onclick:function(t){m.loadData(t)}})};var o,g=this.viewModel={pageSize:10,showFields:[],normalSearch:{hide:!1,tip:"请输入。。。",fields:[]},advancedSearch:{},btns:[],options:{width:"100%",height:300,fixedColumn:0,groupsum:!1,totalsum:!1,groupsum_title:"小计",totalsum_title:"总计"},readonly:!1};function h(t,e){var i,a=t.toString().split(".")[1],n=e.toString().split(".")[1];return a=a&&a.length||0,n=n&&n.length||0,i=Math.pow(10,Math.max(a,n)),(Math.round(t*i+e*i)/i).toFixed(Math.max(a,n))}function p(t){return function(t){if(!(t=(t+="").replace(/[ ]/g,""))||isNaN(t))return"";var e=t.indexOf("."),i=/(-?\d+)(\d{3})/;if(-1==e)for(;i.test(t);)t=t.replace(i,"$1,$2");else{for(var a=t.substring(0,e),n=t.substring(e+1,t.length);i.test(a);)a=a.replace(i,"$1,$2");t=a+"."+n}return t}(t=t.replace(/\s+/g,"")||"")}this.beforeMount=function(){var t=g.showFields;if(g.headerView={},w.isArray(t)&&t.length){var e=[];t.forEach(function(t){e.push({text:t.text,width:t.width})}),g.headerView.normal=e}if(g.headerView.normal){var i=g.options.fixedColumn||0,a=[];g.headerView.normal.forEach(function(t,e){e<i&&(a.push(t),t.fixedColumn=!0),t.width=w.toPixel(t.width,"width")}),g.headerView.fixed=a}var n=g.options.width;n&&(g.options.width=w.toPixel(n,"width"));var r=g.options.height;g.options.height=r?w.toPixel(r,"max-height"):(g.options.autoHeight=!0,"height:auto")},this.mounted=function(){var a=this;if(o=this.$comp,m.refreshList(),m.initSearch(),m.initBtns(this.pageid),-1<=$(window).height()-$(".page-scroller",this.$container).height()&&o.find(".wev-gridtable-main-content-wrapper>table").on("touchmove",function(t){t.preventDefault()}),!g.options.readonly&&(o.find(".wev-gridtable-main-content-body-wrapper>table").on("click","tr:not(.wev-groupsum)",function(){var e=$(this).attr("data-id"),i={};if(m.state.list.every(function(t){return t.id!=e||(i=t,!1)}),g.callback&&w.isFunction(g.callback.click)&&g.callback.click.call(this,i),i.id)if(0==g.options.urltype)g.layoutUrl?$u(g.layoutUrl+"&billid="+i.id):Mobile_NS.getLayoutUrl(g.relate.modeid,1,i.id);else if(i.dataurl){var t;0===(t=i.dataurl).indexOf("javascript")?w.eval(t,a.pageid):$u(t)}}),0===g.options.urltype)){var t=w.getActionUrl("service.FormComponent",{action:"resolveDefaultLayout"});w.getJSON(t,{modelid:g.relate.modeid,appid:g.relate.appid,uitype:1},function(t){g.layoutUrl=t.data||"",require(["mApi/other"])},function(t){})}},this.reload=function(t,e){w.isObject(t)&&$.extend(m.state.dynamicParam,t),m.refreshList(e)},m.state={timestamp:0,pageNo:0,list:[],conditions:{},dynamicParam:{}},m.initSearch=function(){var e=$(".wev-search",this.$comp),i=$("input",e);if(e.on("click.active",".wev-placeholder",function(t){e.addClass("wev-active").removeClass("wev-inactive"),i.focus()}).on("click.clear",".wev-clear-btn",function(){i.val("").focus().triggerHandler("input"),m.state.conditions={}}),i.on("blur",function(){this.value||e.removeClass("wev-active").addClass("wev-inactive")}).on("input",function(){e.toggleClass("wev-has-value",!!this.value)}).on("keyup",function(t){13===t.keyCode&&(m.state.conditions.searchKey=encodeURIComponent(this.value),m.state.conditions.searchFields=JSON.stringify(g.normalSearch.fields||[]),m.refreshList(),this.blur())}),g.advancedSearch.enable){require(["css!listAdvancedSearch_css"]);var a=(new Date).valueOf(),n=this.pageid.split("_").slice(1).join("."),r=this.id;e.on("click.advancedSearch",".wev-search-advanced",function(){require(["mService"],function(t){t.show("search",{_identity:r+"_"+a,id:r,pageid:n,searchid:g.sourceid,conditions:JSON.stringify(g.advancedSearch.fields),title:g.advancedSearch.title})})})}},m.initBtns=function(i){g.btns.length&&(g.btns.forEach(function(t){t.script&&!t.click&&(t.click=w.strToFunc(t.script))}),$(".wev-list-btn-container",o).on("click",".btn",function(){var t=$(this).index(),e=g.btns[t];w.eval(e.click,i)}))},m.refreshList=function(i){var a=this,n=this.components.loading,r=this.components.moreLoading,t=m.state;n.setRefs(this.$comp,"wev-refreshing"),n.show(),t.pageNo=0,t.list=[],m.loadData(function(t,e){n.hide(),r.hide(t,e),i&&i(),w.trigger("dataload",a.pageid,a.id),t&&require(["pullToRefreshHelper"],function(t){var e=o.find(".wev-gridtable-main-content-body-wrapper"),i=e.get(0);new t({el:e.children("table"),container:i,area:i,loadData:m.loadData,loading:a.components.moreLoading})})})},m.loadData=function(l){var p=this.$el,v=(new Date).valueOf(),u=m.state;u.timestamp=v,u.pageNo++;var f=u.pageNo,t="";g.options.groupsum&&g.showFields.length&&(t=g.showFields[0].fieldid);var e=b.parseFieldIds(JSON.stringify(g.showFields)),i={action:"getDatas",searchid:g.sourceid,pageNo:f,pageSize:g.pageSize,fieldparse:e,groupfield:t};$.extend(!0,i,u.dynamicParam);var a=w.getActionUrl(this.type,i,this.pageid);w.getJSON(a,u.conditions,function(t){if(t=t.data,v==u.timestamp){var d=t.fieldMap,s=[],c=[],h=w.containsVariables(g.options.dataurl);t.datas.forEach(function(t){var e={},i=t.keyvalue,a="";1==g.options.urltype&&g.options.dataurl?-1==(a=h?b.replaceVal(g.options.dataurl,t.dataMap):g.options.dataurl).indexOf("javascript:")&&(g.options.isNewLayout||-1!=a.indexOf("&billid=")||-1!=a.indexOf("?billid=")||(a+=(-1==a.indexOf("?")?"?":"&")+"billid="+i)):a="javascript:void(0);",e.id=i,e.dataurl=a,e.dataMap=t.dataMap,s.push(e);var o,l,n,r=(o=t,l=d,n=g.showFields,{id:o.keyvalue,cols:n.map(function(t,e){var i=t.fieldid,a=l[i],n=(o.dataMap,""),r=b.getFieldValue(t,o,l);return r&&(n=r.replace(/<[^>]+>/g,"")),{columnValue:r,columnWidth:w.toPixel(t.width,"width"),cleanValue:n,htmltype:a.fieldhtmltype,type:a.fieldtype,fixedColumn:e<g.options.fixedColumn}})});c.push(r)}),w.concat(u.list,s);var e=["{@each datas as row}",'<tr data-id="${row.id}">',"{@each row.cols as col}",'<td {@if col.fixedColumn === true}class="wev-gridtable-fixed-col"{@/if} style="${col.columnWidth}" data-value="${col.cleanValue}" data-htmltype="${col.htmltype}" data-type="${col.type}">$${col.columnValue}</td>',"{@/each}","</tr>","{@/each}"].join(""),i=w.parseTemplate(e,{datas:c}),a=$(".wev-gridtable-main-content-body-wrapper > table > tbody",p);1==f&&a.html("");var n=$(i);a.append(n),require(["lazyImgHelper"]),m.groupSum(),1==f&&(m.resetGridColumnWidth(),m.initFixedColumn()),m.updateFixedContentColumn();var r=f<t.totalPageCount,o=t.totalSize<=0;l(r,o)}})},m.groupSum=function(){if(g.options.groupsum||g.options.totalsum){var n=g.options.groupsum,t=g.options.totalsum,s=(g.options.fixedColumn,[]),c=[];$(".wev-gridtable-main-content-body-wrapper>table>tbody>tr.wev-groupsum",this.$el).remove(),$(".wev-gridtable-main-content-body-wrapper>table>tbody>tr",this.$el).each(function(t){var e=$(this);if(e.children("td").each(function(t){var e=0,i=!1,a=$(this),n=a.attr("data-htmltype"),r=a.attr("data-type");if("1"==n&&("2"==r||"3"==r?e=1:"4"!=r&&"5"!=r||(e=1,i=!0),0!=e)){var o=a.attr("data-value");if(o=o.replace(/,/g,""),!isNaN(o)&&""!=o){var l=s[t]||"0";l=l.replace(/,/g,""),s[t]=h(l,o);var d=c[t]||"0";d=d.replace(/,/g,""),c[t]=h(d,o),i&&(s[t]=p(s[t]),c[t]=p(c[t]))}}}),n&&e.children("td").first().attr("data-value")!=e.next().children("td").first().attr("data-value")){var i=e.clone(),a=i.children("td");i[0].className="wev-groupsum",a.html("").first().html(g.options.groupsum_title),a.each(function(t){0!==t&&$(this).html(s[t]||"")}),e.after(i),s=[]}});var e=$(".wev-gridtable-main-content-body-wrapper>table>tbody>tr",this.$el).last();if(t&&e.length){var i=e.clone(),a=i.children("td");i[0].className="wev-groupsum",a.html("").first().html(g.options.totalsum_title),a.each(function(t){0!==t&&$(this).html(c[t]||"")}),e.after(i)}}},m.resetGridColumnWidth=function(){var n=[];$(".wev-gridtable-main-content-body-wrapper>table>tbody>tr",this.$el).first().children("td").each(function(){var t=$(this).width();n.push(t)}),$(".wev-gridtable-main-content-wrapper>table>thead>tr",this.$el).first().children("th").each(function(t){var e=$(this),i=n[t];if(null!=i&&void 0!==i&&i!=e.width()){var a=i-function(t){var e=t.css("padding-left")||"";e=e.replace("px",""),e=parseInt(e)||0;var i=t.css("padding-right")||"";return i=i.replace("px",""),i=parseInt(i)||0,e+i}(e);e.css("width",a+"px")}});var t=$(".wev-gridtable-main-content-body-wrapper>table",this.$el).width();$(".wev-gridtable-main-content-body-wrapper",this.$el).width(t)},m.fixedColumnWidth=0,m.initFixedColumn=function(){var t=this,e=g.options.fixedColumn,i=0;$(".wev-gridtable-main-content-wrapper>table>thead>tr",t.$el).first().children("th").each(function(t){t<e&&(i+=$(this).width()+1)}),$(".wev-gridtable-fixed-content-wrapper > table",t.$el).css("width",i+"px"),$(".wev-gridtable-fixed-content-wrapper",t.$el).css("width",i+"px"),$(".wev-gridtable-fixed-content-body-wrapper-mapping",t.$el).css("width",i+"px"),m.fixedColumnWidth=i;var a=$(".wev-gridtable-main-content-wrapper>table>thead>tr",t.$el).first(),n=$(".wev-gridtable-fixed-content-wrapper>table>thead>tr",t.$el).first();if(n.length){var r=a.children("th").eq(0),o=r.height(),l=r.css("height"),d=n.children("th").eq(0),s=d.height(),c=d.css("height");s<o?d.css("height",l):o<s&&r.css("height",c)}if(!g.options.autoHeight){var h=!1,p=null;$(".wev-gridtable-main-content-body-wrapper",t.$el).on("scroll",function(){v||f||(h=!0,p&&clearTimeout(p),$(".wev-gridtable-fixed-content-body-wrapper-mapping",t.$el).show(),$(".wev-gridtable-fixed-content-body-wrapper",t.$el).css("visibility","hidden"),$(".wev-gridtable-fixed-content-body-wrapper",t.$el).scrollTop($(this).scrollTop()),p=setTimeout(function(){h=!1},1e3))});var v=!1,u=null;$(".wev-gridtable-fixed-content-body-wrapper",t.$el).on("scroll",function(){h||f||(v=!0,u&&clearTimeout(u),$(".wev-gridtable-fixed-content-body-wrapper-mapping",t.$el).show(),$(this).css("visibility","hidden"),$(".wev-gridtable-main-content-body-wrapper",t.$el).scrollTop($(this).scrollTop()),u=setTimeout(function(){v=!1},1e3))});var f=!1,w=null;$(".wev-gridtable-main-content-wrapper",t.$el).on("scroll",function(){f=!0,w&&clearTimeout(w),$(".wev-gridtable-fixed-content-body-wrapper",t.$el).css("visibility","visible"),$(".wev-gridtable-fixed-content-body-wrapper-mapping",t.$el).hide().css("left",$(this).scrollLeft()+"px"),w=setTimeout(function(){f=!1},100)})}},m.updateFixedContentColumn=function(){var t=g.options.fixedColumn;if(t&&!(t<1)){var e=$(".wev-gridtable-main-content-body-wrapper>table",this.$el).clone();$("tr",e).each(function(){var t=$(this);t.children("td").not(".wev-gridtable-fixed-col").remove(),t.children("td").removeClass("wev-gridtable-fixed-col")}),e.css("width",m.fixedColumnWidth+"px");var i=$(".wev-gridtable-fixed-content-body-wrapper",this.$el);i.find("*").remove(),i.append(e);var s,a=e.clone(),n=$(".wev-gridtable-fixed-content-body-wrapper-mapping",this.$el);n.find("*").remove(),n.append(a),s=this.$el,$(".wev-gridtable-main-content-body-wrapper>table>tbody>tr",s).each(function(t){var e=$(this),i=e.children("td").eq(0),a=i.height(),n=i.css("height"),r=$(".wev-gridtable-fixed-content-body-wrapper>table>tbody>tr",s).eq(t).children("td").eq(0),o=r.height(),l=r.css("height"),d=$(".wev-gridtable-fixed-content-body-wrapper-mapping>table>tbody>tr",s).eq(t).children("td").eq(0);d.height(),o<a?(r.css("height",n),d.css("height",n)):a<o&&i.css("height",l)})}},m.refreshList=m.refreshList.bind(this),m.initSearch=m.initSearch.bind(this),m.loadData=m.loadData.bind(this),m.groupSum=m.groupSum.bind(this),m.resetGridColumnWidth=m.resetGridColumnWidth.bind(this),m.initFixedColumn=m.initFixedColumn.bind(this),m.updateFixedContentColumn=m.updateFixedContentColumn.bind(this)})});