el-tree组件只有一级节点显示图片,并默认是一张图片,展开时是另外一张图片

<el-tree :data="treeData" :props="defaultProps" show-checkbox :render-content="renderContent"

@check-change="handleCheckChange" >

</el-tree>

data数据:

treeData: [{

id: 1,

label: "一级节点 1",

children: [{

id: 2,

label: "二级节点 1-1"

},

{

id: 3,

label: "二级节点 1-2"

}

]

},

{

id: 4,

label: "一级节点 2",

children: [{

id: 5,

label: "二级节点 2-1"

},

{

id: 5,

label: "二级节点 2-1"

},

{

id: 5,

label: "二级节点 2-1"

}

]

}

],

defaultProps: {

children: "children",

label: "label"

},

方法:

renderContent(h, {

node,

data,

store

}) {

const isTopLevel = node.level === 1;

return ( <

span class = "custom-tree-node" > {

isTopLevel && ( <

img src = {

node.checked ? require('@/assets/33.png') : require('@/assets/32.png')

}

alt = "Node Image"

style = "width: 16px; height: 16px; vertical-align: middle; margin-right: 5px;" /

>

)

} {

node.label

} <

/span>

);

},

handleCheckChange(data, checked, indeterminate) {

this.$refs.tree.updateKeyChildren(data.id);

},

如果都需要图片:去掉isTopLevel即可,

如果是图标:在el-tree中添加插槽(也是父节点有图标,反之去掉判断)

<span slot-scope="{ node, data }" class="slot-t-node">

<template>

<i v-if="node.level === 1" :class="{

'el-icon-folder': !node.expanded, // 节点收缩时的图标

'el-icon-folder-opened': node.expanded, // 节点展开时的图标

'el-icon-user-solid': data.type === 2 // data.type是后端配合提供的识别字段,最后一级

}" style="color: #409eff;" />

<span>{{ node.label }}</span>

</template>

</span>

相关推荐
学以智用9 小时前
Vue3 + Vue Router 4 完整示例(可直接运行)
前端·vue.js
程序员小李白9 小时前
vue2基本语法详细解析(2.7条件渲染)
开发语言·前端·javascript
SuperEugene9 小时前
Vue3 项目目录结构规范:按业务域划分,新人快速上手|项目规范篇
前端·javascript·vue.js
卤蛋fg69 小时前
vue表单vxe-from配置渲染日期范围选择器的用法
vue.js
悟空瞎说9 小时前
# 10年前端血坑:Canvas drawImage画不出图?90%的人栽在这几步
前端
qibmz9 小时前
新电脑安装 nvm 卡住?无需修改配置文件,一行命令完美解决!
前端
遗憾随她而去.9 小时前
高德地图自定义点标记: SVG vs HTML+CSS两种方案
前端·css
陕西小伙伴网络科技有限公司9 小时前
kettle单转换实现分页查询
开发语言·前端·javascript
踩着两条虫9 小时前
低代码 + AI,到底是生产力革命,还是下一代“技术债务”?
前端·人工智能·低代码
南知意-9 小时前
cloud-app-admin:一款现代化、开箱即用的 Vue 3 后台管理模板
前端·javascript·vue.js·开源·开源项目