没合并之前:

合并之后:

官方文档:
column

实现代码:
1.html
<a-table
:scroll="{ y: 'calc(100vh - 690px)' }"
:customRow="customRow"
:columns="findIpTable"
:data-source="findIpTableData"
:pagination="false"
>
<!--eslint-disable-next-line-->
<template slot="title" slot-scope="currentPageData"><span class="mediumWord">发现资源</span></template>
</a-table>2.js
<script>
export default {
data() {
return {
findIpTableData: [
{
key: "1",
systemName: "S1800",
ipAddress: "121.121.121.121",
serialNumber: "1",
},
{
key: "2",
systemName: "S1800",
ipAddress: "121.121.121.121",
serialNumber: "1",
},
{
key: "3",
systemName: "S1800",
ipAddress: "121.121.121.121",
serialNumber: "1",
},
{
key: "4",
systemName: "D1800",
ipAddress: "121.121.121.121",
serialNumber: "2",
},
{
key: "5",
systemName: "D1800",
ipAddress: "121.121.121.121",
serialNumber: "2",
},
{
key: "6",
systemName: "D1800",
ipAddress: "121.121.121.121",
serialNumber: "2",
},
{
key: "7",
systemName: "G1800",
ipAddress: "121.121.121.121",
serialNumber: "3",
},
{
key: "8",
systemName: "G1800",
ipAddress: "121.121.121.121",
serialNumber: "3",
},
],
findIpTable: [],
};
},
created() {
this.findIpTable = [
{
title: "序号",
dataIndex: "serialNumber",
align: "center",
width: "10%",
key: "serialNumber",
customCell: this.renderBackground,
customRender(_, row) {
return {
children: row.serialNumber,
attrs: {
rowSpan: row.serialNumberRowSpan,
},
};
},
},
{
title: "系统名称",
dataIndex: "systemName",
key: "systemName",
width: "25%",
customCell: this.renderBackground,
customRender(_, row) {
return {
children: row.systemName,
attrs: {
rowSpan: row.systemNameRowSpan,
},
};
},
},
{
title: "IP地址",
dataIndex: "ipAddress",
key: "ipAddress",
width: "65%",
scopedSlots: { customRender: "ipAddress" },
},
];
this.rowSpan("systemName");
this.rowSpan("serialNumber");
this.whetheToSpare();
},
methods: {
//设置表格隔行变色
customRow(record, index) {
return {
style: {
// 字体颜色
color: record.remarkDesc ? record.remarkDesc.fontColor : "#ffffff",
// 行背景色
"background-color":
index % 2 == 0
? "rgba(255, 255, 255, 0)"
: "rgba(99, 157, 209, 0.1)",
},
};
},
//设置表格列背景颜色
renderBackground(record) {
return {
style: {
"background-color": "#1D4A84",
},
};
},
//设置表格合并列
rowSpan(key) {
let arr = this.findIpTableData
.reduce((result, item) => {
if (result.indexOf(item[key]) < 0) {
result.push(item[key]);
}
return result;
}, [])
.reduce((result, keys) => {
const children = this.findIpTableData.filter(
(item) => item[key] === keys
);
result = result.concat(
children.map((item, index) => ({
...item,
[`${key}RowSpan`]: index === 0 ? children.length : 0,
}))
);
return result;
}, []);
this.findIpTableData = arr;
console.log(this.findIpTableData);
},
//表格里面区分ip是否备用
whetheToSpare() {
let arr1 = this.findIpTableData;
let arr2 = [];
for (let i = 0; i < arr1.length; i++) {
const element = arr1[i].systemName;
if (arr2.indexOf(element) < 0) {
arr2.push(element);
} else {
arr1[i].ipAddress = arr1[i].ipAddress + " " + "( 备用IP )";
}
}
},
},
};
</script>调接口之后,数据显示不出来,把created()的中的方法放到获取到的数据的下面,就可以正常显示了
表格的表头和下面内容对不齐问题处理
在style内放入以下样式 即可解决
<style lang="less" scoped>
/deep/.ant-table-bordered .ant-table-tbody > tr > td {
border-bottom: 1px solid #f0f0f0;
}
/deep/.ant-table-thead > tr > th {
border-bottom: 1px solid #f0f0f0;
}
/deep/.ant-table-bordered.ant-table-fixed-header .ant-table-header > table{
padding-right: 6px;
}
/deep/.ant-table-fixed-header .ant-table-scroll .ant-table-header{
margin-bottom: 0px !important;
}
/deep/.ant-table-fixed-header
.ant-table-scroll
.ant-table-header::-webkit-scrollbar {
display: none !important;
}
</style>版权声明:本文为flhhly原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。