combinación de tabla elementUI

        <el-table :data="tableData" key="tableData" max-height="500" border size="small" style="width: 100%"
            header-cell-class-name="table-header-row" show-summary :summary-method="getSummaries" :span-method="objectSpanMethod" >
  objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            console.log(this.corpType)
            if(this.corpType!=1){//用来判断客户类型
                let contactDot = 0;
                let spanArr = [];
                this.tableData.forEach((item, index) => {
                    if (index === 0) {
                        // console.log(spanArr)
                        spanArr.push(1)
                    } else {
                        if (item.corpName === this.tableData[index - 1].corpName) {
                            spanArr[contactDot] += 1;//数组相应下标用来记录合并几行
                            spanArr.push(0)
                        } else {
                            contactDot = index
                            spanArr.push(1)
                        }
                    }
                })
                this.spanArr = spanArr;
                if (columnIndex === 1) {//合并表格列为1的数据,表格从0开始,也就是合并第二列数据
                    if(this.spanArr[rowIndex]){
                        return {
                            rowspan:this.spanArr[rowIndex],
                            colspan:1
                        }
                    }else{
                        return {
                            rowspan: 0,
                            colspan: 0
                        }
                    }
                }
            }
        },

 Este método solo puede comparar matrices que se han ordenado. Por ejemplo, en la primera imagen, los nombres de la primera fila y la última fila son los mismos pero no se fusionan. La razón es que el código anterior solo compara los datos de la siguiente fila con los datos de la fila anterior. No hay comparación de los datos antes de la fila anterior. Por lo tanto, antes de la comparación, ordeno los datos por nombre y puedo usar el método de clasificación de matriz para ordenar.

 this.tableData.sort(function(a, b) {
                var nameA = a.corpName.toUpperCase(); // ignore upper and lowercase
                var nameB = b.corpName.toUpperCase(); // ignore upper and lowercase
                if (nameA < nameB) {
                    return -1;
                }
                if (nameA > nameB) {
                    return 1;
                }

                // names must be equal
                return 0;
            });

De esta manera, todos los mismos nombres pueden fusionarse sin la influencia de fallas.

Supongo que te gusta

Origin blog.csdn.net/yingw1/article/details/129492377
Recomendado
Clasificación