vxe-table
Version:
A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.
1 lines • 9.55 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../../ui/src/comp"),_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,renderEmptyElement}=_ui.VxeUI;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableExportPanel",props:{defaultOptions:{type:Object,default:()=>({})},storeData:{type:Object,default:()=>({})}},setup(f){let T=_ui.VxeUI.getComponent("VxeModal"),V=_ui.VxeUI.getComponent("VxeButton"),k=_ui.VxeUI.getComponent("VxeSelect"),O=_ui.VxeUI.getComponent("VxeInput"),U=_ui.VxeUI.getComponent("VxeCheckbox"),A=(0,_vue.inject)("$xeTable",{}),{computeExportOpts:l,computePrintOpts:o}=A.getComputeMaps(),D=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,loading:!1}),M=(0,_vue.ref)(),H=(0,_vue.ref)(),w=(0,_vue.ref)(),L=(0,_vue.computed)(()=>{var e=f.storeData;return e.columns.every(e=>e.checked)}),N=(0,_vue.computed)(()=>{var e=f.defaultOptions;return-1<["html","xml","xlsx","pdf"].indexOf(e.type)}),q=(0,_vue.computed)(()=>{var{storeData:e,defaultOptions:t}=f;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))}),B=(0,_vue.computed)(()=>{var e=f.defaultOptions;return!e.original&&-1<["xlsx"].indexOf(e.type)}),S=t=>{var e=f.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),S(e))},K=()=>{var e=f.storeData,e=e.columns;D.isAll=e.every(e=>e.disabled||e.checked),D.isIndeterminate=!D.isAll&&e.some(e=>!e.disabled&&(e.checked||e.halfChecked))},P=()=>{var e=f.storeData;let t=!D.isAll;_xeUtils.default.eachTree(e.columns,e=>{e.disabled||(e.checked=t,e.halfChecked=!1)}),D.isAll=t,K()},R=()=>{(0,_vue.nextTick)(()=>{var e=H.value,t=w.value,l=M.value,e=e||t||l;e&&e.focus()}),K()},r=()=>{var{storeData:e,defaultOptions:t}=f,{hasMerge:e,columns:l}=e,o=L.value,r=q.value,l=_xeUtils.default.searchTree(l,e=>e.checked,{children:"children",mapChildren:"childNodes",original:!0});return Object.assign({},t,{columns:l,isMerge:!!(e&&r&&o)&&t.isMerge})},t=()=>{var e=f.storeData,t=o.value;e.visible=!1,A.print(Object.assign({},t,r()))},a=()=>{let e=f.storeData;var t=l.value;D.loading=!0,A.exportData(Object.assign({},t,r())).then(()=>{D.loading=!1,e.visible=!1}).catch(()=>{D.loading=!1})},X=()=>{var e=f.storeData;e.visible=!1},j=()=>{var e=f.storeData;(e.isPrint?t:a)()};return(0,_vue.nextTick)(()=>{T||(0,_log.errLog)("vxe.error.reqComp",["vxe-modal"]),V||(0,_log.errLog)("vxe.error.reqComp",["vxe-button"]),k||(0,_log.errLog)("vxe.error.reqComp",["vxe-select"]),O||(0,_log.errLog)("vxe.error.reqComp",["vxe-input"]),U||(0,_log.errLog)("vxe.error.reqComp",["vxe-checkbox"])}),()=>{let l=A.xeGrid,o=A.xeGantt,{defaultOptions:r,storeData:a}=f,{isAll:n,isIndeterminate:p}=D,{hasTree:i,hasRowGroup:d,hasMerge:u,isPrint:s,hasColgroup:x,columns:v}=a,c=r.isHeader,m=[],h=L.value,_=N.value,g=q.value,E=B.value;var e=r.slots||{};let b=e.top,C=e.bottom,I=e.default,t=e.footer,y=e.parameter;return _xeUtils.default.eachTree(v,e=>{var t=(0,_utils.formatText)(e.getTitle(),1),l=e.children&&e.children.length,o=e.checked,r=e.halfChecked,a="html"===e.type;m.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":r,"is--disabled":e.disabled}],title:a?"":t,onClick:()=>{e.disabled||(e=>{let t=!e.checked;_xeUtils.default.eachTree([e],e=>{e.checked=t,e.halfChecked=!1}),S(e),K()})(e)}},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",r?getIcon().TABLE_CHECKBOX_INDETERMINATE:o?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]}),a?(0,_vue.h)("span",{key:"1",class:"vxe-checkbox--label",innerHTML:t}):(0,_vue.h)("span",{key:"0",class:"vxe-checkbox--label"},t)]))}),T?(0,_vue.h)(T,{id:"VXE_EXPORT_MODAL",modelValue:a.visible,title:getI18n(s?"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:D.loading,"onUpdate:modelValue"(e){a.visible=e},onShow:R},{default:()=>{var e={$table:A,$grid:l,$gantt:o,options:r,columns:v,params:r.params},t="empty"===r.mode;return(0,_vue.h)("div",{class:"vxe-table-export--panel"},[b?(0,_vue.h)("div",{class:"vxe-table-export--panel-top"},A.callSlot(b,e)):renderEmptyElement(A),(0,_vue.h)("div",{class:"vxe-table-export--panel-body"},I?A.callSlot(I,e):[(0,_vue.h)("table",{class:"vxe-table-export--panel-table",cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("tbody",[[s?renderEmptyElement(A):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expName")),(0,_vue.h)("td",[O?(0,_vue.h)(O,{ref:H,modelValue:r.filename,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expNamePlaceholder"),"onUpdate:modelValue"(e){r.filename=e}}):renderEmptyElement(A)])]),s?renderEmptyElement(A):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expType")),(0,_vue.h)("td",[k?(0,_vue.h)(k,{modelValue:r.type,options:a.typeList,"onUpdate:modelValue"(e){r.type=e}}):renderEmptyElement(A)])]),s||_?(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expSheetName")),(0,_vue.h)("td",[O?(0,_vue.h)(O,{ref:w,modelValue:r.sheetName,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expSheetNamePlaceholder"),"onUpdate:modelValue"(e){r.sheetName=e}}):renderEmptyElement(A)])]):renderEmptyElement(A),(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expMode")),(0,_vue.h)("td",[k?(0,_vue.h)(k,{modelValue:r.mode,options:a.modeList.map(e=>({value:e.value,label:getI18n(e.label)})),"onUpdate:modelValue"(e){r.mode=e}}):renderEmptyElement(A)])]),(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":n,"is--indeterminate":p}],title:getI18n("vxe.table.allTitle"),onClick:P},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",p?getIcon().TABLE_CHECKBOX_INDETERMINATE:n?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"},m)])])]),(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expOpts")),y?(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},A.callSlot(y,e))]):(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},[U?(0,_vue.h)(U,{modelValue:t||c,disabled:t,title:getI18n("vxe.export.expHeaderTitle"),content:getI18n("vxe.export.expOptHeader"),"onUpdate:modelValue"(e){r.isHeader=e}}):renderEmptyElement(A),U?(0,_vue.h)(U,{modelValue:r.isFooter,disabled:!a.hasFooter,title:getI18n("vxe.export.expFooterTitle"),content:getI18n("vxe.export.expOptFooter"),"onUpdate:modelValue"(e){r.isFooter=e}}):renderEmptyElement(A),U?(0,_vue.h)(U,{modelValue:!!c&&r.isTitle,disabled:!c,title:getI18n("vxe.export.expTitleTitle"),content:getI18n("vxe.export.expOptTitle"),"onUpdate:modelValue"(e){r.isTitle=e}}):renderEmptyElement(A),U?(0,_vue.h)(U,{modelValue:!!(c&&x&&g)&&r.isColgroup,title:getI18n("vxe.export.expColgroupTitle"),disabled:!c||!x||!g,content:getI18n("vxe.export.expOptColgroup"),"onUpdate:modelValue"(e){r.isColgroup=e}}):renderEmptyElement(A)]),(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},[U?(0,_vue.h)(U,{modelValue:!t&&r.original,disabled:t,title:getI18n("vxe.export.expOriginalTitle"),content:getI18n("vxe.export.expOptOriginal"),"onUpdate:modelValue"(e){r.original=e}}):renderEmptyElement(A),U?(0,_vue.h)(U,{modelValue:!!(u&&g&&h)&&r.isMerge,title:getI18n("vxe.export.expMergeTitle"),disabled:t||!u||!g||!h,content:getI18n("vxe.export.expOptMerge"),"onUpdate:modelValue"(e){r.isMerge=e}}):renderEmptyElement(A),s||!U?renderEmptyElement(A):(0,_vue.h)(U,{modelValue:!!E&&r.useStyle,disabled:!E,title:getI18n("vxe.export.expUseStyleTitle"),content:getI18n("vxe.export.expOptUseStyle"),"onUpdate:modelValue"(e){r.useStyle=e}})]),(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},[U?(0,_vue.h)(U,{modelValue:!!i&&r.isTreeAllExpanded,disabled:t||!i,title:getI18n("vxe.export.expTreeAllExpandTitle"),content:getI18n("vxe.export.expOptTreeAllExpand"),"onUpdate:modelValue"(e){r.isTreeAllExpanded=e}}):renderEmptyElement(A),U?(0,_vue.h)(U,{modelValue:!!d&&r.isRowGroupAllExpanded,disabled:t||!d,title:getI18n("vxe.export.expRowGroupAllExpandTitle"),content:getI18n("vxe.export.expOptRowGroupAllExpand"),"onUpdate:modelValue"(e){r.isRowGroupAllExpanded=e}}):renderEmptyElement(A)])])])]])])]),C?(0,_vue.h)("div",{class:"vxe-table-export--panel-bottom"},A.callSlot(C,e)):renderEmptyElement(A)])},footer(){var e={$table:A,$grid:l,$gantt:o,options:r,columns:v,params:r.params};return(0,_vue.h)("div",{class:"vxe-table-export--panel-footer"},t?A.callSlot(t,e):[(0,_vue.h)("div",{class:"vxe-table-export--panel-btns"},[V?(0,_vue.h)(V,{content:getI18n("vxe.export.expCancel"),onClick:X}):renderEmptyElement(A),V?(0,_vue.h)(V,{ref:M,status:"primary",content:getI18n(s?"vxe.export.expPrint":"vxe.export.expConfirm"),onClick:j}):renderEmptyElement(A)])])}}):renderEmptyElement(A)}}});