Crud 模块

合计

合计 - 图1

showSummary设置为true就会在表格尾部展示合计行。配置sumColumnList数组你要显示的统计的字段(有 name 和 type 俩个属性,type 可以为 sum 相加|avg 平均值|count 计数),你也可以定义自己的合计逻辑。使用summaryMethod并传入一个方法,返回一个数组,这个数组中的各项就会显示在合计行的各列中 Function({ columns, data })

  1. <avue-crud :data="data" :option="option"></avue-crud>
  2. <script>
  3. export default {
  4. data() {
  5. return {
  6. data: [
  7. {
  8. name: '张三',
  9. sum: 5,
  10. avg: 10,
  11. count: 2
  12. },
  13. {
  14. name: '李四',
  15. sum: 15,
  16. avg: 20,
  17. count: 1
  18. }
  19. ],
  20. option: {
  21. sumText: '合计',
  22. sumColumnList: [
  23. {
  24. name: 'sum',
  25. type: 'sum'
  26. },
  27. {
  28. name: 'avg',
  29. type: 'avg'
  30. },
  31. {
  32. name: 'count',
  33. type: 'count'
  34. }
  35. ],
  36. showSummary: true,
  37. page: false,
  38. align: 'center',
  39. menuAlign: 'center',
  40. column: [
  41. {
  42. label: '姓名',
  43. prop: 'name'
  44. },
  45. {
  46. label: '相加',
  47. prop: 'sum'
  48. },
  49. {
  50. label: '平均值',
  51. prop: 'avg'
  52. },
  53. {
  54. label: '统计',
  55. prop: 'count'
  56. }
  57. ]
  58. }
  59. }
  60. },
  61. methods: {}
  62. }
  63. </script>

合并行

合计 - 图2

通过给传入spanMethod方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspancolspan的对象。

  1. <avue-crud
  2. :data="data1"
  3. :option="option1"
  4. :span-method="spanMethod1"
  5. ></avue-crud>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. data1: [
  11. {
  12. id: '12987122',
  13. name: '王小虎',
  14. amount1: '234',
  15. amount2: '3.2',
  16. amount3: 10
  17. },
  18. {
  19. id: '12987123',
  20. name: '王小虎',
  21. amount1: '165',
  22. amount2: '4.43',
  23. amount3: 12
  24. },
  25. {
  26. id: '12987124',
  27. name: '王小虎',
  28. amount1: '324',
  29. amount2: '1.9',
  30. amount3: 9
  31. },
  32. {
  33. id: '12987125',
  34. name: '王小虎',
  35. amount1: '621',
  36. amount2: '2.2',
  37. amount3: 17
  38. },
  39. {
  40. id: '12987126',
  41. name: '王小虎',
  42. amount1: '539',
  43. amount2: '4.1',
  44. amount3: 15
  45. }
  46. ],
  47. option1: {
  48. page: false,
  49. border: true,
  50. menuAlign: 'center',
  51. column: [
  52. {
  53. label: 'ID',
  54. prop: 'id'
  55. },
  56. {
  57. label: '姓名',
  58. prop: 'name'
  59. },
  60. {
  61. label: '数值 1',
  62. prop: 'amount1'
  63. },
  64. {
  65. label: '数值 2',
  66. prop: 'amount2'
  67. },
  68. {
  69. label: '数值 3',
  70. prop: 'amount3'
  71. }
  72. ]
  73. }
  74. }
  75. },
  76. methods: {
  77. spanMethod1({ row, column, rowIndex, columnIndex }) {
  78. if (rowIndex % 2 === 0) {
  79. if (columnIndex === 0) {
  80. return [1, 2]
  81. } else if (columnIndex === 1) {
  82. return [0, 0]
  83. }
  84. }
  85. }
  86. }
  87. }
  88. </script>

合并列

合计 - 图3

通过给传入spanMethod方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspancolspan的对象。

  1. <avue-crud
  2. :data="data1"
  3. :option="option2"
  4. :span-method="spanMethod2"
  5. ></avue-crud>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. data1: [
  11. {
  12. id: '12987122',
  13. name: '王小虎',
  14. amount1: '234',
  15. amount2: '3.2',
  16. amount3: 10
  17. },
  18. {
  19. id: '12987123',
  20. name: '王小虎',
  21. amount1: '165',
  22. amount2: '4.43',
  23. amount3: 12
  24. },
  25. {
  26. id: '12987124',
  27. name: '王小虎',
  28. amount1: '324',
  29. amount2: '1.9',
  30. amount3: 9
  31. },
  32. {
  33. id: '12987125',
  34. name: '王小虎',
  35. amount1: '621',
  36. amount2: '2.2',
  37. amount3: 17
  38. },
  39. {
  40. id: '12987126',
  41. name: '王小虎',
  42. amount1: '539',
  43. amount2: '4.1',
  44. amount3: 15
  45. }
  46. ],
  47. option2: {
  48. page: false,
  49. border: true,
  50. menuAlign: 'center',
  51. column: [
  52. {
  53. label: 'ID',
  54. prop: 'id'
  55. },
  56. {
  57. label: '姓名',
  58. prop: 'name'
  59. },
  60. {
  61. label: '数值 1',
  62. prop: 'amount1'
  63. },
  64. {
  65. label: '数值 2',
  66. prop: 'amount2'
  67. },
  68. {
  69. label: '数值 3',
  70. prop: 'amount3'
  71. }
  72. ]
  73. }
  74. }
  75. },
  76. methods: {
  77. spanMethod2({ row, column, rowIndex, columnIndex }) {
  78. if (columnIndex === 0) {
  79. if (rowIndex % 2 === 0) {
  80. return {
  81. rowspan: 2,
  82. colspan: 1
  83. }
  84. } else {
  85. return {
  86. rowspan: 0,
  87. colspan: 0
  88. }
  89. }
  90. }
  91. }
  92. }
  93. }
  94. </script>