记录el-table合计行的使用

项目场景:

项目中需要为表格添加自定义合计行,定义某些数据不需要计算。

记录一下,方便以后复制。


解决方案:

在el的官方文档上,show-summary属性可以展示合计行,但是当需要自定义合计方法的时候就需要添加额外的summary-method属性,它接收一个方法作为计算方法。

 

 只要把写好的方法传递进去就可以自定义合计行了。

import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults'
interface Product {
  id: string
  name: string
  amount1: string
  amount2: string
  amount3: number
}
interface SummaryMethodProps<T = Product> {
  // 每一行都展示些什么数据 比如 1.序号2.日期
  columns: TableColumnCtx<T>[]
  // 每一行的具体数据
  data: T[]
}
// 不需要计算的属性
const title: string[] = ['团号', '商品编码', '条码', '号牌', '内导', '分销商', '原单号', '内导编号', '分销商分类']

// 商场零售表单合计汇总
export default function formTotal (param: SummaryMethodProps) {
  const { columns, data } = param
  const sums: string[] = []
  columns.forEach((column, index) => {
    // 更改行名称
    if (index === 0) {
      sums[index] = '合计:'
      return
    }
    // 去除某些不需要计算的数据
    if (title.includes(column.label)) {
      sums[index] = ''
      return
    }
    // 把当前表格数据中同个分类的数据收集起来
    const values = data.map((item: any) => Number(item[column.property]))
    // 过滤掉
    if (!values.every((value) => Number.isNaN(value))) {
      sums[index] = ` ${values.reduce((prev, curr) => {
        const value = Number(curr)
        if (!Number.isNaN(value)) {
          const num: number = prev + curr
          return Number(num.toFixed(2))
        } else {
          return Number(prev.toFixed(2))
        }
      }, 0)}`
    } else {
      // sums[index] = String(data.length)
      sums[index] = ''
    }
  })
  return sums
}

 新人代码,垃圾勿喷。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值