vue3 实现关于 el-table 表格组件的封装以及调用

一、示例图:

二、组件

<template><div class="sn-table" :class="props.colorType === 1 ? '' : 'bg-scroll'"><el-table :data="tableData" :row-class-name="tableRowClassName" height="500" style="width: 100%;":default-sort="[{ prop: '正确率', order: 'descending' },{ prop: '未答题数', order: 'descending' }]":class="props.colorType === 1 ? '' : 'bg-scroll'"><el-table-column align="center" :prop="item.keyName":sortable="item.keyName==='正确率'&&props.isExistSelect||item.keyName==='未答题数'&&props.isExistSelect?true:false":label="item.keyName" v-for="item in columns":width="item.width ? item.width + 'px' : ''"><template #default="scope"><div v-if="item.keyName==='正确率'&&props.isExistSelect" class="tag-list"><el-progress :percentage="scope.row[item.keyName]" color="#00B386" :stroke-width="10" :text-inside="false"/></div></template></el-table-column></el-table></div>
</template>
<script lang='ts' setup>
type TProps = {tableData: any[]columns: any[],colorType: number, // 颜色类型isExistSelect: boolean // 是否存在筛选项
}
const props = withDefaults(defineProps<TProps>(), {})const tableRowClassName = ({ rowIndex }: { rowIndex: number }) => {if (rowIndex % 2 === 1) {return props.colorType === 1 ? 'odd-row' : 'class-odd-row'} else {return props.colorType === 1 ? 'even-row' : 'class-even-row'}
}
</script>
<style lang='scss' scoped>
.bg-scroll {border-radius: 10px;height: 96%;overflow-y: scroll;&::-webkit-scrollbar {width: 5px;height: 0 !important;}&::-webkit-scrollbar-thumb {border-radius: 10px;background: #eeeeee;}
}.sn-table {padding: 0 10px 0 20px;:deep(.el-table) {color: #ffffff !important;tr {td {border: none;padding: 16px 0;font-size: 15px;}}th.el-table__cell {background: #141414 !important;border: none;color: #00B386;font-size: 14px;font-weight: 400;}.even-row {background-color: #333 !important;}.odd-row {background-color: #141414 !important;}.class-even-row {background-color: #333 !important;}.class-odd-row {background-color: #00B386 !important;}}:deep(.el-scrollbar__wrap--hidden-default) {background: #141414 !important;}:deep(.el-table--enable-row-hover) {.el-table__body {tr:hover>td.el-table__cell {color: #8C8C8C;background: #333 !important;}}}:deep(.el-table__inner-wrapper) {&::before {background-color: transparent;}}:deep(.el-table .ascending .sort-caret.ascending){border-bottom-color:#00B386 !important;}:deep(.el-table .descending .sort-caret.descending){border-top-color:#00B386 !important;}.ok-text{font-size: 35px;font-weight: 300;}.tag-list{width: 100%;padding: 2px 0;.tag-btn{border-radius: 5px;border: 1px solid #EF8714;color: #EF8714;padding: 1px 10px;margin-right: 15px;&:last-child{margin-right: 0;}}}
}
:deep(.el-progress){width: 185px;margin: 0 auto;
}
:deep(.el-progress__text){span{font-size: 16px;}
}
:deep(.el-progress-bar__outer){background: #D9D9D9;
}
</style>

三、页面调用

<details-table :tableData="knowInfo" :columns="knowColumns" :isExistSelect="false" :colorType="1"/><script setup lang="ts">
import { onMounted, ref } from 'vue'
import CanvasVideo from "@/components/CanvasVideo.vue"const knowInfo = ref<any[]>([])
const knowColumns = ref<any[]>([])onMounted(()=>{init()
})//数据处理
const init = () => {const datas = ref([{studentName:'陈佳颖',correctRate:0,noAnswerCount:13},{studentName:'丁靖芸',correctRate:0,noAnswerCount:13},{studentName:'谷雨恒',correctRate:0,noAnswerCount:13},{studentName:'欧阳江源',correctRate:0,noAnswerCount:13},{studentName:'任行宽',correctRate:0,noAnswerCount:13},{studentName:'任彦宇',correctRate:0,noAnswerCount:13},{studentName:'王骁南',correctRate:0,noAnswerCount:13},{studentName:'吴骏扬',correctRate:0,noAnswerCount:13}])if (datas && datas.length > 0) {datas.forEach((it: any, index:number) => {knowInfo.value.push({'行号': index+1,'姓名': it.studentName,'正确率': it.correctRate,'未答题数': it.noAnswerCount})})for (const key in knowInfo.value[0]) {knowColumns.value.push({keyName: key,width: key === '行号' ? 140 : null})}}
}</script>

四、其他

(1)自定义标题

<el-table :data="datas" style="width: 100%;"><el-table-column label="" prop="name" align="center"><template #header>姓名</template></el-table-column>
</el-table>

(2)自定义下标

<el-table :data="datas" style="width: 100%;"><el-table-column label="行号" align="center"><template #default="{$index}">{{$index+1}}</template></el-table-column>
</el-table>

(3)自定义内容

<el-table :data="datas" style="width: 100%;"><el-table-column label="姓名" prop="name" align="center"><template #default="scope"><div>{{scope.row.name}}s</div></template></el-table-column>
</el-table>

(4)添加排序(升序、降序)

<el-table :data="datas" style="width: 100%;":default-sort="[{ prop: 'rank', order: 'descending' },{ prop: 'time', order: 'descending' }]"><el-table-column label="排名" prop="rank" sortable align="center"/><el-table-column label="时长" prop="time" sortable align="center"/>
</el-table>

       希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

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

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

相关文章

DevOps(8)

目录 36.当发出的命令与上次使用时产生的结果不同时&#xff0c;会出现什么问题&#xff1f; 37./usr /local的内容是什么&#xff1f; 38.你如何终止正在进行的流程&#xff1f; 39.如何在命令行提示符中插入注释&#xff1f; 40.什么是命令分组以及他是如何工作的&…

istio 灰度发布部署(包括 deploy、svc、gw、vs 和 dr)

创建 deployment 分别部署两个版本的 deployment。在灰度发布的过程中&#xff0c;注意 pod 标签的设置&#xff0c;后续 svc 和 dr 就是根据标签来划分 pod apiVersion: apps/v1 kind: Deployment metadata:labels:app: bbjcxtversion: v1name: bbjcxtnamespace: mm-nbxt-hu…

云卷云舒:【实战篇】Redis迁移

1. 简介 Remote Dictionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统&#xff0c;是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 2. 迁移原理 redis-sh…

什么是 RFID 及其工作原理?

一、自动识别技术 自1999年麻省理工学院研究人员的首创开始&#xff0c;自动识别技术&#xff08;简称auto-ID&#xff09;的领域不断扩大。自动识别技术形成了多种技术路线&#xff0c;使我们能够自动、精确地捕获、识别和存储与物体、物品或个人相关的数据&#xff0c;从而减…

Selenium-java 定位元素时切换iFrame时的方法

具体方法如下图所示&#xff0c;如果iFrame中嵌套多层iFrame需要逐层定位到需要的那一层iFrame,完成操作后&#xff0c;执行该代码&#xff1a;driver.switchTo() .defaultContent() ; 是返回最顶部的frame

hyperf 二十 数据库 三 创建脚本

教程&#xff1a;Hyperf 根据之前文章&#xff1a;hyperf 十九 数据库 二 模型-CSDN博客 应该能了解到visitors参数。 根据教程&#xff0c;使用visitors参数创建脚本。在配置在设置visitors参数&#xff0c;格式为数据。 一、可选脚本说明 Hyperf\Database\Commands\Ast…

理解二叉树的遍历(算法村第七关白银挑战)

二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]解 LeetCode以及面试中提供的方法可能…

科普:嵌入式多核并行仿真

自信息技术革命以来&#xff0c;计算机一直被应用在各种复杂的数据处理中&#xff0c;如火箭弹道&#xff0c;高能物理和生物学数据等。随着嵌入式领域的多样化需求的不断丰富&#xff0c;多核CPU的应用也越来越广泛&#xff1a;嵌入式系统通常需要同时处理多个任务和实时数据&…

【C语言】6-3 分别实现单个“图书”类型变量的输入和输出。分数 10

6-3 分别实现单个“图书”类型变量的输入和输出。 分数 10 全屏浏览题目 切换布局 作者 赵静静 单位 浙江工贸职业技术学院 编写2个函数&#xff0c;分别实现单个“图书”类型变量的输入和输出。其中“图书”的成员包括书名、ISBN、单价、作者、出版社。 函数接口定义&…

ChatGPT是什么,海鲸AI软件功能有哪些

ChatGPT是一种基于人工智能的对话生成技术&#xff0c;它利用深度学习模型来理解和生成自然语言对话。ChatGPT的核心是一种称为生成式预训练模型(GPT)的技术&#xff0c;它能够根据输入的对话内容生成连贯、自然的回答&#xff0c;实现智能对话的目的。这种技术的出现&#xff…

高级鉴权验签方式的实践,技术方案为注解+ASCII排序+多类型多层级动态拼接+RSA加密(或国密SM2)+Base64+Redis滑动窗口限流

背景 虽然大多数企业的流量没有那么大&#xff0c;不过限流还是要有的&#xff0c;毕竟还有外部调用我方系统接口&#xff0c;需要验证访问权限进行&#xff0c;同时防止万一接口并发量大影响我方系统&#xff0c; 所以要增加流控处理&#xff1b;不同的来源在独立配置&#x…

嵌入式工程师有什么热门的发展方向?

随着5G的普及和物联网时代的到来&#xff0c;各种技术不断融合创新&#xff0c;嵌入式技术已成为互联网行业中具有前景的职业之一。 嵌入式工程师在当今数字化时代拥有广泛的就业前景&#xff0c;新技术的发展也为嵌入式工程师提供了更多机会&#xff0c;给大家列举了四个嵌入…

【JAVA】实验二 类与对象

实验名称 实验二 类与对象 实验目的 1. 深刻理解类的封装与继承&#xff1b; 2. 熟练掌握类的定义、包与路径、对象的创建、方法的调用、类的继承、方法的重写、运行时多态、访问权限修饰符的使用等&#xff1b; 3. 熟练运用JDK提供的常用类及API。 实验内容&…

文件二维码能下载文件吗?扫码看文件效率更高

为了让文件更快的传递&#xff0c;现在将文件制作二维码图片后&#xff0c;让其他人通过扫码查看或者下载文件的方式&#xff0c;被越来越多的人应用。一般想要制作文件二维码&#xff0c;大多会使用文件二维码生成器&#xff08;文件二维码生成器_word、excel、ppt、pdf文档制…

linux下安装Nginx及其常用命令

安装Nginx 接下来在Linux服务器进行操作就可以了 安装插件 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel直接使用wget进行安装(如果没有wget需要先安装wget) yum install wgetwget https://nginx.org/download/nginx-1.24.0.tar.gz解压 tar -zxvf nginx..…

代码训练day59|单调栈part02

参考&#xff1a; 代码随想录 如何高效解决接雨水问题 | labuladong 的算法笔记 503.下一个更大元素II 与下一个更大元素&#xff5c;的区别就是要把数组考虑为环形&#xff08;只有数组内最大值为-1&#xff09; 按照之前的环形为题解决经验&#xff0c;直接拼接两个数组解…

解决mock单元测试中 无法获取实体类xxx对应的表名

错误描述&#xff1a;在执行单元测试时&#xff0c;执行到new Example时抛出异常&#xff0c;提示无法获取实体类xxx对应的表名 Example example new Example(ServeSubscribeRecord.class);Example.Criteria criteria example.createCriteria();criteria.andEqualTo("se…

【Linux】Linux Page Cache页面缓存的原理

Page cache&#xff08;页面缓存&#xff09;是计算机操作系统中的一种机制&#xff0c;用于将频繁访问的数据从磁盘存储到内存中&#xff0c;以便更快地访问。当程序从磁盘请求数据时&#xff0c;操作系统会检查该数据是否已经存在于页面缓存中。如果存在&#xff0c;数据可以…

QT上位机开发(动态库dll的开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 有的时候&#xff0c;我们不想把所有的代码都放在一个exe里面&#xff0c;这个时候我们就需要引入dll动态库的概念。在windows平台上面&#xff0c…

IC工程师到底有哪些?每个岗位具体有哪些要求?

随着摩尔定律和技术的发展&#xff0c;芯片集成度也越来越高&#xff0c;与之伴随的就是岗位愈加细分。芯片产业链很长且环环相扣&#xff0c;每一个环节都需要不同的工程师角色分工协作。 很多人以为芯片工程师就是单纯搞芯片的工程师&#xff0c;殊不知这其中可能要分十几个…