element ui --- el-table 根据相邻行属性值是否相同合并单元格
一般合并单元格可根据行和列指定合并便可,这篇讲的是 如果表格里有名字或者id或者code相同时进行合并。代码如下:
// 合并单元格 handleTableArr(data){ this.spanArr = []; let contactDot = 0; data.forEach((item,index) => { item.index = index; if(index === 0){ this.spanArr.push(1); }else{ if(item.groupCode === data[index - 1].groupCode){ this.spanArr[contactDot] +=1; this.spanArr.push(0); }else{ this.spanArr.push(1); contactDot = index; } } }); return data; }, //计算合并表格 objectSpanMethod({ row, column, rowIndex, columnIndex }){ if(columnIndex === 0){ const _row = this.spanArr[rowIndex]; const _col = _row>0?1:0; return{ rowspan:_row, colspan:_col } } }
<el-table class="cardProList" :span-method="objectSpanMethod" :data="cardInfo.rights" :header-cell-style="{background:'rgba(251, 251, 252, 1)'}"> <el-table-column prop="groupCode" label="套餐" align="center"> <template slot-scope="scope"> <span v-if="scope.row.isNum">套餐{{scope.row.groupCode}}</span> <span v-else>{{scope.row.groupCode}}</span> </template> </el-table-column> </el-table>
:span-method="objectSpanMethod" 调用合并方法。
handleTableArr直接对后台返回的数组进行操作就行
多列单元格合并代码示例:
// 合并单元格 handleTableArr(data){ this.spanArr = []; this.twoArr = []; let contactDot = 0; let concatTwo = 0; let i = 1; data.forEach((item,index) => { item.index = index; if(index === 0){ item.sort = i; this.spanArr.push(1); this.twoArr.push(1); }else{ if(item.surveyId === data[index - 1].surveyId){ item.sort = i; this.spanArr[contactDot] +=1; this.spanArr.push(0); }else{ item.sort = ++i; this.spanArr.push(1); contactDot = index; } if( item.surveyId === data[index - 1].surveyId && item.questionId === data[index - 1].questionId){ this.twoArr[concatTwo] += 1; this.twoArr.push(0) }else{ this.twoArr.push(1); concatTwo = index; } } }); console.log(data) return data; }, //计算合并表格 objectSpanMethod({ row, column, rowIndex, columnIndex }){ let i = 1; if(columnIndex === 0){ const _row = this.spanArr[rowIndex]; const _col = _row > 0 ? 1 : 0; if(this.spanArr[rowIndex] > 0){ this.$set(row,'rowId',this.spanArr[rowIndex]); }else{ this.$set(row,'rowId',0); } return{ rowspan:_row, colspan:_col } } if(columnIndex === 1 || columnIndex === 4 || columnIndex === 5){ const _row = this.twoArr[rowIndex]; const _col = _row > 0 ? 1 : 0; return{ rowspan:_row, colspan:_col } } },
多列表格内部合并数据格式示例
list:[ { surveyId: 1, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 11, questionName: '是否有归属感', optionContent: 'A有', voteSum: 100, }, { surveyId: 1, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 11, questionName: '是否有归属感', optionContent: 'B无', voteSum: 100, }, { surveyId: 1, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 22, questionName: '是否继续在公司发展', optionContent: 'A是的', voteSum: 100, }, { surveyId: 1, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 22, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, { surveyId: 2, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 55, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, { surveyId: 2, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 66, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, { surveyId: 2, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 66, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, { surveyId: 3, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 66, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, { surveyId: 3, surveyName: '满意度调查', startTime: '2022-01-20', endTime: '2022-02-20', questionId: 66, questionName: '是否继续在公司发展', optionContent: 'B考虑', voteSum: 100, }, ],
标签:
ElementUI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)