vue Element ui 动态合并单元格

实现效果图:

image

​json:

image

页面源码:​

<el-table :data="data" border height="600" :span-method="objectSpanMethod">

              <el-table-column  :label="head" v-for="(head, key) in header" :key="head">

                  <template slot-scope="scope">

                    {{data[scope.$index][key]}}

                  </template>

              </el-table-column>

</el-table>

控制单元格合并需要span-method(官网)


export default {

  data() {

    return {

        data:[],

        spanArr:[],   

    };

  },

  methods: {

  getSpanArr(data) {

      console.log(data)

          for (var i = 0; i < data.length; i++) {

            if (i === 0) {

              this.spanArr.push(1);

              this.pos = 0

            } else {

              // 判断当前元素与上一个元素是否相同,因合并第一个所以[0]

            if (data[i][0] === data[i - 1][0]) {

                this.spanArr[this.pos] += 1;

                this.spanArr.push(0);

              } else {

                this.spanArr.push(1);

                this.pos = i;

              }

            }

        }

    },

    objectSpanMethod({ row, column, rowIndex, columnIndex }) {

      if (columnIndex === 0) {

            const _row = this.spanArr[rowIndex];

            const _col = _row > 0 ? 1 : 0;

            return {

                  rowspan: _row,

                  colspan: _col

            }

          }

      }

  },

  mounted() {

      this.getSpanArr(this.data); 

  }

}


2018-12-26

发现一个bug,如果需要手动再去生成表格,在时间中调用this.spanArr=[],把spanArr清空一下

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,223评论 4 61
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,079评论 1 45
  • 双十一刚过去,所有的人都在等待自己的包裹。 你呢?可以收到我的这封信吗?一个没有地址的信封。 落红不是无情物 化作...
    祎怿阅读 4,164评论 11 7
  • 今天把线上课一股脑做完了。 做完后身体很疲累,心里感觉有点后悔(干嘛非要积攒到一起做呀,要是平时一天做一课,一天做...
    好运到爆的娟娟阅读 2,586评论 0 0