IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue + elementUi + tree只能同级拖拽排序(用于权限管控) -> 正文阅读

[JavaScript知识库]vue + elementUi + tree只能同级拖拽排序(用于权限管控)

项目中遇到权限问题时,相信很多公司都会考虑使用树(tree)结构来实现。下面是本人实现该功能的具体代码!!!

子组件

<template>
	<el-tree
	:data="treeData"
	style="height: 300px;"
	node-key="id"
	show-checkbox
	:default-expand-all='expand'
	@node-drop="handleDrop"
	draggable
	:allow-drop="allowDrop">
		<div class="custom-tree-node" slot-scope="{ node, data }">
			<span>{{node.label}}</span>
			<span style="width: 300px; padding-left: 10px;">
				<el-checkbox @click.stop.native v-model="node.list">备选项1</el-checkbox>
				<el-checkbox @click.stop.native v-model="node.list1">备选项2</el-checkbox>
			</span>
		</div>
	</el-tree> 
</template>
<script>
	export default {
    name:'treeList',
    props:{
    	treeData:{
    		type:Array,
    		default:[]
    	},
    	expand:{
    		type:Boolean,
    		default:true
    	}
    },
    data() {
      return {
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      };
    },
 methods: {
      handleDrop(draggingNode, dropNode, dropType, ev) {
        let obj = {
	        aboveId:'',
	        arr:[]
	      }
	      obj.aboveId = dropNode.data.aboveId
	      for (let item of dropNode.parent.childNodes) {
	        obj.arr.push(item.data.id)
	      }
      },
      allowDrop(draggingNode, dropNode, type) {
        if (draggingNode.data.level === dropNode.data.level) {
	        //fatherId 是父节点id
	        if (draggingNode.data.fatherId === dropNode.data.fatherId) {
	          return type === 'prev' || type === 'next'
	        }else{
	        	return false;
	        }
	      } else {
	        // 不同级进行处理
	        return false;
	      }
      }
    }
  }
</script>
<style lang="scss" scoped>
.custom-tree-node {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 14px;
    padding-right: 8px;
  }
</style>

父组件

<treeList 
      	:treeData='treeData' 
      	:expand='isExpand'>
</treeList>
<script>
export default{
	data() {
        return {
       	isExpand:false,
        treeData:[{
          id: 1,
          list:'',
          list1:'',
          label: '一级 1',
          children: [{
          	fatherId:1,
            id: 4,
            list:'',
            list1:'',
            label: '二级 1-1',
            children: [{
            	fatherId:4,
              	id: 9,
              	list:'',
              	list1:'',
              	label: '三级 1-1-1'
            }]
          }]
        }]
     }
}
</script>

就不多啰嗦了,看代码!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:04:45  更:2021-07-15 16:05:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 0:22:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码