Table 表格


基本用法

简单的数据展示表格

Table表格 - 图1

  1. <at-table :columns="columns1" :data="data1"></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age'
  14. },
  15. {
  16. title: '地址',
  17. key: 'address'
  18. }
  19. ],
  20. data1: [
  21. {
  22. name: '库里',
  23. age: 18,
  24. address: '深圳市宝安区创业一路'
  25. },
  26. {
  27. name: '詹姆斯',
  28. age: 25,
  29. address: '广州市天河区岗顶'
  30. },
  31. {
  32. name: '科比',
  33. age: 24,
  34. address: '上海市浦东新区'
  35. },
  36. {
  37. name: '杜兰特',
  38. age: 22,
  39. address: '深圳市南山区深南大道'
  40. },
  41. {
  42. name: '威斯布鲁克',
  43. age: 21,
  44. address: '北京市朝阳区'
  45. },
  46. {
  47. name: '邓肯',
  48. age: 26,
  49. address: '深圳市罗湖区万象城'
  50. },
  51. {
  52. name: '帕克',
  53. age: 25,
  54. address: '深圳市福田区中心书城'
  55. },
  56. {
  57. name: '欧文',
  58. age: 20,
  59. address: '广州市番禺区大学城'
  60. },
  61. {
  62. name: '托马斯',
  63. age: 19,
  64. address: '北京市朝阳区'
  65. }
  66. ]
  67. }
  68. }
  69. }
  70. </script>

斑马线风格

设置属性 stripe,可让表格间隔显示不同的颜色,用于区分不同的行

Table表格 - 图2

  1. <at-table :columns="columns1" :data="data1" stripe></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age'
  14. },
  15. {
  16. title: '地址',
  17. key: 'address'
  18. }
  19. ],
  20. data1: [
  21. {
  22. name: '库里',
  23. age: 18,
  24. address: '深圳市宝安区创业一路'
  25. },
  26. {
  27. name: '詹姆斯',
  28. age: 25,
  29. address: '广州市天河区岗顶'
  30. },
  31. {
  32. name: '科比',
  33. age: 24,
  34. address: '上海市浦东新区'
  35. },
  36. {
  37. name: '杜兰特',
  38. age: 22,
  39. address: '深圳市南山区深南大道'
  40. },
  41. {
  42. name: '威斯布鲁克',
  43. age: 21,
  44. address: '北京市朝阳区'
  45. },
  46. {
  47. name: '邓肯',
  48. age: 26,
  49. address: '深圳市罗湖区万象城'
  50. },
  51. {
  52. name: '帕克',
  53. age: 25,
  54. address: '深圳市福田区中心书城'
  55. },
  56. {
  57. name: '欧文',
  58. age: 20,
  59. address: '广州市番禺区大学城'
  60. },
  61. {
  62. name: '托马斯',
  63. age: 19,
  64. address: '北京市朝阳区'
  65. }
  66. ]
  67. }
  68. }
  69. }
  70. </script>

带边框风格

默认不带列边框,设置属性 border 可添加列表框

Table表格 - 图3

  1. <at-table :columns="columns1" :data="data1" border></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age'
  14. },
  15. {
  16. title: '地址',
  17. key: 'address'
  18. }
  19. ],
  20. data1: [
  21. {
  22. name: '库里',
  23. age: 18,
  24. address: '深圳市宝安区创业一路'
  25. },
  26. {
  27. name: '詹姆斯',
  28. age: 25,
  29. address: '广州市天河区岗顶'
  30. },
  31. {
  32. name: '科比',
  33. age: 24,
  34. address: '上海市浦东新区'
  35. },
  36. {
  37. name: '杜兰特',
  38. age: 22,
  39. address: '深圳市南山区深南大道'
  40. },
  41. {
  42. name: '威斯布鲁克',
  43. age: 21,
  44. address: '北京市朝阳区'
  45. },
  46. {
  47. name: '邓肯',
  48. age: 26,
  49. address: '深圳市罗湖区万象城'
  50. },
  51. {
  52. name: '帕克',
  53. age: 25,
  54. address: '深圳市福田区中心书城'
  55. },
  56. {
  57. name: '欧文',
  58. age: 20,
  59. address: '广州市番禺区大学城'
  60. },
  61. {
  62. name: '托马斯',
  63. age: 19,
  64. address: '北京市朝阳区'
  65. }
  66. ]
  67. }
  68. }
  69. }
  70. </script>

固定高度

设置属性 height,可自定义表格的高度,此时表头会自动 Fixed 在顶部

