vxe-table-ro-test
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 25.3 kB
JavaScript
"use strict";var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_utils=require("../../../ui/src/utils"),_util2=require("./util"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const{getI18n,hooks,renderer}=_ui.VxeUI;let htmlCellElem;const csvBOM="\ufeff",enterSymbol="\r\n";function defaultFilterExportColumn(e){return e.property||-1<["seq","checkbox","radio"].indexOf(e.type)}const getConvertColumns=e=>{const t=[];return e.forEach(e=>{e.childNodes&&e.childNodes.length?(t.push(e),t.push(...getConvertColumns(e.childNodes))):t.push(e)}),t},convertToRows=e=>{let t=1;const o=(l,e)=>{if(e&&(l._level=e._level+1,t<l._level)&&(t=l._level),l.childNodes&&l.childNodes.length){let t=0;l.childNodes.forEach(e=>{o(e,l),t+=e._colSpan}),l._colSpan=t}else l._colSpan=1},l=(e.forEach(e=>{e._level=1,o(e)}),[]);for(let e=0;e<t;e++)l.push([]);return getConvertColumns(e).forEach(e=>{e.childNodes&&e.childNodes.length?e._rowSpan=1:e._rowSpan=t-e._level+1,l[e._level-1].push(e)}),l};function toTableBorder(e){return!0===e?"full":e||"default"}function getBooleanValue(e){return"TRUE"===e||"true"===e||!0===e}function getFooterData(e,t){const l=e["footerFilterMethod"];return l?t.filter((e,t)=>l({items:e,$rowIndex:t})):t}function getCsvCellTypeLabel(e,t){if(t){if("seq"===e.type)return` `+t;switch(e.cellType){case"string":if(isNaN(t))break;return` `+t;case"number":break;default:if(12<=t.length&&!isNaN(t))return` `+t}}return t}function toTxtCellLabel(e){return/[",\s\n]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function getElementsByTagName(e,t){return e.getElementsByTagName(t)}function getTxtCellKey(e){return`#${e}@`+_xeUtils.default.uniqueId()}function replaceTxtCell(e,t){return e.replace(/#\d+@\d+/g,e=>_xeUtils.default.hasOwnProp(t,e)?t[e]:e)}function getTxtCellValue(e,t){return replaceTxtCell(e,t).replace(/^"+$/g,e=>'"'.repeat(Math.ceil(e.length/2)))}function parseCsvAndTxt(e,t,o){t=t.split(enterSymbol);const r=[];let a=[];if(t.length){const s={},n=Date.now();t.forEach(e=>{if(e){const l={};e=(e=e.replace(/("")|(\n)/g,(e,t)=>{var l=getTxtCellKey(n);return s[l]=t?'"':"\n",l}).replace(/"(.*?)"/g,(e,t)=>{var l=getTxtCellKey(n);return s[l]=replaceTxtCell(t,s),l})).split(o);a.length?(e.forEach((e,t)=>{t<a.length&&(l[a[t]]=getTxtCellValue(e.trim(),s))}),r.push(l)):a=e.map(e=>getTxtCellValue(e.trim(),s))}})}return{fields:a,rows:r}}function parseCsv(e,t){return parseCsvAndTxt(e,t,",")}function parseTxt(e,t){return parseCsvAndTxt(e,t,"\t")}function parseHTML(e,t){var l,t=getElementsByTagName((new DOMParser).parseFromString(t,"text/html"),"body");const o=[],r=[];return t.length&&(t=getElementsByTagName(t[0],"table")).length&&(l=getElementsByTagName(t[0],"thead")).length&&(_xeUtils.default.arrayEach(getElementsByTagName(l[0],"tr"),e=>{_xeUtils.default.arrayEach(getElementsByTagName(e,"th"),e=>{r.push(e.textContent)})}),(l=getElementsByTagName(t[0],"tbody")).length)&&_xeUtils.default.arrayEach(getElementsByTagName(l[0],"tr"),e=>{const l={};_xeUtils.default.arrayEach(getElementsByTagName(e,"td"),(e,t)=>{r[t]&&(l[r[t]]=e.textContent||"")}),o.push(l)}),{fields:r,rows:o}}function parseXML(e,t){var t=getElementsByTagName((new DOMParser).parseFromString(t,"application/xml"),"Worksheet");const o=[],r=[];return t.length&&(t=getElementsByTagName(t[0],"Table")).length&&(t=getElementsByTagName(t[0],"Row")).length&&(_xeUtils.default.arrayEach(getElementsByTagName(t[0],"Cell"),e=>{r.push(e.textContent)}),_xeUtils.default.arrayEach(t,(e,t)=>{if(t){const l={};t=getElementsByTagName(e,"Cell");_xeUtils.default.arrayEach(t,(e,t)=>{r[t]&&(l[r[t]]=e.textContent)}),o.push(l)}})),{fields:r,rows:o}}function clearColumnConvert(e){_xeUtils.default.eachTree(e,e=>{delete e._level,delete e._colSpan,delete e._rowSpan,delete e._children,delete e.childNodes},{children:"children"})}function checkImportData(e,t){const l=[];return e.forEach(e=>{e=e.property;e&&l.push(e)}),t.some(e=>-1<l.indexOf(e))}const tableExportMethodKeys=["exportData","importByFile","importData","saveFile","readFile","print","getPrintHtml","openImport","openExport","openPrint"];hooks.add("tableExportModule",{setupTable(C){const{props:T,reactData:E,internalData:w}=C,{computeTreeOpts:k,computePrintOpts:a,computeExportOpts:j,computeImportOpts:d,computeCustomOpts:_,computeSeqOpts:s,computeRadioOpts:o,computeCheckboxOpts:n,computeColumnOpts:i}=C.getComputeMaps(),M=(0,_vue.inject)("$xeGrid",null),v=(e,t,l,o,r)=>{var a=s.value.seqMethod||o.seqMethod;return a?a({row:t,rowIndex:C.getRowIndex(t),$rowIndex:l,column:o,columnIndex:C.getColumnIndex(o),$columnIndex:r}):e};function U(e,t){var l=i.value,l=t.headerExportMethod||l.headerExportMethod;return l?l({column:t,options:e,$table:C}):(e.original?t.property:t.getTitle())||""}const f=e=>_xeUtils.default.isBoolean(e)?e?"TRUE":"FALSE":e,c=(c,r,e)=>{const{isAllExpand:a,mode:p}=c;var t=T["treeConfig"];const u=o.value,h=n.value;var l=k.value;const m=i.value;if(htmlCellElem=htmlCellElem||document.createElement("div"),t){t=l.children||l.childrenField;const x=[],g=new Map;return _xeUtils.default.eachTree(e,(s,n,e,i,t,l)=>{const d=s._row||s;var o,s=t&&t._row?t._row:t;if(a||!s||g.has(s)&&C.isTreeExpandByRow(s)){t=d,o=(o=k.value).children||o.childrenField;t=t[o]&&t[o].length;const s={_row:d,_level:l.length-1,_hasChild:t,_expand:t&&C.isTreeExpandByRow(d)};r.forEach((e,t)=>{let l="";var o=e.editRender||e.cellRender;let r=e.exportMethod;if(r=(r=!r&&o&&o.name&&(o=renderer.get(o.name))?o.tableExportMethod||o.exportMethod:r)||m.exportMethod)l=r({$table:C,row:d,column:e,options:c});else switch(e.type){case"seq":var a=i.map((e,t)=>t%2==0?Number(e)+1:".").join("");l="all"===p?a:v(a,d,n,e,t);break;case"checkbox":l=f(C.isCheckedByCheckboxRow(d)),s._checkboxLabel=h.labelField?_xeUtils.default.get(d,h.labelField):"",s._checkboxDisabled=h.checkMethod&&!h.checkMethod({row:d});break;case"radio":l=f(C.isCheckedByRadioRow(d)),s._radioLabel=u.labelField?_xeUtils.default.get(d,u.labelField):"",s._radioDisabled=u.checkMethod&&!u.checkMethod({row:d});break;default:c.original?l=(0,_util.getCellValue)(d,e):(l=""+C.getCellLabel(d,e),"html"===e.type?(htmlCellElem.innerHTML=l,l=htmlCellElem.innerText.trim()):(a=C.getCellElement(d,e))&&(l=a.innerText.trim()))}s[e.id]=_xeUtils.default.toValueString(l)}),g.set(d,1),x.push(Object.assign(s,d))}},{children:t}),x}return e.map((s,n)=>{const i={_row:s};return r.forEach((e,t)=>{let l="";var o=e.editRender||e.cellRender;let r=e.exportMethod;if(r=!r&&o&&o.name&&(o=renderer.get(o.name))?o.exportMethod:r)l=r({$table:C,row:s,column:e,options:c});else switch(e.type){case"seq":var a=n+1;l="all"===p?a:v(a,s,n,e,t);break;case"checkbox":l=f(C.isCheckedByCheckboxRow(s)),i._checkboxLabel=h.labelField?_xeUtils.default.get(s,h.labelField):"",i._checkboxDisabled=h.checkMethod&&!h.checkMethod({row:s});break;case"radio":l=f(C.isCheckedByRadioRow(s)),i._radioLabel=u.labelField?_xeUtils.default.get(s,u.labelField):"",i._radioDisabled=u.checkMethod&&!u.checkMethod({row:s});break;default:c.original?l=(0,_util.getCellValue)(s,e):(l=""+C.getCellLabel(s,e),"html"===e.type?(htmlCellElem.innerHTML=l,l=htmlCellElem.innerText.trim()):(a=C.getCellElement(s,e))&&(l=a.innerText.trim()))}i[e.id]=_xeUtils.default.toValueString(l)}),i})},I=(e,t,l)=>{var o=i.value,r=l.editRender||l.cellRender;let a=l.footerExportMethod;a=(a=!a&&r&&r.name&&(r=renderer.get(r.name))?r.tableFooterExportMethod||r.footerExportMethod:a)||o.footerExportMethod;r=C.getVTColumnIndex(l);return a?a({$table:C,items:t,itemIndex:r,row:t,_columnIndex:r,column:l,options:e}):_xeUtils.default.isArray(t)?_xeUtils.default.toValueString(t[r]):_xeUtils.default.get(t,l.field)},p=(l,e,t)=>{let o=csvBOM;return l.isHeader&&(o+=e.map(e=>toTxtCellLabel(U(l,e))).join(",")+enterSymbol),t.forEach(t=>{o+=e.map(e=>toTxtCellLabel(getCsvCellTypeLabel(e,t[e.id]))).join(",")+enterSymbol}),l.isFooter&&(t=E["footerTableData"],getFooterData(l,t).forEach(t=>{o+=e.map(e=>toTxtCellLabel(I(l,t,e))).join(",")+enterSymbol})),o},u=(l,e,t)=>{let o="";return l.isHeader&&(o+=e.map(e=>toTxtCellLabel(U(l,e))).join("\t")+enterSymbol),t.forEach(t=>{o+=e.map(e=>toTxtCellLabel(t[e.id])).join("\t")+enterSymbol}),l.isFooter&&(t=E["footerTableData"],getFooterData(l,t).forEach(t=>{o+=e.map(e=>toTxtCellLabel(I(l,t,e))).join("\t")+enterSymbol})),o},D=(e,t,l)=>{e=e[t],t=_xeUtils.default.isUndefined(e)||_xeUtils.default.isNull(e)?l:e;let o="title"===t||(!0===t||"tooltip"===t)||"ellipsis"===t;var{scrollXLoad:l,scrollYLoad:e}=E;return o=l||e?o||!0:o},h=(n,e,t)=>{const{id:d,border:l,treeConfig:o,headerAlign:i,align:c,footerAlign:a,showOverflow:p,showHeaderOverflow:u}=T,{isAllSelected:h,isIndeterminate:r,mergeList:m}=E,s=k.value,{print:x,isHeader:g,isFooter:v,isColgroup:f,isMerge:b,colgroups:_,original:y}=n,$="check-all";const w=[`<table class="${["vxe-table","border--"+toTableBorder(l),x?"is--print":"",g?"is--header":""].filter(e=>e).join(" ")}" border="0" cellspacing="0" cellpadding="0">`,`<colgroup>${e.map(e=>`<col style="width:${e.renderWidth}px">`).join("")}</colgroup>`];g&&(w.push("<thead>"),f&&!y?_.forEach(e=>{w.push(`<tr>${e.map(t=>{var e=t.headerAlign||t.align||i||c,l=D(t,"showHeaderOverflow",u)?["col--ellipsis"]:[],o=U(n,t);let r=0,a=0;_xeUtils.default.eachTree([t],e=>{e.childNodes&&t.childNodes.length||a++,r+=e.renderWidth},{children:"childNodes"});var s=r-a;return e&&l.push("col--"+e),"checkbox"===t.type?`<th class="${l.join(" ")}" colspan="${t._colSpan}" rowspan="${t._rowSpan}"><div ${x?"":`style="width: ${s}px"`}><input type="checkbox" class="${$}" ${h?"checked":""}><span>${o}</span></div></th>`:`<th class="${l.join(" ")}" colspan="${t._colSpan}" rowspan="${t._rowSpan}" title="${o}"><div ${x?"":`style="width: ${s}px"`}><span>${(0,_utils.formatText)(o,!0)}</span></div></th>`}).join("")}</tr>`)}):w.push(`<tr>${e.map(e=>{var t=e.headerAlign||e.align||i||c,l=D(e,"showHeaderOverflow",u)?["col--ellipsis"]:[],o=U(n,e);return t&&l.push("col--"+t),"checkbox"===e.type?`<th class="${l.join(" ")}"><div ${x?"":`style="width: ${e.renderWidth}px"`}><input type="checkbox" class="${$}" ${h?"checked":""}><span>${o}</span></div></th>`:`<th class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${e.renderWidth}px"`}><span>${(0,_utils.formatText)(o,!0)}</span></div></th>`}).join("")}</tr>`),w.push("</thead>")),t.length&&(w.push("<tbody>"),o?t.forEach(r=>{w.push("<tr>"+e.map(t=>{var e=t.align||c,l=D(t,"showOverflow",p)?["col--ellipsis"]:[],o=r[t.id];if(e&&l.push("col--"+e),t.treeNode){let e="";return r._hasChild&&(e=`<i class="${r._expand?"vxe-table--tree-fold-icon":"vxe-table--tree-unfold-icon"}"></i>`),l.push("vxe-table--tree-node"),"radio"===t.type?`<td class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${t.renderWidth}px"`}><div class="vxe-table--tree-node-wrapper" style="padding-left: ${r._level*s.indent}px"><div class="vxe-table--tree-icon-wrapper">${e}</div><div class="vxe-table--tree-cell"><input type="radio" name="radio_${d}" ${r._radioDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${r._radioLabel}</span></div></div></div></td>`:"checkbox"===t.type?`<td class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${t.renderWidth}px"`}><div class="vxe-table--tree-node-wrapper" style="padding-left: ${r._level*s.indent}px"><div class="vxe-table--tree-icon-wrapper">${e}</div><div class="vxe-table--tree-cell"><input type="checkbox" ${r._checkboxDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${r._checkboxLabel}</span></div></div></div></td>`:`<td class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${t.renderWidth}px"`}><div class="vxe-table--tree-node-wrapper" style="padding-left: ${r._level*s.indent}px"><div class="vxe-table--tree-icon-wrapper">${e}</div><div class="vxe-table--tree-cell">${o}</div></div></div></td>`}return"radio"===t.type?`<td class="${l.join(" ")}"><div ${x?"":`style="width: ${t.renderWidth}px"`}><input type="radio" name="radio_${d}" ${r._radioDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${r._radioLabel}</span></div></td>`:"checkbox"===t.type?`<td class="${l.join(" ")}"><div ${x?"":`style="width: ${t.renderWidth}px"`}><input type="checkbox" ${r._checkboxDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${r._checkboxLabel}</span></div></td>`:`<td class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${t.renderWidth}px"`}>${(0,_utils.formatText)(o,!0)}</div></td>`}).join("")+"</tr>")}):t.forEach(i=>{w.push("<tr>"+e.map(e=>{var t=e.align||c,l=D(e,"showOverflow",p)?["col--ellipsis"]:[],o=i[e.id];let r=1,a=1;if(b&&m.length){var s=C.getVTRowIndex(i._row),n=C.getVTColumnIndex(e),s=(0,_util.mergeBodyMethod)(m,s,n);if(s){var{rowspan:n,colspan:s}=s;if(!n||!s)return"";1<n&&(r=n),1<s&&(a=s)}}return t&&l.push("col--"+t),"radio"===e.type?`<td class="${l.join(" ")}" rowspan="${r}" colspan="${a}"><div ${x?"":`style="width: ${e.renderWidth}px"`}><input type="radio" name="radio_${d}" ${i._radioDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${i._radioLabel}</span></div></td>`:"checkbox"===e.type?`<td class="${l.join(" ")}" rowspan="${r}" colspan="${a}"><div ${x?"":`style="width: ${e.renderWidth}px"`}><input type="checkbox" ${i._checkboxDisabled?"disabled ":""}${getBooleanValue(o)?"checked":""}><span>${i._checkboxLabel}</span></div></td>`:`<td class="${l.join(" ")}" rowspan="${r}" colspan="${a}" title="${o}"><div ${x?"":`style="width: ${e.renderWidth}px"`}>${(0,_utils.formatText)(o,!0)}</div></td>`}).join("")+"</tr>")}),w.push("</tbody>")),v&&(t=E["footerTableData"],(t=getFooterData(n,t)).length)&&(w.push("<tfoot>"),t.forEach(r=>{w.push(`<tr>${e.map(e=>{var t=e.footerAlign||e.align||a||c,l=D(e,"showOverflow",p)?["col--ellipsis"]:[],o=I(n,r,e);return t&&l.push("col--"+t),`<td class="${l.join(" ")}" title="${o}"><div ${x?"":`style="width: ${e.renderWidth}px"`}>${(0,_utils.formatText)(o,!0)}</div></td>`}).join("")}</tr>`)}),w.push("</tfoot>"));t=!h&&r?`<script>(function(){var a=document.querySelector(".${$}");if(a){a.indeterminate=true}})()</script>`:"";return w.push("</table>",t),x?w.join(""):(0,_util2.createHtmlPage)(n,w.join(""))},m=(l,e,t)=>{let o=['<?xml version="1.0"?>','<?mso-application progid="Excel.Sheet"?>','<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">','<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">',"<Version>16.00</Version>","</DocumentProperties>",'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',"<WindowHeight>7920</WindowHeight>","<WindowWidth>21570</WindowWidth>","<WindowTopX>32767</WindowTopX>","<WindowTopY>32767</WindowTopY>","<ProtectStructure>False</ProtectStructure>","<ProtectWindows>False</ProtectWindows>","</ExcelWorkbook>",`<Worksheet ss:Name="${l.sheetName}">`,"<Table>",e.map(e=>`<Column ss:Width="${e.renderWidth}"/>`).join("")].join("");return l.isHeader&&(o+=`<Row>${e.map(e=>`<Cell><Data ss:Type="String">${U(l,e)}</Data></Cell>`).join("")}</Row>`),t.forEach(t=>{o+="<Row>"+e.map(e=>`<Cell><Data ss:Type="String">${t[e.id]}</Data></Cell>`).join("")+"</Row>"}),l.isFooter&&(t=E["footerTableData"],getFooterData(l,t).forEach(t=>{o+=`<Row>${e.map(e=>`<Cell><Data ss:Type="String">${I(l,t,e)}</Data></Cell>`).join("")}</Row>`})),o+"</Table></Worksheet></Workbook>"},F=s=>{const{remote:l,columns:n,colgroups:o,exportMethod:r,afterExportMethod:t}=s;return new Promise(e=>{if(l){var t={options:s,$table:C,$grid:M};e(r?r(t):t)}else{const a=(e=>{const{columns:t,dataFilterMethod:l}=e;let o=e.data;return l&&(o=o.filter((e,t)=>l({row:e,$rowIndex:t}))),c(e,t,o)})(s);e(C.preventEvent(null,"event.export",{options:s,columns:n,colgroups:o,datas:a},()=>{var e=s,t=((e,t,l)=>{if(t.length)switch(e.type){case"csv":return p(e,t,l);case"txt":return u(e,t,l);case"html":return h(e,t,l);case"xml":return m(e,t,l)}return""})(s,n,a),{filename:l,type:o,download:r}=e;if(!r)return r=(0,_util2.getExportBlobByContent)(t,e),Promise.resolve({type:o,content:t,blob:r});_ui.VxeUI.saveFile&&_ui.VxeUI.saveFile({filename:l,type:o,content:t}).then(()=>{!1!==e.message&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:getI18n("vxe.table.expSuccess"),status:"success"})})}))}}).then(e=>(clearColumnConvert(n),s.print||t&&t({status:!0,options:s,$table:C,$grid:M}),Object.assign({status:!0},e))).catch(()=>{clearColumnConvert(n),s.print||t&&t({status:!1,options:s,$table:C,$grid:M});return Promise.reject({status:!1})})},x=(a,s)=>{const{importMethod:n,afterImportMethod:t}=s,{type:i,filename:c}=(0,_utils.parseFile)(a);var e=d.value;return n||_xeUtils.default.includes(_xeUtils.default.keys(e._typeMaps),i)?new Promise((t,l)=>{const e=e=>{t(e),w._importResolve=null,w._importReject=null},o=e=>{l(e),w._importResolve=null,w._importReject=null};if(w._importResolve=e,w._importReject=o,window.FileReader){const d=Object.assign({mode:"insertTop"},s,{type:i,filename:c});var r;d.remote?n?Promise.resolve(n({file:a,options:d,$table:C})).then(()=>{e({status:!0})}).catch(()=>{e({status:!0})}):e({status:!0}):(r=w["tableFullColumn"],C.preventEvent(null,"event.import",{file:a,options:d,columns:r},()=>{var e=new FileReader;e.onerror=()=>{(0,_log.errLog)("vxe.error.notType",[i]),o({status:!1})},e.onload=t=>{{var l=t.target.result,o=d;const{tableFullColumn:r,_importResolve:a,_importReject:s}=w;let e={fields:[],rows:[]};switch(o.type){case"csv":e=parseCsv(r,l);break;case"txt":e=parseTxt(r,l);break;case"html":e=parseHTML(r,l);break;case"xml":e=parseXML(r,l)}const{fields:n,rows:i}=e;checkImportData(r,n)?C.createData(i).then(e=>{let t;return"insert"!==o.mode&&"insertBottom"!==o.mode||(t=C.insertAt(e,-1)),t="insertTop"===o.mode?C.insert(e):C.reloadData(e),!1!==o.message&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:getI18n("vxe.table.impSuccess",[i.length]),status:"success"}),t.then(()=>{a&&a({status:!0})})}):!1!==o.message&&(_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:getI18n("vxe.error.impFields"),status:"error"}),s)&&s({status:!1})}},e.readAsText(a,d.encoding||"UTF-8")}))}else"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notExp"),e({status:!0})}).then(()=>{t&&t({status:!0,options:s,$table:C})}).catch(e=>(t&&t({status:!1,options:s,$table:C}),Promise.reject(e))):(!1!==s.message&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:getI18n("vxe.error.notType",[i]),status:"error"}),Promise.reject({status:!1}))},l=(e,t)=>{var{treeConfig:l,showHeader:o,showFooter:r}=T;const{initStore:a,mergeList:s,isGroup:n,footerTableData:i,exportStore:d,exportParams:c}=E;var p=w["collectColumn"],u=j.value,h=_.value,m=C.getCheckboxRecords(),x=M?M.getComputeMaps().computeProxyOpts.value:{},g=!!i.length,v=!l&&s.length,o=Object.assign({message:!0,isHeader:o,isFooter:r,current:"current",modes:["current","selected"].concat(x.ajax&&x.ajax.queryAll?["all"]:[])},e),r=o.types||_xeUtils.default.keys(u._typeMaps),x=o.modes||[];const f=h.checkMethod;e=p.slice(0);const b=o["columns"];u=r.map(e=>({value:e,label:getI18n("vxe.export.types."+e)})),h=x.map(e=>e&&e.value?{value:e.value,label:e.label||e.value}:{value:e,label:getI18n("vxe.export.modes."+e)});return _xeUtils.default.eachTree(e,(o,e,t,l,r)=>{(o.children&&o.children.length||defaultFilterExportColumn(o))&&(o.checked=b?b.some(e=>{var t,l;return(0,_util.isColumnInfo)(e)?o===e:_xeUtils.default.isString(e)?o.field===e:(t=e.id||e.colId,l=e.type,e=e.property||e.field,t?o.id===t:e&&l?o.property===e&&o.type===l:e?o.property===e:!!l&&o.type===l)}):o.visible,o.halfChecked=!1,o.disabled=r&&r.disabled||!!f&&!f({column:o}))}),Object.assign(d,{columns:e,typeList:u,modeList:h,hasFooter:g,hasMerge:v,hasTree:l,isPrint:t,hasColgroup:n,visible:!0}),Object.assign(c,{mode:m.length?"selected":"current"},o),h.some(e=>e.value===c.mode)||(c.mode=h[0].value),u.some(e=>e.value===c.type)||(c.type=u[0].value),a.export=!0,(0,_vue.nextTick)()},g={exportData(e){var t=T["treeConfig"],{isGroup:l,tableGroupColumn:o}=E;const{tableFullColumn:a,afterFullData:r}=w;var s=j.value,n=k.value;const i=Object.assign({isHeader:!0,isFooter:!0,isColgroup:!0,download:!0,type:"csv",mode:"current"},s,{print:!1},e);var{type:e,mode:d,columns:c,original:p,beforeExportMethod:u}=i;let h=[];c=c&&c.length?c:null;let m=i.columnFilterMethod;c||(m=m||(p?({column:e})=>e.property:({column:e})=>defaultFilterExportColumn(e))),h=c?(i._isCustomColumn=!0,_xeUtils.default.searchTree(_xeUtils.default.mapTree(c,e=>{let t;if(e){if((0,_util.isColumnInfo)(e))t=e;else if(_xeUtils.default.isString(e))t=C.getColumnByField(e);else{var l=e.id||e.colId;const o=e.type,r=e.property||e.field;l?t=C.getColumnById(l):r&&o?t=a.find(e=>e.property===r&&e.type===o):r?t=C.getColumnByField(r):o&&(t=a.find(e=>e.type===o))}return t||{}}},{children:"childNodes",mapChildren:"_children"}),(e,t)=>(0,_util.isColumnInfo)(e)&&(!m||m({column:e,$columnIndex:t})),{children:"_children",mapChildren:"childNodes",original:!0})):_xeUtils.default.searchTree(l?o:a,(e,t)=>e.visible&&(!m||m({column:e,$columnIndex:t})),{children:"children",mapChildren:"childNodes",original:!0});const x=[];if(_xeUtils.default.eachTree(h,e=>{e.children&&e.children.length||x.push(e)},{children:"childNodes"}),i.columns=x,i.colgroups=convertToRows(h),i.filename||(i.filename=getI18n(i.original?"vxe.table.expOriginFilename":"vxe.table.expFilename",[_xeUtils.default.toDateString(Date.now(),"yyyyMMddHHmmss")])),i.sheetName||(i.sheetName=document.title),!i.exportMethod&&!_xeUtils.default.includes(_xeUtils.default.keys(s._typeMaps),e))return"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notType",[e]),Promise.reject({status:!1});if(i.print||u&&u({options:i,$table:C,$grid:M}),!i.data)if(i.data=[],"selected"===d){const g=C.getCheckboxRecords();-1<["html","pdf"].indexOf(e)&&t?i.data=_xeUtils.default.searchTree(C.getTableData().fullData,e=>-1<C.findRowIndexOf(g,e),Object.assign({},n,{data:"_row"})):i.data=g}else if("all"===d){if("development"!==process.env.NODE_ENV||M||(0,_log.warnLog)("vxe.error.errProp",["all","mode=current,selected"]),M&&!i.remote){p=M["reactData"],c=M.getComputeMaps()["computeProxyOpts"],l=p["sortData"];const{beforeQueryAll:v,afterQueryAll:f,ajax:b={},props:T={}}=c.value;o=b.queryAll;const _=b.queryAllSuccess,y=b.queryAllError;if("development"!==process.env.NODE_ENV||o||(0,_log.warnLog)("vxe.error.notFunc",["proxy-config.ajax.queryAll"]),o){const $={$table:C,$grid:M,sort:l.length?l[0]:{},sorts:l,filters:p.filterData,form:p.formData,options:i};return Promise.resolve((v||o)($)).then(e=>(i.data=(T.list?_xeUtils.default.get(e,T.list):e)||[],f&&f($),_&&_(Object.assign(Object.assign({},$),{response:e})),F(i))).catch(e=>{y&&y(Object.assign(Object.assign({},$),{response:e}))})}}}else"current"===d&&(i.data=r);return F(i)},importByFile(e,t){var t=Object.assign({},t),l=t["beforeImportMethod"];return l&&l({options:t,$table:C}),x(e,t)},importData(e){var t=d.value;const l=Object.assign({types:_xeUtils.default.keys(t._typeMaps)},t,e),{beforeImportMethod:o,afterImportMethod:r}=l;return o&&o({options:l,$table:C}),_ui.VxeUI.readFile(l).catch(e=>(r&&r({status:!1,options:l,$table:C}),Promise.reject(e))).then(e=>{e=e.file;return x(e,l)})},saveFile(e){return _ui.VxeUI.saveFile(e)},readFile(e){return _ui.VxeUI.readFile(e)},print(e){var t=a.value;const l=Object.assign({original:!1},t,e,{type:"html",download:!1,remote:!1,print:!0}),o=(l.sheetName||(l.sheetName=document.title),l.beforePrintMethod),r=l.html||l.content;return new Promise((e,t)=>{_ui.VxeUI.print?r?e(_ui.VxeUI.print({title:l.sheetName,html:r,customStyle:l.style,beforeMethod:o?({html:e})=>o({html:e,content:e,options:l,$table:C}):void 0})):e(g.exportData(l).then(({content:e})=>_ui.VxeUI.print({title:l.sheetName,html:e,customStyle:l.style,beforeMethod:o?({html:e})=>o({html:e,content:e,options:l,$table:C}):void 0}))):t({status:!1})})},getPrintHtml(e){var t=a.value,t=Object.assign({original:!1},t,e,{type:"html",download:!1,remote:!1,print:!0});return g.exportData(t).then(({content:e})=>({html:e}))},openImport(e){var{treeConfig:t,importConfig:l}=T;const{initStore:o,importStore:r,importParams:a}=E;var s=d.value,s=Object.assign({mode:"insertTop",message:!0,types:_xeUtils.default.keys(s._typeMaps),modes:["insertTop","covering"]},s,e),e=s.types||[],n=s.modes||[];!t?(l||(0,_log.errLog)("vxe.error.reqProp",["import-config"]),t=e.map(e=>({value:e,label:getI18n("vxe.export.types."+e)})),l=n.map(e=>e&&e.value?{value:e.value,label:e.label||e.value}:{value:e,label:getI18n("vxe.import.modes."+e)}),Object.assign(r,{file:null,type:"",filename:"",modeList:l,typeList:t,visible:!0}),Object.assign(a,s),l.some(e=>e.value===a.mode)||(a.mode=l[0].value),o.import=!0):s.message&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:getI18n("vxe.error.treeNotImp"),status:"error"})},openExport(e){var t=j.value,t=Object.assign({message:!0,types:_xeUtils.default.keys(t._typeMaps)},t,e);"development"!==process.env.NODE_ENV||T.exportConfig||(0,_log.errLog)("vxe.error.reqProp",["export-config"]),l(t)},openPrint(e){var t=a.value,t=Object.assign({message:!0},t,e);"development"!==process.env.NODE_ENV||T.printConfig||(0,_log.errLog)("vxe.error.reqProp",["print-config"]),l(t,!0)}};return g},setupGrid(e){return e.extendTableMethods(tableExportMethodKeys)}});