Element UI的table不同应用

news2025/7/11 1:22:48

目录

一、自定义表头

二、纵向表头(动态表头)

2.1、分别拿到表头和表头中日期对应的行数据

2.2、拿到每个日期对应的列数据

一、自定义表头

          <el-table-column prop="chu" align="center">
            <!-- 自定义表头 -->
            <template slot="header"
              ><span class="circle" style="background: #5dd49f"></span
              >出勤</template
            >
          </el-table-column>

二、纵向表头(动态表头)

以课表考勤图为例:

有两种格式的数据:

2.1、分别拿到表头和表头中该课节对应的行数据

<el-table
:data="tableOldData"
style="width: 100%"
border
:row-style="{ height: '100px' }"
:header-cell-style="{background: '#F8F8F8',color: '#172b4d',height: '70px',}"
v-if="visibleCalendar.length > 0">
            <el-table-column
              prop="name"
              label="课节"
              fixed="left"
              width="120"
              align="center"
            >
            </el-table-column>
            <el-table-column
              :label="item.date + item.week"
              v-for="(item, index) in visibleCalendar"
              :key="index"
              align="center"
            >
              <template slot-scope="{ row }">
                <div class="cell_boxs" v-if="row.dayData[item.date].type > -1">
                  <div class="cell_tops">
                    <span
                      :style="
                        'background-color:' +
                        colorType(row.dayData[item.date].type)
                      "
                      class="circle"
                    ></span>
                    <span>{{
                      typeStatistics(row.dayData[item.date].type)
                    }}</span>
                  </div>
                  <div class="cell_bottom">
                    <span>{{ row.dayData[item.date].subject }}</span>
                    <span>{{ row.dayData[item.date].name }}</span>
                  </div>
                </div>
              </template>
            </el-table-column>
</el-table>
<script>
data() {
   return {
      visibleCalendar: [
        { date: "2023-09-26", week: "周六" },
        { date: "2023-10-25", week: "周一" },
        { date: "2023-10-26", week: "周二" },
        { date: "2023-10-27", week: "周三" },
        { date: "2023-10-28", week: "周四" },
        { date: "2023-10-29", week: "周五" },
      ],
      dateTable: [
        {
          name: "第1-2节",
          dayData: {
            "2023-10-25": {
              type: 1,
              name: "赵翔",
              subject: "英语写作基础",
            },
            "2023-10-26": {
              type: 0,
              name: "赵翔",
              subject: "英语写作基础",
            },
            "2023-10-27": {
              type: 2,
              name: "赵翔",
              subject: "英语写作基础",
            },
          },
        },
        {
          name: "第3-4节",
          dayData: {
            "2023-09-26": {
              type: 2,
              name: "都会迟",
              subject: "奥术模拟",
            },
          },
        },
        {
          name: "第5-6节",
          dayData: {
            "2023-10-28": {
              type: 3,
              name: "王鹏",
              subject: "新闻播报",
            },
            "2023-10-29": {
              type: 4,
              name: "王鹏",
              subject: "新闻播报",
            },
          },
        },
      ],
}
},
  computed: {
    tableOldData() {
      const oldData = [];
      this.dateTable.forEach((item) => {
        const newItem = { ...item };
        const dayData = newItem.dayData;
        newItem.dayData = {};
        this.visibleCalendar.forEach((item) => {
          let oldDate = item.date;
          if (dayData[oldDate]) {
            newItem.dayData[oldDate] = dayData[oldDate];
          } else {
            newItem.dayData[oldDate] = {};
          }
        });
        oldData.push(newItem);
      });
      return oldData;
    },
  },
  methods: {
    typeStatistics(index) {
      const status = ["出勤", "迟到", "旷课", "早退", "请假"];
      return status[index] || "";
    },
    colorType(index) {
      const colors = ["#6BC25E", "#F0A55C", "#E77575", "#F0A55C", "#6FBFF1"];
      return colors[index] || "";
    },
}
</script>

tableOldData是表格上最终要渲染的数据源;visibleCalendar是返回的表头;dateTable是表头中的日期对应的全部数据。渲染的时候,根据visibleCalendar里的日期去找对应的值。

2.2、拿到每个日期对应的列数据

<el-table
style="width: 100%"
:data="getValues"
:show-header="false"
border>
            <el-table-column fixed width="120" align="center">
              <template slot-scope="{ row }">
                <div class="cell_header">
                  {{ row.title }}
                </div>
              </template>
            </el-table-column>
            <!--(拿到列数据时) 纵向垂直表头 -->
            <!-- 左侧固定,右侧列数动态变化,min-width设置宽度 -->
            <template v-for="(item, i) in getHeaders">
              <el-table-column
                v-if="item != 'title'"
                :show-overflow-tooltip="true"
                :label="item"
                :key="i"
                min-width="174"
                align="center"
              >
                <template slot-scope="{ row }">
                  <div class="cell_boxs" v-if="row[item] && row[item].name">
                    <div class="cell_tops">
                      <span
                        :style="'background-color:' + colorType(row[item].type)"
                        class="circle"
                      ></span>
                      <span>{{ typeStatistics(row[item].type) }}</span>
                    </div>
                    <div class="cell_bottom">
                      <span>{{ row[item].subject }}</span>
                      <span>{{ row[item].name }}</span>
                    </div>
                  </div>
                  <div class="cell_header" v-else>
                    {{ row[`value${i - 1}`] }}
                  </div>
                </template>
              </el-table-column>
            </template>