Table表格 - 图4

  1. <at-table :columns="columns1" :data="data1" height="220"></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age'
  14. },
  15. {
  16. title: '地址',
  17. key: 'address'
  18. }
  19. ],
  20. data1: [
  21. {
  22. name: '库里',
  23. age: 18,
  24. address: '深圳市宝安区创业一路'
  25. },
  26. {
  27. name: '詹姆斯',
  28. age: 25,
  29. address: '广州市天河区岗顶'
  30. },
  31. {
  32. name: '科比',
  33. age: 24,
  34. address: '上海市浦东新区'
  35. },
  36. {
  37. name: '杜兰特',
  38. age: 22,
  39. address: '深圳市南山区深南大道'
  40. },
  41. {
  42. name: '威斯布鲁克',
  43. age: 21,
  44. address: '北京市朝阳区'
  45. },
  46. {
  47. name: '邓肯',
  48. age: 26,
  49. address: '深圳市罗湖区万象城'
  50. },
  51. {
  52. name: '帕克',
  53. age: 25,
  54. address: '深圳市福田区中心书城'
  55. },
  56. {
  57. name: '欧文',
  58. age: 20,
  59. address: '广州市番禺区大学城'
  60. },
  61. {
  62. name: '托马斯',
  63. age: 19,
  64. address: '北京市朝阳区'
  65. }
  66. ]
  67. }
  68. }
  69. }
  70. </script>

多选

设置属性 optional 可开启多选功能;选中某一项会触发 on-selection-change 事件,点击「全选按钮」会触发 on-select-all 事件

Table表格 - 图5

  1. <at-table :columns="columns1" :data="data2" optional></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age'
  14. },
  15. {
  16. title: '地址',
  17. key: 'address'
  18. }
  19. ],
  20. data2: [
  21. {
  22. name: '库里',
  23. age: 18,
  24. address: '深圳市宝安区创业一路'
  25. },
  26. {
  27. name: '詹姆斯',
  28. age: 25,
  29. address: '广州市天河区岗顶'
  30. },
  31. {
  32. name: '科比',
  33. age: 24,
  34. address: '上海市浦东新区'
  35. },
  36. {
  37. name: '杜兰特',
  38. age: 22,
  39. address: '深圳市南山区深南大道'
  40. }
  41. ]
  42. }
  43. }
  44. }
  45. </script>

排序

如需对某一列数据进行排序,可给 columns 的数据项设置 sortType 属性,传入 normal 则表示该列不进行排序,但展示排序的操作按钮

sortType 支持的参数:normal (不排序), desc (降序), asc (升序)

Table表格 - 图6

  1. <at-table :columns="columns2" :data="data2"></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns1: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age',
  14. sortType: 'normal'
  15. },
  16. {
  17. title: '地址',
  18. key: 'address'
  19. }
  20. ],
  21. data2: [
  22. {
  23. name: '库里',
  24. age: 18,
  25. address: '深圳市宝安区创业一路'
  26. },
  27. {
  28. name: '詹姆斯',
  29. age: 25,
  30. address: '广州市天河区岗顶'
  31. },
  32. {
  33. name: '科比',
  34. age: 24,
  35. address: '上海市浦东新区'
  36. },
  37. {
  38. name: '杜兰特',
  39. age: 22,
  40. address: '深圳市南山区深南大道'
  41. }
  42. ]
  43. }
  44. }
  45. }
  46. </script>

自定义列模板

columns 的数据项设置一个函数 render,可以自定义该列的渲染模板,可以渲染自定义的组件,它是基于 Vue 的 Render 函数。

render 函数接收两个参数 h, objectobject 包含 item, column, index,分别指当前单元格的数据,当前列的标题数据,当前的行号

Table表格 - 图7

  1. <at-table :columns="columns3" :data="data2" sort></at-table>
  2. <script>
  3. export default {
  4. data () {
  5. return {
  6. columns3: [
  7. {
  8. title: '姓名',
  9. key: 'name'
  10. },
  11. {
  12. title: '年龄',
  13. key: 'age',
  14. sortType: 'normal'
  15. },
  16. {
  17. title: '地址',
  18. key: 'address'
  19. },
  20. {
  21. title: '操作',
  22. render: (h, params) => {
  23. return h('div', [
  24. h('AtButton', {
  25. props: {
  26. size: 'small',
  27. hollow: true
  28. },
  29. style: {
  30. marginRight: '8px'
  31. },
  32. on: {
  33. click: () => {
  34. this.$Message(params.item.name)
  35. }
  36. }
  37. }, '查看姓名'),
  38. h('AtButton', {
  39. props: {
  40. size: 'small',
  41. hollow: true
  42. },
  43. on: {
  44. click: () => {
  45. this.$Message(params.item.address)
  46. }
  47. }
  48. }, '查看地址')
  49. ])
  50. }
  51. }
  52. ],
  53. data2: [
  54. {
  55. name: '库里',
  56. age: 18,
  57. address: '深圳市宝安区创业一路'
  58. },
  59. {
  60. name: '詹姆斯',
  61. age: 25,
  62. address: '广州市天河区岗顶'
  63. },
  64. {
  65. name: '科比',
  66. age: 24,
  67. address: '上海市浦东新区'
  68. },
  69. {
  70. name: '杜兰特',
  71. age: 22,
  72. address: '深圳市南山区深南大道'
  73. }
  74. ]
  75. }
  76. }
  77. }
  78. </script>

尺寸

设置属性 size 可调整表格的尺寸大小,提供三种尺寸:small, normal, large,默认为 normal

