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>
相关推荐
昵称暂无120 分钟前
.NET 高级开发 | i18n 原理、实现一个 i18n 框架
javascript·c#·.net
h_jQuery37 分钟前
vue使用gm-crypto对数据进行sm4加密处理
前端·javascript·vue.js
阿赛工作室1 小时前
Vue中onBeforeUnmount不触发的解决方案
前端·javascript·vue.js
浩星2 小时前
electron系列1:Electron不是玩具,为什么桌面应用需要它?
前端·javascript·electron
_院长大人_2 小时前
Vue + ECharts 实现价格趋势分析图
前端·vue.js·echarts
疯笔码良2 小时前
【Vue】自适应布局
javascript·vue.js·css3
浩星3 小时前
electron系列2:搭建专业Electron开发环境
javascript·typescript·electron
酒鼎3 小时前
学习笔记(12-02)事件循环 - 实战案例 —⭐
前端·javascript
小恰学逆向4 小时前
【爬虫JS逆向之旅】某球网参数“md5__1038”逆向
javascript·爬虫
竹林8184 小时前
从“连接失败”到丝滑登录:我用 ethers.js v6 搞定 MetaMask 钱包连接的全过程
前端·javascript