You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
import { Injectable } from '@angular/core'; |
|
|
|
@Injectable() |
|
export class TreeService { |
|
|
|
|
|
toTree(olddata) { |
|
let newdata = [] |
|
function getparentNode(parentId) { |
|
return olddata.find((item) => { |
|
return item.id == parentId |
|
}) |
|
} |
|
olddata.forEach(item => { |
|
item.key = item.id |
|
item.title = item.name |
|
var parentNode = getparentNode(item.parentId); |
|
if (parentNode) { |
|
if (!parentNode.children) { |
|
parentNode.children = [] |
|
} |
|
|
|
if (parentNode.children.length == 0) { |
|
item.isTop = true; |
|
} else { |
|
item.isTop = false; |
|
parentNode.children[parentNode.children.length - 1].isBottom = false; |
|
} |
|
item.isBottom = true; |
|
|
|
parentNode.children.push(item) |
|
} else { |
|
if (!item.parentId) {//如果parentId为null |
|
newdata.push(item) |
|
} |
|
} |
|
}); |
|
return newdata; |
|
} |
|
} |