</el-table>
<script>
data() {
   return {
       headers: [
        {
          prop: "date",
          label: "课节",
        },
        {
          prop: "one",
          label: "第1-2节",
        },
        {
          prop: "two",
          label: "第3-4节",
        },
        {
          prop: "three",
          label: "第5-6节",
        },
        {
          prop: "four",
          label: "第7-8节",
        },
        {
          prop: "five",
          label: "第9-10节",
        },
      ],
    otherDatas: [
        {
          date: "2023-10-25",
          one: { type: 1, name: "赵翔1", subject: "英语写作基础" },
        },
        {
          date: "2023-10-26",
          three: { type: 2, name: "赵翔6", subject: "英语写作基础" },
        },
        {
          date: "2023-10-27",
          one: { type: 3, name: "赵翔7", subject: "英语写作基础" },
        },
        {
          date: "2023-10-28",
          one: { type: 4, name: "赵翔7", subject: "英语写作基础" },
          two: { type: 1, name: "赵翔8", subject: "英语写作基础" },
          three: { type: 2, name: "赵翔9", subject: "英语写作基础" },
        },
      ],
}
},
  computed: {
    getHeaders() {
      return this.otherDatas.reduce(
        //对数组累积操作
        (pre, cur, index) => pre.concat(`value${index}`),
        ["title"]
      );
    },
    getValues() {
      return this.headers.map((item) => {
        return this.otherDatas.reduce(
          (pre, cur, index) =>
            Object.assign(pre, { ["value" + index]: cur[item.prop] }),
          { title: item.label }
        );
      });
    },
  },
  methods: {
    typeStatistics(index) {
      const status = ["出勤", "迟到", "旷课", "早退", "请假"];
      return status[index] || "";
    },
    colorType(index) {
      const colors = ["#6BC25E", "#F0A55C", "#E77575", "#F0A55C", "#6FBFF1"];
      return colors[index] || "";
    },
}
</script>

通过headers这个数组确定要组装的数据源otherDatas格式,这样出来的数据每一行就是表格的row了。

第二种格式数据参考博客:el-table 纵向垂直表头_el-table纵向表头_wh4834的博客-CSDN博客

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

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

相关文章

uniapp 微信小程序 授权隐私流程 网上没有的踩坑记录!

首先什么时候我们需要授权操作&#xff0c;比如下图我们调用这些接口时候首先必须让用户授权&#xff0c;这个政策是2022年2月21日24时起对一下接口增加用户授权操作&#xff0c;详情可以看微信文档 授权的逻辑按照官网的意思是&#xff1a; 这个时候就踩坑了&#xff0c;我把…

Linux命令超详细

Linux基础命令 Linux的目录结构 /&#xff0c;根目录是最顶级的目录了Linux只有一个顶级目录&#xff1a;/路径描述的层次关系同样适用/来表示/home/itheima/a.txt&#xff0c;表示根目录下的home文件夹内有itheima文件夹&#xff0c;内有a.txt ls命令 功能&#xff1a;列出…

高级文本编辑软件 UltraEdit mac中文版介绍说明

UltraEdit mac是一款在Windows系统中非常出名的文本编辑器&#xff0c; UltraEdit for mac对于IT程序猿来说&#xff0c;更是必不可少&#xff0c;可以使用UltraEdit编辑配置文件、查看16进制文件、代码高亮显示等&#xff0c;虽然Mac上已经有了很多优秀的文本编辑器&#xff0…

NOA赛道研究:预计2024年渗透率10%!中算力平台迎窗口期

从基础L2到L3的产业演进中&#xff0c;NOA是至关重要的一步&#xff0c;值得被密切关注。 对于产业链不同位置的玩家&#xff0c;其关注的点有所不同&#xff1a;①对于整车厂来说&#xff0c;根据高工智能汽车监测的数据&#xff0c;基础L2的一体机产品已经趋向于成熟&#x…

看完这个,别说你还找不到免费好用的配音软件

有很多小伙伴还在找配音工具&#xff0c;今天就给大家一次性分享四款免费好用的配音工具&#xff0c;每一个都经过测试&#xff0c;并且是我们自己也在用的免费配音工具 第一款&#xff0c;悦音配音工具 拥有强悍的AI智能配音技术&#xff0c;更专业&#xff0c;完美贴近真人配…

出现身份验证错误,要求函数不受支持windows

