GridTable_wev8.js 14.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 wev-btn-custom">$${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","pageExpandHelper","mApi/popup"],function(w,e,i,b,a){return e.init(function(t){var g={};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){g.loadData(t)}})};var o,m=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:"总计",unreadBadge:!1},readonly:!1};function p(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 h(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=m.showFields;if(m.headerView={},w.isArray(t)&&t.length){var e=[];t.forEach(function(t){e.push({text:t.text,width:t.width})}),m.headerView.normal=e}if(m.headerView.normal){var i=m.options.fixedColumn||0,a=[];m.headerView.normal.forEach(function(t,e){e<i&&(a.push(t),t.fixedColumn=!0),t.width=w.toPixel(t.width,"width")}),m.headerView.fixed=a}var n=m.options.width;n&&(m.options.width=w.toPixel(n,"width"));var r=m.options.height;m.options.height=r?w.toPixel(r,"max-height"):(m.options.autoHeight=!0,"height:auto"),m.btns&&(m.btns=m.btns.filter(function(t){return t.id.startsWith("pageexpandBtn")&&(m.pageExtend=!0),!t.id.startsWith("pageexpandBtn")}))},this.mounted=function(){var r=this;if(o=this.$comp,g.refreshList(),g.initSearch(),g.initBtns(),-1<=$(window).height()-$(".page-scroller",this.$container).height()&&o.find(".wev-gridtable-main-content-wrapper>table").on("touchmove",function(t){t.preventDefault()}),!m.options.readonly&&(o.find(".wev-gridtable-main-content-body-wrapper>table").on("click","tr:not(.wev-groupsum)",function(t){if(!$(t.target).closest(".wev-file[data-docid]").length){var e=$(this),i=e.attr("data-id"),a={};if(m.options.unreadBadge&&e.find("span.wev-read-status").length&&"0"==m.options.urltype&&$(".wev-gridtable-main-content-body-wrapper > table > tbody",o).find('tr[data-id="'+i+'"] span.wev-read-status').remove(),g.state.list.every(function(t){return t.id!=i||(a=t,!1)}),m.callback&&w.isFunction(m.callback.click)&&m.callback.click.call(this,a),a.id)if(0==m.options.urltype)m.layoutUrl?$u(m.layoutUrl+"&billid="+a.id):Mobile_NS.getLayoutUrl(m.relate.modeid,1,a.id);else if(a.dataurl){var n;0===(n=a.dataurl).indexOf("javascript")?w.eval(n,r.pageid):$u(n)}}}),0===m.options.urltype)){var t=w.getActionUrl("service.FormComponent",{action:"resolveDefaultLayout"});w.getJSON(t,{modelid:m.relate.modeid,appid:m.relate.appid,uitype:1},function(t){m.layoutUrl=t.data||"",require(["mApi/other"])},function(t){})}},this.reload=function(t,e){g.state.dynamicParam={},w.isObject(t)&&$.extend(g.state.dynamicParam,t),g.refreshList(e)},g.state={timestamp:0,pageNo:0,list:[],conditions:{},dynamicParam:{}},g.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"),g.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&&(g.state.conditions.searchKey=encodeURIComponent(this.value),g.state.conditions.searchFields=JSON.stringify(m.normalSearch.fields||[]),g.refreshList(),this.blur())}),m.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:m.sourceid,conditions:JSON.stringify(m.advancedSearch.fields),title:m.advancedSearch.title})})})}},g.initBtns=function(){var i=this.pageid;if(m.pageExtend){var t={pageid:i,searchid:m.sourceid};a.parsePageExpand(o.find(".wev-search"),this.id,t)}m.btns.length&&(m.btns.forEach(function(t){t.script&&!t.click&&(t.click=w.strToFunc(t.script))}),$(".wev-list-btn-container",o).on("click",".btn.wev-btn-custom",function(){var t=$(this).index(),e=m.btns[t];w.eval(e.click,i)}))},g.refreshList=function(i){var a=this,n=this.components.loading,r=this.components.moreLoading,t=g.state;n.setRefs(this.$comp,"wev-refreshing"),n.show(),t.pageNo=0,t.list=[],g.loadData(function(t,e){n.hide(),r.hide(t,e),i&&i(),w.trigger("dataload",a.pageid,a.id),!t||m.options.autoHeight&&!w.canPullToRefresh(a.id)||require(["pullToRefreshHelper"],function(t){var e=o.find(".wev-gridtable-main-content-body-wrapper"),i=e;m.options.autoHeight&&(i=o.closest(".page-content")),new t({el:e.children("table"),container:i.get(0),loadData:g.loadData,loading:a.components.moreLoading})})})},g.loadData=function(d){var h=this.$el,u=(new Date).valueOf(),v=g.state;v.timestamp=u,v.pageNo++;var f=v.pageNo,t="";m.options.groupsum&&m.showFields.length&&(t=m.showFields[0].fieldid);var e=b.parseFieldIds(JSON.stringify(m.showFields)),i={action:"getDatas",searchid:m.sourceid,pageNo:f,pageSize:m.pageSize,fieldparse:e,groupfield:t,unreadBadge:m.options.unreadBadge};$.extend(!0,i,v.dynamicParam);var a=w.getActionUrl(this.type,i,this.pageid);w.getJSON(a,v.conditions,function(t){if(t=t.data,u==v.timestamp){var l=t.fieldMap,s=[],c=[],p=w.containsVariables(m.options.dataurl);t.datas.forEach(function(t){var e={},i=t.keyvalue,a="";1==m.options.urltype&&m.options.dataurl?-1==(a=p?b.replaceVal(m.options.dataurl,t.dataMap):m.options.dataurl).indexOf("javascript:")&&(m.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,d,n,r=(o=t,d=l,n=m.showFields,{id:o.keyvalue,cols:n.map(function(t,e){var i=t.fieldid,a=d[i],n=(o.dataMap,""),r=b.getFieldValue(t,o,d);return r&&(n=r.replace(/<[^>]+>/g,"")),{columnValue:r,columnWidth:w.toPixel(t.width,"width"),cleanValue:n,htmltype:a.fieldhtmltype,type:a.fieldtype,fixedColumn:e<m.options.fixedColumn,readStatus:o.readStatus}})});c.push(r)}),w.concat(v.list,s);var e=["{@each datas as row}",'<tr data-id="${row.id}">',"{@each row.cols as col,index}",'<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}","{@if index == 0}",'{@if col.readStatus == "1"}','<span class="wev-read-status wev-unread"></span>','{@else if col.readStatus == "2"}','<span class="wev-read-status wev-feedback"></span>',"{@/if}","{@/if}","</td>","{@/each}","</tr>","{@/each}"].join(""),i=w.parseTemplate(e,{datas:c}),a=$(".wev-gridtable-main-content-body-wrapper > table > tbody",h);1==f&&a.html("");var n=$(i);a.append(n),require(["lazyImgHelper"]),g.groupSum(),1==f&&(g.resetGridColumnWidth(),g.initFixedColumn()),g.updateFixedContentColumn();var r=f<t.totalPageCount,o=t.totalSize<=0;d(r,o)}})},g.groupSum=function(){if(m.options.groupsum||m.options.totalsum){var n=m.options.groupsum,t=m.options.totalsum,s=(m.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 d=s[t]||"0";d=d.replace(/,/g,""),s[t]=p(d,o);var l=c[t]||"0";l=l.replace(/,/g,""),c[t]=p(l,o),i&&(s[t]=h(s[t]),c[t]=h(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(m.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(m.options.totalsum_title),a.each(function(t){0!==t&&$(this).html(c[t]||"")}),e.after(i)}}},g.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)},g.fixedColumnWidth=0,g.initFixedColumn=function(){var t=this,e=m.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"),g.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(),d=r.css("height"),l=n.children("th").eq(0),s=l.height(),c=l.css("height");s<o?l.css("height",d):o<s&&r.css("height",c)}if(!m.options.autoHeight){var p=!1,h=null;$(".wev-gridtable-main-content-body-wrapper",t.$el).on("scroll",function(){u||f||(p=!0,h&&clearTimeout(h),$(".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()),h=setTimeout(function(){p=!1},1e3))});var u=!1,v=null;$(".wev-gridtable-fixed-content-body-wrapper",t.$el).on("scroll",function(){p||f||(u=!0,v&&clearTimeout(v),$(".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()),v=setTimeout(function(){u=!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)})}},g.updateFixedContentColumn=function(){var t=m.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",g.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(),d=r.css("height"),l=$(".wev-gridtable-fixed-content-body-wrapper-mapping>table>tbody>tr",s).eq(t).children("td").eq(0);l.height(),o<a?(r.css("height",n),l.css("height",n)):a<o&&i.css("height",d)})}},g.refreshList=g.refreshList.bind(this),g.initSearch=g.initSearch.bind(this),g.loadData=g.loadData.bind(this),g.groupSum=g.groupSum.bind(this),g.resetGridColumnWidth=g.resetGridColumnWidth.bind(this),g.initFixedColumn=g.initFixedColumn.bind(this),g.updateFixedContentColumn=g.updateFixedContentColumn.bind(this),g.initBtns=g.initBtns.bind(this)})});