<el-table
:data="tableData"
:span-method="objectSpanMethod"
border
style="width: 100%; margin-top: 0"
>
<el-table-column
type="index"
label="序号"
width="50px"
align="center"
></el-table-column>
<el-table-column prop="" label="教学时间" align="center">
<el-table-column prop="week" label="星期" align="center">
</el-table-column>
<el-table-column prop="date" label="日期" align="center">
</el-table-column>
<el-table-column prop="time" label="时间" align="center">
</el-table-column>
</el-table-column>
</el-table>
data() {
return {
tableData: [
{
id: "12987123",
week: "周二",
date: "6月21",
time:'8:00-11:00',
},
{
id: "12987123",
week: "周二",
date: "6月21",
time:'11:00-12:00',
},
{
id: "12987123",
week: "周二",
date: "6月21",
time:'11:00-12:00',
},
{
id: "12987123",
week: "周二",
date: "6月21",
time:'11:00-12:00',
},
{
id: "12987124",
week: "周三",
date: "6月22",
time:'8:00-11:00',
},
{
id: "12987124",
week: "周三",
date: "6月22",
time:'8:00-11:00',
},
{
id: "12987125",
week: "周四",
date: "6月23",
time:'8:00-11:00',
},
],
};
},
mounted() {
let data2 = this.mergeTableRow(this.tableData, ["week", "date"]);
this.tableData = data2;
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
const span = column["property"] + "-span";
if (row[span]) {
return row[span];
}
},
mergeTableRow(data, merge) {
if (!merge || merge.length === 0) {
return data;
}
merge.forEach((m) => {
const mList = {};
data = data.map((v, index) => {
const rowVal = v[m];
if (mList[rowVal] && mList[rowVal].newIndex === index) {
mList[rowVal]["num"]++;
mList[rowVal]["newIndex"]++;
data[mList[rowVal]["index"]][m + "-span"].rowspan++;
v[m + "-span"] = {
rowspan: 0,
colspan: 0,
};
} else {
mList[rowVal] = { num: 1, index: index, newIndex: index + 1 };
v[m + "-span"] = {
rowspan: 1,
colspan: 1,
};
}
return v;
});
});
return data;
},
},