问题:elementui 原生单元格样例复杂,所以自己封装实现
效果如下:
代码如下:
-
定义合并列规则
spanRule: {
1: ['sourceId', 'prod', 'countries'],
},
-
合并逻辑
function filterArray(item) {
const valueArray = this.rule.filter((prop) => {
return item[prop] === this.data[prop];
});
if (valueArray.length === this.rule.length) {
return true;
} else {
return false;
}
}
-
合并方法
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (Object.keys(this.spanRule).includes(columnIndex.toString())) {
const currentTable = {
rule: this.spanRule[columnIndex],
data: this.list[rowIndex],
};
let chooseSpan = false;
if (rowIndex !== 0) {
chooseSpan = filterArray.call(currentTable, this.list[rowIndex - 1]);
}
if (chooseSpan) {
return { rowspan: 0, colspan: 1 };
} else {
return {
rowspan: this.list.filter(filterArray, currentTable).length,
colspan: 1,
};
}
}
return { rowspan: 1, colspan: 1 };
},