@cataract6545/tmui
Version:
tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI
109 lines (104 loc) • 2.85 kB
text/typescript
//返回 一个节点从父到子的路径数据组。
export const getNodeRouterData = function (list: Array<any>, id = '', prentId = [], idmap = 'id') {
let p = [];
if (typeof prentId == 'undefined') {
prentId = [];
}
if (!Array.isArray(id)) {
id = [id]
}
let arr = Array.from(prentId)
for (let i = 0, len = list.length; i < len; i++) {
arr.push(list[i])
if (list[i].id === id[0]) {
return arr
}
let children = list[i].children
if (children && children.length) {
let result = getNodeRouter(children, id, arr, idmap = 'id')
if (result) return result
}
arr.pop()
}
return null
}
interface Item {
id: string;
text: string;
children: Item[];
}
export function getNodeRouterCustomStr(itemList: any, idList: string[], strKey = "text"): Item[] {
if (!itemList) return []
const result: Item[] = [];
for (const item of itemList) {
if (idList.includes(item.id)) {
result.push(item);
}
result.push(...getNodeRouterCustomStr(item.children, idList, strKey));
}
return result;
}
//返回 一个节点从父到子的路径id组。
export const getNodeRouter = function (list = [], id = '', prentId = [], idmap = 'id'): string {
let p = [];
if (typeof prentId == 'undefined') {
prentId = [];
}
if (!Array.isArray(id)) {
id = [id]
}
let arr = Array.from(prentId)
for (let i = 0, len = list.length; i < len; i++) {
arr.push(list[i][idmap])
if (list[i].id === id[0]) {
return arr
}
let children = list[i].children
if (children && children.length) {
let result = getNodeRouter(children, id, arr, idmap = 'id')
if (result) return result
}
arr.pop()
}
return ""
}
//平铺它所有的节点id为一维数组。
export const treeFlat = function (arr = [], idmap = 'id') {
let res = []
arr.forEach((item) => {
res.push(item[idmap])
if (item.children) {
res.push(...treeFlat(item.children, idmap = 'id'))
}
})
return res
}
//检查 一个节点是否是否父节点,并返回它下面的所有子节点。
export const queryNodeIsParent = function (arr: Array<any> = [], id = "", idmap = 'id'): Array<any> {
let res = null;
for (let i = 0, len = arr.length; i < len; i++) {
let item = arr[i]
if (item[idmap] == id && item.children) {
res = item;
break;
} else if (item.children) {
let rulst = queryNodeIsParent(item.children, id, idmap = 'id');
if (rulst) {
res = rulst;
}
}
}
return res
}
//找出所有父节点id,返回数据
export const queryParentNode = function (arr = [], idmap = 'id'): Array<string | number> {
let res = [];
for (let i = 0, len = arr.length; i < len; i++) {
let item = arr[i]
if (item.children) {
res.push(item[idmap])
res.push(...queryParentNode(item.children))
}
}
return res
}