相同列的合并
代码:
// 设置合并行数据
setSpanArr() {
let spanOneArr = []
let concatOne = 0
this.tableData.forEach((item, index) => {
if (index === 0) {
spanOneArr.push(1)
} else {
if (item.detailName === this.tableData[index - 1].detailName) {
//第一列需合并相同内容的判断条件
spanOneArr[concatOne] += 1
spanOneArr.push(0)
} else {
spanOneArr.push(1)
concatOne = index
}
}
})
this.spanOneArr = spanOneArr
},
// 合并行
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = this.spanOneArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
}
}
合并莫一列的数据,比如合计某一列的数据
inputChange (data, index) {
let length = this.tableData.length
let detailName = this.tableData[index].detailName
let startIndex = index
let endIndex = index
let total = 0
// 向前遍历,找到staxtindex
for (let i = index; i >= 0; i --) {
let item = this.tableData[i]
if (item.detailName !== detailName) {
startIndex = i + 1
break
} else if (i === 0) {
startIndex = 0
break
}
}
// 向后遍历,找到endindex
for (let i = index; i <= length; i ++) {
let item = this.tableData[i]
if (item.detailName !== detailName) {
endIndex = i - 1
break
} else if (i === length - 1) {
endIndex = length - 1
break
}
}
for (let i = startIndex; i <= endIndex; i ++) {
let item = this.tableData[i]
total = total += item.detailConversion
}
this.tableData[startIndex].totals = total
},