当前位置:   article > 正文

vTable实现多维表格_vue 实现多维表

vue 实现多维表

介绍

        vTable是字节开发的一款能用来渲染表格的库,是用canvas渲染,避免了传统用dom组件表格的一些问题,能很快的渲染出上万格子的表格。

        接下来我将使用vTable构建类似下面的多维表格,其中quantity、sales等是指标。

使用

官网地址:Getting_Started——VisActor/VTable tutorial documents

1、首先下载npm,或者cdn引入vtable,并且准备一个div作为容器。vTable有ListTable(普通表格)和PivotTable(透视表)的区别,我们现在用PivotTable来构建表格。

  1. <script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script>
  2. <div id="tableContainer" style="width: 100vw;height:100vh;"></div>
  3. <script>
  4. // 创建 VTable 实例
  5. const tableInstance = new VTable.PivotTable(document.getElementById('tableContainer'), option);
  6. </script>

2、准备表格数据

  1. [
  2. {
  3. "city": "重庆",
  4. "exist": 1,
  5. "sold": 2,
  6. "column1": "家具"
  7. },
  8. {
  9. "city": "武汉",
  10. "column1": "家具",
  11. "exist": 7,
  12. "sold": 8
  13. },
  14. {
  15. "city": "重庆",
  16. "column1": "家具",
  17. "exist": 2,
  18. "sold": 3
  19. },
  20. {
  21. "city": "武汉",
  22. "column1": "家具",
  23. "exist": 8,
  24. "sold": 9
  25. },
  26. {
  27. "city": "重庆",
  28. "column1": "体育器材",
  29. "exist": 4,
  30. "sold": 5
  31. },
  32. {
  33. "city": "武汉",
  34. "column1": "体育器材",
  35. "exist": 10,
  36. "sold": 11
  37. },
  38. {
  39. "city": "重庆",
  40. "column1": "体育器材",
  41. "exist": 6,
  42. "sold": 7
  43. },
  44. {
  45. "city": "武汉",
  46. "column1": "体育器材",
  47. "exist": 11,
  48. "sold": 12
  49. }
  50. ]

3、构建option。

row和column用来指定行和列,

indicators用来指定指标,

dataConfig用来设置合计、平均值等一些计算,

hideIndicatorName用来设置是否隐藏指标

更多配置请看官网

  1. const records = content
  2. const option = {
  3. records,
  4. rows: [
  5. {
  6. dimensionKey: 'city',
  7. title: '城市',
  8. }
  9. ],
  10. columns: [{
  11. dimensionKey: 'column1',
  12. title: '类别',
  13. }
  14. ],
  15. indicators: [{
  16. indicatorKey: 'exist',
  17. title: '现存'
  18. },
  19. {
  20. indicatorKey: 'sold',
  21. title: '已售',
  22. }
  23. ],
  24. // 设置左上角
  25. corner: {
  26. titleOnDimension: 'all',//row column all
  27. },
  28. // hideIndicatorName: true,//隐藏指标名
  29. // 设置合计
  30. dataConfig: {
  31. totals: {
  32. row: {
  33. showGrandTotals: true,
  34. subTotalsDimensions: ['exist'],
  35. grandTotalLabel: '合计',
  36. },
  37. }
  38. },
  39. widthMode: 'standard'
  40. };

完整代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <!-- <script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script> -->
  8. <script src="./vtable.min.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div id="tableContainer" style="width: 99vw;height:99vh;"></div>
  18. <script>
  19. fetch('./data4.txt').then(res => res.json()).then(res => {
  20. console.log(res);
  21. let content = res
  22. const records = content
  23. const option = {
  24. records,
  25. rows: [
  26. {
  27. dimensionKey: 'city',
  28. title: '城市',
  29. }
  30. ],
  31. columns: [{
  32. dimensionKey: 'column1',
  33. title: '类别',
  34. }
  35. ],
  36. indicators: [{
  37. indicatorKey: 'exist',
  38. title: '现存'
  39. },
  40. {
  41. indicatorKey: 'sold',
  42. title: '已售',
  43. }
  44. ],
  45. // 设置左上角
  46. corner: {
  47. titleOnDimension: 'all',//row column all
  48. },
  49. // hideIndicatorName: true,//隐藏指标名
  50. // 设置合计
  51. dataConfig: {
  52. totals: {
  53. row: {
  54. showGrandTotals: true,
  55. subTotalsDimensions: ['exist'],
  56. grandTotalLabel: '合计',
  57. },
  58. }
  59. },
  60. widthMode: 'standard'
  61. };
  62. // 创建 VTable 实例
  63. const tableInstance = new VTable.PivotTable(document.getElementById('tableContainer'), option);
  64. })
  65. </script>
  66. </body>
  67. </html>

 

效果

现存和已售是指标。

最后附上效果:

END

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号