From 8354d3061b3c263aa13db44a16606974c2673c1e Mon Sep 17 00:00:00 2001 From: toesbieya <1647775459@qq.com> Date: Sun, 5 Jul 2020 21:16:03 +0800 Subject: [PATCH] =?UTF-8?q?excel=E5=AF=BC=E5=87=BA=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E5=A4=9A=E7=BA=A7=E8=A1=A8=E5=A4=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/src/utils/excel/common.js | 47 ++++++++++++++--------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/vue/src/utils/excel/common.js b/vue/src/utils/excel/common.js index 711cfc9..c6f9011 100644 --- a/vue/src/utils/excel/common.js +++ b/vue/src/utils/excel/common.js @@ -124,47 +124,36 @@ export function mergeExcel(props, data, primaryKey, orderKey, ignoreRows = 1) { * 参考element的table-header * * @param columns 列配置 + * @param separator 分隔符 */ -export function generateHeaders(columns) { +export function generateHeaders(columns, separator = '-') { const tree = [] let maxDepth = 1 - for (let col of columns) { - const header = col.header, node = {depth: 1} + for (const col of columns) { + let header = col.header - if (Array.isArray(header)) { - const depth = header.length - if (depth > maxDepth) maxDepth = depth + if (typeof header === 'string') { + header = header.split(separator) + } - let arr = tree + let arr = tree, depth = header.length - for (let i = 0, temp = node; i < depth; i++) { - const value = header[i] + if (depth > maxDepth) maxDepth = depth - temp.depth = i + 1 - temp.value = value + for (let i = 0; i < depth; i++) { + const value = header[i] - if (arr) { - const already = arr.find(i => i.value === value) - if (!already) { - arr.push(temp) - arr = null - } - else { - if (!already.children) already.children = [] - arr = already.children - } - } + let obj = arr.find(item => item.value === value) - if (i === depth - 1) break + if (!obj) { + obj = {value, depth: i + 1} + if (i !== depth - 1) obj.children = [] - temp.children = [{}] - temp = temp.children[0] + arr.push(obj) } - } - else { - node.value = header || '' - tree.push(node) + + arr = obj.children } }