关于element ui 表格中相同数据合并显示问题
1,创建返回字符串信息
data(){
return {
tableData:[],
ordernum:'',
orders:'',
prodname:'',
value1:'',
rowspan:'',
rowspans:''
}
},
2,接受后端数据并进行处理
created(){
this.getData();
},
methods:{
getData(){
var that = this
this.$axios({
method: 'get',
headers: {
'ContentType': 'application/json',
},
dataType: 'json',
ContentType: 'application/json;charset-utf-8',
//获取接口
url: '/getstate?prodname='+that.prodname+'&orders='+that.orders+'&start='+that.value1[0]+'&end='+that.value1[1],
}).then( function (response) {
//response.data 接受到的数据
that.tableData = response.data;
// 先给所有的数据都加一个v.rowspan = 1
that.tableData.forEach(v => {
v.rowspan = 1;
v.rowspans = 1;
});
// 双层循环
for (let i = 0; i < that.tableData.length; i++) {
// 内层循环,上面已经给所有的行都加了v.rowspan = 1
// 这里进行判断
// 如果当前行的id和下一行的id相等
// 就把当前v.rowspan + 1
// 下一行的v.rowspan - 1
for (let j = i + 1; j < that.tableData.length; j++) {
//此处可根据相同字段进行合并,此处是根据的ORDER_NUM
if (that.tableData[i].ORDER_NUM === that.tableData[j].ORDER_NUM) {
that.tableData[i].rowspan++;
that.tableData[j].rowspan--;
}
}
// 这里跳过已经重复的数据
i = i + that.tableData[i].rowspan - 1;
}
for (let i = 0; i < that.tableData.length; i++) {
// 内层循环,上面已经给所有的行都加了v.rowspan = 1
// 这里进行判断
// 如果当前行的id和下一行的id相等
// 就把当前v.rowspan + 1
// 下一行的v.rowspan - 1
for (let j = i + 1; j < that.tableData.length; j++) {
//此处可根据相同字段进行合并,此处是根据的id
if (that.tableData[i].PROD_NAME === that.tableData[j].PROD_NAME) {
that.tableData[i].rowspans++;
that.tableData[j].rowspans--;
}
}
// 这里跳过已经重复的数据
i = i + that.tableData[i].rowspans - 1;
}
}).catch(function (error) {
console.log(error)
})
},
}
3,在e-table标签中插入:span-method=“objectSpanMethod”
4,处理:span-method="objectSpanMethod"方法
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
return {
rowspan: row.rowspans,
colspan: 1
};
}
if (columnIndex === 1) {
return {
rowspan: row.rowspan,
colspan: 1
};
}
},
感谢关注,白嫖可耻。