如何用Element制作自定义树形控件,步骤是什么
Admin 2022-07-16 群英技术资讯 1473 次浏览
这篇文章主要讲解了“如何用Element制作自定义树形控件,步骤是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Element制作自定义树形控件,步骤是什么”吧!Element UI 官网提供的树形控件包含基础的、可选择的、自定义节点内容的、带节点过滤的以及可拖拽节点的树形结构 如下:

我想要的效果是支持搜索效果的树,将鼠标悬浮后显示添加修改图标,点击图标后弹出对应页面;并且在每个文件夹前添加自定义图标。
实现效果:

1、使用插槽(slot)
<el-col :span="4" :xs="24">
<!--目录搜索功能-->
<div class="head-container">
<el-input
v-model="dirNameCn"
placeholder="请输入目录名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<!--树的展示-->
<div class="head-container">
<el-tree
:data="dirTreeOptions"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
@node-click="handleNodeClick"
icon-class="el-icon-folder-opened"
node-key="id"
:check-on-click-node="true"
>
<!--隐藏的新增等图标-->
<span class="custom-tree-node" slot-scope="{ node, data }" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
<span>{{ node.label }}</span>
<div>
<i v-show="data.show" class="el-icon-circle-plus" style="color: #00afff" @click="addDial(node, data)"/>
<!--隐藏的下拉选-->
<el-dropdown trigger="click" placement="right" @command="(command) => {handleCommand(command)}">
<i v-show="data.show" class="el-icon-more" style="color: #D3D3D3"/>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="a">重命名</el-dropdown-item>
<el-dropdown-item command="b">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</span>
</el-tree>
</div>
</el-col>
2、组件对应的JS
注意:树的数据是从后端查询回来的,保存在dirTreeOptions里面
<script>
export default {
name: 'reqmdoctree',
data() {
return {
// 左侧搜索框内容
dirNameCn: '',
// 目录树选项
dirTreeOptions: undefined,
defaultProps: {
children: "children",
label: "label"
},
// 树形菜单中有无子节点
yesChild: undefined,
// 控制左侧新增提示信息框
show: 0,
// 查询需求文档信息参数
queryParams: {
docNo: undefined, // 文档编号
docNameEn: undefined, // 文档英文名称
dirNo: undefined,// 目录编号
current: 1, // 当前页数
size: 20 // 每页显示多少条
},
treeId: undefined,
}
},
methods: {
/** 查询需求目录下拉树结构 */
getTreeselect() {
treeselect().then(response => {
this.dirTreeOptions = response.data
})
},
// 搜索值为过滤函数
filterNode(value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
// 节点被点击时的回调函数
handleNodeClick(data) {
// console.log(data)
this.treeId = data.id
this.yesChild = data.children
this.queryParams.dirNo = data.id
this.getList()
},
// 树中三个点的事件
handleCommand(command) {
if (command == 'a') {
selectReqNo(this.treeId).then(response => {
this.uuid = response.msg
getObjTree(response.msg).then(response => {
this.form = response.data
this.open = true
this.title = '修改需求文档目录配置表'
})
})
}
if (command == 'b') {
if (this.yesChild != undefined) {
this.$notify.error({
title: '警告',
message: '此目录下还有别的文件夹'
})
} else {
selectReqNo(this.treeId).then(response => {
this.uuid = response.msg
this.$confirm('是否确认删除ID为' + this.uuid + '的数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(()=>{
return delObjTree(this.uuid)
}).then(data => {
this.getTreeselect()
this.msgSuccess('删除成功')
}).catch(function() {
})
})
}
}
},
// 左侧新建目录/文件
addDial(node, data) {
// console.log(node, '---', data)
this.reset()
this.form.dirParentId = data.id
this.open = true
this.title = '添加需求文档目录配置表'
},
// 左侧鼠标悬浮展示图标
mouseenter(data){
this.$set(data, 'show', true)
},
// 左侧鼠标离开不展示图标
mouseleave(data){
this.$set(data, 'show', false)
},
//打开新增资源弹窗 这里略......
}
}
</script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
拖拽元素的需求还是比较常见的,之前我们也了解过拖拽元素,这篇文章给大家分享的是用jQuery实现容器间的元素拖拽效果,具体怎样做呢?我们直接看代码:
js获取json对象中的key与value值的方法很简单,下面是javascript案例,代码。 scriptvarjsonObj={张三:中国,李四:美国};for(varkeyinjsonObj){console.log(key+===+jsonObj[key]);}/script 上面的javascript代码分别输出json对象的key和value字符串,如图所
let声明的范围是块作用域,var声明的范围是函数作用域。let和var的另一个重要区别是,let声明的变量不会在作用区域内得到改善。let声明前的执行瞬间称为暂时性死区。
目录vue-treeselect无法点击问题原因可正常点击不能正常点击vue-treeselect的基本一些用法1.首先需要先安装2.需要引入至vue页面使用3.需要在页面中写入4.这里举例实际应用5.当点击时加载子数据6.实际的效果图vue-treeselect无法点击问题原因样式冲突(使用了elementui)场景
目录vue-router-link选择样式设置第一种第二种hash和history的区别1.hash2.history(服务器环境下才有效果)vue-router的link样式设置vue-router-link选择样式设置第一种在router-link组件上 添加属性 active-class=‘ative’在css中
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008