vhb-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 8.4 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-h-b-table/src/conf")),_modal=_interopRequireDefault(require("../../modal/src/modal")),_input=_interopRequireDefault(require("../../input/src/input")),_checkbox=_interopRequireDefault(require("../../checkbox/src/checkbox")),_select=_interopRequireDefault(require("../../select/src/select")),_option=_interopRequireDefault(require("../../select/src/option")),_utils=_interopRequireDefault(require("../../tools/utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default={name:"VhbExportPanel",props:{defaultOptions:Object,storeData:Object},components:{VhbModal:_modal.default,VhbInput:_input.default,VhbCheckbox:_checkbox.default,VhbSelect:_select.default,VhbOption:_option.default},data:function(){return{isAll:!1,isIndeterminate:!1,loading:!1}},computed:{vSize:function(){return this.size||this.$parent.size||this.$parent.vSize},checkedAll:function(){return this.storeData.columns.every(function(e){return e.checked})},showSheet:function(){return-1<["html","xml","xlsx","pdf"].indexOf(this.defaultOptions.type)},supportMerge:function(){var e=this.storeData,t=this.defaultOptions;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))},supportStyle:function(){var e=this.defaultOptions;return!e.original&&-1<["xlsx"].indexOf(e.type)}},render:function(i){var o=this,e=this._e,t=this.checkedAll,n=this.isAll,l=this.isIndeterminate,c=this.showSheet,a=this.supportMerge,r=this.supportStyle,s=this.defaultOptions,h=this.storeData,p=h.hasTree,u=h.hasMerge,d=h.isPrint,f=h.hasColgroup,b=s.isHeader,v=[];return _xeUtils.default.eachTree(h.columns,function(e){var t=_utils.default.formatText(e.getTitle(),1),n=e.children&&e.children.length;v.push(i("li",{class:["vhb-export--panel-column-option","level--".concat(e.level),{"is--group":n,"is--checked":e.checked,"is--indeterminate":e.halfChecked,"is--disabled":e.disabled}],attrs:{title:t},on:{click:function(){e.disabled||o.changeOption(e)}}},[i("span",{class:"vhb-checkbox--icon vhb-checkbox--checked-icon"}),i("span",{class:"vhb-checkbox--icon vhb-checkbox--unchecked-icon"}),i("span",{class:"vhb-checkbox--icon vhb-checkbox--indeterminate-icon"}),i("span",{class:"vhb-checkbox--label"},t)]))}),i("vhb-modal",{res:"modal",props:{value:h.visible,title:_conf.default.i18n(d?"vhb.export.printTitle":"vhb.export.expTitle"),width:660,mask:!0,lockView:!0,showFooter:!1,escClosable:!0,maskClosable:!0,loading:this.loading},on:{input:function(e){h.visible=e},show:this.showEvent}},[i("div",{class:"vhb-export--panel"},[i("table",{attrs:{cellspacing:0,cellpadding:0,border:0}},[i("tbody",[[d?e():i("tr",[i("td",_conf.default.i18n("vhb.export.expName")),i("td",[i("vhb-input",{ref:"filename",props:{value:s.filename,type:"text",clearable:!0,placeholder:_conf.default.i18n("vhb.export.expNamePlaceholder")},on:{modelValue:function(e){s.filename=e}}})])]),d?e():i("tr",[i("td",_conf.default.i18n("vhb.export.expType")),i("td",[i("vhb-select",{props:{value:s.type},on:{input:function(e){s.type=e}}},h.typeList.map(function(e){return i("vhb-option",{props:{value:e.value,label:_conf.default.i18n(e.label)}})}))])]),d||c?i("tr",[i("td",_conf.default.i18n("vhb.export.expSheetName")),i("td",[i("vhb-input",{ref:"sheetname",props:{value:s.sheetName,type:"text",clearable:!0,placeholder:_conf.default.i18n("vhb.export.expSheetNamePlaceholder")},on:{modelValue:function(e){s.sheetName=e}}})])]):e(),i("tr",[i("td",_conf.default.i18n("vhb.export.expMode")),i("td",[i("vhb-select",{props:{value:s.mode},on:{input:function(e){s.mode=e}}},h.modeList.map(function(e){return i("vhb-option",{props:{value:e.value,label:_conf.default.i18n(e.label)}})}))])]),i("tr",[i("td",[_conf.default.i18n("vhb.export.expColumn")]),i("td",[i("div",{class:"vhb-export--panel-column"},[i("ul",{class:"vhb-export--panel-column-header"},[i("li",{class:["vhb-export--panel-column-option",{"is--checked":n,"is--indeterminate":l}],attrs:{title:_conf.default.i18n("vhb.table.allTitle")},on:{click:this.allColumnEvent}},[i("span",{class:"vhb-checkbox--icon vhb-checkbox--checked-icon"}),i("span",{class:"vhb-checkbox--icon vhb-checkbox--unchecked-icon"}),i("span",{class:"vhb-checkbox--icon vhb-checkbox--indeterminate-icon"}),i("span",{class:"vhb-checkbox--label"},_conf.default.i18n("vhb.export.expCurrentColumn"))])]),i("ul",{class:"vhb-export--panel-column-body"},v)])])]),i("tr",[i("td",_conf.default.i18n("vhb.export.expOpts")),i("td",[i("div",{class:"vhb-export--panel-option-row"},[i("vhb-checkbox",{props:{value:b,title:_conf.default.i18n("vhb.export.expHeaderTitle"),content:_conf.default.i18n("vhb.export.expOptHeader")},on:{input:function(e){s.isHeader=e}}}),i("vhb-checkbox",{props:{value:s.isFooter,disabled:!h.hasFooter,title:_conf.default.i18n("vhb.export.expFooterTitle"),content:_conf.default.i18n("vhb.export.expOptFooter")},on:{input:function(e){s.isFooter=e}}}),i("vhb-checkbox",{props:{value:s.original,title:_conf.default.i18n("vhb.export.expOriginalTitle"),content:_conf.default.i18n("vhb.export.expOptOriginal")},on:{input:function(e){s.original=e}}})]),i("div",{class:"vhb-export--panel-option-row"},[i("vhb-checkbox",{props:{value:!!(b&&f&&a)&&s.isColgroup,disabled:!b||!f||!a,title:_conf.default.i18n("vhb.export.expColgroupTitle"),content:_conf.default.i18n("vhb.export.expOptColgroup")},on:{input:function(e){s.isColgroup=e}}}),i("vhb-checkbox",{props:{value:!!(u&&a&&t)&&s.isMerge,disabled:!u||!a||!t,title:_conf.default.i18n("vhb.export.expMergeTitle"),content:_conf.default.i18n("vhb.export.expOptMerge")},on:{input:function(e){s.isMerge=e}}}),d?e():i("vhb-checkbox",{props:{value:!!r&&s.useStyle,disabled:!r,title:_conf.default.i18n("vhb.export.expUseStyleTitle"),content:_conf.default.i18n("vhb.export.expOptUseStyle")},on:{input:function(e){s.useStyle=e}}}),i("vhb-checkbox",{props:{value:!!p&&s.isAllExpand,disabled:!p,title:_conf.default.i18n("vhb.export.expAllExpandTitle"),content:_conf.default.i18n("vhb.export.expOptAllExpand")},on:{input:function(e){s.isAllExpand=e}}})])])])]])]),i("div",{class:"vhb-export--panel-btns"},[i("vhb-button",{props:{content:_conf.default.i18n("vhb.export.expCancel")},on:{click:this.cancelEvent}}),i("vhb-button",{ref:"confirmBtn",props:{status:"primary",content:_conf.default.i18n(d?"vhb.export.expPrint":"vhb.export.expConfirm")},on:{click:this.confirmEvent}})])])])},methods:{changeOption:function(e){var t=!e.checked;_xeUtils.default.eachTree([e],function(e){e.checked=t,e.halfChecked=!1}),this.handleOptionCheck(e),this.checkStatus()},handleOptionCheck:function(t){var e=_xeUtils.default.findTree(this.storeData.columns,function(e){return e===t});if(e&&e.parent){var n=e.parent;n.children&&n.children.length&&(n.checked=n.children.every(function(e){return e.checked}),n.halfChecked=!n.checked&&n.children.some(function(e){return e.checked||e.halfChecked}),this.handleOptionCheck(n))}},checkStatus:function(){var e=this.storeData.columns;this.isAll=e.every(function(e){return e.disabled||e.checked}),this.isIndeterminate=!this.isAll&&e.some(function(e){return!e.disabled&&(e.checked||e.halfChecked)})},allColumnEvent:function(){var t=!this.isAll;_xeUtils.default.eachTree(this.storeData.columns,function(e){e.disabled||(e.checked=t,e.halfChecked=!1)}),this.isAll=t,this.checkStatus()},showEvent:function(){var n=this;this.$nextTick(function(){var e=n.$refs,t=e.filename||e.sheetname||e.confirmBtn;t&&t.focus()}),this.checkStatus()},getExportOption:function(){var e=this.checkedAll,t=this.storeData,n=this.defaultOptions,i=this.supportMerge,o=t.hasMerge,l=t.columns,c=_xeUtils.default.searchTree(l,function(e){return e.checked},{children:"children",mapChildren:"childNodes",original:!0});return Object.assign({},n,{columns:c,isMerge:!!(o&&i&&e)&&n.isMerge})},cancelEvent:function(){this.storeData.visible=!1},confirmEvent:function(e){this.storeData.isPrint?this.printEvent(e):this.exportEvent(e)},printEvent:function(){var e=this.$parent;this.storeData.visible=!1,e.print(Object.assign({},e.printOpts,this.getExportOption()))},exportEvent:function(){var e=this,t=this.$parent;this.loading=!0,t.exportData(Object.assign({},t.exportOpts,this.getExportOption())).then(function(){e.loading=!1,e.storeData.visible=!1}).catch(function(){e.loading=!1})}}};exports.default=_default;