UNPKG

yw-common-list

Version:

基于vxe-table封装的自定义可配置表格

1 lines 15 kB
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_utils=_interopRequireWildcard(require("../../tools/utils")),_util=require("./util"),_dom=_interopRequireDefault(require("../../tools/dom"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var l=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function(e){return e?t:l})(e)}function _interopRequireWildcard(e,l){if(!l&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};l=_getRequireWildcardCache(l);if(l&&l.has(e))return l.get(e);var t,r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&((r=n?Object.getOwnPropertyDescriptor(e,t):null)&&(r.get||r.set)?Object.defineProperty(o,t,r):o[t]=e[t]);return o.default=e,l&&l.set(e,o),o}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,l,t){return l in e?Object.defineProperty(e,l,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[l]=t,e}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,l){if(e){if("string"==typeof e)return _arrayLikeToArray(e,l);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,l):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,l){(null==l||l>e.length)&&(l=e.length);for(var t=0,r=new Array(l);t<l;t++)r[t]=e[t];return r}var scrollProcessTimeout,renderType="body";function isOperateMouse(e){return e._isResize||e.lastScrollTime&&Date.now()<e.lastScrollTime+e.delayHover}function renderLine(e,l,t,r){var o=r.row,n=r.column,i=t.treeOpts,a=t.treeConfig,s=t.fullAllDataRowIdData,c=n.slots,n=n.treeNode,s=s[(0,_util.getRowid)(t,o)],o=0,d=0,u=[];return s&&(o=s.level,d=s._index,u=s.items),c&&c.line?t.callSlot(c.line,r,e):a&&n&&i.line?[e("div",{class:"vxe-tree--line-wrapper"},[e("div",{class:"vxe-tree--line",style:{height:"".concat((0,_util.calcTreeLine)(r,u,d),"px"),left:"".concat(o*i.indent+(o?2-(0,_util.getOffsetSize)(t):0)+16,"px")}})])]:[]}function renderColumn(e,P,l,t,r,o,n,i,a,s,W,c,d,D,u){var M,p=l.$listeners,f=l.afterFullData,y=l.tableData,h=l.height,q=l.columnKey,g=l.overflowX,m=l.sYOpts,B=l.scrollXLoad,j=l.scrollYLoad,U=l.highlightCurrentRow,X=l.showOverflow,N=l.isAllOverflow,v=l.align,z=l.currentColumn,F=l.cellClassName,w=l.cellStyle,b=l.mergeList,K=l.spanMethod,V=l.radioOpts,G=l.checkboxOpts,J=l.expandOpts,Q=l.treeOpts,x=l.tooltipOpts,Z=l.mouseConfig,_=l.editConfig,T=l.editOpts,ee=l.editRules,S=l.validOpts,le=l.editStore,O=l.validStore,te=l.tooltipConfig,re=l.rowOpts,oe=l.columnOpts,ne=c.type,ie=c.cellRender,C=c.editRender,ae=c.align,L=c.showOverflow,se=c.className,ce=c.treeNode,le=le.actived,m=m.rHeight,$=re.height,R=C||ie,R=R?_vXETable.default.renderer.get(R.name):null,R=R?R.cellClassName:"",k=x.showAll||x.enabled,x=l.getColumnIndex(c),de=l.getVTColumnIndex(c),ue=(0,_utils.isEnableConf)(C),g=o?c.fixed!==o:c.fixed&&g,L=_xeUtils.default.isUndefined(L)||_xeUtils.default.isNull(L)?X:L,I="ellipsis"===L,H="title"===L,E=!0===L||"tooltip"===L,L=H||E||I,A={},ae=ae||v,v=O.row===i&&O.column===c,ee=ee&&S.showMessage&&("default"===S.message?h||1<y.length:"inline"===S.message),h={colid:c.id},pe=p["cell-mouseenter"],fe=p["cell-mouseleave"],S=C&&_&&"dblclick"===T.trigger,Y={$table:l,seq:t,rowid:r,row:i,rowIndex:a,$rowIndex:s,_rowIndex:W,column:c,columnIndex:x,$columnIndex:d,_columnIndex:de,fixed:o,type:renderType,isHidden:g,level:n,visibleData:f,data:y,items:u};if(!B&&!j||L||(I=L=!0),(H||E||k||pe||te)&&(A.mouseenter=function(e){isOperateMouse(l)||(H?_dom.default.updateCellTitle(e.currentTarget,c):(E||k)&&l.triggerBodyTooltipEvent(e,Y),pe&&l.emitEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},Y),e))}),(E||k||fe||te)&&(A.mouseleave=function(e){isOperateMouse(l)||((E||k)&&l.handleTargetLeaveEvent(e),fe&&l.emitEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},Y),e))}),(G.range||Z)&&(A.mousedown=function(e){l.triggerCellMousedownEvent(e,Y)}),(re.isCurrent||U||p["cell-click"]||C&&_||"row"===J.trigger||"cell"===J.trigger||"row"===V.trigger||"radio"===c.type&&"cell"===V.trigger||"row"===G.trigger||"checkbox"===c.type&&"cell"===G.trigger||"row"===Q.trigger||c.treeNode&&"cell"===Q.trigger)&&(A.click=function(e){l.triggerCellClickEvent(e,Y)}),(S||p["cell-dblclick"])&&(A.dblclick=function(e){l.triggerCellDblclickEvent(e,Y)}),b.length){t=(0,_util.mergeBodyMethod)(b,W,de);if(t){r=t.rowspan,a=t.colspan;if(!r||!a)return null;1<r&&(h.rowspan=r),1<a&&(h.colspan=a)}}else if(K){s=K(Y)||{},x=s.rowspan,o=void 0===x?1:x,n=s.colspan,f=void 0===n?1:n;if(!o||!f)return null;1<o&&(h.rowspan=o),1<f&&(h.colspan=f)}!(g=g&&b&&(1<h.colspan||1<h.rowspan)?!1:g)&&_&&(C||ie)&&(T.showStatus||T.showUpdateStatus)&&(M=l.isUpdateByRow(i,c.field));y=[];return g&&X&&N?y.push(e("div",{class:["vxe-cell",{"c--title":H,"c--tooltip":E,"c--ellipsis":I}],style:{maxHeight:L&&(m||$)?"".concat(m||$,"px"):""}})):(y.push.apply(y,_toConsumableArray(renderLine(e,P,l,Y)).concat([e("div",{class:["vxe-cell",{"c--title":H,"c--tooltip":E,"c--ellipsis":I}],style:{maxHeight:L&&(m||$)?"".concat(m||$,"px"):""},attrs:{title:H?l.getCellLabel(i,c):null}},c.renderCell(e,Y))])),ee&&v&&y.push(e("div",{class:"vxe-cell--valid",style:O.rule&&O.rule.maxWidth?{width:"".concat(O.rule.maxWidth,"px")}:null},[e("span",{class:"vxe-cell--valid-msg"},O.content)]))),e("td",{class:["vxe-body--column",c.id,(_defineProperty(u={},"col--".concat(ae),ae),_defineProperty(u,"col--".concat(ne),ne),_defineProperty(u,"col--last",d===D.length-1),_defineProperty(u,"col--tree-node",ce),_defineProperty(u,"col--edit",ue),_defineProperty(u,"col--ellipsis",L),_defineProperty(u,"fixed--hidden",g),_defineProperty(u,"col--dirty",M),_defineProperty(u,"col--actived",_&&ue&&le.row===i&&(le.column===c||"row"===T.mode)),_defineProperty(u,"col--valid-error",v),_defineProperty(u,"col--current",z===c),u),_utils.default.getClass(R,Y),_utils.default.getClass(se,Y),_utils.default.getClass(F,Y)],key:q||oe.useKey?c.id:d,attrs:h,style:Object.assign({height:L&&(m||$)?"".concat(m||$,"px"):""},w?_xeUtils.default.isFunction(w)?w(Y):w:null),on:A},y)}function renderRows(y,h,g,m,v,w){var b=g.stripe,x=g.rowKey,_=g.highlightHoverRow,T=g.rowClassName,S=g.rowStyle,O=g.editConfig,C=g.showOverflow,L=g.treeConfig,$=g.treeOpts,R=g.editOpts,k=g.treeExpandeds,I=g.scrollYLoad,H=g.editStore,E=g.rowExpandeds,A=g.radioOpts,Y=g.checkboxOpts,P=g.expandColumn,W=g.hasFixedColumn,D=g.fullAllDataRowIdData,M=g.rowOpts,q=[];return v.forEach(function(t,r){var e,l={},o=g.getVTRowIndex(t),n=g.getRowIndex(t),i=((M.isHover||_)&&(l.mouseenter=function(e){isOperateMouse(g)||g.triggerHoverEvent(e,{row:t,rowIndex:n})},l.mouseleave=function(){isOperateMouse(g)||g.clearHoverRow()}),(0,_util.getRowid)(g,t)),a=D[i],s=a?a.level:0,c=a?a.seq:-1,a={$table:g,seq:c,rowid:i,fixed:m,type:renderType,level:s,row:t,rowIndex:n,$rowIndex:r},d=P&&E.length&&-1<E.indexOf(t),u=!1,p=[],f=!1;O&&(f=-1<H.insertList.indexOf(t)),L&&!I&&!$.transform&&k.length&&(u=(p=t[$.children])&&p.length&&-1<k.indexOf(t)),q.push(y("tr",{class:["vxe-body--row",L?"row--level-".concat(s):"",{"row--stripe":b&&(g.getVTRowIndex(t)+1)%2==0,"is--new":f,"is--expand-row":d,"is--expand-tree":u,"row--new":f&&(R.showStatus||R.showInsertStatus),"row--radio":A.highlight&&g.selectRow===t,"row--checked":Y.highlight&&g.isCheckedByCheckboxRow(t)},T?_xeUtils.default.isFunction(T)?T(a):T:""],attrs:{rowid:i},style:S?_xeUtils.default.isFunction(S)?S(a):S:null,key:x||M.useKey||L?i:r,on:l},w.map(function(e,l){return renderColumn(y,h,g,c,i,m,s,t,n,r,o,e,l,w,v)}))),d&&(L&&(e={paddingLeft:"".concat(s*$.indent+30,"px")}),f=P.showOverflow,a=_xeUtils.default.isUndefined(f)||_xeUtils.default.isNull(f)?C:f,d={$table:g,seq:c,column:P,fixed:m,type:renderType,level:s,row:t,rowIndex:n,$rowIndex:r},q.push(y("tr",{class:"vxe-body--expanded-row",key:"expand_".concat(i),style:S?_xeUtils.default.isFunction(S)?S(d):S:null,on:l},[y("td",{class:["vxe-body--expanded-column",{"fixed--hidden":m&&!W,"col--ellipsis":a}],attrs:{colspan:w.length}},[y("div",{class:"vxe-body--expanded-cell",style:e},[P.renderData(y,d)])])]))),u&&q.push.apply(q,_toConsumableArray(renderRows(y,h,g,m,p,w)))}),q}function syncBodyScroll(e,l,t,r,o){(r||o)&&(r&&((0,_util.removeScrollListener)(r),r.scrollTop=t),o&&((0,_util.removeScrollListener)(o),o.scrollTop=t),clearTimeout(scrollProcessTimeout),scrollProcessTimeout=setTimeout(function(){(0,_util.restoreScrollListener)(r),(0,_util.restoreScrollListener)(o)},300))}var _default={name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,size:String,fixedType:String},data:function(){return{wheelTime:null,wheelYSize:0,wheelYInterval:0,wheelYTotal:0}},mounted:function(){var e=this.$parent,l=this.$el,t=this.$refs,r=this.fixedType,e=e.elemStore,r="".concat(r||"main","-body-");e["".concat(r,"wrapper")]=l,e["".concat(r,"table")]=t.table,e["".concat(r,"colgroup")]=t.colgroup,e["".concat(r,"list")]=t.tbody,e["".concat(r,"xSpace")]=t.xSpace,e["".concat(r,"ySpace")]=t.ySpace,e["".concat(r,"emptyBlock")]=t.emptyBlock,this.$el.onscroll=this.scrollEvent,this.$el._onscroll=this.scrollEvent},beforeDestroy:function(){clearTimeout(this.wheelTime),this.$el._onscroll=null,this.$el.onscroll=null},destroyed:function(){var e=this.$parent,l=this.fixedType,e=e.elemStore,l="".concat(l||"main","-body-");e["".concat(l,"wrapper")]=null,e["".concat(l,"table")]=null,e["".concat(l,"colgroup")]=null,e["".concat(l,"list")]=null,e["".concat(l,"xSpace")]=null,e["".concat(l,"ySpace")]=null,e["".concat(l,"emptyBlock")]=null},render:function(t){var e=this._e,l=this.$parent,r=this.fixedColumn,o=this.fixedType,n=l.$scopedSlots,i=l.tId,a=l.tableData,s=l.tableColumn,c=l.visibleColumn,d=l.showOverflow,u=l.keyboardConfig,p=l.keyboardOpts,f=l.mergeList,y=l.spanMethod,h=l.scrollXLoad,g=l.scrollYLoad,m=l.isAllOverflow,v=l.emptyOpts,w=l.mouseConfig,b=l.mouseOpts,x=l.sYOpts;return o&&(s=!(h||g||d&&m)||f.length||y||u&&p.isMerge?c:r),m=n.empty?n.empty.call(this,{$table:l},t):(d=(h=v.name?_vXETable.default.renderer.get(v.name):null)?h.renderEmpty:null)?d.call(this,t,v,{$table:l}):l.emptyText||_conf.default.i18n("vxe.table.emptyText"),t("div",{class:["vxe-table--body-wrapper",o?"fixed-".concat(o,"--wrapper"):"body--wrapper"],attrs:{xid:i},on:g&&"wheel"===x.mode?{wheel:this.wheelEvent}:{}},[o?e():t("div",{class:"vxe-body--x-space",ref:"xSpace"}),t("div",{class:"vxe-body--y-space",ref:"ySpace"}),t("table",{class:"vxe-table--body",attrs:{xid:i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[t("colgroup",{ref:"colgroup"},s.map(function(e,l){return t("col",{attrs:{name:e.id},key:l})})),t("tbody",{ref:"tbody"},renderRows(t,this,l,o,a,s))]),t("div",{class:"vxe-table--checkbox-range"}),w&&b.area?t("div",{class:"vxe-table--cell-area"},[t("span",{class:"vxe-table--cell-main-area"},b.extension?[t("span",{class:"vxe-table--cell-main-area-btn",on:{mousedown:function(e){l.triggerCellExtendMousedownEvent(e,{$table:l,fixed:o,type:renderType})}}})]:null),t("span",{class:"vxe-table--cell-copy-area"}),t("span",{class:"vxe-table--cell-extend-area"}),t("span",{class:"vxe-table--cell-multi-area"}),t("span",{class:"vxe-table--cell-active-area"})]):null,o?null:t("div",{class:"vxe-table--empty-block",ref:"emptyBlock"},[t("div",{class:"vxe-table--empty-content"},m)])])},methods:{scrollEvent:function(e){var l=this.$el,t=this.$parent,r=this.fixedType,o=t.$refs,n=t.elemStore,i=t.highlightHoverRow,a=t.scrollXLoad,s=t.scrollYLoad,c=t.lastScrollTop,d=t.lastScrollLeft,u=t.rowOpts,p=o.tableHeader,f=o.tableBody,y=o.leftBody,h=o.rightBody,g=o.tableFooter,o=o.validTip,p=p?p.$el:null,g=g?g.$el:null,f=f.$el,y=y?y.$el:null,h=h?h.$el:null,m=n["main-body-ySpace"],n=n["main-body-xSpace"],m=(s&&m?m:f).clientHeight,n=(a&&n?n:f).clientWidth,l=l.scrollTop,v=f.scrollLeft,d=v!==d,c=l!==c;t.lastScrollTop=l,t.lastScrollLeft=v,t.lastScrollTime=Date.now(),(u.isHover||i)&&t.clearHoverRow(),y&&"left"===r?syncBodyScroll(t,r,l=y.scrollTop,f,h):h&&"right"===r?syncBodyScroll(t,r,l=h.scrollTop,f,y):(d&&(p&&(p.scrollLeft=f.scrollLeft),g&&(g.scrollLeft=f.scrollLeft)),(y||h)&&(t.checkScrolling(),c&&syncBodyScroll(t,r,l,y,h))),a&&d&&t.triggerScrollXEvent(e),s&&c&&t.triggerScrollYEvent(e),d&&o&&o.visible&&o.updatePlacement(),t.emitEvent("scroll",{type:renderType,fixed:r,scrollTop:l,scrollLeft:v,scrollHeight:f.scrollHeight,scrollWidth:f.scrollWidth,bodyHeight:m,bodyWidth:n,isX:d,isY:c},e)},handleWheel:function(a,s,e,c,d){var u=this,p=this.$parent,l=p.$refs,t=p.elemStore,r=p.scrollYLoad,o=p.scrollXLoad,n=l.tableBody,i=l.leftBody,l=l.rightBody,f=n.$el,y=i?i.$el:null,h=l?l.$el:null,n=this.isPrevWheelTop===s?Math.max(0,this.wheelYSize-this.wheelYTotal):0,i=t["main-body-ySpace"],l=t["main-body-xSpace"],g=(r&&i?i:f).clientHeight,m=(o&&l?l:f).clientWidth;this.isPrevWheelTop=s,this.wheelYSize=Math.abs(s?e-n:e+n),this.wheelYInterval=0,this.wheelYTotal=0,clearTimeout(this.wheelTime),function e(){var l,t,r=u.fixedType,o=u.wheelYTotal,n=u.wheelYSize,i=u.wheelYInterval;o<n&&(n<(o+=i=Math.max(5,Math.floor(1.5*i)))&&(i-=o-n),n=f.scrollTop,l=f.clientHeight,t=f.scrollHeight,f.scrollTop=n=n+i*(s?-1:1),y&&(y.scrollTop=n),h&&(h.scrollTop=n),(s?n<t-l:0<=n)&&(u.wheelTime=setTimeout(e,10)),u.wheelYTotal=o,u.wheelYInterval=i,p.emitEvent("scroll",{type:renderType,fixed:r,scrollTop:f.scrollTop,scrollLeft:f.scrollLeft,scrollHeight:f.scrollHeight,scrollWidth:f.scrollWidth,bodyHeight:g,bodyWidth:m,isX:c,isY:d},a))}()},wheelEvent:function(e){var l=e.deltaY,t=e.deltaX,r=this.$el,o=this.$parent,n=o.$refs,i=o.highlightHoverRow,a=o.scrollYLoad,s=o.lastScrollTop,c=o.lastScrollLeft,d=o.rowOpts,n=n.tableBody.$el,u=l<0;(u?r.scrollTop<=0:r.scrollTop>=r.scrollHeight-r.clientHeight)||(r=r.scrollTop+l,t=(n=n.scrollLeft+t)!==c,(c=r!==s)&&(e.preventDefault(),o.lastScrollTop=r,o.lastScrollLeft=n,o.lastScrollTime=Date.now(),(d.isHover||i)&&o.clearHoverRow(),this.handleWheel(e,u,l,t,c),a&&o.triggerScrollYEvent(e)))}}};exports.default=_default;