详解Vue.js iview实现树形权限表(可扩展表)


Posted in Javascript onSeptember 30, 2018

问题:

需要一个可折叠的权限管理系统,用表格展示。

主要用的iView组件库,有Table(表格),Tree(树形控件),Collapse(折叠面板)看起来比较符合意思

深入查看Table相关范例,发现有个 通过给 columns 数据设置一项,指定 type: 'expand',即可开启扩展功能  可以考虑

但也只是展开详细内容,如需树形结构,则需要render自定义去渲染,挺麻烦的。再去看看element UI,也没有什么比较好的选择。

过程:

第一步,先构建根节点的数据表,后台返回JSON数据解析(www.json.cn)基本如下

详解Vue.js iview实现树形权限表(可扩展表)

前面2个object和第三个结构基本类似,将数据注入authlist,匹配listcolumns展示

详解Vue.js iview实现树形权限表(可扩展表)

详解Vue.js iview实现树形权限表(可扩展表)

展示结果如下:

详解Vue.js iview实现树形权限表(可扩展表)        

第二步,添加Columns的扩展expand功能,在listcolumns里添加

listcolumns: [{
  title: '序号',
  key: '_index',
  className: 'index_css',
  render: (h, params) = >{
    return h('div', [h('span', {
      style: {
        display: 'inline-block',
        width: '100%',
        overflow: 'hidden',
        textOverflow: 'ellipsis',
        whiteSpace: 'nowrap',
        textAlign: 'center'
      }
    },
    params.row._index)]);
  }
},
{
  //添加的expand      
  type: 'expand',
  width: 20,
  render: (h, params) = >{
    return h(expandRow, {
      style: {
        padding: 0
      },
      props: {
        row: params.row
      }
    })
  }
},
{
  title: '权限名称',
  key: 'Title',
  className: 'Title_css',
  ellipsis: true,
  render: (h, params) = >{
    return h('div', [h('span', {
      style: {

        display: 'inline-block',
        width: '100%',
        overflow: 'hidden',
        textOverflow: 'ellipsis',
        whiteSpace: 'nowrap'
      }
    },
    params.row.Title)]);
  }
},

展示效果:

详解Vue.js iview实现树形权限表(可扩展表)

第三步:authtable_expand.vue子组件,基本和父组件的Table一致

< template > 
<Table stripe: loading = "loading": showHeader = false border: columns = "listcolumns": data = "listauth"style = "overflow-y: hidden;max-height: 522px;" > </Table>
</template > 
<script > 
import expandRow from '../components/authtable_expand.vue';
export
default {
    props: ['row'],
    data() {
      return {
        loading: false,
        listcolumns: [
        //listcolumns暂不展示    
        ],
        listauth: []
      }
    },
    mounted() {},
    methods: {},
    created() {
      //console.log("authotable_expend created: " + JSON.stringify(this.row.children))		
      var object = this.row.children;
      console.log("auth expand data:" + JSON.stringify(object)) this.listauth.splice(0) object.forEach(r = >{
        this.listauth.push(r)
      })
      //console.log("listauth:" + JSON.stringify(this.listauth))	
    }
  }
  < /script>
 <style lang="less">
	td.ivu-table-expanded-cell{	
	padding:0;	
}
</style >

注意,添加td.ivu-table-expanded-cell{padding:0;},可以是扩展部分内容充满全部,展示效果如下

详解Vue.js iview实现树形权限表(可扩展表)

在expand.vue里递归调用自身,可以逐级扩展

总结:

目前在Vue.js的2个主要的前端组件iView和ElementUI都暂时没有看到合适的可扩展的树形表,只有自己编写相关组件来实现。相信以后应该都会有的,就像之前iView多表头都没有,后面也终于添加了。

此外,自定义组合树形权限表还有部分功能没有完善,如:

1如果当前节点没有子节点,就不应该出现扩展的按钮

2扩展按钮最好按照树的深度逐渐向后移动

3序号未按总序号排列

预期结果应该类似于:

详解Vue.js iview实现树形权限表(可扩展表)

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

Javascript 相关文章推荐
javascript下操作css的float属性的特殊写法
Aug 22 Javascript
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
JavaScript插件化开发教程 (四)
Jan 27 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
js canvas实现擦除动画
Jul 16 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
js的OOP继承实现(必看篇)
Feb 18 Javascript
微信小程序中多个页面传参通信的学习与实践
May 05 Javascript
Vue项目中使用Vux的安装过程
May 01 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 #Javascript
vue  自定义组件实现通讯录功能
Sep 30 #Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 #Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 #Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 #Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 #Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
Sep 30 #Javascript
You might like
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php数据序列化测试实例详解
2017/08/12 PHP
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
Python内置的字符串处理函数整理
2013/01/29 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
python之super的使用小结
2018/08/13 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
Python异常处理知识点总结
2019/02/18 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
大学生个人自我鉴定
2013/12/03 职场文书
创先争优承诺书范文
2014/03/31 职场文书
药品业务员岗位职责
2014/04/17 职场文书
学雷锋月活动总结
2014/04/25 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
教你使用TensorFlow2识别验证码
2021/06/11 Python
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python