element plus中表格的合计属性和例子

在 element plus 表格中,您可以使用 summary-method 属性来指定一个函数,计算表格中列的合计或平均值等。该函数应该返回一个对象,其中包含每个列的合计值。例如,如果您的表格数据是这样的:

复制代码
[
  { name: 'John', age: 20, score: 80 },
  { name: 'Mary', age: 22, score: 90 },
  { name: 'Peter', age: 21, score: 85 }
]

您可以这样设置表格的 summary-method

复制代码
<el-table :data="tableData" :summary-method="getSummary">

然后实现 getSummary 函数:

复制代码
methods: {
  getSummary({ columns, data }) {
    const sums = []
    columns.forEach((column, index) => {
      if (index === 0) {
        sums[index] = '总计'
        return
      }
      const values = data.map(item => Number(item[column.property]))
      if (!values.every(value => isNaN(value))) {
        sums[index] = values.reduce((prev, curr) => {
          const value = Number(curr)
          if (!isNaN(value)) {
            return prev + curr
          } else {
            return prev
          }
        }, 0)
        sums[index] += ' 分'
      } else {
        sums[index] = 'N/A'
      }
    })
    return sums
  }
}

在这个例子中,我们处理每个列的数据,并返回一个数组,包含每列的合计值。我们还通过在第一列插入一个"总计"的文本来使它在表格底部居中显示。您可以根据需要修改这个函数来计算特定列的平均值或其他合计方式。

完整的例子:

复制代码
<template>
  <el-table :data="tableData" :summary-method="getSummary">
    <el-table-column label="Name" prop="name"></el-table-column>
    <el-table-column label="Age" prop="age"></el-table-column>
    <el-table-column label="Score" prop="score"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: 'John', age: 20, score: 80 },
        { name: 'Mary', age: 22, score: 90 },
        { name: 'Peter', age: 21, score: 85 }
      ]
    }
  },
  methods: {
    getSummary({ columns, data }) {
      const sums = []
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '总计'
          return
        }
        const values = data.map(item => Number(item[column.property]))
        if (!values.every(value => isNaN(value))) {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr)
            if (!isNaN(value)) {
              return prev + curr
            } else {
              return prev
            }
          }, 0)
          sums[index] += ' 分'
        } else {
          sums[index] = 'N/A'
        }
      })
      return sums
    }
  }
}
</script>
相关推荐
止观止44 分钟前
告别 require!TypeScript 5.9 与 Node.js 20+ 的 ESM 互操作指南
javascript·typescript·node.js
zhougl9961 小时前
Vue 中使用 WebSocket
前端·vue.js·websocket
酒鼎1 小时前
学习笔记(7-01)函数闭包
javascript
半梅芒果干1 小时前
vue3 实现无缝循环滚动
前端·javascript·vue.js
冰敷逆向1 小时前
京东h5st纯算分析
java·前端·javascript·爬虫·安全·web
多多*2 小时前
2026年最新 测试开发工程师相关 Linux相关知识点
java·开发语言·javascript·算法·spring·java-ee·maven
会编程的土豆2 小时前
简易植物大战僵尸游戏 JavaScript版之html
javascript·游戏·html
雯0609~2 小时前
hiprint-官网vue完整版本+实现客户端配置+可实现直接打印(在html版本增加了条形码、二维码拖拽等)
前端·javascript·vue.js
VT.馒头2 小时前
【力扣】2705. 精简对象
javascript·数据结构·算法·leetcode·职场和发展·typescript
摘星编程2 小时前
在OpenHarmony上用React Native:Switch禁用状态
javascript·react native·react.js