当前位置: 首页 > news >正文

vue3 el-table 列数据合计

在 Vue 3 中使用 Element Plus 的 <el-table> 组件时,如果你想要对列数据进行合计(即计算某一列的总和),你可以通过几种方式来实现。以下是几种常见的方法:

方法1:使用计算属性

你可以在 Vue 组件的 computed 属性中计算合计值。

<template><el-table :data="tableData" border style="width: 100%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="amount" label="金额"></el-table-column></el-table><div>合计: {{ totalAmount }}</div>
</template><script setup>
import { ref, computed } from 'vue';const tableData = ref([{ date: '2023-04-01', name: '张三', amount: 100 },{ date: '2023-04-02', name: '李四', amount: 200 },// 更多数据...
]);const totalAmount = computed(() => {return tableData.value.reduce((sum, item) => {return sum + item.amount;}, 0);
});
</script>

方法2:使用方法(Method)

你也可以在 Vue 组件的方法中计算合计值,然后在模板中调用这个方法。

<template><el-table :data="tableData" border style="width: 100%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="amount" label="金额"></el-table-column></el-table><div>合计: {{ calculateTotalAmount() }}</div>
</template><script setup>
import { ref } from 'vue';const tableData = ref([{ date: '2023-04-01', name: '张三', amount: 100 },{ date: '2023-04-02', name: '李四', amount: 200 },// 更多数据...
]);function calculateTotalAmount() {return tableData.value.reduce((sum, item) => {return sum + item.amount;}, 0);
}
</script>

方法3:使用 Element Plus 的 <el-table-column> 的 summary-method 属性(适用于 Element Plus 2.x)

如果你使用的是 Element Plus 的旧版本,可以利用 <el-table> 的 summary-method 属性来直接在表格底部显示合计。但请注意,Element Plus 在 Vue 3 中通常指的是最新版本,该版本可能不支持此属性或其用法有所变化。对于 Vue 3 和 Element Plus 的最新版本,推荐使用计算属性或方法。如果你在使用旧版本的 Element Plus,可以这样设置:

<template><el-table :data="tableData" border style="width: 100%" show-summary :summary-method="sumMethod"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="amount" label="金额"></el-table-column></el-table>
</template><script setup>
import { ref } from 'vue';// 示例数据初始化
const tableData = ref([{ date: '2023-01-01', name: '张三', amount: 100 },{ date: '2023-01-02', name: '李四', amount: 200 },{ date: '2023-01-03', name: '王五', amount: 300 }
]);// 自定义合计方法
const sumMethod = ({ columns, data }) => {const sums = [];columns.forEach((column, index) => {if (index === 0) {// 第一列显示"合计"sums[index] = '合计';return;}if (column.property === 'amount') {// 金额列计算总和const values = data.map(item => Number(item[column.property]));sums[index] = values.reduce((acc, curr) => acc + curr, 0);// 添加单位/格式化显示sums[index] += ' 元';} else {// 非数值列留空sums[index] = '';}});return sums;
};
</script>

对于 Vue 3 和 Element Plus 的最新版本,推荐使用计算属性或方法,因为 summary-method 在新版中可能已经被弃用或用法有所改变。确保查阅最新的官方文档以获取最准确的信息和示例

http://www.dtcms.com/a/295881.html

相关文章:

  • MongoDB 副本集搭建与 Monstache 实时同步 Elasticsearch 全流程教程
  • AI开放课堂:钉钉MCP开发实战
  • 【DBeaver 安装 MongoDB 插件】
  • 推荐系统如何开发
  • Python —— 真题九
  • web:js函数的prototype(原型对象)属性
  • RabbitMQ简述
  • 前端笔记:同源策略、跨域问题
  • 重绘(Repaint)与重排(Reflow)
  • 【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题
  • 简单Proxy使用
  • 【Newman+Jenkins】实施接口自动化测试
  • Python 使用环境下编译 FFmpeg 及 PyAV 源码(英特尔篇)
  • AIRIOT智慧选煤厂管理解决方案
  • HTTP性能优化实战:从协议到工具的全面加速指南
  • 【unity游戏开发入门到精通——组件篇】unity的粒子系统力场 (Particle System Force Field)实现如旋风、吸引力、风吹效果等
  • OpenCV(03)插值方法,边缘填充,透视变换,水印制作,噪点消除
  • Python中浅拷贝和深拷贝的理解
  • 力扣 hot100 Day54
  • mvn dependency:tree 使用详解?
  • Leetcode 07 java
  • 赋能决策与创新的数据引擎:数据分析平台的价值与未来
  • b-up:Enzo_mi:Transformer DETR系列
  • 10_Spring Boot 中的 @Scheduled 注解是单线程还是多线程?同步还是异步?
  • 基于深度学习的肺癌肿瘤细胞图像识别与分类系统
  • 技术赋能多元探索:我的技术成长与行业洞察
  • 解决 WSL 中无法访问 registry-1.docker.io/v2/,无法用 docker 拉取 image
  • 新能源电池厂自动化应用:Modbus TCP转DeviceNet实践
  • IDM下载失败全面排查指南
  • 医疗设备自动化升级:Modbus TCP与DeviceNet的协议协同实践