该文章为本菜鸡学习记录,如有错误还请大佬指教
本人刚开始接触vue框架,在使用element-plus组件想实现树形控件,发现官网的组件示例没有图标区分显示
实现效果
代码
<temple 部分
<el-tree :data="data" @node-click="handleNodeClick" node-key="id">
<template #default="{ node, data }">
<span class="custom-tree-node">
<!-- 第一级固定一个图标 -->
<img src="./assets/main/depts.png" v-if="node.level === 1" />
<!-- 非第一级且有子元素是个文件夹图标 -->
<img src="./assets/main/depts.png" v-if="node.childNodes.length && node.level !== 1" />
<!-- 非第一级且没子元素且未选中是个文件图标 -->
<img src="./assets/main/dept.png" v-show="!node.childNodes.length && node.level !== 1" />
<span
@click="getNode(node)"
:class="[node.childNodes.length ? 'bold' : '', node.isCurrent ? 'orange' : '']"
>
{{ node.label }}
</span>
</span>
</template>
</el-tree>
数据展示如下:
<script 部分
const data: Tree[] = [
{
label: '部门列表',
children: [
{
label: '部门1',
},
{
label: '部门2',
},
{
label: '镇街(平台)',
children: [
{
label: '**街道',
},
{
label: '**街道',
},
],
},
{
label: '镇街综合行政执法队',
children: [
{
label: '***综合行政执法队',
},
{
label: '***综合行政执法队',
},
],
},
],
},
]