在antdesignvue当中,经常需要为树形选择器赋值DataSource,但是数据库里只会存储每条数据的父子关系,
这里提供一个简单封装的转换函数,以备调用。
/utils/useage.js当中:
注意:这里是将对象中的PARENT_ID
和ID
这两个字段建立父子关系,根据数据库传参请自行修改。
export function toTree(data) {
let result = []
if (!Array.isArray(data)) {
return result
}
data.forEach(item => {
delete item.children;
});
let map = {
};
data.forEach(item => {
map[item.ID] = item;
});
data.forEach(item => {
let parent = map[item.PARENT_ID];
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
vue当中调用:
import * as tools from "@/utils/useage.js"
let data = tools.toTree(tmp)
this.treeData = datak