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