vue element-ui 对表格的单元格边框加粗

客户方有个需求,需要将表格单元格,大单元格边框加深,里面的边框颜色不变,从而区分单元格与单元格的边界线, 效果如图

根据组件和效果分析下实现思路:不合并单元格的td(1,2),有下边框,右侧边框;合并单元格的3,只有右侧边框

实现过程:接口返回的全部数据经过分类处理后,并按规则排序聚合处理,数据如下

xml 复制代码
<template>
    <el-table
        :data="tableData"
        :span-method="objectSpanMethod"
        :cell-class-name="cellClassName"
        border
      >
     </el-table>
</template>
<script>
tableData = [
    { id: 0, data: 'data0'},
    { id: 1, data: 'data1'},
    { id: 1, data: 'data2'},
    { id: 1, data: 'data3'},
    { id: 2, data: 'data2'},
    { id: 2, data: 'data2'},
    { id: 3, data: 'data3'},
]

spanArr = [
    1,
    3,
    0,
    0,
    2,
    0,
    1
]

// 合并函数
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
    // 设置被合并的列
    if (columnIndex < 2) {
        const _row = this.spanArr[rowIndex]; // 合并行数
        return {
            rowspan: _row,
            colspan: 1,
        };
    }
}
// 自定义cell-class
cellClassName({ row, column, rowIndex, columnIndex }) {
    // 设置被合并的列
    if (columnIndex < 2) {
        return "right_bottom_border";
    } else {
        const curSpan = this.spanArr[rowIndex];
        const nextSpan = this.spanArr[rowIndex + 1];

        if (curSpan == 1) {
            // 等于1,非合并单元格,展示 右、下边框
            return "right_bottom_border";
        }
        if (curSpan == 0 && nextSpan > 0) {
            // 仅仅 当前行是0,下一行数据非0,说明当前是合并单元格的最后一个,加上下、右边框
            return "right_bottom_border";
        }
        if (curSpan > 1) {
            // 大于1,是合并单元格的第一个,下边框不加,加右侧边框
            return "right_border";
        }
        // 等于0的,是合并单元格的数据,上面去除了合并单元格的最后一个
        return "right_border";
    }
}
</script>
<style>
.right_bottom_border {
    border-right: 1px solid #aaa !important;
    border-bottom: 1px solid #aaa  !important;
}
.right_border {
    border-right: 1px solid #aaa !important;
}
</style>

最后,在加上表格的左边的和顶部的一个边框 搞定

相关推荐
Jmyd012314 分钟前
Web端3D营销展厅技术实现路径:从素材上云到线索回流的数据链路
前端·3d·性能优化·三维数字化
砚凝霜28 分钟前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
u0111026752 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
jerrywus3 小时前
让 AI 写完代码后交一份报告:我改造了 answer-me-with-html
前端·claude·cursor
派小心.3 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析
hhb_6184 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
Java后端的Ai之路4 小时前
08_React组件API
前端·react.js·前端框架
小马不起床4 小时前
零基础玩转 FastAPI_09:前端基础工程构建
前端·状态模式·fastapi
风骏时光牛马5 小时前
用户管理模块接口开发
前端
彭亚川Allen5 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程