vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 4.66 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var cellType="footer";function mergeFooterMethod(e,t,o){for(var l=0;l<e.length;l++){var r=e[l],n=r.row,a=r.col,c=r.rowspan,i=r.colspan;if(-1<a&&-1<n&&c&&i){if(n===t&&a===o)return{rowspan:c,colspan:i};if(n<=t&&t<n+c&&a<=o&&o<a+i)return{rowspan:0,colspan:0}}}}var _default={name:"VxeTableFooter",props:{footerData:Array,tableColumn:Array,fixedColumn:Array,fixedType:String,size:String},mounted:function(){var e=this.$parent,t=this.$el,o=this.$refs,l=this.fixedType,r=e.elemStore,n="".concat(l||"main","-footer-");r["".concat(n,"wrapper")]=t,r["".concat(n,"table")]=o.table,r["".concat(n,"colgroup")]=o.colgroup,r["".concat(n,"list")]=o.tfoot,r["".concat(n,"xSpace")]=o.xSpace},render:function(O){var e=this._e,D=this.$parent,A=this.fixedType,t=this.fixedColumn,M=this.tableColumn,X=this.footerData,j=D.$listeners,o=D.tId,l=D.footerRowClassName,q=D.footerCellClassName,r=D.footerRowStyle,N=D.footerCellStyle,R=D.footerAlign,U=D.mergeFooterList,V=D.footerSpanMethod,z=D.align,B=D.scrollXLoad,H=D.columnKey,K=D.showFooterOverflow,W=D.currentColumn,Y=D.overflowX,n=D.scrollbarWidth,G=D.tooltipOpts;return U.length&&V||(A&&K?M=t:B&&A&&(M=t)),O("div",{class:["vxe-table--footer-wrapper",A?"fixed-".concat(A,"--wrapper"):"body--wrapper"],attrs:{"data-tid":o},on:{scroll:this.scrollEvent}},[A?e():O("div",{class:"vxe-body--x-space",ref:"xSpace"}),O("table",{class:"vxe-table--footer",attrs:{"data-tid":o,cellspacing:0,cellpadding:0,border:0},ref:"table"},[O("colgroup",{ref:"colgroup"},M.map(function(e,t){return O("col",{attrs:{name:e.id},key:t})}).concat(n?[O("col",{attrs:{name:"col_gutter"}})]:[])),O("tfoot",{ref:"tfoot"},X.map(function(P,k){var E=k;return O("tr",{class:["vxe-footer--row",l?_ctor.default.isFunction(l)?l({$table:D,_rowIndex:k,$rowIndex:E,fixed:A,type:cellType}):l:""],style:r?_ctor.default.isFunction(r)?r({$table:D,_rowIndex:k,$rowIndex:E,fixed:A,type:cellType}):r:null},M.map(function(t,e){var o,l=t.type,r=t.showFooterOverflow,n=t.footerAlign,a=t.align,c=t.footerClassName,i=G.enabled,s=t.children&&t.children.length,d=A?t.fixed!==A&&!s:t.fixed&&Y,f=_ctor.default.isUndefined(r)||_ctor.default.isNull(r)?K:r,u=n||a||R||z,p="ellipsis"===f,v="title"===f,x=!0===f||"tooltip"===f,m=v||x||p,g={"data-colid":t.id},y={},b=D.getColumnIndex(t),_=D.getVTColumnIndex(t),h={$table:D,_rowIndex:k,$rowIndex:E,column:t,columnIndex:b,$columnIndex:e,_columnIndex:_,itemIndex:_,items:P,fixed:A,type:cellType,data:X};if(B&&!m&&(p=m=!0),(v||x||i)&&(y.mouseenter=function(e){v?_tools.DomTools.updateCellTitle(e.currentTarget,t):(x||i)&&D.triggerFooterTooltipEvent(e,h)}),(x||i)&&(y.mouseleave=function(e){(x||i)&&D.handleTargetLeaveEvent(e)}),j["footer-cell-click"]&&(y.click=function(e){D.emitEvent("footer-cell-click",Object.assign({cell:e.currentTarget},h),e)}),j["footer-cell-dblclick"]&&(y.dblclick=function(e){D.emitEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},h),e)}),U.length){var w=mergeFooterMethod(U,k,_);if(w){var T=w.rowspan,$=w.colspan;if(!T||!$)return null;1<T&&(g.rowspan=T),1<$&&(g.colspan=$)}}else if(V){var C=V(h)||{},I=C.rowspan,S=void 0===I?1:I,F=C.colspan,L=void 0===F?1:F;if(!S||!L)return null;1<S&&(g.rowspan=S),1<L&&(g.colspan=L)}return O("td",{class:["vxe-footer--column",t.id,(o={},_defineProperty(o,"col--".concat(u),u),_defineProperty(o,"col--".concat(l),l),_defineProperty(o,"col--last",e===M.length-1),_defineProperty(o,"fixed--hidden",d),_defineProperty(o,"col--ellipsis",m),_defineProperty(o,"col--current",W===t),o),_tools.UtilTools.getClass(c,h),_tools.UtilTools.getClass(q,h)],attrs:g,style:N?_ctor.default.isFunction(N)?N(h):N:null,on:y,key:H?t.id:e},[O("div",{class:["vxe-cell",{"c--title":v,"c--tooltip":x,"c--ellipsis":p}]},t.renderFooter(O,h))])}).concat(n?[O("td",{class:"col--gutter"})]:[]))}))])])},methods:{scrollEvent:function(e){var t=this.$parent,o=this.fixedType,l=t.$refs,r=t.scrollXLoad,n=t.triggerScrollXEvent,a=t.lastScrollLeft,c=l.tableHeader,i=l.tableBody,s=l.tableFooter,d=l.validTip,f=c?c.$el:null,u=s?s.$el:null,p=i.$el,v=u.scrollLeft,x=v!==a;t.lastScrollLeft=v,t.lastScrollTime=Date.now(),f&&(f.scrollLeft=v),p&&(p.scrollLeft=v),r&&x&&n(e),x&&d&&d.visible&&d.updatePlacement(),t.emitEvent("scroll",{type:cellType,fixed:o,scrollTop:p.scrollTop,scrollLeft:v,isX:x,isY:!1},e)}}};exports.default=_default;