el-cascader已知子节点id获取父级及以上id
// 反显获取门名称
const cascaderCode = (array, id) => {
let stack = []
let going = true
let walker = (array, id) => {
array.forEach((item) => {
if (!going) return
stack.push({ id: item['id'], label: item['deptName'] })
if (item['id'] == id) {
going = false
} else if (item['children']) {
walker(item['children'], id)
} else {
stack.pop()
}
})
if (going) stack.pop()
}
walker(array, id)
return stack
}
返回对象
** el-table联级反显**
// 反显递归函数
const recursion = (arr, type) => {
arr?.forEach((i) => {
if (i.children) {
i.children.map((j) => {
//判断条件
const judging =
type === 'edit' ? props.maintainDeptIds.includes(j.id) : i.flagMy
if (judging) {
//符合条件高亮
nextTick(() => {
leftTable.value.toggleRowSelection(j, true)
})
//子级不高亮
j.children.map((item) => {
nextTick(() => {
leftTable.value.toggleRowSelection(item, false)
})
})
//这层循环完去循环这层下的children,注意传的数组是本层数组不是本层下的children
recursion(i.children, type)
} else {
recursion(i.children, type)
}
})
} else {
//没有下级直接高亮
const judging =
type === 'edit' ? props.maintainDeptIds.includes(i.id) : i.flagMy
if (judging) {
nextTick(() => {
leftTable.value.toggleRowSelection(i, true)
})
}
}
})
}