Table表格 - 图8

  1. <at-table :columns="columns3" :data="data2" size="large" sort></at-table>
  2. <at-table style="margin-top: 24px;" :columns="columns4" :data="data2" size="small" sort></at-table>
  3. <script>
  4. export default {
  5. data () {
  6. return {
  7. columns3: [
  8. {
  9. title: '姓名',
  10. key: 'name'
  11. },
  12. {
  13. title: '年龄',
  14. key: 'age',
  15. sortType: 'normal'
  16. },
  17. {
  18. title: '地址',
  19. key: 'address'
  20. },
  21. {
  22. title: '操作',
  23. render: (h, params) => {
  24. return h('div', [
  25. h('AtButton', {
  26. props: {
  27. size: 'small',
  28. hollow: true
  29. },
  30. style: {
  31. marginRight: '8px'
  32. },
  33. on: {
  34. click: () => {
  35. this.$Message(params.item.name)
  36. }
  37. }
  38. }, '查看姓名'),
  39. h('AtButton', {
  40. props: {
  41. size: 'small',
  42. hollow: true
  43. },
  44. on: {
  45. click: () => {
  46. this.$Message(params.item.address)
  47. }
  48. }
  49. }, '查看地址')
  50. ])
  51. }
  52. }
  53. ],
  54. columns4: [
  55. {
  56. title: '姓名',
  57. key: 'name'
  58. },
  59. {
  60. title: '年龄',
  61. key: 'age',
  62. sortType: 'normal'
  63. },
  64. {
  65. title: '地址',
  66. key: 'address'
  67. },
  68. {
  69. title: '操作',
  70. render: (h, params) => {
  71. return h('div', [
  72. h('AtButton', {
  73. props: {
  74. size: 'smaller',
  75. hollow: true
  76. },
  77. style: {
  78. marginRight: '8px'
  79. },
  80. on: {
  81. click: () => {
  82. this.$Message(params.item.name)
  83. }
  84. }
  85. }, '查看姓名'),
  86. h('AtButton', {
  87. props: {
  88. size: 'smaller',
  89. hollow: true
  90. },
  91. on: {
  92. click: () => {
  93. this.$Message(params.item.address)
  94. }
  95. }
  96. }, '查看地址')
  97. ])
  98. }
  99. }
  100. ],
  101. data2: [
  102. {
  103. name: '库里',
  104. age: 18,
  105. address: '深圳市宝安区创业一路'
  106. },
  107. {
  108. name: '詹姆斯',
  109. age: 25,
  110. address: '广州市天河区岗顶'
  111. },
  112. {
  113. name: '科比',
  114. age: 24,
  115. address: '上海市浦东新区'
  116. },
  117. {
  118. name: '杜兰特',
  119. age: 22,
  120. address: '深圳市南山区深南大道'
  121. }
  122. ]
  123. }
  124. }
  125. }
  126. </script>

分页

设置属性 pagination 可启用表格的分页功能

Table表格 - 图9

<at-table :columns="columns2" :data="data3" pagination></at-table>

<script>
  export default {
    data () {
      return {
        columns1: [
          {
            title: '姓名',
            key: 'name'
          },
          {
            title: '年龄',
            key: 'age',
            sortType: 'normal'
          },
          {
            title: '地址',
            key: 'address'
          }
        ],
        data3: this.makePageData()
      }
    },
    methods: {
      makePageData () {
        const data = [
          {
            name: '库里',
            age: 18,
            address: '深圳市宝安区创业一路'
          },
          {
            name: '詹姆斯',
            age: 25,
            address: '广州市天河区岗顶'
          },
          {
            name: '科比',
            age: 24,
            address: '上海市浦东新区'
          },
          {
            name: '杜兰特',
            age: 22,
            address: '深圳市南山区深南大道'
          },
          {
            name: '威斯布鲁克',
            age: 21,
            address: '北京市朝阳区'
          },
          {
            name: '邓肯',
            age: 26,
            address: '深圳市罗湖区万象城'
          },
          {
            name: '帕克',
            age: 25,
            address: '深圳市福田区中心书城'
          },
          {
            name: '欧文',
            age: 20,
            address: '广州市番禺区大学城'
          },
          {
            name: '托马斯',
            age: 19,
            address: '北京市朝阳区'
          }
        ]
        let pageData = []

        for (let i = 0; i < 5; i++) {
          pageData = pageData.concat(data)
        }

        return pageData
      }
    }
  }
</script>

Table 参数

参数说明类型可选值默认值
size表格的尺寸Stringsmall, normal, largenormal
stripe是否启用斑马线风格Boolean-false
border是否显示列边框Boolean-false
data表单的内容数据Array-[]
columns表单的标题数据Array-[]
optional是否支持选择Boolean-false
pagination是否显示分页Boolean-false
page-size每页的数据量Number-10
show-page-total是否显示数据总数Boolean-true
show-page-sizer是否显示更改每页展示数的选择框Boolean-false
show-page-quickjump是否显示快速跳转Boolean-false
height指定表格的高度Number / String--

Table 事件

事件名称说明返回值
on-selection-change选中值有变化时触发选中的行的对象数组
on-select-all只有全选时才会触发所有行组成的对象数组
on-page-change页码改变时触发的回调页码
on-page-size-change切换每页显示的条数时触发的回调每页的条目数