el-table vue3统计计算数字
固定合计在最下列
父组件
<template>
<el-table
v-loading="loading"
tooltip-effect="light"
:data="list"
style="width: 100%"
:max-height="maxHeight"
element-loading-text="拼命加载中..."
:header-cell-style="{
backgroundColor: '#d3d7e3',
color: '#303030',
}"
>
<!-- 此处省略 -->
</el-table>
<!-- 合计固定最下面 -->
<div v-if="sum.length !== 0" style="height: calc(100vh - 320px); padding-top: 11px">
<tables :sum="sum"></tables>
</div>
</template>
<script lang="ts" setup>
const sum = ref<any>([])
const list = ref<any>([])
const loading = ref(false)
onMounted(() => {
createdTable()
})
const createdTable = () => {
sum.value = []
loading.value = true
list.value = [
{
num1: 0,
num2: 0,
id: '001',
num3: 0,
num4: 0,
num5: 0,
num6: 0,
nonum6: 2,
name: 'y杨妮',
num7: 0,
num8: 2,
taskObjectivesLoading: false,
},
{
num1: 0,
num2: 0,
id: '002',
num3: 0,
num4: 0,
num5: 0,
num6: 0,
nonum6: 1,
name: '乌鸦你',
num7: 0,
num8: 1,
taskObjectivesLoading: false,
},
{
num1: 1,
num2: 0,
id: '00G01',
num3: 0,
num4: 0,
num5: 0,
num6: 0,
nonum6: 1,
name: '菜百',
num7: 0,
num8: 1,
taskObjectivesLoading: false,
},
]
if (list.value.length !== 0) {
const sums = reactive({
num8: 0,
num6: 0,
nonum6: 0,
num1: 0,
num4: 0,
num2: 0,
num3: 0,
num7: 0,
num5: 0,
name: '合计',
})
list.value.forEach((item: any) => {
sums.num8 += item.num8
sums.num6 += item.num6
sums.nonum6 += item.nonum6
sums.num1 += item.num1
sums.num4 += item.num4
sums.num2 += item.num2
sums.num3 += item.num3
sums.num7 += item.num7
sums.num5 += item.num5
})
sum.value = [sums]
}
loading.value = false
}
</script>
子组件
<template>
<el-table
tooltip-effect="light"
:data="props.sum"
style="width: 100%"
:show-header="false"
:row-style="getRowStyle"
:highlight-current-row="false"
class="table-style"
>
<!-- 此处省略 -->
</el-table>
</template>
<script lang="ts" setup>
const props = defineProps({
sum: {
type: Array,
},
})
const getRowStyle = (row: any) => {
const v = row
if (v.rowIndex === 0) {
return {
backgroundColor: '#f5f7fa',
}
}
}
</script>
<style scoped>
.el-table tr {
background: #d3d7e3 !important;
}
::v-deep .el-table__row:hover {
background: rgba(14, 95, 255, 0.5) !important;
}
::v-deep.el-table .el-table__row:hover {
background-color: inherit !important;
}
.table-color .el-table__body .el-table__row.hover-row td {
background-color: #eec591 !important;
}
</style>
数据
const ui = [
{
num1: 0,
num2: 0,
id: '001',
num3: 0,
num4: 0,
num9: 0,
num6: 0,
nonum6: 2,
name: '兔鳄',
num7: 0,
num10: 2,
taskObjectivesLoading: false,
},
{
num1: 0,
num2: 0,
id: '002',
num3: 0,
num4: 0,
num9: 0,
num6: 0,
nonum6: 1,
name: '以恶',
num7: 0,
num10: 1,
taskObjectivesLoading: false,
},
{
num1: 1,
num2: 0,
id: '00G01',
num3: 0,
num4: 0,
num9: 0,
num6: 0,
nonum6: 1,
name: '后世',
num7: 0,
num10: 1,
taskObjectivesLoading: false,
},
]
计算num10,num6,nonum6,num1,num4,num2,num3,num7,num9
// 初始化总和对象
const sums = {
num10: 0,
num6: 0,
nonum6: 0,
num1: 0,
num4: 0,
num2: 0,
num3: 0,
num7: 0,
num9: 0,
};
// 遍历数组并累加每个字段的值
ui.forEach(item => {
sums.num10 += item.num10;
sums.num6 += item.num6;
sums.nonum6 += item.nonum6;
sums.num1 += item.num1;
sums.num4 += item.num4;
sums.num2 += item.num2;
sums.num3 += item.num3;
sums.num7 += item.num7;
sums.num9 += item.num9;
});
// 输出总和
console.log(sums);