<el-tree
style="width:20%;padding-left: 14px;"
:props="defaultProps"//配置
:data="treedata" //数据来源
ref="tree"
highlight-current //选中的高亮节点样式
:load="loadNode"
draggable
:allow-drop="allowDrop" //拖拽
@node-drop="sort"
accordion
:expand-on-click-node="true"
@node-contextmenu="rightClick"
@node-click="handleNodeClick"
@node-expand="handleNodeClick"
>
//这下面试鼠标移上去的效果 类似hover 内容过长的显示 v-if是判断节点的等级 如果每一个都显示的话去掉就可以的
<template class="custom-tree-node" slot-scope="{data,node}">
<span v-if="node.level===4" class="sapnellipsis">
<el-tooltip
class="item"
effect="dark"
:content="data.dictionaryText"
placement="top-start"
>
<span>{{data.dictionaryText}}</span>
</el-tooltip>
</span>
<span v-else>{{data.dictionaryText}}</span>
</template>
</el-tree>
return {
//配置相关
defaultProps: {
children: "children",
label: "Text", //根据后台返回的字段去修改
isLeaf: "leaf",
},
}
//拖拽的方法 (仅仅在同一级允许拖拽)
allowDrop(draggingNode, dropNode, type) {
var res =
draggingNode.level === 4 && //判断是否在第四层下
draggingNode.level === dropNode.level && //判断是否在同一级
(type === "prev" || type === "next") &&
draggingNode.parent.key === dropNode.parent.key;
return res;
},
sort(draggingNode, dropNode, type, event) {
let obj = {
aboveId: "",
arr: [],
};
// obj.aboveId = dropNode.data.dictionaryId;
for (let item of dropNode.parent.childNodes) {
obj.arr.push(item.data.dictionaryId);
}
for (var i = 0; i < obj.arr.length; i++) {
obj.aboveId += obj.arr[i] + ",";
}
if (obj.aboveId.length > 0) {
obj.aboveId = obj.aboveId.substr(0, obj.aboveId.length - 1);
}
this.updateOrderMe(obj);//调用接口方法
},
updateOrderMe(){
}
//鼠标右键的增删改 html——+ 方法 这里就只写新增了 起他删改都一样的意思 只是调用接口不一样
<div
v-show="addmenuVisible" //显示鸡儿影藏不做多解释
@mouseleave="addmenuVisible=!addmenuVisible"
class="dev-type-main-left"
>
<ul id="addmenu" class="addright-menu">
<li
tabindex="-1"
class="menu-item"
id="menu-4994-1-2"
v-auth="['modular-add']"
@click="() =>treeaddmodule(nodeData)"
>
<el-link icon="el-icon-circle-plus-outline" :underline="false">新增</el-link>
</li>
</ul>
</div>
//方法
这里只是点击去让相对应的增改删啥的弹框去显示出来而已 把nodedata 赋值给新定义的一个treedata return里面新增一个空就好了
treeaddmodule(nodeData){
this.treedata =nodedata //是为了操作完后刷新父节点
}
//再把相对于的增改的接口成功后调用方法 handleNodeClick这个是请求整个树的数据的接口
this.handleNodeClick(
self.addtreedata.parent.data,
self.addtreedata.parent
);
版权声明:本文为foreverlailai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。