/**
?*?合并行方法
?*?@param?{Number}?rowIndex?行索引
?*?@param?{Number}?columnIndex?列索引
?*?@param?{Array}?dataSource?數(shù)據(jù)源
?*?@param?{Array}?mergeCfg?合并配置?例如:[{searchKey:?'score',?columnIndex:?0?}]?searchKey:需檢索的屬性,columnIndex:代表要合并的列數(shù)
?*/
export?function?mergeRows(rowIndex:any,?columnIndex:any,?dataSource:any,?mergeCfg:any)?{
????for?(let?item?of?mergeCfg)?{
????????let?searchKey?=?item.searchKey
????????if?(columnIndex?===?item.columnIndex)?{?//?要合并的列
????????????if?(rowIndex?!==?0?&&?dataSource[rowIndex][searchKey]?===?dataSource[rowIndex?-?1][searchKey])?{?//?非第一行合并規(guī)則
????????????????return?[0,?0]
????????????}?else?{?//?第一行合并規(guī)則
????????????????let?rowIndexCount?=?rowIndex
????????????????let?count?=?0
????????????????while?(rowIndexCount?+?1?<?dataSource.length)?{?//??用當(dāng)前行數(shù)據(jù)跟后續(xù)行數(shù)數(shù)據(jù)對(duì)比
????????????????????if?(dataSource[rowIndexCount?+?1][searchKey]?===?dataSource[rowIndexCount][searchKey])?{
????????????????????????rowIndexCount++
????????????????????????count++
????????????????????}?else?{?//?數(shù)據(jù)不相等跳出循環(huán)
????????????????????????break
????????????????????}
????????????????}
????????????????return?[count?+?1,?1]
????????????}
????????}
????}
}
//調(diào)用
cellMerges(?{row,?column,?rowIndex,?columnIndex}:any){
????????????//?合并行條件
????????????????const?mergeCfg?=??[
????????????????????{?searchKey:?'typeIndex',?columnIndex:?0?},
????????????????????{?searchKey:?'typeIndex',?columnIndex:?1?},
????????????????????{?searchKey:?'typeIndex',?columnIndex:?3?},
????????????????????{?searchKey:?'typeIndex',?columnIndex:?5?}
????????????????]
????????????????return?mergeRows(rowIndex,?columnIndex,?this.dataSource,?mergeCfg)
????????????}
// Element
<el-table?
????????????????????:data="dataSource"?
????????????????????:span-method="cellMerges"
>
</el-table?>