vue Element-ui表格实现树形结构表格


Posted in Vue.js onJune 07, 2021

本文实例为大家分享了Element-ui表格实现树形结构表格的具体代码,供大家参考,具体内容如下

前端效果展示:

vue Element-ui表格实现树形结构表格

在el-table中,支持树类型的数据的显示。当 row 中包含 children 字段时,被视为树形数据。渲染树形数据时,必须要指定 row-key。支持子节点数据异步加载。

通过指定 row 中的 hasChildren 字段来指定哪些行是包含子节点。children 与 hasChildren 都可以通过 tree-props 配置。

row-key="id"和:tree-props="{children: 'children', hasChildren: 'hasChildren'}是必须的。

下面是vue的表格树:

<!--表格-->  
       <el-row>
            <el-table :data="tableData" style="width: 100%;" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        <el-table-column prop="privilegeName" label="权限名称" >
                        </el-table-column>
                        <el-table-column prop="privilegeCode" label="权限编码" >
                        </el-table-column>
                        <el-table-column prop="privilegeType" label="权限类别" :formatter="formatPrivilegeType" >
                        </el-table-column>
 
                        <el-table-column label="操作">
                            <template slot-scope="scope">
                                
                                <el-button type="primary" size="mini" @click="toAdd(scope)">新增</el-button>
                                <el-button type="primary" size="mini" @click="toEdit(scope)">编辑</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <br>
                    <el-pagination
                        @size-change="handleSizeChange"
                        @current-change="handleCurrentChange"
                        :current-page="pagination.pageIndex"
                        :page-sizes="[5, 10, 20, 30, 40]"
                        :page-size=pagination.pageSize
                        layout="total, prev, pager, next"
                        :total=pagination.total>
                    </el-pagination>
</el-row>

后端代码:SpringBoot+MyPlus+MySQL8 实现数据结构查询

前端全部代码:

<style>
</style>
<template>
  <div id="privilege-manager">
   <!--顶部菜单栏-->
    <el-form :inline="true" class="demo-form-inline">
          <el-form-item>
            <el-button
              class="el-icon-refresh"
              type="primary"
              @click="toAdd()">添加
            </el-button>
          </el-form-item>
      </el-form>
      <!--表格-->  
       <el-row>
            <el-table :data="tableData" style="width: 100%;" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        <el-table-column prop="privilegeName" label="权限名称" >
                        </el-table-column>
                        <el-table-column prop="privilegeCode" label="权限编码" >
                        </el-table-column>
                        <el-table-column prop="privilegeType" label="权限类别" :formatter="formatPrivilegeType" >
                        </el-table-column>
 
                        <el-table-column label="操作">
                            <template slot-scope="scope">
                                
                                <el-button type="primary" size="mini" @click="toAdd(scope)">新增</el-button>
                                <el-button type="primary" size="mini" @click="toEdit(scope)">编辑</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <br>
                    <el-pagination
                        @size-change="handleSizeChange"
                        @current-change="handleCurrentChange"
                        :current-page="pagination.pageIndex"
                        :page-sizes="[5, 10, 20, 30, 40]"
                        :page-size=pagination.pageSize
                        layout="total, prev, pager, next"
                        :total=pagination.total>
                    </el-pagination>
        </el-row>
 
 
  </div>
</template>
 
<script>
export default{
    name: 'privilege-manager',
    data () {
     return {
        tableData: [],
        dialogFormEdit: false,
        dialogFormAdd:false,
        privilege: {
          id: '',
          privilegeName: '',
          privilegeCode: '',
          privilegeType: '',
          pid: '0'
        },
        pagination: {
            pageIndex: 1,
            pageSize: 10,
            total: 0,
        }
      }
    },
    methods:{
         init () {
        var self = this
         this.$axios({
            method:'post',
            url:'/api/baoan/privilege/getPage',
            data:{"page":this.pagination.pageIndex,"limit":this.pagination.pageSize, "pid": this.privilege.pid},
            headers:{
                'Content-Type':'application/json;charset=utf-8'      //改这里就好了
          }
        }).then(res => {
           console.log(res);
           self.pagination.total = res.data.datas.data.total;
           self.tableData = res.data.datas.data.records;
        })
          .catch(function (error) {
            console.log(error)
          })
        },
        handleSizeChange(val) {
                console.log(`每页 ${val} 条`);
                this.pagination.pageSize = val;
                this.pagination.pageIndex = 1;
                this.init();
        },
        handleCurrentChange(val) {
                 console.log(`当前页: ${val}`);
                this.pagination.pageIndex = val;
                this.init();
        },
        // 权限类别转换
        formatPrivilegeType: function( row, column) {
                 if(row.privilegeType === '1'){
                     return '目录'
                 } else if(row.privilegeType === '2') {
                     return '菜单'
                 } else if (row.privilegeType === '3') {
                     return '按钮'
                 } else {
                     return ''
                 }
        }
    },
    mounted: function () {
      this.init()
  }
 
 
}
</script>

总结:

一、注意需要在前端表格里面改的是:

vue Element-ui表格实现树形结构表格

二、后端主要改的是:

(1)视图层里面加入视图层集合属性,注意一定要命名为children,这样前端才能渲染成树型结构。

vue Element-ui表格实现树形结构表格

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue+iview分页组件的封装
Nov 17 Vue.js
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
详解Vue 的异常处理机制
Nov 30 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
详解Vue3使用axios的配置教程
Apr 29 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 #Vue.js
vue响应式原理与双向数据的深入解析
vue实现水波涟漪效果的点击反馈指令
vue 实现上传组件
May 31 #Vue.js
vue基于Teleport实现Modal组件
Vue+Element UI实现概要小弹窗的全过程
vue-cli4.5.x快速搭建项目
You might like
PHP VS ASP
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
Laravel 5 学习笔记
2015/03/06 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
Python中bisect的用法
2014/09/23 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python放大图片和画方格实现算法
2018/03/30 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python同步windows和linux文件
2019/08/29 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
主题班会演讲稿
2014/05/22 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
python如何为list实现find方法
2022/05/30 Python