• Element Table 合并列


     <el-table
            :data="tableInfo.tableData"
            stripe
            height="calc(100% - 32px)"
            fit
            :span-method="objectSpanMethod"
            :cell-style="cellstyle"
            @sort-change="sortchange"
          >
      <template v-for="(col,index) in tableInfo.columns">
        <el-table-column
                :prop="col.prop"
                :key="index"
                align="center"
                :label="col.label"
                :width="col.width||100"
              ></el-table-column>
      </template>
      </el-table>
     
    private rowSpanArr: Array<Array<any>> = new Array<Array<any>>();
    private dataArr: Array<Array<any>> = new Array<Array<any>>();
     
    function getdate(){
     //后台获取数据后为data
     
     // 获取映射分类下的数组
     that.dataArr = that.toArray(data);
     that.getRowSpan();
    }
     
     
     that.tableInfo.columns = [
          { label: "姓名", prop: "Name" },
          { label: "性别", prop: "Sex",  100 },
          { label: "年龄", prop: "Age",  100 },
     
        ];


    toArray(arr: Array<any>) { let that = this; var arrs = new Array<Array<any>>(); arr.forEach(function (v, i, arr) { var keys = Object.keys(v); arrs[i] = new Array(); that.tableInfo.columns.forEach(function (v1: any, i1: any, arr1: any) { arrs[i].push(arr[i][v1.prop]); //用于把展示的数据给转换成datatable类型, }); }); return arrs; } // 列合并数组数据(记录每个单元格占用多少行,rowposition为当前计算行) getRowSpan() { let that = this; that.rowSpanArr = new Array<Array<number>>(); let columns = that.dataArr[0].length || 0; //用于记录每列的计算行 let rowposition = Array(columns).fill(0); that.dataArr.forEach((item: any, row: number) => { //初始化每行每列 that.rowSpanArr[row] = Array(columns).fill(1); if (row > 0) { //循环列 let over = false; for (let column = 0; column < that.dataArr[row].length; column++) { if (that.dataArr[row][column] == that.dataArr[row - 1][column]) { if (over) { rowposition[column] = row; } else { that.rowSpanArr[rowposition[column]][column] += 1; that.rowSpanArr[row][column] = 0; } } else { rowposition[column] = row; over = true; } } } }); } objectSpanMethod({ row, column, rowIndex, columnIndex }: any) { // 只合并区域位置 let that = this; if (columnIndex === 0 || columnIndex === 1) { const _row = that.rowSpanArr[rowIndex][columnIndex]; return { rowspan: _row, // colspan: 1, // }; } }

  • 相关阅读:
    将中文字符串分割为数组 解决str_split中文乱码php
    %25%37%DD 。。。上述形式不是乱码。 这是urlencoding。 你可以使用js内置的方法 encodeURIComponent进行编码, 而使用decodeURIComponent把上述形式再解码为普通字符
    浏览器 cookie session
    javascript:void(0)与#区别
    $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)
    HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
    HBuilder的默认工作空间的修改
    Spring和Mybatis的整合
    嵌套查询--------关联一对多关系----------collection
    InputStream和OutputStream的一遍博客 分析非常到位
  • 原文地址:https://www.cnblogs.com/tiandi0808/p/13749341.html
Copyright © 2020-2023  润新知