码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Element表格之表头合并、单元格合并


    一、合并表头

    1. el-table配置 :header-cell-style="headFirst"
    2. headFirst({ row, colunm, rowIndex, columnIndex }) {
    3. let base = { 'background-color': 'rgba(67, 137, 249, 0.3)', color: '#333', 'text-align': 'center' };
    4. //这里为了是将第一列的表头隐藏,就形成了合并表头的效果
    5. if (rowIndex === 0) {
    6. // 判断对第几列合并 property就是prop传入的属性
    7. if (row[columnIndex].property === 'part1') {
    8. //第一列width扩展2倍
    9. return { ...base, width: '200%', display: 'inline-block' };
    10. } else if (row[columnIndex].property === 'part2') {
    11. //其余列设置font-size 0 隐藏
    12. return { 'font-size': 0 };
    13. }
    14. }
    15. return base;
    16. },

    二、合并表格行

    要进行单元格合并,关键在于你要对数据渲染的前进行判断处理,在这里,首先要在el-table中配置写入 :span-method='spanMethod'  ,然后在js部分写上方法。

    1. spanMethod({ row, column, rowIndex, columnIndex }, key) {
    2. if (columnIndex === 0) {
    3. let data = [];
    4. data = this.dataMap[key].tableData;
    5. const _row = this.flitterData(data).arr[rowIndex];
    6. const _col = _row > 0 ? 1 : 0;
    7. return {
    8. rowspan: _row,
    9. colspan: _col,
    10. };
    11. }
    12. },
    13. flitterData(arr) {
    14. let spanOneArr = [];
    15. let concatOne = 0;
    16. arr.forEach((item, index) => {
    17. if (index === 0) {
    18. spanOneArr.push(1);
    19. } else {
    20. if (item && arr[index - 1] && item.name === arr[index - 1].name) {
    21. // 第一列需合并相同内容的判断条件
    22. spanOneArr[concatOne] += 1;
    23. spanOneArr.push(0);
    24. } else {
    25. spanOneArr.push(1);
    26. concatOne = index;
    27. }
    28. }
    29. });
    30. return {
    31. arr: spanOneArr,
    32. };
    33. },

    一、合并表格列

    如果合并表格行的同时还要考虑合并表格列可以修改spanMethod方法;

    另外element的事件想要传输额外的参数 可以用 :spanMethod="(obj) => spanMethod(obj, key)" 设置多个列的单元格合并

    1. spanMethod({ row, column, rowIndex, columnIndex }, key) {
    2. if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {
    3. let data = [];
    4. data = this.dataMap[key].tableData;
    5. const _row = this.flitterData(data, column.property).arr[rowIndex];
    6. const _col = _row > 0 ? this.colData(data, row, columnIndex) : 0;
    7. return {
    8. rowspan: _row,
    9. colspan: _col,
    10. };
    11. }
    12. },
    13. colData(arr, row, columnIndex) {
    14. // 计算横向合并单元格
    15. if (columnIndex === 1 && row.part1 === row.part2) {
    16. return 2;
    17. } else if (columnIndex === 2 && row.part1 === row.part2) {
    18. return 0;
    19. }
    20. return 1;
    21. },
    22. flitterData(arr, key) {
    23. let spanOneArr = [];
    24. let concatOne = 0;
    25. arr.forEach((item, index) => {
    26. if (index === 0) {
    27. spanOneArr.push(1);
    28. } else {
    29. if (item && arr[index - 1] && item[key] === arr[index - 1][key]) {
    30. // 第一列需合并相同内容的判断条件
    31. spanOneArr[concatOne] += 1;
    32. spanOneArr.push(0);
    33. } else {
    34. spanOneArr.push(1);
    35. concatOne = index;
    36. }
    37. }
    38. });
    39. return {
    40. arr: spanOneArr,
    41. };
    42. },

  • 相关阅读:
    vue 01
    Linux防火墙:Firewalld 常用命令
    相控阵天线(九):平面阵列天线综合(不可分离型切比雪夫分布、圆口径泰勒综合、可分离型分布、配相抵消法)
    责任链模式:职责的传递与处理
    Abnova丨Abnova 异种原位移殖肿瘤模型解决方案
    【Android】-- 四种布局方式(线性布局、相对布局、网格布局、和滚动视图)
    【大数据技术】Spark-SQL如何连接MySQL并读写数据
    linux-快捷执行历史命令
    【CSS3】CSS3 动画 ⑤ ( 动画速度曲线 | 设置动画步长 | 动画匀速执行 | 动画分 2 步执行 | 使用动画步长实现打字机效果 )
    在前端html页面中向服务器发送post登录请求
  • 原文地址:https://blog.csdn.net/qq_38188485/article/details/132845088
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号