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)合并起来 可以用以下
如果是这样的数据 而不是children类型的,那么需要先处理成children数据
const formartTable = (dataArr) => {
let arrTwo = dataArr.reduce((result, item) => {
// 根据 prescNum 来分组
// const key = item.termCode
const key = result.find(group => group.termCode === item.termCode);
if (key) {
key.items.push(item)
} else {
result.push({ termCode: item.termCode, items: [item] })
}
return result;
}, []);
let newArr = []
arrTwo.forEach((e,index) => {
if (e.items && e.items.length) {
e.items.forEach((i, indexTwo) => {
if (indexTwo == 0) {
newArr.push({...i, rowspan: e.items.length})
} else {
newArr.push({...i})
}
})
}
})
return newArr
}