【记录31】elementUI el-tree 虚线、右键、拖拽

2024-03-06 07:04

本文主要是介绍【记录31】elementUI el-tree 虚线、右键、拖拽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

父组件

<eltree :treeData="treeData"></eltree>
import eltree from "../../components/tree.vue";
export default {name: '',components: { // org_tree ,eltree},watch: {},data() {return {orgFormchoose: {},orgForm: { type: 0, limits: 1 },operateIndex: 1, // 默认 1  查看operateDisable: true,treeData: [{ parentId: null, id: 1, level: 1, type: null, checkbox: '1', allname: '组织机构1', name:'机构1简称', code:'机构1编码', show: true, children: [{ parentId: 1, id: 101, level: 2, type: null, checkbox: '2', allname: '组织机构1-1', show: false, },{ parentId: 1, id: 102, level: 2, type: null, checkbox: '3', allname: '组织机构1-2', show: false, },] },{ parentId: null, id: 2, level: 1, type: null, checkbox: '4', allname: '组织机构2', show: true, children: [{ parentId: 2, id: 201, level: 2, type: null, checkbox: '5', allname: '组织机构2-1', show: false, },{ parentId: 2, id: 202, level: 2, type: null, checkbox: '6', allname: '组织机构2-2', show: false, children: [{ parentId: 202, id: 2001, level: 3, type: null, checkbox: '7',  allname: '组织机构2-1-1', show: false,children: [{ parentId: 2001, id: 20001, level: 3, type: null, checkbox: '8', allname: '8组织机构2-1-1', show: false, },{ parentId: 2001, id: 20002, level: 3, type: null, checkbox: '9', allname: '9组织机构2-2-2', show: false, },{ parentId: 2001, id: 20003, level: 3, type: null, checkbox: '11', allname: '11组织机构2-1-1', show: false, },{ parentId: 2001, id: 20004, level: 3, type: null, checkbox: '12', allname: '12组织机构2-2-2', show: false, },{ parentId: 2001, id: 20005, level: 3, type: null, checkbox: '13', allname: '13组织机构2-1-1', show: false, },] },{ parentId: 202, id: 2002, level: 3, type: null, checkbox: '10', allname: '组织机构2-2-2', show: false, },] },] },{ parentId: null, id: 3, level: 1, type: null, checkbox: '100', allname: '组织机构3', show: true, }],}},mounted() {},methods: {// 选择的节点信息ParentChooseOrgTree(_ulItem) {this.orgForm = _ulItem;},//  右击  删除ParentChooseDeleteOrgTree(_ulItem, _item) {this.operateIndex = _item.value;},//  组织机构点击操作//operateClick(_item, _index) {//    console.log(_item.label, _index);//    if (_index == 0 || _index == 2) {//        this.operateDisable = false;//    }else{//        this.operateDisable = true;//    }//    this.operateIndex = _index;//    if (_index === 3) {//        this.$alert('','',{//            confirmButtonText: '确定',//            callback: action  => {//                if (action  === 'confirm') {//                    this.$message.success('已悉知')//                 }//             }//         })//         this.$alert('提醒:当前组织机构树存在下级节点,无法删除!<br/>提醒:请再次确认删除本级组织机构,删除后无法恢复!', '提示', {//              confirmButtonText: '确定',//              callback: action => {//                  if (action == "confirm") {//                      this.$message.success('已悉知')//                  }//              }//          });//      }//  }}
}

子组件

<template><div><el-treeclass="tree":indent="0"ref="tree":show-checkbox="true":data="data":props="defaultProps"node-key="checkbox"empty-text="暂无节点权限,联系管理员":default-expand-all="false":check-strictly="true":check-on-click-node="true":accordion="false":highlight-current="true"@node-contextmenu="nodeMenu"@node-drop="handleDrop"draggable:allow-drop="allowDrop"style="padding-left: 0px;"><span slot-scope="{ data }"><!-- <span slot-scope="{ node, data }"> --><span class="typecss">{{ data.level == 1?'局':data.level == 2?'司':data.level == 3?'项':data.level == 4?'隧': '' }}</span><span class="identy" :style="{ color: data.type == 1?'#2762e2':data.type == 0?'#36b636': '#999' }">{{ data.type == 1?'管':data.type == 0?'用': '' }}</span><span id="LABEL">{{ data.allname }}</span><!-- <span class="idty">{{ node.level == 1?'主':node.level == 2?'次':node.level == 3?'项':node.level == 4?'隧': '其' }}</span> --></span></el-tree><!--  --><div v-show="optionCardShow" id="right-menu" ref="container" :style="{top: optionCardY  +'px', left: optionCardX  +'px'}" @contextmenu.prevent="rightrightClick($event)"><span style="position:absolute; top:0px; right:0px; color:#333;border:1px solid #999; font-size:13px;" @click="optionCardShow=false"><i class="el-icon-close"></i></span><div style="margin-top:5px;"><div class="btu" v-for="(item, index) in btuList" :key="index" @click="BtuClick(item)"><span>{{ item.label }}</span></div><!-- <div class="btu"><span>查看本级机构</span></div><div class="btu"><span>修改本级机构</span></div><div class="btu" @click="BtuClick"><span>删除本级机构</span></div><div class="btu"><span>映射本级机构</span></div> --></div></div></div>
</template>
<script>export default {props: [ 'treeData'],data() {return {optionCardShow: false,optionCardY: 100, optionCardX: 100, postionStyle:{},data:this.treeData,  //  父组件传值selectNode: {},rightoptionData: {},btuList: [{ label: '新增', value: 0 },{ label: '查看', value: 1 },{ label: '修改', value: 2 },{ label: '删除', value: 3 },{ label: '迁移', value: 4 }],btuUserList: [],defaultProps: {children: 'children',label: 'allname'}};},beforeDestroy() {window.removeEventListener('resize', this.handleResize);},mounted() {console.log(this.treeData);// this.data = this.treeData;window.addEventListener('resize', this.handleResize);},methods: {// handleDragStart(node, ev) {  // 节点开始拖拽时触发的事件//   console.log('节点开始拖拽时触发的事件  drag start', node, ev);// },// handleDragEnter(draggingNode, dropNode, ev) {  //  拖拽进入其他节点时触发的事件//   console.log('拖拽进入其他节点时触发的事件  tree drag enter: ',draggingNode, dropNode, ev);// },// handleDragLeave(draggingNode, dropNode, ev) {  //  拖拽离开某个节点时触发的事件// if (draggingNode.data.parentId !== dropNode.data.parentId) {//    alert('超出拖拽的节点范围,拖拽只能在同父节点下')// }// console.log('****************拖拽离开某个节点时触发的事件 tree drag leave: ',draggingNode, dropNode.label, ev);// },// handleDragOver(draggingNode, dropNode, ev) {  // 在拖拽节点时触发的事件(类似浏览器的 mouseover 事件)// // if (condition) {// // }//   console.log('在拖拽节点时触发的事件(类似浏览器的 mouseover 事件)  tree drag over: ', draggingNode, dropNode.label, ev);// },// handleDragEnd(draggingNode, dropNode, dropType, ev) {  //  拖拽结束时(可能未成功)触发的事件//   console.log('拖拽结束时(可能未成功)触发的事件  tree drag end: ',draggingNode, dropNode && dropNode.label, dropType, ev);// },handleDrop(draggingNode, dropNode, dropType, ev) {    //   拖拽成功完成时触发的事件this.getProjectVolumeTree();  //  拖拽成功 触发相应接口console.log('拖拽成功完成时触发的事件  tree drop: ',draggingNode, dropNode.label, dropType, ev);},allowDrop(draggingNode, dropNode, type) {  //  拖拽时判定目标节点能否被放置console.log('拖拽时判定目标节点能否被放置  allowDrop', draggingNode, dropNode, type);if (draggingNode.data.level === dropNode.data.level) {if (draggingNode.data.parentId === dropNode.data.parentId) {return type === "prev" || type === "next";} else {return false;}} else {// 不同级进行处理return false;}},//tree拖拽成功完成时触发的事件 getProjectVolumeTree() {console.log('tree拖拽成功完成时触发的事件');},allowDrag(draggingNode) {console.log('8989', draggingNode.data.allname);// return draggingNode.data.label.indexOf('三级 3-2-2') === -1;return true;},//  单选handleNodeClick (data, checked, node) {console.log(data,'ppp');console.log( checked, 'll');console.log(node);if (checked) {this.$refs.tree.setCheckedNodes([data])this.selectNode = data;this.$parent.ParentChooseOrgTree(data);}},//  右击nodeMenu(e, data, n, t) {console.log(e, data, n,t, '右击');this.optionCardShow = falsethis.optionCardX = e.x // 让右键菜单出现在鼠标右键的位置this.optionCardY = e.ythis.$parent.ParentChooseOrgTree(data);this.rightoptionData = data// this.node = n // 将当前节点保存this.optionCardShow = true // 展示右键菜单},rightMenuClose(event) {let dom = document.getElementById('right-menu')if (dom) {if (!dom.contains(event.target)) {//点击到了id为right-menu以外的区域,就隐藏菜单this.optionCardShow = false}}},// 右击demo事件BtuClick(_item) {console.log(_item);switch (_item.value) {case 0:this.$message.warning(_item.label)break;case 1:this.$message.warning(_item.label)break;case 2:this.$message.warning(_item.label)break;case 3: //删除事件this.$parent.ParentChooseDeleteOrgTree(this.selectNode, _item);  //  父组件事件,在这里是子组件调用父组件函数this.$message.warning(_item.label)break;case 4:this.$message.warning(_item.label)break;default:break;}},//rightrightClick(event) {event.preventDefault();},}};
</script>
在这里插入代码片

这篇关于【记录31】elementUI el-tree 虚线、右键、拖拽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779214

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共

vue+el国际化-东抄西鉴组合拳

vue-i18n 国际化参考 https://blog.csdn.net/zuorishu/article/details/81708585 说得比较详细。 另外做点补充,比如这里cn下的可以以项目模块加公共模块来细分。 import zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入element语言包const cn = {mess

chart 完成拓扑图单节点拖拽不影响其他节点位置

就是做这种的功能,箭头原本是可以动态重复移动的,但不知道哪里问题导致没箭头了,然后补了个edgeSymbol: ['','arrow'], 字段,才增加了箭头。 拖拽某个节点,只有关联到的线条会跟着变动其他的节点位置不变。 参考 https://gallery.echartsjs.com/editor.html?c=x8Fgri22P9 https://echarts.baidu.com/exa

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="

vue+elementui分页输入框回车与页面中@keyup.enter事件冲突解决

解决这个问题的思路只要判断事件源是哪个就好。el分页的回车触发事件是在按下时,抬起并不会再触发。而keyup.enter事件是在抬起时触发。 so,找不到分页的回车事件那就拿keyup.enter事件搞事情。只要判断这个抬起事件的$event中的锚点样式判断不等于分页特有的样式就可以了 @keyup.enter="allKeyup($event)" //页面上的//js中allKeyup(e

vue+elementui--$message提示框被dialog遮罩层挡住问题解决

最近碰到一个先执行this.$message提示内容,然后接着弹出dialog带遮罩层弹框。那么问题来了,message提示框会默认被dialog遮罩层挡住,现在就是要解决这个问题。 由于都是弹框,问题肯定是出在z-index比重问题。由于用$message方式是写在js中而不是写在html中所以不是很好直接去改样式。 不过好在message组件中提供了customClass 属性,我们可以利用

数控系统资料记录

数控技术:数控系统刀补功能的软件实现及其仿真--数控仿真程序开发实战 https://github.com/mai4567/CNC 下载编译报错:error: src/dxflib.a: 没有那个文件或目录: 解决:下载dxflibhttps://www.ribbonsoft.com/en/dxflib-downloads,下载完后编译,编译后得到libdxflib.a,替换掉项目makefi