UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

63 lines (56 loc) 1.67 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 }