使用vue+element-ui的summary-method方法做列合计

使用vue+element-ui的summary-method方法做列合计

// html代码

<el-table
  :data="tableData1"
  style="width: 100%"
  border
  show-summary
  :summary-method="getSummaries"
>
</el-table>

// 合计列方法

//合计
getSummaries (param) {
  const { columns, data } = param
  const sums = []
  columns.forEach((column, index) => {
    if (index === 0) { // 合计行自定义名称
      sums[index] = '整体收益'
      return
    }
    const values = data.map(item => {
      return Number((item[column.property] + "").replace(/%/, ""))//净化数值
    })
    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
}

效果图如下
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我有以下回答: 首先,在 Vue2+Element UI使用 `show-summary` 属性,需要在表格组件中设置 `show-summary` 属性为 `true`。然后,可以在表格组件中定义一个 `summary-method` 方法来动态生成汇总行的内容。 对于你的需求,可以在 `summary-method` 方法中根据不同列添加不同的 HTML 元素,并为它们添加点击事件。具体实现步骤如下: 1. 在表格组件中设置 `show-summary` 属性为 `true`,并定义 `summary-method` 方法: ```html <template> <el-table :data="tableData" show-summary :summary-method="getSummary"> ... </el-table> </template> <script> export default { data() { return { tableData: [...], }; }, methods: { getSummary(param) { // 在这里动态生成汇总行的内容 }, }, }; </script> ``` 2. 在 `getSummary` 方法中根据不同列添加不同的 HTML 元素,并为它们添加点击事件: ```js getSummary(param) { const columns = param.columns; const data = param.data; // 定义一个用于存储汇总行的数组 const sums = []; // 遍历每一列 columns.forEach((column, index) => { // 如果是第一列,直接添加汇总行 if (index === 0) { sums.push("汇总"); return; } // 根据不同列添加不同的 HTML 元素 let sum = ""; if (column.property === "amount") { sum = `<span class="clickable" @click="handleAmountClick">${data.reduce((prev, curr) => prev + curr.amount, 0)}</span>`; } else if (column.property === "price") { sum = `<a href="#" class="clickable" @click="handlePriceClick">${data.reduce((prev, curr) => prev + curr.price, 0)}</a>`; } else { sum = data.reduce((prev, curr) => prev + curr[column.property], 0); } // 将汇总行添加到数组中 sums.push(sum); }); // 返回汇总行 return sums; }, ``` 在上述代码中,我们首先遍历了每一列,并根据不同列添加不同的 HTML 元素。然后,我们为 HTML 元素添加了 `clickable` 类和点击事件。最后,将汇总行添加到数组中,并返回该数组。 需要注意的是,我们在 HTML 元素中定义了 `clickable` 类,需要在样式中定义该类: ```css .clickable { color: blue; cursor: pointer; } ``` 另外,我们还需要在 Vue 组件中定义 `handleAmountClick` 和 `handlePriceClick` 方法,来处理点击事件。 综上所述,以上就是在 Vue2+Element UI使用 `show-summary` 属性,并为汇总行的 HTML 元素添加点击事件的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值