vxe-table-ro-test
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 8.19 kB
JavaScript
;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}}const{getI18n,getIcon}=_ui.VxeUI;var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableExportPanel",props:{defaultOptions:Object,storeData:Object},setup(x){const m=_ui.VxeUI.getComponent("VxeModal"),h=_ui.VxeUI.getComponent("VxeButton"),_=_ui.VxeUI.getComponent("VxeSelect"),g=_ui.VxeUI.getComponent("VxeInput"),C=_ui.VxeUI.getComponent("VxeCheckbox"),o=(0,_vue.inject)("$xeTable",{}),{computeExportOpts:l,computePrintOpts:a}=o.getComputeMaps(),V=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,loading:!1}),I=(0,_vue.ref)(),b=(0,_vue.ref)(),f=(0,_vue.ref)(),k=(0,_vue.computed)(()=>{var e=x["storeData"];return e.columns.every(e=>e.checked)}),E=(0,_vue.computed)(()=>{var e=x["defaultOptions"];return-1<["html","xml","xlsx","pdf"].indexOf(e.type)}),O=(0,_vue.computed)(()=>{var{storeData:e,defaultOptions:t}=x;return!t.original&&"current"===t.mode&&(e.isPrint||-1<["html","xlsx"].indexOf(t.type))}),T=(0,_vue.computed)(()=>{var e=x["defaultOptions"];return!e.original&&-1<["xlsx"].indexOf(e.type)}),N=t=>{var e=x["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),N(e))},U=()=>{var e=x["storeData"],e=e.columns;V.isAll=e.every(e=>e.disabled||e.checked),V.isIndeterminate=!V.isAll&&e.some(e=>!e.disabled&&(e.checked||e.halfChecked))},y=()=>{var e=x["storeData"];const t=!V.isAll;_xeUtils.default.eachTree(e.columns,e=>{e.disabled||(e.checked=t,e.halfChecked=!1)}),V.isAll=t,U()},D=()=>{(0,_vue.nextTick)(()=>{var e=b.value,t=f.value,o=I.value,e=e||t||o;e&&e.focus()}),U()},r=()=>{var{storeData:e,defaultOptions:t}=x,{hasMerge:e,columns:o}=e,l=k.value,a=O.value,o=_xeUtils.default.searchTree(o,e=>e.checked,{children:"children",mapChildren:"childNodes",original:!0});return Object.assign({},t,{columns:o,isMerge:!!(e&&a&&l)&&t.isMerge})},t=()=>{var e=x["storeData"],t=a.value;e.visible=!1,o.print(Object.assign({},t,r()))},n=()=>{const e=x["storeData"];var t=l.value;V.loading=!0,o.exportData(Object.assign({},t,r())).then(()=>{V.loading=!1,e.visible=!1}).catch(()=>{V.loading=!1})},A=()=>{var e=x["storeData"];e.visible=!1},H=()=>{var e=x["storeData"];(e.isPrint?t:n)()};return"development"===process.env.NODE_ENV&&(0,_vue.nextTick)(()=>{m||(0,_log.errLog)("vxe.error.reqComp",["vxe-modal"]),h||(0,_log.errLog)("vxe.error.reqComp",["vxe-button"]),_||(0,_log.errLog)("vxe.error.reqComp",["vxe-select"]),g||(0,_log.errLog)("vxe.error.reqComp",["vxe-input"]),C||(0,_log.errLog)("vxe.error.reqComp",["vxe-checkbox"])}),()=>{const{defaultOptions:t,storeData:o}=x,{isAll:e,isIndeterminate:l}=V,{hasTree:a,hasMerge:r,isPrint:n,hasColgroup:u}=o,i=t["isHeader"],d=[],p=k.value,v=E.value,s=O.value,c=T.value;return _xeUtils.default.eachTree(o.columns,o=>{var e=(0,_utils.formatText)(o.getTitle(),1),t=o.children&&o.children.length,l=o.checked,a=o.halfChecked,r="html"===o.type;d.push((0,_vue.h)("li",{key:o.id,class:["vxe-export--panel-column-option","level--"+o.level,{"is--group":t,"is--checked":l,"is--indeterminate":a,"is--disabled":o.disabled}],title:r?"":e,onClick:()=>{if(!o.disabled){var e=o;const t=!e.checked;_xeUtils.default.eachTree([e],e=>{e.checked=t,e.halfChecked=!1}),N(e),U()}}},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",a?getIcon().TABLE_CHECKBOX_INDETERMINATE:l?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]}),r?(0,_vue.h)("span",{key:"1",class:"vxe-checkbox--label",innerHTML:e}):(0,_vue.h)("span",{key:"0",class:"vxe-checkbox--label"},e)]))}),m?(0,_vue.h)(m,{modelValue:o.visible,title:getI18n(n?"vxe.export.printTitle":"vxe.export.expTitle"),className:"vxe-table-export-popup-wrapper",width:660,mask:!0,lockView:!0,showFooter:!1,escClosable:!0,maskClosable:!0,loading:V.loading,"onUpdate:modelValue"(e){o.visible=e},onShow:D},{default:()=>(0,_vue.h)("div",{class:"vxe-export--panel"},[(0,_vue.h)("table",{cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("tbody",[[n?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expName")),(0,_vue.h)("td",[g?(0,_vue.h)(g,{ref:b,modelValue:t.filename,type:"text",clearable:!0,placeholder:getI18n("vxe.export.expNamePlaceholder"),"onUpdate:modelValue"(e){t.filename=e}}):(0,_vue.createCommentVNode)()])]),n?(0,_vue.createCommentVNode)():(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expType")),(0,_vue.h)("td",[_?(0,_vue.h)(_,{modelValue:t.type,options:o.typeList,"onUpdate:modelValue"(e){t.type=e}}):(0,_vue.createCommentVNode)()])]),n||v?(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expSheetName")),(0,_vue.h)("td",[g?(0,_vue.h)(g,{ref:f,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",[_?(0,_vue.h)(_,{modelValue:t.mode,options:o.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-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":l}],title:getI18n("vxe.table.allTitle"),onClick:y},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",l?getIcon().TABLE_CHECKBOX_INDETERMINATE:e?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-export--panel-column-body"},d)])])]),(0,_vue.h)("tr",[(0,_vue.h)("td",getI18n("vxe.export.expOpts")),(0,_vue.h)("td",[(0,_vue.h)("div",{class:"vxe-export--panel-option-row"},[C?(0,_vue.h)(C,{modelValue:t.isHeader,title:getI18n("vxe.export.expHeaderTitle"),content:getI18n("vxe.export.expOptHeader"),"onUpdate:modelValue"(e){t.isHeader=e}}):(0,_vue.createCommentVNode)(),C?(0,_vue.h)(C,{modelValue:t.isFooter,disabled:!o.hasFooter,title:getI18n("vxe.export.expFooterTitle"),content:getI18n("vxe.export.expOptFooter"),"onUpdate:modelValue"(e){t.isFooter=e}}):(0,_vue.createCommentVNode)(),C?(0,_vue.h)(C,{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-export--panel-option-row"},[C?(0,_vue.h)(C,{modelValue:!!(i&&u&&s)&&t.isColgroup,title:getI18n("vxe.export.expColgroupTitle"),disabled:!i||!u||!s,content:getI18n("vxe.export.expOptColgroup"),"onUpdate:modelValue"(e){t.isColgroup=e}}):(0,_vue.createCommentVNode)(),C?(0,_vue.h)(C,{modelValue:!!(r&&s&&p)&&t.isMerge,title:getI18n("vxe.export.expMergeTitle"),disabled:!r||!s||!p,content:getI18n("vxe.export.expOptMerge"),"onUpdate:modelValue"(e){t.isMerge=e}}):(0,_vue.createCommentVNode)(),n||!C?(0,_vue.createCommentVNode)():(0,_vue.h)(C,{modelValue:!!c&&t.useStyle,disabled:!c,title:getI18n("vxe.export.expUseStyleTitle"),content:getI18n("vxe.export.expOptUseStyle"),"onUpdate:modelValue"(e){t.useStyle=e}}),C?(0,_vue.h)(C,{modelValue:!!a&&t.isAllExpand,disabled:!a,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-export--panel-btns"},[h?(0,_vue.h)(h,{content:getI18n("vxe.export.expCancel"),onClick:A}):(0,_vue.createCommentVNode)(),h?(0,_vue.h)(h,{ref:I,status:"primary",content:getI18n(n?"vxe.export.expPrint":"vxe.export.expConfirm"),onClick:H}):(0,_vue.createCommentVNode)()])])}):(0,_vue.createCommentVNode)()}}});