el-tree的节点的过滤展示。
<template>
<div>
<el-tree class="filter-tree" node-key="id" :show-checkbox="true" accordion ref="powerTree" :data="data" :props="defaultProps" default-expand-all :filter-node-method="filterNode">
</el-tree>
<el-button type="primary" @click="sureRole()" size="medium">确 定</el-button>
</div>
</template>
<script>
export default {
watch: {},
methods: {
filterNode(value, data) {
if (!value) return true
// 当这个字段为真的时候就展示这个节点。
return data.configurable == true
},
sureRole() {
let nodesInfo = this.$refs['powerTree'].getCheckedNodes()
let arr = nodesInfo.map((item) => item.id)
console.log('nodesInfo')
console.log(arr)
},
filterText(val) {
this.$refs.powerTree.filter(val)
},
},
data() {
return {
data: [
{
id: 1,
label: '一级 1',
configurable: true,
children: [
{
id: 4,
label: '二级 1-1',
configurable: true,
children: [
{
id: 9,
label: '三级 1-1-1',
configurable: false,
},
{
id: 10,
label: '三级 1-1-2',
configurable: true,
},
],
},
],
},
{
id: 2,
label: '一级 2',
configurable: true,
children: [
{
id: 5,
label: '二级 2-1',
configurable: true,
},
{
id: 6,
label: '二级 2-2',
configurable: true,
},
],
},
{
id: 3,
label: '一级 3',
configurable: false,
children: [
{
id: 7,
label: '二级 3-1',
configurable: false,
},
{
id: 8,
label: '二级 3-2',
configurable: true,
},
],
},
],
defaultProps: {
children: 'children',
label: 'label',
},
}
},
mounted(){
//根据条件展示节点
this.filterText(3)
}
}
</script>