Element UI的table不同应用

目录

一、自定义表头

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

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-columnprop="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-columnv-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.hqwc.cn/news/158462.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stable-diffusion 电商领域prompt测评集合

和GhostReivew一个思路&#xff0c;还是从比较好的图片或者是civitai上找一些热门的prompt&#xff0c;从小红书上也找到了不少的prompt&#xff0c;lexica.art上也有不少&#xff0c;主要是为了电商场景的一些测评&#xff1a; 小红书、civitai、Lexica、Liblib.ai、 depth o…

SpringBoot_mybatis-plus使用json字段

mybatis-plus使用json字段 1.前言2.方案分析2.1 为什么是json2.2 数据库的选择 3. 实战3.1 使用text字段(h2数据库)3.1.1 建表语句3.1.2 数据操作与查询 3.2 使用json字段(mysql数据库)3.2.1 建表语句3.2.2 数据操作与查询 4. 附录4.1 MySQL JSON索引用法4.2 mybatis-plus json…

Android开发知识学习——Kotlin基础

函数声明 声明函数要用用 fun 关键字&#xff0c;就像声明类要用 class 关键字一样 「函数参数」的「参数类型」是在「参数名」的右边 函数的「返回值」在「函数参数」右边使用 : 分隔&#xff0c;没有返回值时可以省略 声明没有返回值的函数&#xff1a; fun main(){println…

虚拟机保护工具:Zerto Virtual Replication 10.0 U1 Crack

Zerto虚拟复制是为需要保护虚拟机和应用程序的企业设计的产品。通过通过连接到广域网或云到远程站点的复制来保护虚拟机。Zerto VR 2.0还可以与vCloud Director一起将虚拟机或虚拟机组复制到云端&#xff08;或从云端&#xff09;。 事实上&#xff0c;Zerto与33家云提供商合作…

某国产中间件企业:提升研发安全能力,助力数字化建设安全发展

​某国产中间件企业是我国中间件领导者&#xff0c;国内领先的大安全及行业信息化解决方案提供商&#xff0c;为各个行业领域近万家企业客户提供先进的中间件、信息安全及行业数字化产品、解决方案及服务支撑&#xff0c;致力于构建安全科学的数字世界&#xff0c;帮助客户实现…

智慧财务的未来

信息化时代&#xff0c;财务管理不再局限于传统的手工操作&#xff0c;而是借助RPA技术实现了自动化、智能化的转型。智慧财务作为财务管理的一种新模式&#xff0c;将为企业提供更加高效、便捷的服务&#xff0c;使企业能够更好地适应市场需求的变化&#xff0c;在瞬息万变的市…

基于Python的豆瓣电影排行榜,可视化系统

1 简介 基于Python flask 的豆瓣电影数据获取&#xff0c;数据可视化系统&#xff0c;本系统朱亚奥包括了影视系统的爬虫与分析。影视是人们娱乐、放松心情的重要方式之一&#xff0c;因此对影视的分析具有重要的现实意义。通过采用Python编程语言&#xff0c;使用flask框架搭…

【Linux】常见指令以及具体其使用场景

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;随着博主的学习&#xff0c;博主掌握的技能也越来越多&#xff0c;今天又根据最近的学习开设一个新的专栏——Linux&#xff0c;相信Linux操作系…

探索 Java 8 中的 Stream 流:构建流的多种方式

人嘛&#xff0c;要懂得避嫌… 开篇引入 Java 8引入了Stream流作为一项新的特性&#xff0c;它是用来处理集合数据的一种函数式编程方式。Stream流提供了一种更简洁、高效和易于理解的方法来操作集合数据&#xff0c;同时也能够实现并行处理&#xff0c;以提高性能。 以下是St…

vue3+vite实现一个后台管理框架,毒蘑菇后台管理。

写后台管理的项目写了很多个了&#xff0c;虽说用的别人的模板&#xff0c;自己专注于自己的业务&#xff0c;保证自己的业务不出错就行了&#xff0c;但是自定义配置又不好去配置&#xff0c;大家用的模板都差不多&#xff0c;用模板自带的业务功能呢后台又得是模板自带的&…

Okta 数据泄露暴露了员工的个人信息

Okta 警告近 5000 名员工&#xff0c;他们的个人信息在第三方供应商遭到破坏后泄露。 Okta 是一家位于旧金山的云身份和访问管理解决方案提供商&#xff0c;其单点登录 (SSO)、多重身份验证 (MFA) 和 API 访问管理服务被全球数千个组织使用。 该 数据泄露通知 警告称&#xf…

win10 + vs2017 + gdal2.0.3 编译

1. 下载并解压gdal2.0.3 我的放置目录是&#xff1a;D:\Depend_3rd_party\gdal2\gdal-2.0.3&#xff0c;其中gdal-2.0.3是解压得到的文件夹 2. 修改 nmake.opt 文件 用notepad打开nmake.opt文件&#xff0c;修改以下三个部分&#xff1a; &#xff08;1&#xff09;修改C co…