bin-ui
Version:
基于 vue2.6 / vue-cli3 的 UI 组件库
94 lines (80 loc) • 2.27 kB
JavaScript
import { deepCopy } from '../../../utils/util'
const convertColumnOrder = (columns, fixedType) => {
let list = []
let other = []
columns.forEach((col) => {
if (col.fixed && col.fixed === fixedType) {
list.push(col)
} else {
other.push(col)
}
})
return list.concat(other)
}
export { convertColumnOrder }
// 转换时将tablehead设置为true,正常情况下为false,如table.vue
const getAllColumns = (cols, forTableHead = false) => {
const columns = deepCopy(cols)
const result = []
columns.forEach((column) => {
if (column.children) {
if (forTableHead) result.push(column)
result.push.apply(result, getAllColumns(column.children, forTableHead))
} else {
result.push(column)
}
})
return result
}
export { getAllColumns }
const convertToRows = (columns, fixedType = false) => {
const originColumns = fixedType ? fixedType === 'left' ? deepCopy(convertColumnOrder(columns, 'left')) : deepCopy(convertColumnOrder(columns, 'right')) : deepCopy(columns)
let maxLevel = 1
const traverse = (column, parent) => {
if (parent) {
column.level = parent.level + 1
if (maxLevel < column.level) {
maxLevel = column.level
}
}
if (column.children) {
let colSpan = 0
column.children.forEach((subColumn) => {
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, true)
allColumns.forEach((column) => {
if (!column.children) {
column.rowSpan = maxLevel - column.level + 1
} else {
column.rowSpan = 1
}
rows[column.level - 1].push(column)
})
return rows
}
export { convertToRows }
const getRandomStr = function (len = 32) {
const $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
const maxPos = $chars.length
let str = ''
for (let i = 0; i < len; i++) {
str += $chars.charAt(Math.floor(Math.random() * maxPos))
}
return str
}
export { getRandomStr }