在表格中指定位置插入小合计
//小合计,在指定行下插入合计行
handleTable(Human) {
let doctorMap = {};
for (let i = 0; i < Human.length; i++) {//找出相同名称的行数
let doctorName = Human[i].deptName;
if (doctorMap[doctorName] !== undefined) {
doctorMap[doctorName].push(i);
} else {
doctorMap[doctorName] = [i];
}
}
//打印doctorMap
// {
// "中医科":[ 0, 1, 2, 3 ],
// "外科":[ 4, 5 ]
// }
let keyArr = []
//取出key并倒序,防止正序插入会影响行下标
for (let k in doctorMap) {
keyArr.unshift(k)
}
keyArr.forEach((ele, index) => {
//定义需要插入的数据
let sumObj = {
deptName: ele,
aaa:0,
doctorName: '合计',//需要把哪个字段变成合计
//....需要插入合计的列名字段,与后端返回字段一致
};
//循环计算相同名称的行数据,例如'中医科':[0,1,2,3] 共计算四行数据
for (let i = 0; i < doctorMap[ele].length; i++) {
const e = doctorMap[ele][i];
//计算累加数据
//......
//例:
sumObj.aaa+= Human[e].aaa- 0 //与sumObj里的字段对应
}
let lastIndex = doctorMap[ele][doctorMap[ele].length - 1] //找出相同科室最后一行插入合计数据
Human.splice(lastIndex + 1, 0, sumObj); //插入到指定位置
})
},