element中使用show-summary进行汇总时小数点的问题解决方法

自带的合计是只要在 el-table 加入 show-summary ,
然后每个el-table-column需要统计的列 加入 prop

步骤1: 首先在 el-table 加入 :summary-method=“getSummaries” 如下:

<el-table
  ref="bodyTable"
  :data="bodyTable"
  tooltip-effect="dark"
  style="width: 100%"
  height="250"
  border
  show-summary
  :summary-method="getSummaries"
>

此处主要代码都是用 element的原getSummaries的代码的,
步骤2:在methods自定义一个getSummaries,代码如下:

//自定义合计行

  getSummaries(param){
    const { columns, data } = param;
    const sums = [];
    columns.forEach((column, index) => {
      if (index === 0) {
        sums[index] = "合计";
        return;
      }
      switch(column.property) {  // column.property可以匹配它的每一列的命名, 然后赋值
        case "money": //列名
        //  if (column.property !== undefined) {
            //加了prop属性的el-table-column 才能找到column.property
            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);
            } else {
              sums[index] = "";
            }
            sums[index] = sums[index].toFixed(2); //保留2位小数
        //  }
          break;
        default:
          break;
      }
    });

    return sums;
  },

特殊点 1是在column.property !== undefined 才做合计,以免过多报错。

2是在最后加上toFixed(2) 保留2位小数

有了自定义的方法, 如果有其他合计的特殊要求都可以自己满足。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你只想合计某几列,可以使用 element 表格的 `summary-method` 属性。具体操作步骤如下: 1. 在表格定义需要合计的列,可以通过 `fixed` 属性将其固定在左侧或右侧。 2. 在表格的 `summary-method` 属性编写一个函数,该函数接收两个参数:合计数据和当前行数据。在该函数,将需要合计的列的值累加到合计数据。 下面是一个简单的示例代码: ```html <template> <el-table :data="tableData" show-summary summary-method="getTotal"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄" fixed="left"></el-table-column> <el-table-column prop="score" label="分数"></el-table-column> <el-table-column prop="rank" label="排名"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 20, score: 80, rank: 1 }, { name: '李四', age: 22, score: 90, rank: 2 }, { name: '王五', age: 18, score: 70, rank: 3 }, { name: '赵六', age: 21, score: 85, rank: 4 } ], totalScore: 0 } }, methods: { getTotal({ columns, data }) { this.totalScore = 0 columns.forEach((column, index) => { if (index !== 0 && index !== columns.length - 1) { data.forEach(item => { this.totalScore += item[column.property] }) } }) return [ { name: '合计', score: this.totalScore } ] } } } </script> ``` 在上面的示例,我们将表格的第二列 `age` 固定在左侧,并且只对第三列 `score` 进行合计。`summary-method` 方法遍历需要合计的列,并将其值累加到 `totalScore` 变量。最后返回一个包含合计数据的数组,其 `name` 列固定为“合计”,`score` 列的值为 `totalScore` 变量的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值