现象环境&#xff1a; win10 企业版 mstsc内网远程server2016&#xff0c;出现错误代码&#xff1a; 远程桌面连接出现身份验证错误。要求的函数不受支持。这可能是由于CredSSP加密数据库修正 出现身份验证错误 原因&#xff1a; 系统更新&#xff0c;微软系统补丁的更新将…

armbian 安裝配置教程

1、安装贝锐蒲公英 下载安装包 cd /usr/local/share mkdir pgyvpn wget https://pgy.oray.com/softwares/58/download/1839/PgyVisitor_Raspberry_2.4.0.52291_arm64.deb安装 dpkg -i PgyVisitor_Raspberry_2.4.0.52291_arm64.deb 输入pgyvisitor login/pgyvisitor login -…

全网最全的RDMA拥塞控制入门基础教程

RDMA-CC&#xff08;全网最全的RDMA拥塞控制入门基础教程&#xff09; 文章目录 RDMA-CC&#xff08;全网最全的RDMA拥塞控制入门基础教程&#xff09;DMARDMARDMA举例RDMA优势RDMA的硬件实现方法RDMA基本术语FabricCA&#xff08;Channel Adapter&#xff09;Verbs 核心概念Me…

波浪理论第3波anzo capital昂首资本3个方法3秒确认

要想通过波浪理论在交易中赚取最大利润&#xff0c;确认第三波必不可少&#xff0c;因为第三波通常是趋势中最大和最强的一波&#xff0c;今天anzo capital昂首资本3个方法3秒确认。 首先&#xff0c;第一个确认方法—斜率。 通常&#xff0c;第三波的斜率会比第一波更陡峭&a…

使用 Python 进行自然语言处理第 5 部分:文本分类

一、说明 关于文本分类&#xff0c;文章已经很多&#xff0c;本文这里有实操代码&#xff0c;明确而清晰地表述这种过程&#xff0c;是实战工程师所可以参照和依赖的案例版本。 本文是 2023 年 1 月的 WomenWhoCode 数据科学跟踪活动提供的会议系列文章中的一篇。 之前的文章在…

Linux进程控制——进程创建与退出

我们在用C语言结尾的时候总是会有return 0&#xff0c;但是有些人并不知道它到底有什么意思 还有在进程状态中让进程使用kill命令能够停下来&#xff0c;这些与进程控制有着密切的关系1.进程的创建 fork函数能够在代码中创建一个子进程&#xff0c;我们创建子进程的目的就是为…

电商课堂|5分钟了解电商数据分析完整流程,建议收藏!

账户效果下降&#xff0c;如何能够快速找到问题并优化调整&#xff1f; 相信百分之90%的竞价员都会说&#xff1a;“做数据分析。” 没错&#xff0c;数据分析能够帮助我们快速锁定问题所在&#xff0c;确定优化方向&#xff0c;还可以帮助我们找到流量控制的方向。那么做电商&…

绝地反击:阿里云服务器比腾讯云更优惠!

2023阿里云服务器优惠活动来了&#xff0c;以前一直是腾讯云比阿里云优惠&#xff0c;阿里云绝地反击&#xff0c;放开老用户购买资格&#xff0c;99元服务器老用户可以买&#xff0c;并且享受99元续费&#xff0c;阿腾云亲测可行&#xff0c;大家抓紧吧&#xff0c;数量不多&a…

软信天成:智能数据治理解决方案-干货分享

近年来&#xff0c;数据治理成为备受关注的焦点&#xff0c;越来越多的企业和组织开始注重数据治理&#xff0c;以更好地保护和管理数据。为助力企业有效开展数据治理工作&#xff0c;软信天成基于过往实施案例&#xff0c;梳理出有关数据治理实施的关键要素和心得&#xff0c;…

Techlink TL24G06 网络变压器 10G 基座单端口变压器

功能特征&#xff1a; 1、符合IEEE 802.3标准。 2、符合RoHS。 3、工作温度范围&#xff1a;0C至70C。 4、储存温度范围&#xff1a;-20C至125C。

Java实现对Html文本的处理

1.引入jsoup <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.8.3</version> </dependency> 2. html示例 示例代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1…

EG4003-一颗为微波、红外信号放大及处理输出的数模混合芯片

产品描述&#xff1a; EG4003是一款特意为微波、红外信号放大及处理输出的数模混合芯片&#xff0c;内部集成了运算放大器、双门限电压比较器、参考电压源、延时时间定时器和封锁时间定时器及状态控制器等&#xff0c;专用于防盗报警系统、人体门控制装置、照明控制开关等场合。…

C# 通过Costura.Fody把DLL合并到exe程序中

打包独立的exe程序有多种方法&#xff0c;这里只说Costura.Fody。 我们用VS发布应用程序可以借助Costura.Fody直接打包成一个独立的exe程序&#xff0c;但是一些非托管的做了几次都没打进去&#xff0c;最后成功了&#xff0c;这里记录一下。 首先安装Costura.Fody 或者可以通…

华为OD机试 - 统计射击比赛成绩 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

【金银钻思】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…