iview table 表格合并单元格

news2024/12/26 1:03:55

一、如图所示

二、实现方式

表格用提供的span-method属性

<template>
    <Table ref="table" border :span-method="handleSpan" :row-key="true" :columns="tableColumns" :data="tableData"
      no-data-text="暂无数据">
    </Table>
</template>
<script>
export default {
  data() {
    return {
      tableColumns: [
        {
          title: '姓名',
          key: 'name',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '年龄',
          key: 'age',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '爱好',
          key: 'hobby',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '等级',
          key: 'level',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '年份',
          key: 'year',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '地址',
          key: 'address',
          align: 'center',
          minWidth: 85,
        },
        {
          title: '电话',
          key: 'phone',
          align: 'center',
          minWidth: 85,
        },

      ],
      tableData: [],
    };
  },
  methods: {
    handleSpan({ row, column, rowIndex, columnIndex }) {
      // 爱好 【序号2】、等级【序号3】、年份【序号4】 是多行的
      if (columnIndex < 2 || columnIndex > 4) {
        // 其余的 保留并合并成一行
        if (row._columnStatus == 'first') {
          return {
            rowspan: row.hobbyList.length,  // 爱好数量
            colspan: 1
          };
        } else if (row._columnStatus == 'next') {
          return {
            rowspan: 0,
            colspan: 0
          };
        }
      }
    },
    getData() {
      let origin = [
        {
          id: 1,
          name: 'lili',
          age: 18,
          hobbyList: [
            {
              hobby: '篮球',
              level: 'A',
              year: 1
            },
            {
              hobby: '足球',
              level: 'B',
              year: 2
            },
            {
              hobby: '羽毛球',
              level: 'C',
              year: 1.5
            }
          ],
          address: '山东',
          phone: '1978977767'
        },
        {
          id: 2,
          name: 'aazzz',
          age: 16,
          hobbyList: [],
          address: '新疆',
          phone: '13456444355'
        },
        {
          id: 3,
          name: 'ouz',
          age: 17,
          hobbyList: [{
            hobby: '唱歌',
            level: 'A',
            year: 3
          }],
          address: '新疆',
          phone: '13456444355'
        },
        {
          id: 4,
          name: 'eva',
          age: 19,
          hobbyList: [{
            hobby: '跳舞',
            level: 'B',
            year: 2
          },
          {
            hobby: '弹琴',
            level: 'A',
            year: 1
          }],
          address: '新疆',
          phone: '13456444355'
        }
      ];
      this.setData(origin);
    },
    setData(origin) {
      let tableData = [];
      origin.forEach(item => {
        if (item.hobbyList && item.hobbyList.length) {
          // 将爱好列表展开成多行
          item.hobbyList.forEach((it, i) => {
            tableData.push({
              ...item,
              ...it,
              _columnStatus: i == 0 ? 'first' : 'next',
              _rowIndex: i
            });
          });
        } else {
          tableData.push({
            ...item,
            _columnStatus: '',
            _rowIndex: 0
          });
        }
      });
      this.tableData = tableData;
    }
  },
  mounted() {
    this.getData();
  }
};
</script>
<style scoped>
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1180044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NOIP2023模拟12联测33 B. 游戏

NOIP2023模拟12联测33 B. 游戏 文章目录 NOIP2023模拟12联测33 B. 游戏题目大意思路code 题目大意 期望题 思路 二分答案 m i d mid mid &#xff0c;我们只关注学生是否能够使得被抓的人数 ≤ m i d \le mid ≤mid 那我们就只关心 a > m i d a > mid a>mid 的房…

HTML的初步学习

HTML HTML 描述网页的骨架, 标签化的语言. HTML 的执行是浏览器的工作,浏览器会解析 html 的内容,根据里面的代码,往页面上放东西,浏览器的工作归根结底,还是以汇编的形式在CPU上执行. 浏览器对于html语法格式的检查没有很严格,即使你写的代码有一些不合规范之处,浏览器也会尽可…

ZZ308 物联网应用与服务赛题第E套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;E卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用的…

系列十九、使用JDK生成HTTPS证书

一、HTTPS概述 历史上&#xff0c;HTTPS 连接经常用于网络上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初&#xff0c;HTTPS 开始广泛使用&#xff0c;以确保各类型的网页真实&#xff0c;保护账户和保护用户通信&#xff0c;身份和网络浏览的私密…

家政预约服务小程序源码系统 线上+线下两种模式 带完整的搭建教程

人们生活水平的不断提高&#xff0c;使得家政服务行业逐渐成为一个重要的行业。然而&#xff0c;传统的家政服务模式存在一些问题&#xff0c;如信息不对称、服务质量不稳定等。为了解决这些问题&#xff0c;开发一款家政预约服务小程序源码系统变得尤为重要。下面源码小编来给…

Unity 声音的控制

闲谈&#xff1a; 游戏开发比普通软件开发难也是有原因的&#xff0c;第一 游戏功能需求变化多样内部逻辑交错纵横&#xff0c; 而软件相对固定&#xff0c;无非也就是点击跳转、数据存储 第二&#xff0c;游戏需要很多3D数学知识、物理知识&#xff0c;最起码得有高中物理的基…

