300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > element table合并单元格

element table合并单元格

时间:2019-05-29 02:52:31

相关推荐

element table合并单元格

element ui中的table表格数据是动态生成的,如果要求我们对单元格进行合并,这个时候需要借助一个api,:span-method="arraySpanMethod",arraySpanMethod为我们自己编写的合并单元格的方法。

先在data中定义数据,合并几列就定义几个数组和索引

data() {return {tableData: [],//表格数据batchNoInArr:[],//合并入库编号batchNoInIndex:0,//合并入库编号索引supplierNameArr:[],//合并供应商supplierNameIndex:0,//合并供应商索引}}

定义合并的函数,并编写代码,merge方法中的data是table的数据源,逻辑是以第一行为基准一层层对比

// 初始化合并行数组mergeInit() {this.batchNoInArr = []; //合并入库编号this.batchNoInIndex = 0;//合并入库编号索引this.supplierNameArr = []; //合并供应商this.supplierNameIndex = 0;//合并供应商索引},// 合并表格merge() {this.mergeInit();let data = this.tableData;if (data.length > 0) {for (var i = 0; i < data.length; i++) {if (i === 0) {//第一行必须存在,以第一行为基准this.batchNoInArr.push(1); //合并入库编号this.batchNoInIndex = 0;this.supplierNameArr.push(1);//合并供应商this.supplierNameIndex = 0;} else {// 判断当前元素与上一元素是否相同// 合并入库编号if (data[i].batchNoIn == data[i - 1].batchNoIn) {this.batchNoInArr[this.batchNoInIndex] += 1;this.batchNoInArr.push(0);} else {this.batchNoInArr.push(1);this.batchNoInIndex = i;}//合并供应商,注意if条件以前面列为基准if (data[i].batchNoIn == data[i - 1].batchNoIn && data[i].supplierName == data[i - 1].supplierName) {this.supplierNameArr[this.supplierNameIndex] += 1;this.supplierNameArr.push(0);} else {this.supplierNameArr.push(1);this.supplierNameIndex = i;}}}}},//合并方法objectSpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {//第一列 入库编号const row1 = this.batchNoInArr[rowIndex];const col1 = row1 > 0 ? 1 : 0;return {rowspan: row1,colspan: col1};}else if (columnIndex === 1) {// 第二列 供应商const row2 = this.supplierNameArr[rowIndex];const col2 = row2 > 0 ? 1 : 0;return {rowspan: row2,colspan: col2,};} },

<el-table :data="tableData" :span-method="objectSpanMethod"></el-table>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。