import cloneDeep from 'lodash.clonedeep'
|
|
export function convertRoutes (nodes) {
|
if (!nodes) return null
|
|
nodes = cloneDeep(nodes)
|
|
let queue = Array.isArray(nodes) ? nodes.concat() : [nodes]
|
|
while (queue.length) {
|
const levelSize = queue.length
|
|
for (let i = 0; i < levelSize; i++) {
|
const node = queue.shift()
|
|
if (!node.children || !node.children.length) continue
|
|
node.children.forEach(child => {
|
// 转化相对路径
|
if (child.path[0] !== '/' && !child.path.startsWith('http')) {
|
child.path = node.path.replace(/(\w*)[/]*$/, `$1/${child.path}`)
|
}
|
})
|
|
queue = queue.concat(node.children)
|
}
|
}
|
|
return nodes
|
}
|