<el-tree
ref="orgTree"
:style="{height:autoHeight,'overflow':'auto'}"
:props="orgTree.defaultProps"
:load="loadOrgChildren"
node-key="id"
lazy
class="filter-tree">
<span slot-scope="{ node, data }" class="custom-tree-node">
<span v-if="node.label.length < 10"> {{ node.label }} </span>
<el-tooltip v-else :content="node.label" class="item" effect="dark" placement="top-start">
<span > {{ node.label | ellipsis(10) }} </span>
</el-tooltip>
<!-- <div>-->
<!-- // 这里可以接着继续写内容来渲染,比如操作按钮编辑删除等-->
<!-- </div>-->
</span>
</el-tree>
orgTree.defaultProps设置树属性
loadOrgChildren方法为数据加载方法
node-key="id"表示将数据中的id字段作为主键,不设置的话,默认整型主键自增
lazy启用懒加载
node-click指定点击触发事件
后面的span标签用来对超长文本做处理(ellipsis方法指定对超过10个子的文本做处理)
data中添加
orgTree: {
defaultProps: {
label: 'name',
children: 'children',
isLeaf: 'leaf'
}
},
isLeaf指定用数据中的leaf字段来判断当前节点是否是叶子节点
label指定用数据中的name字段作为当前节点的名称
children指定使用数据中的children字段作为子节点字段
具体参考最后的数据格式
methods中添加
loadOrgChildren(node, resolve) {
if (node.level === 0) {
getRoot({ 'orgId': '' }).then(res => {
if (res.hasErrors === false) {
resolve(res.data)
} else {
this.$message({
type: 'error',
message: res.message
})
}
})
} else {
console.log(node)
getChildren({ 'orgId': node.data.id }).then(res => {
if (res.hasErrors === false) {
resolve(res.data)
} else {
this.$message({
type: 'error',
message: res.message
})
}
})
}
},
getRoot方法加载根节点,getChildren方法获取当前节点的子节点
添加一个过滤器
filters: {
ellipsis(value, len) {
if (!value) return ''
if (value.length > len) {
return value.slice(0, len) + '...'
}
return value
}
},
<span v-if="node.label.length < 10"> {{ node.label }} </span>
<el-tooltip v-else :content="node.label" class="item" effect="dark" placement="top-start">
<span > {{ node.label | ellipsis(10) }} </span>
</el-tooltip>
此处,如果文本小于10个字,则直接显示,如果文本超过10个子,则再过滤器中,将超出部分使用...替换,并用气泡展示完整数据
获取根节点和获取子节点方法返回的数据格式都是一样的
{"status":200,"data":[{"children":[],"name":"云南","id":"408824016915136513","leaf":false},{"children":[],"name":"贵州","id":"416955951207154737","leaf":false},{"children":[],"name":"四川","id":"416955951207159180","leaf":false},{"children":[],"name":"广西","id":"416955951207167488","leaf":true}],"isOk":true,"errorMessage":null,"hasErrors":false,"code":"200","success":true}
<span v-if="node.label.length < 10">