UNPKG

@blueking/vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...

1 lines 9 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_ui=require("../../../ui"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../../ui/src/utils"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,getIcon}=_ui.VxeUI;var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableExportPanel",props:{defaultOptions:Object,storeData:Object},setup(V){let I=_ui.VxeUI.getComponent("VxeModal"),f=_ui.VxeUI.getComponent("VxeButton"),k=_ui.VxeUI.getComponent("VxeSelect"),E=_ui.VxeUI.getComponent("VxeInput"),O=_ui.VxeUI.getComponent("VxeCheckbox"),N=(0,_vue.inject)("$xeTable",{}),{computeExportOpts:l,computePrintOpts:o}=N.getComputeMaps(),T=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,loading:!1}),U=(0,_vue.ref)(),y=(0,_vue.ref)(),D=(0,_vue.ref)(),A=(0,_vue.computed)(()=>{var e=V.storeData;return e.columns.every(e=>e.checked)}),M=(0,_vue.computed)(()=>{var e=V.defaultOptions;return-1<["html","xml","xlsx","pdf"].indexOf(e.type)}),H=(0,_vue.computed)(()=>{var{storeData:e,defaultOptions:t}=V;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))}),L=(0,_vue.computed)(()=>{var e=V.defaultOptions;return!e.original&&-1<["xlsx"].indexOf(e.type)}),B=t=>{var e=V.storeData,e=_xeUtils.default.findTree(e.columns,e=>e===t);e&&e.parent&&(e=e.parent,e.children)&&e.children.length&&(e.checked=e.children.every(e=>e.checked),e.halfChecked=!e.checked&&e.children.some(e=>e.checked||e.halfChecked),B(e))},S=()=>{var e=V.storeData,e=e.columns;T.isAll=e.every(e=>e.disabled||e.checked),T.isIndeterminate=!T.isAll&&e.some(e=>!e.disabled&&(e.checked||e.halfChecked))},q=()=>{var e=V.storeData;let t=!T.isAll;_xeUtils.default.eachTree(e.columns,e=>{e.disabled||(e.checked=t,e.halfChecked=!1)}),T.isAll=t,S()},K=()=>{(0,_vue.nextTick)(()=>{var e=y.value,t=D.value,l=U.value,e=e||t||l;e&&e.focus()}),S()},a=()=>{var{storeData:e,defaultOptions:t}=V,{hasMerge:e,columns:l}=e,o=A.value,a=H.value,l=_xeUtils.default.searchTree(l,e=>e.checked,{children:"children",mapChildren:"childNodes",original:!0});return Object.assign({},t,{columns:l,isMerge:!!(e&&a&&o)&&t.isMerge})},t=()=>{var e=V.storeData,t=o.value;e.visible=!1,N.print(Object.assign({},t,a()))},r=()=>{let e=V.storeData;var t=l.value;T.loading=!0,N.exportData(Object.assign({},t,a())).then(()=>{T.loading=!1,e.visible=!1}).catch(()=>{T.loading=!1})},P=()=>{var e=V.storeData;e.visible=!1},w=()=>{var e=V.storeData;(e.isPrint?t:r)()};return"development"===process.env.NODE_ENV&&(0,_vue.nextTick)(()=>{I||(0,_log.errLog)("vxe.error.reqComp",["vxe-modal"]),f||(0,_log.errLog)("vxe.error.reqComp",["vxe-button"]),k||(0,_log.errLog)("vxe.error.reqComp",["vxe-select"]),E||(0,_log.errLog)("vxe.error.reqComp",["vxe-input"]),O||(0,_log.errLog)("vxe.error.reqComp",["vxe-checkbox"])}),()=>{let{defaultOptions:t,storeData:l}=V,{isAll:o,isIndeterminate:a}=T,{hasTree:r,hasMerge:n,isPrint:u,hasColgroup:i,columns:d}=l,p=t.isHeader,v=[],s=A.value,x=M.value,c=H.value,m=L.value;var e=t.slots||{};let h=e.top,_=e.bottom,g=e.default,C=e.footer,b=e.parameter;return _xeUtils.default.eachTree(d,e=>{var t=(0,_utils.formatText)(e.getTitle(),1),l=e.children&&e.children.length,o=e.checked,a=e.halfChecked,r="html"===e.type;v.push((0,_vue.h)("li",{key:e.id,class:["vxe-table-export--panel-column-option","level--"+e.level,{"is--group":l,"is--checked":o,"is--indeterminate":a,"is--disabled":e.disabled}],title:r?"":t,onClick:()=>{e.disabled||(e=>{let t=!e.checked;_xeUtils.default.eachTree([e],e=>{e.checked=t,e.halfChecked=!1}),B(e),S()})(e)}},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",a?getIcon().TABLE_CHECKBOX_INDETERMINATE:o?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]}),r?(0,_vue.h)("span",{key:"1",class:"vxe-checkbox--label",innerHTML:t}):(0,_vue.h)("span",{key:"0",class:"vxe-checkbox--label"},t)]))}),I?(0,_vue.h)(I,{id:"VXE_EXPORT_MODAL",modelValue:l.visible,title:getI18n(u?"vxe.export.printTitle":"vxe.export.expTitle"),className:"vxe-table-export-popup-wrapper",width:660,minWidth:500,minHeight:400,mask:!0,lockView:!0,showFooter:!0,escClosable:!0,maskClosable:!0,showMaximize:!0,resize:!0,loading:T.loading,"onUpdate:modelValue"(e){l.visible=e},onShow:K},{default:()=>{var e={$table:N,$grid:N.xegrid,options:t,columns:d,params:t.params};return(0,_vue.h)("div",{class:"vxe-table-export--panel"},[h?(0,_vue.h)("div",{class:"vxe-table-export--panel-top"},N.callSlot(h,e)):(0,_vue.createCommentVNode)(),(0,_vue.h)("div",{class:"vxe-table-export--panel-body"},g?N.callSlot(g,e):[(0,_vue.h)("table",{class:"vxe-table-export--panel-table",cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("tbody",[[u?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expName")),(0,_vue.h)("td",[E?(0,_vue.h)(E,{ref:y,modelValue:t.filename,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expNamePlaceholder"),"onUpdate:modelValue"(e){t.filename=e}}):(0,_vue.createCommentVNode)()])]),u?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expType")),(0,_vue.h)("td",[k?(0,_vue.h)(k,{modelValue:t.type,options:l.typeList,"onUpdate:modelValue"(e){t.type=e}}):(0,_vue.createCommentVNode)()])]),u||x?(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expSheetName")),(0,_vue.h)("td",[E?(0,_vue.h)(E,{ref:D,modelValue:t.sheetName,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expSheetNamePlaceholder"),"onUpdate:modelValue"(e){t.sheetName=e}}):(0,_vue.createCommentVNode)()])]):(0,_vue.createCommentVNode)(),(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expMode")),(0,_vue.h)("td",[k?(0,_vue.h)(k,{modelValue:t.mode,options:l.modeList.map(e=>({value:e.value,label:getI18n(e.label)})),"onUpdate:modelValue"(e){t.mode=e}}):(0,_vue.createCommentVNode)()])]),(0,_vue.h)("tr",[(0,_vue.h)("td",[getI18n("vxe.export.expColumn")]),(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-column"},[(0,_vue.h)("ul",{class:"vxe-table-export--panel-column-header"},[(0,_vue.h)("li",{class:["vxe-table-export--panel-column-option",{"is--checked":o,"is--indeterminate":a}],title:getI18n("vxe.table.allTitle"),onClick:q},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",a?getIcon().TABLE_CHECKBOX_INDETERMINATE:o?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},getI18n("vxe.export.expCurrentColumn"))])]),(0,_vue.h)("ul",{class:"vxe-table-export--panel-column-body"},v)])])]),(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expOpts")),b?(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},N.callSlot(b,e))]):(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},[O?(0,_vue.h)(O,{modelValue:t.isHeader,title:getI18n("vxe.export.expHeaderTitle"),content:getI18n("vxe.export.expOptHeader"),"onUpdate:modelValue"(e){t.isHeader=e}}):(0,_vue.createCommentVNode)(),O?(0,_vue.h)(O,{modelValue:t.isFooter,disabled:!l.hasFooter,title:getI18n("vxe.export.expFooterTitle"),content:getI18n("vxe.export.expOptFooter"),"onUpdate:modelValue"(e){t.isFooter=e}}):(0,_vue.createCommentVNode)(),O?(0,_vue.h)(O,{modelValue:t.original,title:getI18n("vxe.export.expOriginalTitle"),content:getI18n("vxe.export.expOptOriginal"),"onUpdate:modelValue"(e){t.original=e}}):(0,_vue.createCommentVNode)()]),(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},[O?(0,_vue.h)(O,{modelValue:!!(p&&i&&c)&&t.isColgroup,title:getI18n("vxe.export.expColgroupTitle"),disabled:!p||!i||!c,content:getI18n("vxe.export.expOptColgroup"),"onUpdate:modelValue"(e){t.isColgroup=e}}):(0,_vue.createCommentVNode)(),O?(0,_vue.h)(O,{modelValue:!!(n&&c&&s)&&t.isMerge,title:getI18n("vxe.export.expMergeTitle"),disabled:!n||!c||!s,content:getI18n("vxe.export.expOptMerge"),"onUpdate:modelValue"(e){t.isMerge=e}}):(0,_vue.createCommentVNode)(),u||!O?(0,_vue.createCommentVNode)():(0,_vue.h)(O,{modelValue:!!m&&t.useStyle,disabled:!m,title:getI18n("vxe.export.expUseStyleTitle"),content:getI18n("vxe.export.expOptUseStyle"),"onUpdate:modelValue"(e){t.useStyle=e}}),O?(0,_vue.h)(O,{modelValue:!!r&&t.isAllExpand,disabled:!r,title:getI18n("vxe.export.expAllExpandTitle"),content:getI18n("vxe.export.expOptAllExpand"),"onUpdate:modelValue"(e){t.isAllExpand=e}}):(0,_vue.createCommentVNode)()])])])]])])]),_?(0,_vue.h)("div",{class:"vxe-table-export--panel-bottom"},N.callSlot(_,e)):(0,_vue.createCommentVNode)()])},footer(){var e={$table:N,$grid:N.xegrid,options:t,columns:d,params:t.params};return(0,_vue.h)("div",{class:"vxe-table-export--panel-footer"},C?N.callSlot(C,e):[(0,_vue.h)("div",{class:"vxe-table-export--panel-btns"},[f?(0,_vue.h)(f,{content:getI18n("vxe.export.expCancel"),onClick:P}):(0,_vue.createCommentVNode)(),f?(0,_vue.h)(f,{ref:U,status:"primary",content:getI18n(u?"vxe.export.expPrint":"vxe.export.expConfirm"),onClick:w}):(0,_vue.createCommentVNode)()])])}}):(0,_vue.createCommentVNode)()}}});