table 加上 show-summary :summary-method=“getSummaries”
<el-table
v-loading="loading"
show-summary
:summary-method="getSummaries"
:data="list"
>
<el-table-column v-if="value == 1" prop="name" label="用户名" />
<el-table-column prop="team" label="团队" />
<el-table-column prop="customer" label="新增客户" />
<el-table-column prop="project" label="新增项目" />
<el-table-column prop="personnel" label="新增人才" />
<el-table-column prop="recommend" label="推荐" />
<el-table-column prop="interview" label="面试" />
<el-table-column prop="employment" label="录用" />
<el-table-column prop="Induction" label="入职" />
<el-table-column prop="warranty" label="保证期" />
</el-table>
import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
import { useReportStore, type ListItem } from '@src/store/modules/report';
interface SummaryMethodProps<T = ListItem> {
columns: TableColumnCtx<T>[];
data: T[];
}
const getSummaries = (param: SummaryMethodProps) => {
console.log(param);
const { columns, data } = param;
const sums: Array<string | number> = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
return;
}
const values = data.map((item) => Number(item[column.property as keyof ListItem]));
if (!values.every((value) => Number.isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
} else {
sums[index] = 'N/A';
}
});
return sums;
};