以下方法合并的表格行,不会污染到其他列或行,精准判断条件合并行数据
// 合并行
spanMethod ({ row, column, rowIndex, columnIndex }) {
if (column.property === 'pending_amount' && row.production_name === this.data[rowIndex].production_name) {
// 需要合并的键值
const nameSpan = this.getSpanNumber(this.data, 'pending_amount', row.production_name)
return {
rowspan: nameSpan[rowIndex],
colspan: 1
}
}
if (column.property === 'actualTotal' && row.production_name === this.data[rowIndex].production_name) {
// 需要合并的键值
const nameSpan = this.getSpanNumber(this.data, 'actualTotal', row.production_name)
return {
rowspan: nameSpan[rowIndex],
colspan: 1
}
}
},
// 获取要合并的行数
getSpanNumber (tableData, prop, productionName) {
let currIndex = 0;
const number = [1];
let nameIndex = 0;
let name = tableData[0] && tableData[0][prop];
let prevName = name;
let prevProductionName = tableData[0] && tableData[0].production_name;
tableData.forEach((data, index) => {
if (index > 0) {
if (prevName == data[prop] && prevProductionName === data.production_name) {
number[nameIndex] += 1;
number[currIndex] = 0;
} else {
prevName = data[prop];
prevProductionName = data.production_name;
name = data[prop];
nameIndex = currIndex;
number[currIndex] = 1;
}
}
currIndex++;
});
return number;
},