element ui :show-summary=“true“ 属性 指定合并列

element ui :show-summary=“true” 属性 指定合并列


<template>
  <el-table :data="tableData" style="width: 100%" :show-summary="true" :summary-method="calculateSummary">
    <el-table-column prop="name" label="姓名"></el-table-column>
    <el-table-column prop="age" label="年龄"></el-table-column>
    <el-table-column prop="score" label="分数"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 20, score: 80 },
        { name: '李四', age: 22, score: 90 },
        { name: '王五', age: 25, score: 85 }
      ]
    };
  },
  methods: {
    calculateSummary({ columns, data }) {
      const sums = [];
      columns.forEach((column, columnIndex) => {
        if (column.property === 'score') {
          // 跳过计算分数(score)列的合计
          sums[columnIndex] = '';
          return;
        }

        let total = 0;
        data.forEach((item) => {
          total += item[column.property];
        });

        sums[columnIndex] = total;
      });

      return sums;
    }
  }
};
</script>

在上述示例中,我们使用了 Element UI 的 summary-method 方法来自定义合计行的计算逻辑。在 calculateSummary 方法中,我们遍历表格的各列,并根据需要计算每列的合计值。

在示例中,我们通过判断 column.property 是否为 ‘score’,来决定是否跳过分数(score)列的合计计算。如果是分数列,我们将合计值设为 ‘’,表示不计算该列的合计;否则,我们遍历数据并累加该列的值。

请根据您的实际需求进行调整和扩展,以满足不计算某列的合计的要求。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值