mixin.min.js 19.6 KB
Newer Older
YazhouChen's avatar
YazhouChen committed
1
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils/methods/xe-utils")),_conf=_interopRequireDefault(require("../../conf")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var printFrame,defaultHtmlStyle="body{margin:0}body *{-webkit-box-sizing:border-box;box-sizing:border-box}.plx-table{border:0;border-collapse:separate;table-layout:fixed;text-align:left;font-size:14px;border-spacing:0}.plx-table.is--print{width:100%}td,thead tr:last-child th{border-bottom:1px solid #e8eaec}.plx-table:not(.b--style-none) thead tr:first-child th,.plx-table:not(.show--head):not(.b--style-none) tbody tr:first-child td{border-top:1px solid #e8eaec}.plx-table:not(.b--style-none) tr td:first-child,.plx-table:not(.b--style-none) tr th:first-child{border-left:1px solid #e8eaec}.plx-table:not(.t--border){border-width:1px}.plx-table.t--border:not(.b--style-none) td,table.t--border:not(.b--style-none) th{border-right:1px solid #e8eaec}.plx-table:not(.b--style-none) thead{background-color:#f8f8f9}.plx-table td>div,.plx-table th>div{padding:.5em .4em}.col--center{text-align:center}.col--right{text-align:right}.col--ellipsis>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.plx-table--tree-node{text-align:left}.plx-table--tree-node-wrapper{position:relative}.plx-table--tree-icon-wrapper{position:absolute;top:50%;width:1em;height:1em;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.plx-table--tree-icon{position:absolute;left:0;top:.3em;width:0;height:0;border-style:solid;border-width:.5em;border-top-color:#939599;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.plx-table--tree-cell{display:block;padding-left:1.5em}",fileForm=document.createElement("form"),fileInput=document.createElement("input");function createFrame(){var e=document.createElement("iframe");return e.className="plx-table--print-frame",e}function hasTreeChildren(e,t){var o=e.treeOpts;return t[o.children]&&t[o.children].length}function handleExport(e,t,o,n){var r=getExportData(e,t,n,o),a=r.columns,i=r.datas;return e.preventEvent(null,"event.export",{$table:e,options:t,columns:a,datas:i},function(){return downloadFile(e,t,getContent(e,t,a,i))})}function getContent(e,t,o,n){switch(t.type){case"csv":return toCsv(e,t,o,n);case"txt":return toTxt(e,t,o,n);case"html":return toHtml(e,t,o,n);case"xml":return toXML(e,t,o,n)}return""}function getSeq(e,t,o,n,r){var a=e.seqOpts,i=a.seqMethod||n.indexMethod;return i?i({row:t,rowIndex:o,column:n,columnIndex:r}):(a.startIndex||e.startIndex)+o+1}function getHeaderTitle(e,t){return(e.original?t.property:t.getTitle())||""}function toCsv(o,t,n,e){var r="\ufeff";if(t.isHeader&&(r+=n.map(function(e){return'"'.concat(getHeaderTitle(t,e),'"')}).join(",")+"\n"),e.forEach(function(t,e){r+=n.map(function(e){return'"'.concat(t[e.id],'"')}).join(",")+"\n"}),t.isFooter){var a=o.footerData;(t.footerFilterMethod?a.filter(t.footerFilterMethod):a).forEach(function(t){r+=n.map(function(e){return'"'.concat(t[o.$getColumnIndex(e)]||"",'"')}).join(",")+"\n"})}return r}function toTxt(o,t,n,e){var r="";if(t.isHeader&&(r+=n.map(function(e){return"".concat(getHeaderTitle(t,e))}).join("\t")+"\n"),e.forEach(function(t,e){r+=n.map(function(e){return"".concat(t[e.id])}).join("\t")+"\n"}),t.isFooter){var a=o.footerData;(t.footerFilterMethod?a.filter(t.footerFilterMethod):a).forEach(function(t){r+=n.map(function(e){return"".concat(t[o.$getColumnIndex(e)]||"")}).join(",")+"\n"})}return r}function hasEllipsis(e,t,o,n){var r=t[o],a=_xeUtils.default.isUndefined(r)||_xeUtils.default.isNull(r)?n:r,i="title"===a||(!0===a||"tooltip"===a)||"ellipsis"===a;return!e.scrollXLoad&&!e.scrollYLoad||i||(i=!0),i}function toHtml(i,r,e,t){var l=i.id,o=i.border,n=i.treeConfig,s=i.treeOpts,a=i.isAllSelected,c=i.headerAlign,d=i.align,p=i.footerAlign,u=i.showOverflow,f=i.showAllOverflow,m=i.showHeaderOverflow,h=i.showHeaderAllOverflow,x=_xeUtils.default.isBoolean(f)?f:u,b=_xeUtils.default.isBoolean(h)?h:m,v=["plx-table",o?"t--border":"","none"===o?"b--style-none":"",r.print?"is--print":"",r.isHeader?"show--head":""].filter(function(e){return e}),g=["<html>","<head>",'<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,minimal-ui"><title>'.concat(r.sheetName,"</title>"),"<style>".concat(r.style||defaultHtmlStyle,"</style>"),"</head>","<body>",'<table class="'.concat(v.join(" "),'" border="0" cellspacing="0" cellpadding="0">'),"<colgroup>".concat(e.map(function(e){return'<col style="width:'.concat(e.renderWidth,'px">')}).join(""),"</colgroup>")].join("");if(r.isHeader&&(g+="<thead><tr>".concat(e.map(function(e){var t=e.headerAlign||e.align||c||d,o=hasEllipsis(i,e,"showHeaderOverflow",b)?["col--ellipsis"]:[],n=getHeaderTitle(r,e);return t&&o.push("col--".concat(t)),-1<["selection","checkbox"].indexOf(e.type)?'<td class="'.concat(o.join(" "),'"><div style="width: ').concat(e.renderWidth,'px"><input type="checkbox" ').concat(a?"checked":"","></div></td>"):'<th class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px">').concat(n,"</div></th>")}).join(""),"</tr></thead>")),t.length&&(g+="<tbody>",n?t.forEach(function(a){g+="<tr>"+e.map(function(e){var t=e.align||d,o=hasEllipsis(i,e,"showOverflow",x)?["col--ellipsis"]:[],n=a[e.id];if(t&&o.push("col--".concat(t)),e.treeNode){var r="";return a._hasChild&&(r='<i class="plx-table--tree-icon"></i>'),o.push("plx-table--tree-node"),"radio"===e.type?'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px"><div class="plx-table--tree-node-wrapper" style="padding-left: ').concat(a._level*s.indent,'px"><div class="plx-table--tree-icon-wrapper">').concat(r,'</div><div class="plx-table--tree-cell"><input type="radio" name="radio_').concat(l,'" ').concat(!0===n||"true"===n?"checked":"","></div></div></div></td>"):-1<["selection","checkbox"].indexOf(e.type)?'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px"><div class="plx-table--tree-node-wrapper" style="padding-left: ').concat(a._level*s.indent,'px"><div class="plx-table--tree-icon-wrapper">').concat(r,'</div><div class="plx-table--tree-cell"><input type="checkbox" ').concat(!0===n||"true"===n?"checked":"","></div></div></div></td>"):'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px"><div class="plx-table--tree-node-wrapper" style="padding-left: ').concat(a._level*s.indent,'px"><div class="plx-table--tree-icon-wrapper">').concat(r,'</div><div class="plx-table--tree-cell">').concat(n,"</div></div></div></td>")}return"radio"===e.type?'<td class="'.concat(o.join(" "),'"><div style="width: ').concat(e.renderWidth,'px"><input type="radio" name="radio_').concat(l,'" ').concat(!0===n||"true"===n?"checked":"","></div></td>"):-1<["selection","checkbox"].indexOf(e.type)?'<td class="'.concat(o.join(" "),'"><div style="width: ').concat(e.renderWidth,'px"><input type="checkbox" ').concat(!0===n||"true"===n?"checked":"","></div></td>"):'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px">').concat(n,"</div></td>")}).join("")+"</tr>"}):t.forEach(function(r){g+="<tr>"+e.map(function(e){var t=e.align||d,o=hasEllipsis(i,e,"showOverflow",x)?["col--ellipsis"]:[],n=r[e.id];return t&&o.push("col--".concat(t)),"radio"===e.type?'<td class="'.concat(o.join(" "),'"><div style="width: ').concat(e.renderWidth,'px"><input type="radio" name="radio_').concat(l,'" ').concat(!0===n||"true"===n?"checked":"","></div></td>"):-1<["selection","checkbox"].indexOf(e.type)?'<td class="'.concat(o.join(" "),'"><div style="width: ').concat(e.renderWidth,'px"><input type="checkbox" ').concat(!0===n||"true"===n?"checked":"","></div></td>"):'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px">').concat(n,"</div></td>")}).join("")+"</tr>"}),g+="</tbody>"),r.isFooter){var y=i.footerData,w=r.footerFilterMethod?y.filter(r.footerFilterMethod):y;w.length&&(g+="<tfoot>",w.forEach(function(r){g+="<tr>".concat(e.map(function(e){var t=e.footerAlign||e.align||p||d,o=hasEllipsis(i,e,"showOverflow",x)?["col--ellipsis"]:[],n=_xeUtils.default.toString(r[i.$getColumnIndex(e)]);return t&&o.push("col--".concat(t)),'<td class="'.concat(o.join(" "),'" title="').concat(n,'"><div style="width: ').concat(e.renderWidth,'px">').concat(n,"</div></td>")}).join(""),"</tr>")}),g+="</tfoot>")}return g+"</table></body></html>"}function toXML(o,t,n,e){var r=['<?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="'.concat(t.sheetName,'">'),"<Table>",n.map(function(e){return'<Column ss:Width="'.concat(e.renderWidth,'"/>')}).join("")].join("");if(t.isHeader&&(r+="<Row>".concat(n.map(function(e){return'<Cell><Data ss:Type="String">'.concat(getHeaderTitle(t,e),"</Data></Cell>")}).join(""),"</Row>")),e.forEach(function(t,e){r+="<Row>"+n.map(function(e){return'<Cell><Data ss:Type="String">'.concat(t[e.id],"</Data></Cell>")}).join("")+"</Row>"}),t.isFooter){var a=o.footerData;(t.footerFilterMethod?a.filter(t.footerFilterMethod):a).forEach(function(t){r+="<Row>".concat(n.map(function(e){return'<Cell><Data ss:Type="String">'.concat(t[o.$getColumnIndex(e)||""],"</Data></Cell>")}).join(""),"</Row>")})}return"".concat(r,"</Table></Worksheet></Workbook>")}function downloadFile(e,t,o){var n=t.filename,r=t.type,a=t.download,i="".concat(n,".").concat(r);if(window.Blob){var l=new Blob([o],{type:"text/".concat(r)});if(!a)return Promise.resolve({type:r,content:o,blob:l});if(navigator.msSaveBlob)navigator.msSaveBlob(l,i);else{var s=document.createElement("a");s.target="_blank",s.download=i,s.href=URL.createObjectURL(l),document.body.appendChild(s),s.click(),document.body.removeChild(s)}!1!==t.message&&_vXETable.default.$modal.message({message:_conf.default.i18n("plx.table.expSuccess"),status:"success"})}else _tools.UtilTools.error("plx.error.notExp")}function getLabelData(l,s,e){var t=l.treeConfig,o=l.treeOpts,c=l.scrollXLoad,d=l.scrollYLoad;if(t){var p=[];return _xeUtils.default.eachTree(e,function(n,r,e,t,o,a){var i={_level:a.length-1,_hasChild:hasTreeChildren(l,n)};s.forEach(function(e,t){var o="";switch(e.type){case"seq":case"index":o=getSeq(l,n,r,e,t);break;case"selection":case"checkbox":o=l.isCheckedByCheckboxRow(n);break;case"radio":o=l.isCheckedByRadioRow(n);break;default:o=_tools.UtilTools.getCellLabel(n,e,{$table:l})}i[e.id]=_xeUtils.default.toString(o)}),p.push(Object.assign(i,n))},o),p}return e.map(function(r,a){var i={};return s.forEach(function(e,t){var o="";switch(e.type){case"seq":case"index":o=getSeq(l,r,a,e,t);break;case"selection":case"checkbox":o=l.isCheckedByCheckboxRow(r);break;case"radio":o=l.isCheckedByRadioRow(r);break;default:if(c||d)o=_tools.UtilTools.getCellLabel(r,e,{$table:l});else{var n=_tools.DomTools.getCell(l,{row:r,column:e});o=n?n.innerText.trim():_tools.UtilTools.getCellLabel(r,e,{$table:l})}}i[e.id]=_xeUtils.default.toString(o)}),i})}function getExportData(e,t,o,n){var r=t.columns?t.columns:n,a=t.data||o;return t.columnFilterMethod&&(r=r.filter(t.columnFilterMethod)),t.dataFilterMethod&&(a=a.filter(t.dataFilterMethod)),{columns:r,datas:getLabelData(e,r,a)}}function replaceDoubleQuotation(e){return e.replace(/^"/,"").replace(/"$/,"")}function parseCsv(e,t){var o=t.split("\n"),n=[],r=[];if(o.length){var a=o.slice(1);r=o[0].split(",").map(replaceDoubleQuotation),a.forEach(function(e){if(e){var o={};e.split(",").forEach(function(e,t){r[t]&&(o[r[t]]=replaceDoubleQuotation(e))}),n.push(o)}})}return{fields:r,rows:n}}function parseTxt(e,t){var o=t.split("\n"),n=[],r=[];if(o.length){var a=o.slice(1);r=o[0].split("\t"),a.forEach(function(e){if(e){var o={};e.split("\t").forEach(function(e,t){r[t]&&(o[r[t]]=replaceDoubleQuotation(e))}),n.push(o)}})}return{fields:r,rows:n}}function parseHTML(e,t){var o=getElementsByTagName((new DOMParser).parseFromString(t,"text/html"),"body"),n=[],r=[];if(o.length){var a=getElementsByTagName(o[0],"table");if(a.length){var i=getElementsByTagName(a[0],"thead");if(i.length){_xeUtils.default.arrayEach(getElementsByTagName(i[0],"tr"),function(e){_xeUtils.default.arrayEach(getElementsByTagName(e,"th"),function(e){r.push(e.textContent)})});var l=getElementsByTagName(a[0],"tbody");l.length&&_xeUtils.default.arrayEach(getElementsByTagName(l[0],"tr"),function(e){var o={};_xeUtils.default.arrayEach(getElementsByTagName(e,"td"),function(e,t){r[t]&&(o[r[t]]=e.textContent||"")}),n.push(o)})}}}return{fields:r,rows:n}}function parseXML(e,t){var o=getElementsByTagName((new DOMParser).parseFromString(t,"application/xml"),"Worksheet"),r=[],a=[];if(o.length){var n=getElementsByTagName(o[0],"Table");if(n.length){var i=getElementsByTagName(n[0],"Row");i.length&&(_xeUtils.default.arrayEach(getElementsByTagName(i[0],"Cell"),function(e){a.push(e.textContent)}),_xeUtils.default.arrayEach(i,function(e,t){if(t){var o={},n=getElementsByTagName(e,"Cell");_xeUtils.default.arrayEach(n,function(e,t){a[t]&&(o[a[t]]=e.textContent)}),r.push(o)}}))}}return{fields:a,rows:r}}function getElementsByTagName(e,t){return e.getElementsByTagName(t)}function checkImportData(e,t,o){var n=[];return e.forEach(function(e){var t=e.property;t&&n.push(t)}),n.every(function(e){return-1<t.indexOf(e)})}function handleImport(t,e,o){var n=t.tableFullColumn,r=t._importResolve,a={fields:[],rows:[]};switch(o.type){case"csv":a=parseCsv(n,e);break;case"txt":a=parseTxt(n,e);break;case"html":a=parseHTML(n,e);break;case"xml":a=parseXML(n,e)}var i=a.fields,l=a.rows,s=checkImportData(n,i,l);s?(t.createData(l).then(function(e){"append"===o.mode?t.insertAt(e,-1):t.reloadData(e)}),!1!==o.message&&_vXETable.default.$modal.message({message:_conf.default.i18n("plx.table.impSuccess"),status:"success"})):!1!==o.message&&_vXETable.default.$modal.message({message:_conf.default.i18n("plx.error.impFields"),status:"error"}),r&&(r(s),t._importResolve=null)}fileForm.className="plx-table--file-form",fileInput.name="file",fileInput.type="file",fileForm.appendChild(fileInput);var _default={methods:{_exportCsv:function(e){return _tools.UtilTools.warn("plx.error.delFunc",["exportCsv","exportData"]),this.exportData(e)},_exportData:function(e){var t=this.visibleColumn,o=this.tableFullData,n=Object.assign({filename:"",sheetName:"",original:!1,message:!1,isHeader:!0,isFooter:!0,download:!0,type:"csv",data:null,columns:null,columnFilterMethod:e&&e.columns?null:function(e){return-1<["seq","index"].indexOf(e.type)||e.property},dataFilterMethod:null,footerFilterMethod:null},_conf.default.export,e);if(n.filename||(n.filename=_xeUtils.default.template(_conf.default.i18n(n.original?"plx.table.expOriginFilename":"plx.table.expFilename"),[_xeUtils.default.toDateString(Date.now(),"yyyyMMddHHmmss")])),n.sheetName||(n.sheetName=_conf.default.i18n("plx.table.expSheetName")),-1===_vXETable.default.exportTypes.indexOf(n.type))throw new Error(_tools.UtilTools.getLog("plx.error.notType",[n.type]));return handleExport(this,n,t,o)},_importByFile:function(t,e){var o=this;if(window.FileReader){var n=_tools.UtilTools.parseFile(t),r=n.type,a=n.filename,i=Object.assign({mode:"covering"},e,{type:r,filename:a});-1<(i.types||_vXETable.default.importTypes).indexOf(r)?this.preventEvent(null,"event.import",{$table:this,file:t,options:i,columns:this.tableFullColumn},function(){var e=new FileReader;e.onerror=function(e){_tools.UtilTools.error("plx.error.notType",[r])},e.onload=function(e){handleImport(o,e.target.result.trim(),i)},e.readAsText(t,"UTF-8")}):_tools.UtilTools.error("plx.error.notType",[r])}else _tools.UtilTools.error("plx.error.notExp")},_importData:function(e){var o=this,t=Object.assign({},_conf.default.import,e),n=new Promise(function(e,t){o._importResolve=e,o._importReject=t});return this.readFile(t).then(function(e){return o.importByFile(e.target.files[0],t)}).catch(function(e){o._importReject(e),o._importReject=null}),n},_readFile:function(e){var o=this,n=0<arguments.length&&void 0!==e?e:{};fileForm.parentNode||document.body.appendChild(fileForm);var r=n.types||_vXETable.default.importTypes;return n.multiple&&(fileInput.multiple="multiple"),fileInput.accept=".".concat(r.join(", .")),fileInput.onchange=function(e){var t=_tools.UtilTools.parseFile(e.target.files[0]).type;-1<r.indexOf(t)?o._fileResolve(e):(!1!==n.message&&_vXETable.default.$modal.message({message:_xeUtils.default.template(_conf.default.i18n("plx.error.notType"),[t]),status:"error"}),o._fileReject(e)),o._fileResolve=null},fileForm.reset(),fileInput.click(),new Promise(function(e,t){o._fileResolve=e,o._fileReject=t})},_print:function(e){var t=Object.assign({original:!1},e,{type:"html",download:!1,print:!0});t.sheetName||(t.sheetName=t.filename),this.exportData(t).then(function(e){var t=e.content,o=e.blob;if(_tools.DomTools.browse.msie){if(printFrame){try{printFrame.contentDocument.write(""),printFrame.contentDocument.clear()}catch(e){}document.body.removeChild(printFrame)}printFrame=createFrame(),document.body.appendChild(printFrame),printFrame.contentDocument.write(t),printFrame.contentDocument.execCommand("print")}else printFrame||((printFrame=createFrame()).onload=function(e){e.target.src&&e.target.contentWindow.print()},document.body.appendChild(printFrame)),printFrame.src=URL.createObjectURL(o)})},_openImport:function(e){var t=Object.assign({mode:"covering",message:!0},e,this.importOpts);!this.getTreeStatus()?(this.importConfig||_tools.UtilTools.warn("plx.error.reqProp",["import-config"]),Object.assign(this.importStore,{file:null,type:"",filename:"",visible:!0}),Object.assign(this.importParams,t)):t.message&&_vXETable.default.$modal.message({message:_conf.default.i18n("plx.error.treeNotImp"),status:"error"})},_openExport:function(e){var t=this.$toolbar,o=this.exportConfig,n=this.exportOpts,r=this.treeConfig,a=this.tableFullColumn,i=this.footerData,l=this.getCheckboxRecords(),s=a.filter(function(e){return-1<["seq","index"].indexOf(e.type)||e.property}),c=!!r,d=!!i.length,p=Object.assign({message:!0,isHeader:!0},n,e),u=p.types||_vXETable.default.exportTypes,f=n.checkMethod||(t?t.customOpts.checkMethod:null);return o||_tools.UtilTools.warn("plx.error.reqProp",["export-config"]),p.types=u.map(function(e){return{value:e,label:"plx.types.".concat(e)}}),s.forEach(function(e){e.checked=e.visible,e.disabled=!!f&&!f({column:e})}),Object.assign(this.exportStore,{columns:s,selectRecords:l,mode:l.length?"selected":"all",hasFooter:d,visible:!0,isTree:c}),Object.assign(this.exportParams,{filename:p.filename||"",sheetName:p.sheetName||"",type:p.type||p.types[0].value,types:p.types,original:p.original,message:p.message,isHeader:p.isHeader,isFooter:d}),this.$nextTick()},confirmExportEvent:function(e){this.exportData(Object.assign({},this.exportOpts,e))},confirmImportEvent:function(e){this.importByFile(this.importStore.file,Object.assign({},this.importOpts,e))},confirmPrintEvent:function(e){this.print(Object.assign({},this.printOpts,e))}}};exports.default=_default;