【vue+el

阅读: 评论:0

【vue+el

【vue+el

效果

实现

<el-tableref="offroomTable"border:header-cell-style="{ 'text-align': 'center', background: '#b1defd', height: '34px' }":data="offroomTableList":highlight-current-row="true":height="screenHeight - 430":span-method="arraySpanMethod"><el-table-column label="xxx" :show-overflow-tooltip="true" align="center" prop="proCode" /><el-table-column label="xxx" :show-overflow-tooltip="true" align="center" prop="proName" /><el-table-column label="xxx" :show-overflow-tooltip="true" align="center" prop="ratifyYear" /><el-table-column label="说明" :show-overflow-tooltip="true" align="center" prop="conUnit" /></el-table>
   offroomTableList: [{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },{ proCode: 'xxx', proName: '', ratifyYear: '', conUnit: '' },],

代码注解:
首先要判断是哪一列要进行合并,第一列要合并,所以列索引为0

const _row = SpanArr(this.offroomTableList).one[rowIndex]
然后要处理索引,用SpanArr方法处理原数组,.one[rowIndex]是处理后返回的是一个对象,里面是个数组 {one:[6,0,0,0,0,0,0]}
rowspan代表跨多少行合并
colspan代表跨多少列合并

arraySpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {      const _row = SpanArr(this.offroomTableList).one[rowIndex]const _col = _row > 0 ? 1 : 0return {rowspan: _row,colspan: _col,}}},

定义一个空数组和索引为0的字段
循环数组,索引为0 的时候往数组里push一个1,这段代码不用去改,把else里item.proCode改成你自己的字段就可以了

当走else里的代码时,如果当前行和上一行的proCode的值相同,数组第0项循环+1

这里要解释一下,拿效果图示例,第一列有6行,索引为0 的时候push了一个1,也就是第0项的值为1,=>[{0:1}]

索引为1,也就是第二行的时候,第二行的proCode和上一行的proCode相同,第0项再加1,并且push一个0,
这个时候的数组是这样的,=>[{0:2},{1:0}],按这样循环完之后,数组也就是这样了,=>[{0:6},{1:0},{2:0},{3:0},{4:0},{5:0}]
(为了方便大家理解,写成这样,第[index]项对应第[index]项的值,真正的数组是[6,0,0,0,0,0])

如果当前项和上一项不一样,就push1,代表不被合并,独立占一行
最后讲这个数组返回,给它定义了一个名字one
希望解释的还算通俗,好理解,不清楚的可以随时问,欢迎

getSpanArr(arr) {if (arr) {const spanOneArr = []let concatOne = 0arr.forEach((item, index) => {if (index === 0) {spanOneArr.push(1)} else {        if (item.proCode === arr[index - 1].proCode) {// 第一列需合并相同内容的判断条件spanOneArr[concatOne] += 1spanOneArr.push(0)} else {spanOneArr.push(1)concatOne = index}}})return { one: spanOneArr }}},

本文发布于:2024-01-28 03:48:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063849024559.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:vue   el
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23