Python开发运维:Python3.7安装Django3.2

目录 一、理论 1.pip 2.Django 3.Pycharm国内镜像源 二、实验 1.Python3.7安装Django3.2 三、问题 1.安装django3.2报错 2.pip更新报错 一、理论 1.pip &#xff08;1&#xff09;概念 1&#xff09;pip pip 是 Python 的包安装程序。其实&#xff0c;pip 就是 Pyt…

应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。

谷歌浏览器出现以下问题 解决 点击以下 new_chrome.exe 就可以了&#xff08; new_chrome.exe 点击之后就消失了&#xff09;

北方寒流来袭,供暖已至,你家的暖气热了吗?

如果说诗句“忽如一夜春风来&#xff0c;千树万树梨花开”来形容春天的到来&#xff0c;那么“夜凉如水&#xff0c;寒风乍起添衣裳”就可以形容现在北方的天气了&#xff0c;11月初的早晨&#xff0c;伴随着萧瑟秋风卷动着枯黄落叶的声音&#xff0c;感觉就像是在落魄时买了一…

HarmonyOS应用开发Tabs组件的使用

Entry Component struct TabsPage {State currentIndex: number 0;private tabsController: TabsController new TabsController();private controller: TabsController new TabsController()/*** 自定义TabBar* param title* param targetIndex* param selectedImg* param …

wx 小程序不打开调试模式无法获取数据

问题开始 最近学习小程序&#xff0c;发布了一个体验版的小程序&#xff0c;发现正常扫码进入后接口数据是无法访问的。也就是原始数据,不过开启调试模式后,数据又一切正常&#xff0c;但是总不能让每个人都开启调试模式用吧&#xff0c;终于查阅资料后找到了解决问题的办法 …

viple入门(三)

&#xff08;1&#xff09;条件循环活动 条件循环活动中&#xff0c;必须给定条件&#xff0c;条件成立&#xff0c;则执行条件循环的后续程序。 条件不成立&#xff0c;则不执行后续程序。 从报错信息来看&#xff0c;程序提示&#xff1a;条件循环要和结束循环活动一起使用。…

抖音大型直播的画质优化实践

面临挑战 随着抖音内容生态的不断丰富&#xff0c;越来越多的大型赛事在抖音平台进行直播&#xff0c;世界杯/春晚/亚运会等各项赛事节目引来大量用户观看。卡塔尔世界杯期间&#xff0c;抖音提供的稳定高质直播画面为观众带来了完美的观赛体验&#xff0c;决赛的 PCU 高达 370…

电子牵:利用无代码开发优化电商平台、客服系统与CRM的连接

电子牵的无代码开发优势 在当前的电商环境中&#xff0c;优化运营并提高效率的需求日益增强。电子牵&#xff0c;这个专业的电子签名平台&#xff0c;提供了一种高效的解决方案。电子牵可以帮助用户迅速并有效地完成合同签署&#xff0c;进一步提升产品或平台的签署效率。更为…

【Hadoop】YARN容量调度器详解

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&am…

03-react基础知识-HOOK

一、useState 二、 useEffect 三、 useCallback 四、 useMemo 五、 useContext 含义&#xff1a;useContex用于在组件中获取上层组件通过 Context 提供的数据。它可以让你跨越组件树层级来访问共享的数据&#xff0c;避免了通过层层传递 props 的带来的问题。 1.实现数据的跨…

【Redis】Redis与SSM整合Redis注解式缓存Redis解决缓存问题

一&#xff0c;Redis与ssm整合 1.1 pom.xml配置 在pom.xml中配置相关的redis文件 redis文件&#xff1a; <redis.version>2.9.0</redis.version> <redis.spring.version>1.7.1.RELEASE</redis.spring.version><dependency><groupId>red…

【排版教程】使用Latex ACM 双栏会议模板如何添加跨栏的图片

0 前言 模板中默认的图片插入的写法是下图这样的单栏图片&#xff0c;但是一般我们自己绘制的系统整体结构框图都是比较长的&#xff08;横向长度&#xff09; 我们想插入一个类似于这样的长图片 但是模板中给的这个例子&#xff0c;是插入的一个pdf文件。在实际使用中&…

2023年【金属非金属矿山(地下矿山)安全管理人员】实操考试视频及金属非金属矿山(地下矿山)安全管理人员操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员实操考试视频考前必练&#xff01;安全生产模拟考试一点通每个月更新金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员操作证考试题目及答案…

传输线在阻抗匹配时串联端接电阻为什么要靠近发送端

在进行阻抗匹配的时候我们可以在电阻源端放置一个串联端接电阻&#xff0c;但是有时候受到空间的限制可能会把电阻摆的稍微远一点&#xff0c;那么这个时候大家可能会有疑问&#xff0c;电阻离发送端远一点或者电阻放置在接收端&#xff0c;那么电阻还能消除传输线的反射吗&…