UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 19.2 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _table=_interopRequireDefault(require("../../table")),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=_interopRequireDefault(require("../../mixins/size")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_tools=require("../../tools"),_dom=require("../../tools/src/dom");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_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(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(o="Object"===o&&t.constructor?t.constructor.name:o)||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _iterableToArray(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,r=new Array(e);o<e;o++)r[o]=t[o];return r}function ownKeys(e,t){var o,r=Object.keys(e);return Object.getOwnPropertySymbols&&(o=Object.getOwnPropertySymbols(e),t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)),r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))})}return e}function _defineProperty(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}var methods={},propKeys=Object.keys(_table.default.props);function renderDefaultForm(t,e){var o=e.$scopedSlots,r=e.proxyConfig,i=e.proxyOpts,n=e.formData,s=e.formConfig,a=e.formOpts;if((0,_tools.isEnableConf)(s)&&a.items&&a.items.length){var l,c={};return a.inited||(a.inited=!0,l=i.beforeItem,i&&l&&a.items.forEach(function(t){l.call(e,{$grid:e,item:t})})),a.items.forEach(function(t){_xeUtils.default.each(t.slots,function(t){_xeUtils.default.isFunction(t)||o[t]&&(c[t]=o[t])})}),[t("vxe-form",{props:Object.assign({},a,{data:r&&i.form?n:a.data}),on:{submit:e.submitEvent,reset:e.resetEvent,"submit-invalid":e.submitInvalidEvent,"toggle-collapse":e.togglCollapseEvent},scopedSlots:c})]}return[]}function getFuncSlot(t,e,o){t=t.$scopedSlots,o=e[o];if(o){if(!_xeUtils.default.isString(o))return o;if(t[o])return t[o];"development"===process.env.NODE_ENV&&_tools.UtilTools.error("vxe.error.notSlot",[o])}return null}function getToolbarSlots(t){var e=t.$scopedSlots,o=t.toolbarOpts.slots,r={};return"development"===process.env.NODE_ENV&&(!e.buttons||o&&"buttons"===o.buttons||_tools.UtilTools.warn("vxe.error.reqProp",["toolbar-config.slots.buttons"]),!e.tools||o&&"tools"===o.tools||_tools.UtilTools.warn("vxe.error.reqProp",["toolbar-config.slots.tools"])),o&&(e=getFuncSlot(t,o,"buttons"),o=getFuncSlot(t,o,"tools"),e&&(r.buttons=e),o&&(r.tools=o)),r}function getPagerSlots(t){var e,o=t.pagerOpts.slots,r={};return o&&(e=getFuncSlot(t,o,"left"),o=getFuncSlot(t,o,"right"),e&&(r.left=e),o&&(r.right=o)),r}function getTableOns(i){var t=i.$listeners,e=i.proxyConfig,o=i.proxyOpts,n={};return _xeUtils.default.each(t,function(t,r){n[r]=function(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];i.$emit.apply(i,[r].concat(e))}}),e&&(o.sort&&(n["sort-change"]=i.sortChangeEvent),o.filter&&(n["filter-change"]=i.filterChangeEvent)),n}Object.keys(_table.default.methods).forEach(function(e){methods[e]=function(){var t;return this.$refs.xTable&&(t=this.$refs.xTable)[e].apply(t,arguments)}});var _default2={name:"VxeGrid",mixins:[_size.default],props:_objectSpread(_objectSpread({},_table.default.props),{},{columns:Array,pagerConfig:[Boolean,Object],proxyConfig:Object,toolbar:[Boolean,Object],toolbarConfig:[Boolean,Object],formConfig:[Boolean,Object],zoomConfig:Object,size:{type:String,default:function(){return _conf.default.grid.size||_conf.default.size}}}),provide:function(){return{$xegrid:this}},data:function(){return{tableLoading:!1,isZMax:!1,tableData:[],pendingRecords:[],filterData:[],formData:{},sortData:[],tZindex:0,tablePage:{total:0,pageSize:10,currentPage:1}}},computed:{isMsg:function(){return!1!==this.proxyOpts.message},proxyOpts:function(){return Object.assign({},_conf.default.grid.proxyConfig,this.proxyConfig)},pagerOpts:function(){return Object.assign({},_conf.default.grid.pagerConfig,this.pagerConfig)},formOpts:function(){return Object.assign({},_conf.default.grid.formConfig,this.formConfig)},toolbarOpts:function(){return Object.assign({},_conf.default.grid.toolbarConfig,this.toolbarConfig||this.toolbar)},zoomOpts:function(){return Object.assign({},_conf.default.grid.zoomConfig,this.zoomConfig)},renderStyle:function(){return this.isZMax?{zIndex:this.tZindex}:null},tableExtendProps:function(){var e=this,o={};return propKeys.forEach(function(t){o[t]=e[t]}),o},tableProps:function(){var t=this.isZMax,e=this.seqConfig,o=this.pagerConfig,r=this.loading,i=this.editConfig,n=this.proxyConfig,s=this.proxyOpts,a=this.tableExtendProps,l=this.tableLoading,c=this.tablePage,u=this.tableData,d=Object.assign({},a);return t&&(a.maxHeight?d.maxHeight="auto":d.height="auto"),n&&(d.loading=r||l,d.data=u,d.rowClassName=this.handleRowClassName,s.seq&&(0,_tools.isEnableConf)(o)&&(d.seqConfig=Object.assign({},e,{startIndex:(c.currentPage-1)*c.pageSize}))),i&&(d.editConfig=Object.assign({},i,{activeMethod:this.handleActiveMethod})),d}},watch:{columns:function(t){var e=this;this.$nextTick(function(){return e.loadColumn(t)})},toolbar:function(t){t&&this.initToolbar()},toolbarConfig:function(t){t&&this.initToolbar()},proxyConfig:function(){this.initProxy()},pagerConfig:function(){this.initPages()}},created:function(){var t=this.data,e=this.formOpts,o=this.proxyOpts;this.proxyConfig&&(t||o.form&&e.data)&&console.error("[vxe-grid] There is a conflict between the props proxy-config and data."),"development"===process.env.NODE_ENV&&(this.toolbar&&_tools.UtilTools.warn("vxe.error.delProp",["grid.toolbar","grid.toolbar-config"]),this.toolbarConfig&&!_xeUtils.default.isObject(this.toolbarConfig)&&_tools.UtilTools.warn("vxe.error.errProp",["grid.toolbar-config=".concat(this.toolbarConfig),"grid.toolbar-config={}"])),_tools.GlobalEvent.on(this,"keydown",this.handleGlobalKeydownEvent)},mounted:function(){this.columns&&this.columns.length&&this.loadColumn(this.columns),this.initToolbar(),this.initPages(),this.initProxy()},destroyed:function(){_tools.GlobalEvent.off(this,"keydown")},render:function(t){var e,o=this.$scopedSlots,r=this.vSize,i=this.isZMax,n=!(!o.form&&!(0,_tools.isEnableConf)(this.formConfig)),s=!!(o.toolbar||(0,_tools.isEnableConf)(this.toolbarConfig)||this.toolbar),a=!(!o.pager&&!(0,_tools.isEnableConf)(this.pagerConfig));return t("div",{class:["vxe-grid",(_defineProperty(e={},"size--".concat(r),r),_defineProperty(e,"is--animat",!!this.animat),_defineProperty(e,"is--round",this.round),_defineProperty(e,"is--maximize",i),_defineProperty(e,"is--loading",this.loading||this.tableLoading),e)],style:this.renderStyle},[n?t("div",{ref:"formWrapper",class:"vxe-grid--form-wrapper"},o.form?o.form.call(this,{$grid:this},t):renderDefaultForm(t,this)):null,s?t("div",{ref:"toolbarWrapper",class:"vxe-grid--toolbar-wrapper"},o.toolbar?o.toolbar.call(this,{$grid:this},t):[t("vxe-toolbar",{props:this.toolbarOpts,ref:"xToolbar",scopedSlots:getToolbarSlots(this)})]):null,o.top?t("div",{ref:"topWrapper",class:"vxe-grid--top-wrapper"},o.top.call(this,{$grid:this},t)):null,t("vxe-table",{props:this.tableProps,on:getTableOns(this),scopedSlots:o,ref:"xTable"}),o.bottom?t("div",{ref:"bottomWrapper",class:"vxe-grid--bottom-wrapper"},o.bottom.call(this,{$grid:this},t)):null,a?t("div",{ref:"pagerWrapper",class:"vxe-grid--pager-wrapper"},o.pager?o.pager.call(this,{$grid:this},t):[t("vxe-pager",{props:_objectSpread(_objectSpread({},this.pagerOpts),this.proxyConfig?this.tablePage:{}),on:{"page-change":this.pageChangeEvent},scopedSlots:getPagerSlots(this)})]):null])},methods:_objectSpread(_objectSpread({},methods),{},{callSlot:function(t,e,o,r){if(t){var i=this.$scopedSlots;if(_xeUtils.default.isString(t)&&(t=i[t]||null),_xeUtils.default.isFunction(t))return t.call(this,e,o,r)}return[]},getParentHeight:function(){var t=this.$el;return(this.isZMax?_tools.DomTools.getDomNode().visibleHeight:_xeUtils.default.toNumber(getComputedStyle(t.parentNode).height))-this.getExcludeHeight()},getExcludeHeight:function(){var t=this.$refs,e=this.$el,o=this.isZMax,r=this.height,i=t.formWrapper,n=t.toolbarWrapper,s=t.topWrapper,a=t.bottomWrapper,t=t.pagerWrapper;return(o||"auto"!==r?0:(0,_dom.getPaddingTopBottomSize)(e.parentNode))+(0,_dom.getPaddingTopBottomSize)(e)+(0,_dom.getOffsetHeight)(i)+(0,_dom.getOffsetHeight)(n)+(0,_dom.getOffsetHeight)(s)+(0,_dom.getOffsetHeight)(a)+(0,_dom.getOffsetHeight)(t)},handleRowClassName:function(e){var t=this.rowClassName,o=[];return this.pendingRecords.some(function(t){return t===e.row})&&o.push("row--pending"),o.push(t?_xeUtils.default.isFunction(t)?t(e):t:""),o},handleActiveMethod:function(t){var e=this.editConfig,e=e?e.activeMethod:null;return-1===this.pendingRecords.indexOf(t.row)&&(!e||e(t))},initToolbar:function(){var o=this;this.$nextTick(function(){var t=o.$refs,e=t.xTable,t=t.xToolbar;e&&t&&e.connect(t)})},initPages:function(){var t=this.tablePage,e=this.pagerConfig,o=this.pagerOpts,r=o.currentPage,o=o.pageSize;e&&(r&&(t.currentPage=r),o&&(t.pageSize=o))},initProxy:function(){var o,t=this,e=this.proxyInited,r=this.proxyConfig,i=this.proxyOpts,n=this.formConfig,s=this.formOpts;r&&((0,_tools.isEnableConf)(n)&&i.form&&s.items&&(o={},s.items.forEach(function(t){var e=t.field,t=t.itemRender;e&&(o[e]=t&&!_xeUtils.default.isUndefined(t.defaultValue)?t.defaultValue:void 0)}),this.formData=o),e||!1===i.autoLoad||(this.proxyInited=!0,this.$nextTick(function(){return t.commitProxy("_init")})))},handleGlobalKeydownEvent:function(t){27===t.keyCode&&this.isZMax&&!1!==this.zoomOpts.escRestore&&this.triggerZoomEvent(t)},commitProxy:function(e){var o,t,r=this,i=this.$refs,n=this.toolbar,s=this.toolbarConfig,a=this.toolbarOpts,l=this.proxyOpts,c=this.tablePage,u=this.pagerConfig,d=this.formData,f=this.isMsg,g=l.beforeQuery,h=l.afterQuery,p=l.beforeDelete,m=l.afterDelete,b=l.beforeSave,v=l.afterSave,x=l.ajax,_=void 0===x?{}:x,l=l.props,y=void 0===l?{}:l,C=i.xTable;_xeUtils.default.isString(e)?(a=s||n?_xeUtils.default.findTree(a.buttons,function(t){return t.code===e},{children:"dropdowns"}):null,o=e,t=a?a.item:null):o=(t=e).code;for(var O=t?t.params:null,P=arguments.length,E=new Array(1<P?P-1:0),S=1;S<P;S++)E[S-1]=arguments[S];switch(o){case"insert":this.insert();break;case"insert_actived":this.insert().then(function(t){t=t.row;return r.setActiveRow(t)});break;case"mark_cancel":this.triggerPendingEvent(o);break;case"remove":return this.handleDeleteRow(o,"vxe.grid.removeSelectRecord",function(){return r.removeCheckboxRow()});case"import":this.importData(O);break;case"open_import":this.openImport(O);break;case"export":this.exportData(O);break;case"open_export":this.openExport(O);break;case"reset_custom":this.resetColumn(!0);break;case"_init":case"reload":case"query":var T=_.query;if(T){var $="_init"===o,R="reload"===o,j=[],w=[],D={};u&&(($||R)&&(c.currentPage=1),(0,_tools.isEnableConf)(u)&&(D=_objectSpread({},c))),$?(($=C.sortOpts.defaultSort)&&(j=($=!_xeUtils.default.isArray($)?[$]:$).map(function(t){return{property:t.field,order:t.order}})),w=C.getCheckedFilters()):R?(this.pendingRecords=[],C.clearAll()):(j=C.getSortColumns(),w=C.getCheckedFilters());D={code:o,button:t,$grid:this,page:D,sort:j.length?j[0]:{},sorts:j,filters:w,form:d,options:T};this.sortData=j,this.filterData=w,this.tableLoading=!0;var U=[D].concat(E);return Promise.resolve((g||T).apply(void 0,_toConsumableArray(U))).catch(function(t){return t}).then(function(t){var e;r.tableLoading=!1,t?(0,_tools.isEnableConf)(u)?(e=_xeUtils.default.get(t,y.total||"page.total")||0,c.total=e,r.tableData=_xeUtils.default.get(t,y.result||"result")||[],e=Math.max(Math.ceil(e/c.pageSize),1),c.currentPage>e&&(c.currentPage=e)):r.tableData=(y.list?_xeUtils.default.get(t,y.list):t)||[]:r.tableData=[],h&&h.apply(void 0,_toConsumableArray(U))})}_tools.UtilTools.error("vxe.error.notFunc",["query"]);break;case"delete":var k=_.delete;if(k){var M=this.getCheckboxRecords(),A=[{$grid:this,code:o,button:t,body:{removeRecords:M},options:k}].concat(E);if(M.length)return this.handleDeleteRow(o,"vxe.grid.deleteSelectRecord",function(){return r.tableLoading=!0,Promise.resolve((p||k).apply(void 0,_toConsumableArray(A))).then(function(t){r.tableLoading=!1,r.pendingRecords=r.pendingRecords.filter(function(t){return-1===M.indexOf(t)}),f&&_vXETable.default.modal.message({message:r.getRespMsg(t,"vxe.grid.delSuccess"),status:"success"}),m?m.apply(void 0,_toConsumableArray(A)):r.commitProxy("query")}).catch(function(t){r.tableLoading=!1,f&&_vXETable.default.modal.message({id:o,message:r.getRespMsg(t,"vxe.grid.operError"),status:"error"})})});f&&_vXETable.default.modal.message({id:o,message:_conf.default.i18n("vxe.grid.selectOneRecord"),status:"warning"})}else _tools.UtilTools.error("vxe.error.notFunc",[o]);break;case"save":var z=_.save;if(z){var q=Object.assign({pendingRecords:this.pendingRecords},this.getRecordset()),Z=q.insertRecords,I=q.removeRecords,L=q.updateRecords,F=q.pendingRecords,N=[{$grid:this,code:o,button:t,body:q,options:z}].concat(E);return Z.length&&(q.pendingRecords=F.filter(function(t){return-1===Z.indexOf(t)})),F.length&&(q.insertRecords=Z.filter(function(t){return-1===F.indexOf(t)})),this.validate(q.insertRecords.concat(L)).then(function(){return q.insertRecords.length||I.length||L.length||q.pendingRecords.length?(r.tableLoading=!0,Promise.resolve((b||z).apply(void 0,_toConsumableArray(N))).then(function(t){r.tableLoading=!1,r.pendingRecords=[],f&&_vXETable.default.modal.message({message:r.getRespMsg(t,"vxe.grid.saveSuccess"),status:"success"}),v?v.apply(void 0,_toConsumableArray(N)):r.commitProxy("query")}).catch(function(t){r.tableLoading=!1,f&&_vXETable.default.modal.message({id:o,message:r.getRespMsg(t,"vxe.grid.operError"),status:"error"})})):void(f&&_vXETable.default.modal.message({id:o,message:_conf.default.i18n("vxe.grid.dataUnchanged"),status:"info"}))}).catch(function(t){return t})}_tools.UtilTools.error("vxe.error.notFunc",[o]);break;default:T=_vXETable.default.commands.get(o);T&&T.apply(void 0,[{code:o,button:t,$grid:this,$table:C}].concat(E))}return this.$nextTick()},getRespMsg:function(t,e){var o,r=this.proxyOpts.props,r=void 0===r?{}:r;return(o=t&&r.message?_xeUtils.default.get(t,r.message):o)||_conf.default.i18n(e)},handleDeleteRow:function(t,e,o){var r=this.getCheckboxRecords();if(this.isMsg){if(r.length)return _vXETable.default.modal.confirm({id:"cfm_".concat(t),message:_conf.default.i18n(e),escClosable:!0}).then(function(t){"confirm"===t&&o()});_vXETable.default.modal.message({id:"msg_".concat(t),message:_conf.default.i18n("vxe.grid.selectOneRecord"),status:"warning"})}else r.length&&o();return Promise.resolve()},getFormItems:function(t){var e=this.formConfig,o=this.formOpts,r=[];return _xeUtils.default.eachTree((0,_tools.isEnableConf)(e)&&o.items?o.items:[],function(t){r.push(t)},{children:"children"}),_xeUtils.default.isUndefined(t)?r:r[t]},getPendingRecords:function(){return this.pendingRecords},triggerToolbarBtnEvent:function(t,e){this.commitProxy(t,e),this.$emit("toolbar-button-click",{code:t.code,button:t,$grid:this,$event:e})},triggerToolbarTolEvent:function(t,e){this.commitProxy(t,e),this.$emit("toolbar-tool-click",{code:t.code,tool:t,$grid:this,$event:e})},triggerPendingEvent:function(t){var o,r,i=this.pendingRecords,e=this.isMsg,n=this.getCheckboxRecords();n.length?(o=[],r=[],n.forEach(function(e){(i.some(function(t){return e===t})?r:o).push(e)}),r.length?this.pendingRecords=i.filter(function(t){return-1===r.indexOf(t)}).concat(o):o.length&&(this.pendingRecords=i.concat(o)),this.clearCheckboxRow()):e&&_vXETable.default.modal.message({id:t,message:_conf.default.i18n("vxe.grid.selectOneRecord"),status:"warning"})},pageChangeEvent:function(t){var e=this.proxyConfig,o=this.tablePage,r=t.currentPage,i=t.pageSize;o.currentPage=r,o.pageSize=i,this.$emit("page-change",Object.assign({$grid:this},t)),e&&this.commitProxy("query")},sortChangeEvent:function(t){var e=t.$table,o=t.column,r=t.sortList;(_xeUtils.default.isBoolean(o.remoteSort)?o.remoteSort:e.sortOpts.remote)&&(this.sortData=r,this.proxyConfig&&(this.tablePage.currentPage=1,this.commitProxy("query"))),this.$emit("sort-change",Object.assign({$grid:this},t))},filterChangeEvent:function(t){var e=t.$table,o=t.filterList;e.filterOpts.remote&&(this.filterData=o,this.proxyConfig&&(this.tablePage.currentPage=1,this.commitProxy("query"))),this.$emit("filter-change",Object.assign({$grid:this},t))},submitEvent:function(t){this.proxyConfig&&this.commitProxy("reload"),this.$emit("form-submit",Object.assign({$grid:this},t))},resetEvent:function(t){this.proxyConfig&&this.commitProxy("reload"),this.$emit("form-reset",Object.assign({$grid:this},t))},submitInvalidEvent:function(t){this.$emit("form-submit-invalid",Object.assign({$grid:this},t))},togglCollapseEvent:function(t){var e=this;this.$nextTick(function(){return e.recalculate(!0)}),this.$emit("form-toggle-collapse",Object.assign({$grid:this},t))},triggerZoomEvent:function(t){this.zoom(),this.$emit("zoom",{$grid:this,type:this.isZMax?"max":"revert",$event:t})},zoom:function(){return this[this.isZMax?"revert":"maximize"]()},isMaximized:function(){return this.isZMax},maximize:function(){return this.handleZoom(!0)},revert:function(){return this.handleZoom()},handleZoom:function(t){var e=this,o=this.isZMax;return(t?!o:o)&&(this.isZMax=!o,this.tZindex<_tools.UtilTools.getLastZIndex()&&(this.tZindex=_tools.UtilTools.nextZIndex())),this.$nextTick().then(function(){return e.recalculate(!0)}).then(function(){return e.isZMax})},getProxyInfo:function(){var t=this.sortData;return this.proxyConfig?{data:this.tableData,filter:this.filterData,form:this.formData,sort:t.length?t[0]:{},sorts:t,pager:this.tablePage,pendingRecords:this.pendingRecords}:null}},"development"===process.env.NODE_ENV?{loadColumn:function(t){var e=this.$scopedSlots;return _xeUtils.default.eachTree(t,function(t){t.slots&&_xeUtils.default.each(t.slots,function(t){_xeUtils.default.isFunction(t)||e[t]||_tools.UtilTools.error("vxe.error.notSlot",[t])})}),this.$refs.xTable.loadColumn(t)},reloadColumn:function(t){return this.clearAll(),this.loadColumn(t)}}:null)};exports.default=_default2;