el-tree树结构:
<el-tree
class="device-tree"
:data="deviceData"
node-key="id"
:props="defaultDeviceProps"
default-expand-all
:filter-node-method="filterDeviceNode"
ref="deviceTree"
show-checkbox
:expand-on-click-node="false"
@check-change="handleCheckChange"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span :title="node.label" class="show-ellipsis">{{ node.label }}</span>
</span>
</el-tree>
在defaultDeviceProps配置disabled项。参考官网:
回调函数return布尔值,true是禁选,false是不禁选,通过data就可以拿到后端接口返回字段
代码实现:
defaultDeviceProps: {
children: 'children',
label: 'label',
disabled: (data, node) => {
//先判断该设备是否已存在于该分组的下级设备里,如果存在则设置为禁选
let obj = this.subEquipmentList.find(item => {
return item.equipmentId == data.id && data.device
})
//根据接口字段device判断该节点是否是设备,如果device是false就不是设备,就将该节点设置为禁选,如果是设备就不禁选
return obj ? true : !data.device
}
}
页面效果: