vue elementUI表格合计行取不为0的最小值
时间: 2023-10-26 22:27:04 浏览: 132
vue+elementUI实现动态表格合并单元格.zip
您可以使用 Element UI 表格的 `table-footer` 插槽来实现合计行的功能,具体操作如下:
1. 在表格中添加 `show-summary` 属性,表示开启表格合计功能。
2. 在表格中添加 `:summary-method` 属性,指定一个函数,用于计算表格的合计值。
3. 在表格中添加 `table-footer` 插槽,用于显示表格的合计行。
4. 在表格的合计计算函数中计算出所有列的和,然后筛选出不为 0 的最小值。
以下是一个示例代码:
```html
<template>
<el-table
:data="tableData"
show-summary
:summary-method="getSummaries"
>
<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-column prop="rank" label="排名"></el-table-column>
<template slot="table-footer">
<tr>
<td>合计</td>
<td></td>
<td>{{ sum }}</td>
<td>{{ minRank }}</td>
</tr>
</template>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18, score: 80, rank: 1 },
{ name: '李四', age: 20, score: 90, rank: 2 },
{ name: '王五', age: 22, score: 70, rank: 3 },
],
};
},
computed: {
sum() {
return this.tableData.reduce((acc, cur) => acc + cur.score, 0);
},
minRank() {
const ranks = this.tableData.map((item) => item.rank);
const filteredRanks = ranks.filter((item) => item !== 0);
return Math.min(...filteredRanks);
},
},
methods: {
getSummaries() {
return [
{
score: this.sum,
rank: this.minRank,
},
];
},
},
};
</script>
```
在上述代码中,`getSummaries` 方法用于计算表格的合计值,返回一个数组,数组中的对象表示每一列的合计值。在合计计算函数中,我们计算出所有列的和,并筛选出排名不为 0 的最小值,最后返回一个包含合计值的对象。在表格的 `table-footer` 插槽中,我们使用 `sum` 和 `minRank` 这两个计算属性来显示表格的合计行。
阅读全文