import Vue from 'vue';
/**
 * @summary 将el-table导出成Excel，并可以选择不需要导出的列
 * @summary 该方法是对icore-sdk的handleDownloadExcelForElTable方法进行的扩展
 * @param id 表格对象的id(必须)
 * @param fileName Excel文件的名称(必须)
 * @param set 该参数接收对象，用来修改该方法的默认参数【
 * 1、noneClassName 不需要导出的列的类名（默认为：gn-TableDownloadExcel-none），el-table通过class-name设置列类名
 * 2、idName 新复制的表格对象的id（默认为：gj_handleDownloadExcelForElTable_obj）
 * 3、tableDocument 需要打印的表格元素所在的document对象（默认为：执行当前方法的页面的document对象）
 * 】
 */
export const PEhandleDownloadExcelForElTable = (
    id,
    fileName,
    set = {}
) => {
    let noneClassName = set.noneClassName || 'gn-TableDownloadExcel-none';
    let idName = set.idName || 'gj_handleDownloadExcelForElTable_obj';
    let tableDocument = set.tableDocument || document;
    // 将上次生成的表格元素删除
    if (document.getElementById(idName)) {
        document.getElementById(idName).remove();
    }
    // 获取需要导出的表格元素
    let TableObj = tableDocument.getElementById(id).cloneNode(true);
    // 找出不需要导出的列并将其删除
    let noneArr = TableObj.getElementsByClassName(noneClassName);
    while (noneArr.length > 0) {
        noneArr[0].remove();
    }
    TableObj.id = idName;
    TableObj.style.display = 'none';
    // 将准备导出的表格元素添加到document中，以供handleDownloadExcelForElTable方法使用。
    document.body.appendChild(TableObj);
    // 开始导出生成Excel
    let vm = new Vue();
    vm.handleDownloadExcelForElTable(idName, fileName);
}
