UNPKG

vxe-table-select-area

Version:

一个基于 vxe-table 的可区域选中复制、粘贴的组件

63 lines (56 loc) 1.61 kB
const getAllColumns = (columns, parentColumn) => { const result = [] columns.forEach((column) => { column.parentId = parentColumn ? parentColumn.id : null if (column.visible) { if (column.children && column.children.length && column.children.some(column => column.visible)) { result.push(column) result.push(...getAllColumns(column.children, column)) } else { result.push(column) } } }) return result } export const convertToRows = (originColumns) => { let maxLevel = 1 const traverse = (column, parent) => { if (parent) { column.level = parent.level + 1 if (maxLevel < column.level) { maxLevel = column.level } } if (column.children && column.children.length && column.children.some(column => column.visible)) { let colSpan = 0 column.children.forEach((subColumn) => { if (subColumn.visible) { traverse(subColumn, column) colSpan += subColumn.colSpan } }) column.colSpan = colSpan } else { column.colSpan = 1 } } originColumns.forEach((column) => { column.level = 1 traverse(column) }) const rows = [] for (let i = 0; i < maxLevel; i++) { rows.push([]) } const allColumns = getAllColumns(originColumns) allColumns.forEach((column) => { if (column.children && column.children.length && column.children.some(column => column.visible)) { column.rowSpan = 1 } else { column.rowSpan = maxLevel - column.level + 1 } rows[column.level - 1].push(column) }) return rows }