vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 8.37 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_utils=require("../../tools/utils"),_modal=_interopRequireDefault(require("../../modal/src/modal")),_input=_interopRequireDefault(require("../../input/src/input")),_checkbox=_interopRequireDefault(require("../../checkbox/src/checkbox")),_select=_interopRequireDefault(require("../../select/src/select")),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=(0,_vue.defineComponent)({name:"VxeExportPanel",props:{defaultOptions:Object,storeData:Object},setup:function(v){function x(){var e=v.storeData,t=!b.isAll;_xeUtils.default.eachTree(e.columns,function(e){e.disabled||(e.checked=t,e.halfChecked=!1)}),b.isAll=t,U()}function _(){(0,_vue.nextTick)(function(){var e=k.value,t=g.value,l=C.value,e=e||t||l;e&&e.focus()}),U()}function l(){var e=v.storeData,t=v.defaultOptions,l=e.hasMerge,e=e.columns,n=O.value,o=T.value,e=_xeUtils.default.searchTree(e,function(e){return e.checked},{children:"children",mapChildren:"childNodes",original:!0});return Object.assign({},t,{columns:e,isMerge:!!(l&&o&&n)&&t.isMerge})}function h(){v.storeData.visible=!1}function m(){(v.storeData.isPrint?t:a)()}var n=(0,_vue.inject)("$xetable",{}),e=n.getComputeMaps(),o=e.computeExportOpts,u=e.computePrintOpts,b=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,loading:!1}),C=(0,_vue.ref)(),k=(0,_vue.ref)(),g=(0,_vue.ref)(),O=(0,_vue.computed)(function(){return v.storeData.columns.every(function(e){return e.checked})}),E=(0,_vue.computed)(function(){var e=v.defaultOptions;return-1<["html","xml","xlsx","pdf"].indexOf(e.type)}),T=(0,_vue.computed)(function(){var e=v.storeData,t=v.defaultOptions;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))}),V=(0,_vue.computed)(function(){var e=v.defaultOptions;return!e.original&&-1<["xlsx"].indexOf(e.type)}),D=function(t){var e=v.storeData,e=_xeUtils.default.findTree(e.columns,function(e){return e===t});e&&e.parent&&(e=e.parent).children&&e.children.length&&(e.checked=e.children.every(function(e){return e.checked}),e.halfChecked=!e.checked&&e.children.some(function(e){return e.checked||e.halfChecked}),D(e))},U=function(){var e=v.storeData.columns;b.isAll=e.every(function(e){return e.disabled||e.checked}),b.isIndeterminate=!b.isAll&&e.some(function(e){return!e.disabled&&(e.checked||e.halfChecked)})},t=function(){var e=v.storeData,t=u.value;e.visible=!1,n.print(Object.assign({},t,l()))},a=function(){var e=v.storeData,t=o.value;b.loading=!0,n.exportData(Object.assign({},t,l())).then(function(){b.loading=!1,e.visible=!1}).catch(function(){b.loading=!1})};return function(){var t=v.defaultOptions,l=v.storeData,e=b.isAll,n=b.isIndeterminate,o=l.hasTree,u=l.hasMerge,a=l.isPrint,i=l.hasColgroup,c=t.isHeader,r=[],d=O.value,f=E.value,s=T.value,p=V.value;return _xeUtils.default.eachTree(l.columns,function(l){var e=(0,_utils.formatText)(l.getTitle(),1),t=l.children&&l.children.length,n=l.checked,o=l.halfChecked;r.push((0,_vue.h)("li",{class:["vxe-export--panel-column-option","level--".concat(l.level),{"is--group":t,"is--checked":n,"is--indeterminate":o,"is--disabled":l.disabled}],title:e,onClick:function(){var e,t;l.disabled||(t=!(e=l).checked,_xeUtils.default.eachTree([e],function(e){e.checked=t,e.halfChecked=!1}),D(e),U())}},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",o?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:n?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},e)]))}),(0,_vue.h)(_modal.default,{modelValue:l.visible,title:_conf.default.i18n(a?"vxe.export.printTitle":"vxe.export.expTitle"),width:660,mask:!0,lockView:!0,showFooter:!1,escClosable:!0,maskClosable:!0,loading:b.loading,"onUpdate:modelValue":function(e){l.visible=e},onShow:_},{default:function(){return(0,_vue.h)("div",{class:"vxe-export--panel"},[(0,_vue.h)("table",{cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("tbody",[[a?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",_conf.default.i18n("vxe.export.expName")),(0,_vue.h)("td",[(0,_vue.h)(_input.default,{ref:k,modelValue:t.filename,type:"text",clearable:!0,placeholder:_conf.default.i18n("vxe.export.expNamePlaceholder"),"onUpdate:modelValue":function(e){t.filename=e}})])]),a?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",_conf.default.i18n("vxe.export.expType")),(0,_vue.h)("td",[(0,_vue.h)(_select.default,{modelValue:t.type,options:l.typeList.map(function(e){return{value:e.value,label:_conf.default.i18n(e.label)}}),"onUpdate:modelValue":function(e){t.type=e}})])]),a||f?(0,_vue.h)("tr",[(0,_vue.h)("td",_conf.default.i18n("vxe.export.expSheetName")),(0,_vue.h)("td",[(0,_vue.h)(_input.default,{ref:g,modelValue:t.sheetName,type:"text",clearable:!0,placeholder:_conf.default.i18n("vxe.export.expSheetNamePlaceholder"),"onUpdate:modelValue":function(e){t.sheetName=e}})])]):(0,_vue.createCommentVNode)(),(0,_vue.h)("tr",[(0,_vue.h)("td",_conf.default.i18n("vxe.export.expMode")),(0,_vue.h)("td",[(0,_vue.h)(_select.default,{modelValue:t.mode,options:l.modeList.map(function(e){return{value:e.value,label:_conf.default.i18n(e.label)}}),"onUpdate:modelValue":function(e){t.mode=e}})])]),(0,_vue.h)("tr",[(0,_vue.h)("td",[_conf.default.i18n("vxe.export.expColumn")]),(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-export--panel-column"},[(0,_vue.h)("ul",{class:"vxe-export--panel-column-header"},[(0,_vue.h)("li",{class:["vxe-export--panel-column-option",{"is--checked":e,"is--indeterminate":n}],title:_conf.default.i18n("vxe.table.allTitle"),onClick:x},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",n?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:e?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},_conf.default.i18n("vxe.export.expCurrentColumn"))])]),(0,_vue.h)("ul",{class:"vxe-export--panel-column-body"},r)])])]),(0,_vue.h)("tr",[(0,_vue.h)("td",_conf.default.i18n("vxe.export.expOpts")),(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-export--panel-option-row"},[(0,_vue.h)(_checkbox.default,{modelValue:t.isHeader,title:_conf.default.i18n("vxe.export.expHeaderTitle"),content:_conf.default.i18n("vxe.export.expOptHeader"),"onUpdate:modelValue":function(e){t.isHeader=e}}),(0,_vue.h)(_checkbox.default,{modelValue:t.isFooter,disabled:!l.hasFooter,title:_conf.default.i18n("vxe.export.expFooterTitle"),content:_conf.default.i18n("vxe.export.expOptFooter"),"onUpdate:modelValue":function(e){t.isFooter=e}}),(0,_vue.h)(_checkbox.default,{modelValue:t.original,title:_conf.default.i18n("vxe.export.expOriginalTitle"),content:_conf.default.i18n("vxe.export.expOptOriginal"),"onUpdate:modelValue":function(e){t.original=e}})]),(0,_vue.h)("div",{class:"vxe-export--panel-option-row"},[(0,_vue.h)(_checkbox.default,{modelValue:!!(c&&i&&s)&&t.isColgroup,title:_conf.default.i18n("vxe.export.expColgroupTitle"),disabled:!c||!i||!s,content:_conf.default.i18n("vxe.export.expOptColgroup"),"onUpdate:modelValue":function(e){t.isColgroup=e}}),(0,_vue.h)(_checkbox.default,{modelValue:!!(u&&s&&d)&&t.isMerge,title:_conf.default.i18n("vxe.export.expMergeTitle"),disabled:!u||!s||!d,content:_conf.default.i18n("vxe.export.expOptMerge"),"onUpdate:modelValue":function(e){t.isMerge=e}}),a?(0,_vue.createCommentVNode)():(0,_vue.h)(_checkbox.default,{modelValue:!!p&&t.useStyle,disabled:!p,title:_conf.default.i18n("vxe.export.expUseStyleTitle"),content:_conf.default.i18n("vxe.export.expOptUseStyle"),"onUpdate:modelValue":function(e){t.useStyle=e}}),(0,_vue.h)(_checkbox.default,{modelValue:!!o&&t.isAllExpand,disabled:!o,title:_conf.default.i18n("vxe.export.expAllExpandTitle"),content:_conf.default.i18n("vxe.export.expOptAllExpand"),"onUpdate:modelValue":function(e){t.isAllExpand=e}})])])])]])]),(0,_vue.h)("div",{class:"vxe-export--panel-btns"},[(0,_vue.h)(_button.default,{content:_conf.default.i18n("vxe.export.expCancel"),onClick:h}),(0,_vue.h)(_button.default,{ref:C,status:"primary",content:_conf.default.i18n(a?"vxe.export.expPrint":"vxe.export.expConfirm"),onClick:m})])])}})}}});exports.default=_default;