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>

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

相关推荐
wycode5 分钟前
# 面试复盘(2)--某硬件大厂前端
前端·面试
怪可爱的地球人7 分钟前
ts枚举(enum)
前端
做你的猫9 分钟前
深入剖析:基于Vue 3与Three.js的3D知识图谱实现与优化
前端·javascript·vue.js
渊不语13 分钟前
富文本编辑器自定义图片等工具栏-完整开发文档
前端
用户239712822487014 分钟前
taro+vue3+vite项目 tailwind 踩坑记,附修复后的模板源码地址
前端
做你的猫18 分钟前
深入剖析:基于Vue 3的高性能AI聊天组件设计与实现
前端·javascript·vue.js
G佳伟20 分钟前
vue拖动排序,vue使用 HTML5 的draggable拖放 API实现内容拖并排序,并更新数组数据
前端·vue.js·html5
Bling_Bling_125 分钟前
ES6新语法特性(第二篇)
开发语言·前端·es6
石小石Orz37 分钟前
妙啊!Js的对象属性居然还能用这么写
前端
成熟的API调用专家43 分钟前
cesium 获取鼠标点击位置的经度纬度海拔高度
前端