antd 单元格合并处理

实现效果

代码

tableData为Table的数据

const mergeCells = (text, dataSource, index, key) => {
    // 上一行该列数据是否一样
    if (index !== 0 && text === dataSource[index - 1][key]) {
        return 0
    }
    let rowSpan = 1
    // 判断下一行是否相等
    for (let i = index + 1; i < dataSource.length; i++) {
        if (text !== dataSource[i][key]) {
            break
        }
        rowSpan++
    }
    return rowSpan
}

const columns = [
    {
        title: () => (
            <div className={s.tableTitle}>
                编制时间:{reportData.time}
            </div>
        ),
        dataIndex: 'ybb',
        key: 'ybb',
        children: [
            {
                title: '所属污水处理厂',
                dataIndex: 'plant',
                key: 'plant',
                align: 'center',
                render: (value, row, index) => {
                    const obj = {
                        children: value || '',
                        props: {}
                    }
                    obj.props.rowSpan = mergeCells(value, tableData, index, 'plant')
                    return obj
                }
            },
            {
                title: '所属泵站',
                dataIndex: 'pump',
                key: 'pump',
                align: 'center',
                render: (value, row, index) => {
                    const obj = {
                        children: value || '',
                        props: {}
                    }
                    obj.props.rowSpan = mergeCells(value, tableData, index, 'pump')
                    return obj
                }
            },
            {
                title: '道路编码',
                dataIndex: 'road',
                key: 'road',
                align: 'center',
            },
        ]
    }
]

THE END
posted @   ZerlinM  阅读(171)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示