element recordsList下面循环生成多个el-table,每一个table最后一列相同数据合并后显示内容
时间: 2024-12-11 09:40:28 浏览: 69
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
在Element UI的`el-table`组件中,如果你想在一个`recordsList`循环中生成多个表格,并对每个表格的最后一列数据进行合并显示,你可以这样做:
首先,在Vue的单文件组件中,假设你有一个名为`recordsList`的数据数组:
```javascript
<template>
<div>
<el-table v-for="(item, index) in recordsList" :key="index" :data="item.data" style="margin-bottom: 10px;">
<!-- 表格列 -->
<el-table-column v-for="(column, colIndex) in item.columns" :key="colIndex" :prop="column.property" :label="column.label" />
<!-- 特殊的最后合并列 -->
<el-table-column :formatter="calculateTotal" show-overflow-tooltip title="总计" :key="'total' + index">
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import { ref, computed } from 'vue';
// 假设 recordsList 是从接口或数据源获取的数据
let recordsList = ref([]);
// 假设你有预先定义好的每一行的列配置和计算总和的函数
const calculateTotal = ({ column, row }) => {
// 检查是否是最后一个表格
if (row.index === recordsList.value.length - 1) {
// 计算所有行该列的值,这里以数字为例,如果数据复杂,需做相应的处理
let total = recordsList.value.slice(0, row.index + 1)
.map(item => item.data[column.property]).reduce((prev, curr) => prev + curr, 0);
return total;
}
return '';
};
// 可能还需要其他数据处理
</script>
```
上面的代码中,我们在循环遍历`recordsList`的时候,对于每个`item`,创建一个新的`el-table`。每个`el-table`都有自己的数据(`item.data`),并且每列(`item.columns`)都通过`v-for`渲染。特殊的是,我们创建了一个额外的列`calculateTotal`,其`formatter`属性指定了一个计算函数,用于在最后一行合并那一列的数据。
请注意,这只是一个基础示例,实际应用中可能需要根据你的数据结构、合并规则以及业务需求进行调整。同时,确保`column.property`和`item.data`中的键对应正确。
阅读全文