vue3表格合并+children

const formatTable = (dataArr) => {
            let newTable = []
            let reqIdList = []
            dataArr.forEach((item) => {
                reqIdList.push(item.reqId)
                if (item.dataList && item.dataList.length) {
                    item.dataList.forEach((itemTwo, indexTwo) => {
                        if ( indexTwo === 0 ) { 
                            newTable.push({ ...itemTwo, reqId: item.reqId, billNo: item.billNo, rowspan: item.dataList.length })
                        } else {
                            newTable.push({ ...itemTwo, reqId: item.reqId, billNo: item.billNo })
                        }
                        
                    })
                }
            })
            data.reqIdList = reqIdList
            return newTable
        }
        const objectSpanMethod = ({columnIndex, row}) => {
            let mergeCol = [ 1 ]
            if (mergeCol.includes(columnIndex) && data.isMore) {
                if (row.rowspan) {
                    return {
                        rowspan: row.rowspan || 1,
                        colspan: 1
                    };
                } else {
                    return {
                        rowspan: 0,
                        colspan: 0
                    };
                }
            }
        }

如果是有多级合并需要嵌套遍历

ormatTable(dataArr) {

            console.log('dataArrdataArr',dataArr)

            let newTable = []

            dataArr.forEach((item, itemIndex) => {  

                if (item.hospitalAreaExpertDTOList && item.hospitalAreaExpertDTOList.length) {

                    item.hospitalAreaExpertDTOList.forEach((itemTwo, indexTwo) => {

                        if (itemTwo.expertInfoDTOList && itemTwo.expertInfoDTOList.length) {

                            itemTwo.expertInfoDTOList.forEach((itemThree, indexThree) => {

                                if (indexThree === 0 && indexTwo === 0) {

                                    newTable.push({

                                        rowspan: item.clinicSize,

                                        rowspan1: itemTwo.expertInfoDTOList.length,

                                        ...itemThree,

                                        hospitalAreaExpertDTOList:item.hospitalAreaExpertDTOList,

                                        doctorName: item.doctorName,

                                        introduce:item.introduce,

                                        titleName:item.titleName,

                                        recommendFlag:item.recommendFlag,

                                        imgPath:item.imgPath,

                                        index:itemIndex + ((this.searchData.page - 1) * (this.searchData.pageSize) + 1)

                                    })

                                } else if (indexThree === 0) {

                                    newTable.push({

                                        rowspan1: itemTwo.expertInfoDTOList.length,

                                        ...itemThree,

                                        introduce:item.introduce,

                                        hospitalAreaExpertDTOList:item.hospitalAreaExpertDTOList,

                                        doctorName: item.doctorName,

                                        titleName:item.titleName,

                                        recommendFlag:item.recommendFlag,

                                        imgPath:item.imgPath,

                                        index:itemIndex + ((this.searchData.page - 1) * (this.searchData.pageSize) + 1)

                                    })

                                } else {

                                    newTable.push({

                                        ...itemThree,

                                        introduce:item.introduce,

                                        hospitalAreaExpertDTOList:item.hospitalAreaExpertDTOList,

                                        doctorName: item.doctorName,

                                        titleName:item.titleName,

                                        recommendFlag:item.recommendFlag,

                                        imgPath:item.imgPath,

                                        index:itemIndex + ((this.searchData.page - 1) * (this.searchData.pageSize) + 1)

                                    })

                                }

                            })

                        }

                    })

                }

            })

            console.log('newTable',newTable) return newTable

      },

如果是已经有了正常的数据格式 但是想要将某个字段(sourceName)合并起来 可以用以下

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值