这里是后端返回的数据
前端是这么处理的(没接触过树的结构 第一次 按照遍历来实现
const getVersionAllFunctions = async () => {
try {
const { data } = await getAllFunctions()
const treeData = []
data.forEach(item => {
// 查找对应的catalog节点
let catalogNode = treeData.find(node => node.label === item.catalog)
if (!catalogNode) {
catalogNode = {
label: item.catalog,
children: []
}
treeData.push(catalogNode)
}
// 如果存在groupName,则查找对应的groupName节点
if (item.groupName) {
let groupNode = catalogNode.children.find(node => node.label === item.groupName)
if (!groupNode) {
groupNode = {
label: item.groupName,
children: []
}
catalogNode.children.push(groupNode)
}
// 添加funcName节点
groupNode.children.push({
label: item.funcName,
funcId: item.funcId
})
} else {
// 如果groupName不存在,则直接添加funcName节点到catalogNode下
catalogNode.children.push({
label: item.funcName,
funcId: item.funcId
})
}
})
funcIdList.value = treeData
console.log(funcIdList.value, 'tree->>')
} catch (error) {
console.error('Error fetching version data:', error)
}
}
这里用了el-tree加复选框的形式 这里怎么实现红框中选中一个复选框节点后 其他节点禁用 这里只针对第三层 因为最多只有第三层