当前位置:   article > 正文

安利一款基于element的大数据树形表格

vbt-table

项目介绍

一款基于element-ui(2.9.1)改写的支持树形表格的大数据表格组件

❤️ 直接怼地址

github: github.com/Spdino/vbt-…

看看前端的小伙伴能不能给颗星呢, 哈哈,欢迎提交BUG和各种建议,讨论····

? 说明

  • 渲染树形数据时,必须要指定 row-key和isTreeTable属性, row 中包含 children字段。
  • 支持子节点数据异步加载。设置 Table 的 lazy 属性为 true 与加载函数 load 。通过指定 row 中的 hasChildren 字段来指定哪些行是包含子节点。
  • children 与 hasChildren 都可以通过 tree-props 配置。
  • 大数据滚动渲染需指定isBigData属性,支持树形表格大数据.
  • 树形表格支持多级嵌套.
  • 其它用法和elment-ui的table组件一样

? 新增 Table Attributes

参数说明参数类型可选值默认值
initParentFunc用于初始化父级树形表格数据时处理数据row,treeDataFunction
formateChildFunc展示子级树形表格数据时处理数据row,parentRow,treeDataFunction
isBigData大数据滚动渲染Boolean
isTreeTable树形表格Boolean
  • initParentFunc方法,用于初始化父级树形表格数据时处理数据,抛出当前处理的父级rowData
  1. // 设置父级初始值
  2. initParentFunc(row) {
  3. console
  4. row.disabled = true.log(row)
  5. },
  6. 复制代码
  • formateChildFunc方法,用于初始化子级树形表格数据时处理数据,抛出当前处理的子级rowData和parentRow
  1. formateChildFunc(row, parent) {
  2. console.log(row,parent)
  3. if(parent.name) row.name = parent.name
  4. },
  5. 复制代码

✨ Demo

1.大数据支持
  • 效果
2.大数据树形表格支持
  • 效果
3.大数据树形表格懒加载支持
  • 效果

? 用法

安装: yarn add vbt-table -S || npm install vbt-table -S

全局:在main.js中:

  1. import Vue from 'vue'
  2. import vbtTable from 'vbt-table'
  3. Vue.use(vbtTable)
  4. 复制代码

局部: 在组件中:

  1. <template>
  2. <vbt-table border
  3. stripe
  4. row-key="id"
  5. size="mini"
  6. isBigData
  7. isTreeTable
  8. lazy
  9. :load="load"
  10. highlight-hover-row
  11. max-height="600"
  12. :data="tableData">
  13. <vbt-table-column prop="id"
  14. label="ID"
  15. width="200"
  16. fixed="left">
  17. </vbt-table-column>
  18. <vbt-table-column prop="name"
  19. label="Name"
  20. width="200">
  21. </vbt-table-column>
  22. <vbt-table-column prop="sex"
  23. label="Sex"
  24. width="200">
  25. </vbt-table-column>
  26. <vbt-table-column prop="age"
  27. label="Age"
  28. width="200">
  29. </vbt-table-column>
  30. <vbt-table-column prop="role"
  31. label="role"
  32. width="200">
  33. </vbt-table-column>
  34. <vbt-table-column prop="language"
  35. label="language"
  36. width="200">
  37. </vbt-table-column>
  38. <vbt-table-column prop="rate"
  39. label="rate"
  40. width="200">
  41. </vbt-table-column>
  42. <vbt-table-column prop="address"
  43. label="Address"
  44. fixed="right"
  45. show-overflow-tooltip
  46. min-width="300">
  47. </vbt-table-column>
  48. </vbt-table>
  49. </template>
  50. <script>
  51. import {vbtTable,vbtTableColumn} from 'vbt-table'
  52. function mockData(num, cId) {
  53. let fullIndex = 0
  54. const list = []
  55. for (let index = 0; index < num; index++) {
  56. fullIndex++
  57. cId && (cId = Number(cId) + 1)
  58. list.push({
  59. id: cId || fullIndex,
  60. hasChildren: cId > 1000000 ? false : true,
  61. // children: !cId ? mockData(30, `${fullIndex}0000000`) : [],
  62. role: 'role_' + fullIndex,
  63. language: index % 2 === 0 ? 'zh_CN' : 'en_US',
  64. name: 'name_' + fullIndex,
  65. sex: index % 3 ? '男' : '女',
  66. age: 18,
  67. rate: 5,
  68. address: `地址 地址地址 地址地址 址地址址地址 址地址 址地址 址地址 址地址 址地址 址地址址地址址地址 地址${index}`
  69. })
  70. }
  71. return list
  72. }
  73. export default {
  74. components: { vbtTable, vbtTableColumn },
  75. data() {
  76. return {
  77. tableData: mockData(1000)
  78. }
  79. },
  80. methods: {
  81. load(row, resolve) {
  82. setTimeout(() => {
  83. resolve(mockData(30, `${row.id}000`))
  84. }, 1000)
  85. }
  86. }
  87. }
  88. </script>
  89. 复制代码

转载于:https://juejin.im/post/5d0b50d9e51d4556d86c7ad4

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/579643
推荐阅读
相关标签
  

闽ICP备14008679号