const columns = [
{
title: '一级指标',
dataIndex: 'one',
key: 'one',
align: 'center',
render: (text, record) => {
getTotal(list, 'one')
const content = (
<span>{text}</span>
);
const obj = {
children: content,
props: {},
};
if (record.total) {
obj.props.rowSpan = record.total;
} else {
obj.props.rowSpan = 0;
}
return obj;
},
},
{
title: '二级指标',
dataIndex: 'two',
key: 'two',
align: 'center',
render: (text, record, index) => {
getTotal(list, 'two')
const content = (
<span>{text}</span>
);
const obj = {
children: content,
props: {},
};
if (record.total) {
obj.props.rowSpan = record.total;
} else {
obj.props.rowSpan = 0;
}
return obj;
},
},
{
title: '三级指标',
dataIndex: 'three',
key: 'three',
align: 'center',
},
{
title: '评价等级',
dataIndex: 'rate',
key: 'rate',
align: 'center',
},
];
/**
* 表单表头合并
* @param list 需要遍历的数组
* @param key 合并依赖的字段名 后端字段必须保证有这么一个字段
*/
//主要赋予两个属性,一个是total:该条数据占几行 number:该条数据的序号
export const getTotal = (list, key) => {
let number = 0;
let lastMenber = 0;
list?.map((item, index) => {
if (index !== 0 && index !== list.length - 1) {
if (item[key] != list[index - 1][key]) {
if (number === 0) {
//total表示该数据占几行
list[0].total = index;
lastMenber = index;
} else {
list[lastMenber].total = index - lastMenber;
lastMenber = index;
}
number += 1;
} else {
item.total = 0;
}
} else if (index === list.length - 1) {
if (item[key] != list[index - 1][key]) {
list[lastMenber].total = list.length - 1 - lastMenber;
item.total = 1;
lastMenber = 0;
number += 1;
} else {
list[lastMenber].total = list.length - lastMenber;
lastMenber = 0;
}
}
//number表示序号
item.number = number;
});
return list;
};
antd合并表格
最新推荐文章于 2024-07-24 09:48:42 发布