UNPKG

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 • 10.4 kB
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 errLog=(0,_log.createComponentLog)("table").errLog,{getI18n,getIcon,renderEmptyElement}=_ui.VxeUI;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableExportPanel",props:{defaultOptions:{type:Object,default:()=>({})},storeData:{type:Object,default:()=>({})}},setup(O){let w=_ui.VxeUI.getComponent("VxeModal"),U=_ui.VxeUI.getComponent("VxeButton"),M=_ui.VxeUI.getComponent("VxeSelect"),D=_ui.VxeUI.getComponent("VxeInput"),A=_ui.VxeUI.getComponent("VxeCheckbox"),L=(0,_vue.inject)("$xeTable",{}),{computeExportOpts:H,computePrintOpts:N}=L.getComputeMaps(),S=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,loading:!1}),q=(0,_vue.ref)(),B=(0,_vue.ref)(),P=(0,_vue.ref)(),K=(0,_vue.computed)(()=>[{value:"",label:getI18n("vxe.export.wdModes.default")},{value:"auto",label:getI18n("vxe.export.wdModes.auto")},{value:"scale",label:getI18n("vxe.export.wdModes.scale")}]),R=(0,_vue.computed)(()=>{var e=O.storeData;return e.columns.every(e=>e.checked)}),X=(0,_vue.computed)(()=>{var e=O.defaultOptions;return-1<["html","xml","xlsx","pdf"].indexOf(e.type)}),j=(0,_vue.computed)(()=>{var{storeData:e,defaultOptions:t}=O;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))}),F=(0,_vue.computed)(()=>{var e=O.defaultOptions;return!e.original&&-1<["xlsx"].indexOf(e.type)}),G=t=>{var e=O.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),G(e))},$=()=>{var e=O.storeData,e=e.columns;S.isAll=e.every(e=>e.disabled||e.checked),S.isIndeterminate=!S.isAll&&e.some(e=>!e.disabled&&(e.checked||e.halfChecked))},z=()=>{var e=O.storeData;let t=!S.isAll;_xeUtils.default.eachTree(e.columns,e=>{e.disabled||(e.checked=t,e.halfChecked=!1)}),S.isAll=t,$()},W=()=>{(0,_vue.nextTick)(()=>{var e=B.value,t=P.value,l=q.value,e=e||t||l;e&&e.focus()}),$()},l=()=>{var{storeData:e,defaultOptions:t}=O,{hasMerge:e,columns:l}=e,o=R.value,a=j.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=O.storeData,t=N.value;e.visible=!1,L.print(Object.assign({},t,l()))},o=()=>{let e=O.storeData;var t=H.value;S.loading=!0,L.exportData(Object.assign({},t,l())).then(()=>{S.loading=!1,e.visible=!1}).catch(()=>{S.loading=!1})},J=()=>{var e=O.storeData;e.visible=!1},Q=()=>{var e=O.storeData;(e.isPrint?t:o)()};return(0,_vue.nextTick)(()=>{w||errLog("vxe.error.reqComp",["vxe-modal"]),U||errLog("vxe.error.reqComp",["vxe-button"]),M||errLog("vxe.error.reqComp",["vxe-select"]),D||errLog("vxe.error.reqComp",["vxe-input"]),A||errLog("vxe.error.reqComp",["vxe-checkbox"])}),()=>{let l=L.xeGrid,o=L.xeGantt,{defaultOptions:a,storeData:r}=O,{isAll:n,isIndeterminate:i}=S,{hasTree:p,hasRowGroup:d,hasMerge:u,isPrint:s,hasColgroup:x,columns:v}=r,c=a.isHeader,m=[];var e=H.value,t=N.value,h=(s?t:e).modelOptions||{};let _=(s?t:e).settingOptions||{},g=R.value,b=X.value,E=j.value,C=F.value,f=K.value;t=a.slots||{};let I=t.top,y=t.bottom,T=t.default,V=t.footer,k=t.parameter;return _xeUtils.default.eachTree(v,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;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":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}),G(e),$()})(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)]))}),w?(0,_vue.h)(w,{id:"VXE_EXPORT_MODAL",modelValue:r.visible,title:h.title||getI18n(s?"vxe.export.printTitle":"vxe.export.expTitle"),className:"vxe-table-export-popup-wrapper",width:h.width||660,height:h.height,minWidth:h.minWidth||500,minHeight:h.minHeight||400,mask:(0,_utils.getDefaultConfig)(h.mask,!0),lockView:(0,_utils.getDefaultConfig)(h.lockView,!0),showFooter:!0,escClosable:!0,maskClosable:!0,position:h.position,fullscreen:h.fullscreen,remember:h.remember,showMinimize:h.showMinimize,showMaximize:(0,_utils.getDefaultConfig)(h.showMaximize,!0),resize:(0,_utils.getDefaultConfig)(h.resize,!0),loading:S.loading,"onUpdate:modelValue"(e){r.visible=e},onShow:W},{default:()=>{var e={$table:L,$grid:l,$gantt:o,options:a,columns:v,params:a.params},t="empty"===a.mode;return(0,_vue.h)("div",{class:"vxe-table-export--panel"},[I?(0,_vue.h)("div",{class:"vxe-table-export--panel-top"},L.callSlot(I,e)):renderEmptyElement(L),(0,_vue.h)("div",{class:"vxe-table-export--panel-body"},T?L.callSlot(T,e):[(0,_vue.h)("table",{class:"vxe-table-export--panel-table",cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("tbody",[[s||!1===_.showFileName?renderEmptyElement(L):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expName")),(0,_vue.h)("td",[D?(0,_vue.h)(D,{ref:B,modelValue:a.filename,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expNamePlaceholder"),"onUpdate:modelValue"(e){a.filename=e}}):renderEmptyElement(L)])]),s||!1===_.showType?renderEmptyElement(L):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expType")),(0,_vue.h)("td",[M?(0,_vue.h)(M,{modelValue:a.type,options:r.typeList,"onUpdate:modelValue"(e){a.type=e}}):renderEmptyElement(L)])]),(s||b)&&!1!==_.showSheet?(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expSheetName")),(0,_vue.h)("td",[D?(0,_vue.h)(D,{ref:P,modelValue:a.sheetName,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expSheetNamePlaceholder"),"onUpdate:modelValue"(e){a.sheetName=e}}):renderEmptyElement(L)])]):renderEmptyElement(L),!1===_.showMode?renderEmptyElement(L):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expMode")),(0,_vue.h)("td",[M?(0,_vue.h)(M,{modelValue:a.mode,options:r.modeList.map(e=>({value:e.value,label:getI18n(e.label)})),"onUpdate:modelValue"(e){a.mode=e}}):renderEmptyElement(L)])]),!1===_.showColumn?renderEmptyElement(L):(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":i}],title:getI18n("vxe.table.allTitle"),onClick:z},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",i?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)])])]),s&&!1!==_.showWidthMode?(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.widthMode")),(0,_vue.h)("td",[M?(0,_vue.h)(M,{modelValue:a.widthMode,options:f,"onUpdate:modelValue"(e){a.widthMode=e}}):renderEmptyElement(L)])]):renderEmptyElement(L),!1===_.showParameter?renderEmptyElement(L):(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expOpts")),k?(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},L.callSlot(k,e))]):(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},A?[(0,_vue.h)(A,{modelValue:t||c,disabled:t,title:getI18n("vxe.export.expHeaderTitle"),content:getI18n("vxe.export.expOptHeader"),"onUpdate:modelValue"(e){a.isHeader=e}}),(0,_vue.h)(A,{modelValue:a.isFooter,disabled:!r.hasFooter,title:getI18n("vxe.export.expFooterTitle"),content:getI18n("vxe.export.expOptFooter"),"onUpdate:modelValue"(e){a.isFooter=e}}),(0,_vue.h)(A,{modelValue:!!c&&a.isTitle,disabled:!c,title:getI18n("vxe.export.expTitleTitle"),content:getI18n("vxe.export.expOptTitle"),"onUpdate:modelValue"(e){a.isTitle=e}}),(0,_vue.h)(A,{modelValue:!!(c&&x&&E)&&a.isColgroup,title:getI18n("vxe.export.expColgroupTitle"),disabled:!c||!x||!E,content:getI18n("vxe.export.expOptColgroup"),"onUpdate:modelValue"(e){a.isColgroup=e}})]:[]),(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},A?[(0,_vue.h)(A,{modelValue:!t&&a.original,disabled:t,title:getI18n("vxe.export.expOriginalTitle"),content:getI18n("vxe.export.expOptOriginal"),"onUpdate:modelValue"(e){a.original=e}}),(0,_vue.h)(A,{modelValue:!!(u&&E&&g)&&a.isMerge,title:getI18n("vxe.export.expMergeTitle"),disabled:t||!u||!E||!g,content:getI18n("vxe.export.expOptMerge"),"onUpdate:modelValue"(e){a.isMerge=e}}),s?renderEmptyElement(L):(0,_vue.h)(A,{modelValue:!!C&&a.useStyle,disabled:!C,title:getI18n("vxe.export.expUseStyleTitle"),content:getI18n("vxe.export.expOptUseStyle"),"onUpdate:modelValue"(e){a.useStyle=e}})]:[]),(0,_vue.h)("div",{class:"vxe-table-export--panel-option-row"},A?[(0,_vue.h)(A,{modelValue:!!p&&a.isTreeAllExpanded,disabled:t||!p,title:getI18n("vxe.export.expTreeAllExpandTitle"),content:getI18n("vxe.export.expOptTreeAllExpand"),"onUpdate:modelValue"(e){a.isTreeAllExpanded=e}}),(0,_vue.h)(A,{modelValue:!!d&&a.isRowGroupAllExpanded,disabled:t||!d,title:getI18n("vxe.export.expRowGroupAllExpandTitle"),content:getI18n("vxe.export.expOptRowGroupAllExpand"),"onUpdate:modelValue"(e){a.isRowGroupAllExpanded=e}})]:[])])])]])])]),y?(0,_vue.h)("div",{class:"vxe-table-export--panel-bottom"},L.callSlot(y,e)):renderEmptyElement(L)])},footer(){var e={$table:L,$grid:l,$gantt:o,options:a,columns:v,params:a.params};return(0,_vue.h)("div",{class:"vxe-table-export--panel-footer"},V?L.callSlot(V,e):[(0,_vue.h)("div",{class:"vxe-table-export--panel-btns"},[U?(0,_vue.h)(U,{content:getI18n("vxe.export.expCancel"),onClick:J}):renderEmptyElement(L),U?(0,_vue.h)(U,{ref:q,status:"primary",content:getI18n(s?"vxe.export.expPrint":"vxe.export.expConfirm"),onClick:Q}):renderEmptyElement(L)])])}}):renderEmptyElement(L)}}});