elmentUI el-table 总结行

背景

  • 原因:表格展示的都是明细数据,需要对当前的明细数据的部分字段进行汇总
  • 难点:汇总的条件不一定,有时候客户查的是1天,有时候是10天

官方写法

只开启开关

  • 开启汇总开关
  • 如果没有汇总方法,
    • 会自动汇总所有的 数字字段
    • 汇总都是当前页的数据,而不是当前查询的所有结果
<el-table show-summary></el-table>

官方实例

传入自定义汇总方法getSummaries

<el-table show-summary :summary-method="getSummaries"></el-table>
  • 自定义汇总方法
  • 官方的写法是典型的reduce写法
getSummaries(param) {
  
        const { columns, data } = param;
        const sums = [];
        columns.forEach((column, index) => {
          // column 是每一列,index 表示列的索引,第一列的时候不计算合计,显示自定义的文字内容
          if (index === 0) {
            sums[index] = '合计';
            return;
          }
          //下面这一坨代码就是把每一列中的所有单元格中的值转化成Number型,
          //然后对转化后的结果进行判断,如果是number型,则进行累加,
          //如果NaN型,说明单元格里是一些无法转化成number型的值,则返回自定义的内容
          // console.log(this.noticeList);
            const values = data.map(item => Number(item[column.property]));
            // console.log(column);
            // 判断需要统计数据的列
            if (column.property === 'arrivalQty'||column.property === 'qty'||column.property === 'costPrice'||column.property === 'arrivalCostPrice'||column.property === 'transitQty'||column.property === 'amount'||column.property === 'arrivalAmount'||column.property === 'transitAmount') {
              sums[index] = values.reduce((prev, curr) => {
                const value = Number(curr);
                if (!isNaN(value)) {
                  return prev + curr;
                } else {
                  return prev;
                }
              }, 0);
              if(column.property === 'transitQty'||column.property === 'arrivalQty'){
                // 处理数据的格式为千分位逗号隔开
                sums[index]=sums[index].toLocaleString('zh-CN').replace(/\./g, '');
                // console.log(sums[index]);
              }
              else{
                // 处理数据的格式为千分位逗号隔开,数据保留两位小数
                sums[index]=sums[index].toLocaleString('zh-CN', {style: 'currency',currency: 'CNY',}).slice(1)
              }
            } else {
              sums[index] = '/';
            }
        });
        // console.log(sums);
        return sums;
      },

自定义汇总方法

  • 不使用官方写的reduce方法,使用自定义的方法进行汇总
 // 获取汇总数据
    getSummaries (param) {
      const { columns, data } = param;
      const sums = [];
      console.log(param)
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          return;
        }
        // 产出重量的汇总
        if (column.property == 'weightOut') {
          const values = data.map((item) => Number(item[column.property]));
          if (!values.every((value) => isNaN(value))) {
            sums[index] = 99.8
          }
        }

        // 投入重量之和的汇总
        if (column.property == 'weightInTotal') {
          const values = data.map((item) => Number(item[column.property]));
          if (!values.every((value) => isNaN(value))) {
            sums[index] = 100.2
          }
        }

        // 损耗重量之和
        if (column.property == 'wastageWeight') {
          const values = data.map((item) => Number(item[column.property]));
          if (!values.every((value) => isNaN(value))) {
            sums[index] = 0.4
          }
        }

        // 损耗比率平均
        if (column.property == 'wastageRate') {
          const values = data.map((item) => Number(item[column.property]));
          if (!values.every((value) => isNaN(value))) {
            sums[index] = 33.3 + '%'
          }
        }
      });
      return sums;
    },

参考链接

https://blog.csdn.net/m0_62095536/article/details/132897851

相关推荐

  1. elmentUI el-table 总结

    2024-06-09 14:46:05       9 阅读
  2. el-table 合集合并

    2024-06-09 14:46:05       19 阅读
  3. el-table按钮获取当前元素

    2024-06-09 14:46:05       16 阅读
  4. vue项目- el-table表格合并

    2024-06-09 14:46:05       18 阅读
  5. RuoYi单体版Table内编辑

    2024-06-09 14:46:05       16 阅读
  6. elment-table实现滚动效果

    2024-06-09 14:46:05       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 14:46:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 14:46:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 14:46:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 14:46:05       18 阅读

热门阅读

  1. MySQL:MySQL的EXPLAIN各字段含义详解

    2024-06-09 14:46:05       10 阅读
  2. 状态设计模式完成商品的创建状态之间的流转

    2024-06-09 14:46:05       11 阅读
  3. Rust-08-枚举和模式匹配

    2024-06-09 14:46:05       8 阅读
  4. 乘积最大子数组 - LeetCode 热题 88

    2024-06-09 14:46:05       8 阅读
  5. 3.组件间通信-mitt(任意组件间通信)

    2024-06-09 14:46:05       11 阅读
  6. spring boot集成pg

    2024-06-09 14:46:05       9 阅读
  7. !力扣70. 爬楼梯

    2024-06-09 14:46:05       8 阅读
  8. 微信小程序:实现音乐播放器的功能

    2024-06-09 14:46:05       6 阅读
  9. oracle10g的dataguard测试

    2024-06-09 14:46:05       11 阅读
  10. 电商系统中热库和冷库的使用与数据转换

    2024-06-09 14:46:05       7 阅读