<el-table
v-loading="listLoading"
border
:data="list"
default-expand-all
row-key="id"
:span-method="objectSpanMethod2"
>
<el-table-column label="中队" prop="schoolClassName" show-overflow-tooltip />
<el-table-column label="日期" prop="dataDetail" show-overflow-tooltip />
<el-table-column label="时间" prop="dayTimeType" show-overflow-tooltip width="80"
/>
<el-table-column label="时间段" prop="endTimestartTime" show-overflow-tooltip />
</el-table>
const objectSpanMethod2=({rowIndex, columnIndex })=>{
console.log(rowIndex, columnIndex);
if (columnIndex === 0) {
const _row = (flitterData(state.list).one)[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
if (columnIndex === 1) {
const _row = (flitterData(state.list).two)[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
if (columnIndex === 2) {
const _row = (flitterData(state.list).sevr)[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
}
const flitterData=(arr)=> {
const spanOneArr = []
const spanTwoArr = []
const spanSevrArr = []
let concatOne = 0
let concatTwo = 0
let concatSevr = 0
arr.forEach((item, index) => {
if (index === 0) {
spanOneArr.push(1);
spanTwoArr.push(1);
spanSevrArr.push(1);
} else {
if (item.schoolClassName=== arr[index - 1].schoolClassName) { //第一列需合并相同内容的判断条件
spanOneArr[concatOne] += 1;
spanOneArr.push(0);
} else {
spanOneArr.push(1);
concatOne = index;
}
if (item.dataDetail === arr[index - 1].dataDetail && item.schoolClassName=== arr[index - 1].schoolClassName) {//第二列需合并相同内容的判断条件
spanTwoArr[concatTwo] += 1;
spanTwoArr.push(0);
} else {
spanTwoArr.push(1);
concatTwo = index;
}
if (item.dayTimeType === arr[index - 1].dayTimeType && item.dataDetail === arr[index - 1].dataDetail && item.schoolClassName=== arr[index - 1].schoolClassName) {//第二列需合并相同内容的判断条件
spanSevrArr[concatSevr] += 1;
spanSevrArr.push(0);
} else {
spanSevrArr.push(1);
concatSevr = index;
}
}
})
return {
one: spanOneArr,
two: spanTwoArr,
sevr: spanSevrArr,
}
}