页面:
<el-row v-loading="treeLoading">
<div>
<el-tree class="filter-tree" //具体属性及方法含义参考官网
:data="treeNodeData"
:props="defaultProps"
:render-content="renderContent"
:default-expanded-keys="[0]"
:load="loadChildrenNode"
:highlight-current="true"
lazy
node-key="pdbh"
@node-click="clickTreeNode"
ref="tree">
</el-tree>
</div>
</el-row>
data:
data(){
return{
treeLoading:false,
treeNodeData:[],
defaultProps: {
label: 'jdmc',
children: 'children',
isLeaf: 'leaf' //控制是否有下箭头
},
}
}
方法:
methods:{
//根据不同的type ,渲染相应的图标
renderContent(h, { node, data, store }) {
let type = data.zylx;
let iconClass = '';
switch (type) {
case '-1':
iconClass = 'el-icon-folder-opened';
break;
case '0':
iconClass = 'def-icon bdz-icon';
break;
case '1':
iconClass = 'def-icon kg-icon';
break;
case '2':
iconClass = 'def-icon xl-icon';
break;
case '3':
iconClass = 'def-icon tjd-icon';
break;
case '4':
iconClass = 'def-icon kbs-icon';
break;
case '5':
iconClass = 'def-icon kgg-icon';
break;
case '6':
iconClass = 'def-icon gan-icon';
break;
case '7':
iconClass = 'def-icon ta-icon';
break;
case '8':
iconClass = 'def-icon gk-icon';
break;
case '9':
iconClass = 'def-icon kh-icon';
break;
case '11':
iconClass = 'def-icon zb-icon';
break;
case '10':
iconClass = 'def-icon zb-icon';
break;
case 'yh':
iconClass = 'el-icon-user-solid';
break;
default:
iconClass = 'el-icon-data-line';
break;
}
return (<span class="treeNode">
<i class={iconClass}></i>
<span class="el-tree-node__label">{node.data.jdmc}</span>
</span>);
},
}
//懒加载获取下级数据,然后渲染。
loadChildrenNode(node, resolve) {
const pdbh = node.data.pdbh;
。。。。//发送相应请求
resolve(res.content)
})
},
//节点点击时进行相应的操作
clickTreeNode(){
。。。。
}