700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【vue elementUI 动态列表合并单元格】table表格中动态合并行跟列

【vue elementUI 动态列表合并单元格】table表格中动态合并行跟列

时间:2019-03-11 23:14:00

相关推荐

【vue elementUI 动态列表合并单元格】table表格中动态合并行跟列

在项目中的table表格中遇到了动态合并单元格的需求,而element组件中只是静态合并单元格,于是就有了如下解决方案:

需求

解决方案

// 使用到了elementUI中的table表格组件:<el-table:data="list":span-method="objectSpanMethod":header-cell-style="{'text-align': 'center'}"style="width: 100%">

用到了该属性:span-method="objectSpanMethod"

data() {return {// 记录二级单位合并的行数tempIndex: [],// 记录小计合并的列数temxjIndex: [],}}methods: {/* 合并单元格 */ objectSpanMethod({row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {return {rowspan: this.tempIndex[rowIndex],colspan: 1}} if(columnIndex === 1) {return {rowspan: 1,colspan: this.temxjIndex[rowIndex]}}},/* 处理表格数据 */ handleProcessList() {let pos // 合并二级单位单元格 标识let xjpos // 合并小计单元格 标识let hjpos // 合并合计单元格 标识let temMergeIndex = [] // 记录二级单位 合并行let temxjMergeIndex = [] // 记录小计跟合计 合并列for(let i = 0; i < this.list.length; i++) {if(i === 0) {temMergeIndex.push(1)temxjMergeIndex.push(1)pos = 0 // 下标初始值xjpos = 0 // 下标初始值hjpos = 0 // 合计下标初始值}else {if(this.list[i].pid === this.list[i - 1].pid && this.list[i].code != '' // 保证当前项不是小计) {temMergeIndex[pos] += 1temMergeIndex.push(0)temxjMergeIndex.push(1)} else if(this.list[i].pid === this.list[i - 1].pid && this.list[i].code == '' // 当前是小计) {xjpos = i// 记录合并列(小计)temMergeIndex.push(0)temxjMergeIndex.push(1)temxjMergeIndex[xjpos] += 1} else if(this.list[i].pid == 0 && this.list[i].code == '' // 当前是合计) {hjpos = itemMergeIndex.push(0)temxjMergeIndex.push(1)temxjMergeIndex[hjpos] += 1}else {temMergeIndex.push(1)temxjMergeIndex.push(1)pos = i}}}this.tempIndex = temMergeIndexthis.temxjIndex = temxjMergeIndexconsole.log(this.tempIndex , this.temxjIndex);},}

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