修改element-ui table组件展开/收起图标、支持点击行展开/收起、隐藏不可展开行得图标

Element中table默认支持的,展开和收起功能,如下:
在这里插入图片描述

针对表格的展开收起,本文改造的主要有3点:
1、修改展开/收起的图标;
2、对于不支持展开/收起的行,隐藏图标;
3、点击行,就可以展开/收起对应的内容。

1、修改图标

这个单纯的样式还是挺好改的。

<el-table class="table-wrap"></el-table><style lang="less">
.table-wrap {.el-table__expand-icon {-webkit-transform: rotate(0deg);transform: rotate(0deg);}.el-table__expand-icon .el-icon-arrow-right:before {content: "\e6d9";border: 1px solid #ccc;padding: 1px;}.el-table__expand-icon--expanded .el-icon-arrow-right:before {content: "\e6d8";}
}
</style>

效果如下:
请添加图片描述

2、不可展开行,隐藏图标

这个实现是通过给el-table中不可展开的行,增加一个样式,利用el-table行的 className 的回调方法row-class-name

<el-table :row-class-name="getRowClass"></el-table>methods: {getRowClass({ row }) {if (!row.children) return "hide-expand";}
}<style>// 没有展开行时,隐藏展开/折叠操作按钮.hide-expand {td:first-child .cell {visibility: hidden;}}
</style>

效果如下:
在这里插入图片描述

3、点击行,展开/收起

利用el-table的row-click事件和toggleRowExpansion方法。

同时可以进行限制只能展开一行,还是都可以展开。
在这里插入图片描述
本文完整代码:

<template><div><el-button type="primary" @click="openAll = true">可展开全部</el-button><el-button type="primary" @click="openAll = false">只能展开一个</el-button><el-table:data="tableData":row-class-name="getRowClass":border="true":stripe="true"@row-click="clickRow"class="table-wrap"ref="tableRef"><el-table-column type="expand" align="center" width="80"><template slot-scope="{ row }">展开行childre: {{ row.children }}</template></el-table-column><el-table-columnv-for="item in header":key="item.key":label="item.value":prop="item.key":sortable="item.sortable ? item.sortable : false"align="center"></el-table-column></el-table></div>
</template><script>
export default {data() {return {openAll: true,header: [{key: "id",value: "ID"},{key: "title",value: "名称"},{key: "tag",value: "标签"},{key: "typeText",value: "方式"},{key: "cycle",value: "周期"},{key: "status",value: "状态"}],tableData: [{id: 1,title: "test111122222",tag: "",typeText: "定时任务",cycle: "每天 9:00",status: "草稿",sortable: true,children: [{id: 11,title: "test1-1",tag: "",typeText: "定时任务",cycle: "每天 9:00",status: "草稿"}]},{id: 2,title:"名称很长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长",tag: "hhh",typeText: "定时任务",cycle: "每天 12:00",status: "草稿",children: [{id: 21,title: "test1-1",tag: "",typeText: "定时任务",cycle: "每天 9:00",status: "草稿"}]},{id: 3,title: "测试测试测试",tag: "hhh",typeText: "定时任务",cycle: "每天 00:00",status: "草稿",children: [{id: 31,title: "test1-1",tag: "",typeText: "定时任务",cycle: "每天 9:00",status: "草稿"},{id: 32,title: "test3-2",tag: "",typeText: "定时任务",cycle: "每天 9:00",status: "草稿"}]},{id: 4,title: "嗯嗯嗯",tag: "hhh",typeText: "定时任务",cycle: "每天 10:00",status: "草稿",children: []},{id: 5,title: "test",tag: "null",typeText: "循环任务",cycle: "每天 19:00",status: "正式"}]};},methods: {getRowClass({ row }) {if (!row.children || !Array.isArray(row.children) || !row.children.length) return "hide-expand";},clickRow(row, index, e) {if (row.children) {const $table = this.$refs.tableRef;this.tableData.map(item => {// 可以全部都展开if (this.openAll) {item.expanded = !item.expanded;} else {// 同一时间只能展开一个if (row.id != index.id) {$table.toggleRowExpansion(item, false);item.expanded = false;} else {item.expanded = !item.expanded;}}});$table.toggleRowExpansion(row);}}}
};
</script><style lang="less">
.table-wrap {.el-table__expand-icon {-webkit-transform: rotate(0deg);transform: rotate(0deg);}.el-table__expand-icon .el-icon-arrow-right:before {content: "\e6d9";border: 1px solid #ccc;padding: 1px;}.el-table__expand-icon--expanded .el-icon-arrow-right:before {content: "\e6d8";}// 没有展开行时,隐藏展开/折叠操作按钮.hide-expand {td:first-child .cell {visibility: hidden;}}
}
</style>

完整效果:
请添加图片描述

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

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

相关文章

windows10 上安装 docker

windows 10 上安装 docker 官方目前给的方案是利用 Docker Desktop 来安装 docker 环境 一、安装前准备工作 1.1 检查系统要求 Windows 10 64 位&#xff1a;Home 或 Pro 2004&#xff08;内部版本 19041&#xff09;或更高版本&#xff0c;或者 Enterprise 或 Education 1…

Redis中的复制功能(四)

复制功能 步骤2:建立套接字连接 在SLAVEOF命令执行之后&#xff0c;从服务器将根据命令所设置的IP地址和端口&#xff0c;创建连向主服务器的套接字连接&#xff0c;如图所示。如果从服务器创建的套接字能成功连接(connect)到主服务器&#xff0c;那么从服务器将为这个套接字…

软考109-上午题-【计算机网络】-网络设备

一、网络设备 1-1、物理层的互联设备 物理层的设备&#xff1a;中继器、集线器 1、中继器 中继器&#xff0c;可以使得两个链路在物理层上互联。 可以使得信号再生&#xff0c;信号增强。因此&#xff0c;中继器使得接受用户&#xff0c;收到衰减很小的原始信号 2、集线器&a…

【Java EE】关于Maven

文章目录 &#x1f38d;什么是Maven&#x1f334;为什么要学Maven&#x1f332;创建⼀个Maven项目&#x1f333;Maven核心功能&#x1f338;项目构建&#x1f338;依赖管理 &#x1f340;Maven Help插件&#x1f384;Maven 仓库&#x1f338;本地仓库&#x1f338;私服 ⭕总结 …

Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)

原文&#xff1a;Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10) - 知乎 阿里的FunAsr对Whisper中文领域的转写能力造成了一定的挑战&#xff0c;但实际上&#xff0c;Whisper的使用者完全可以针对中文的语音做一些优化的措施&#xff0c;换句话说&#xff0c;…

前端:登录界面

效果 代码 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

SpringBoot整合ELK8.1.x实现日志中心教程

目录 背景 环境准备 环境安装 1.JDK安装 2.安装Elasticsearch 3.安装zookeeper 4.安装Kafka 5.安装logstash 6.安装file beat 解决方案场景 1.日志采集 1.1 应用日志配置 1.1.1 创建logback-spring.xml文件 1.1.2 创建LoggerFactory 1.1.3 trace日志的记录用法 …

Linux上管理文件系统

Linux上管理文件系统 机械硬盘 机械硬盘由多块盘片组成&#xff0c;它们都绕着主轴旋转。每块盘片上下方都有读写磁头悬浮在盘片上下方&#xff0c;它们与盘片的距离极小。在每次读写数据时盘片旋转&#xff0c;读写磁头被磁臂控制着不断的移动来读取其中的数据。 所有的盘片…

实操:Dropzone.js实现文件上传

&#x1f3e0;官网 点我前往 &#x1f953;依赖 <script src"https://unpkg.com/dropzone5/dist/min/dropzone.min.js"></script> <link rel"stylesheet" href"https://unpkg.com/dropzone5/dist/min/dropzone.min.css" type&…

手搓链表(java)(不完整)

手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09; 文章目录 手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09;前言一、代码1.MyLinkedList类&#xff1a;2.测试类&#xff1a; 总结 前言 提示&#xff1a;以下是本篇文章正文内容&…

LeetCode_876(链表的中间结点)

//双指针//时间复杂度O(n) 空间复杂度O(1)public ListNode middleNode(ListNode head) {ListNode slowhead,fast head;while (fast!null && fast.next!null){slow slow.next;fast fast.next.next;}return slow;} 1->2->3->4->5->null 快指针移动两个…

Linux中的shell脚本之流程控制循环遍历

3 条件判断 4 流程控制语句 1&#xff09;if 语句 案例&#xff0c;用户输入用户名和密码&#xff0c;判断用户名是否是admin,密码是否是123,如果正确&#xff0c;则显示登录成功 首先我创建了shell文件&#xff0c;touch getpawer 其中getpawer 是我自己命的名 #!/bin/bas…

Linux-4 gcc和makefile

Linux编译器-gcc/g使用 1.设计样例 c语言&#xff1a;linux中用的stdc99版本--可能会出现其他问题 c&#xff1a;Linux中用的stdc11--使用c11版本 Linux没有文件格式的区分&#xff0c;但是编译器区分 gcc编译器的文件格式是filename.c g编译器的文件格式是filename.cc或者fil…

蓝桥杯练习笔记(十七)

蓝桥杯练习笔记&#xff08;十七&#xff09; 一、 输入样例 7 7 1000001 0100010 0010100 0001AAA 00010A0 00010A0 00010A0蓝桥官网题解&#xff1a; 该题解是用了三个循环分别对三个方向的相同字符的长度进行统计&#xff0c;找出最大长度&#xff0c;最后对找出的最长Y进…

做好产品定位的3个重点

产品定位对于项目而言至关重要&#xff0c;正确的产品定位有助于项目锁定目标市场&#xff0c;精准满足客户需求。通过差异化产品策略&#xff0c;让产品在众多竞品中脱颖而出&#xff0c;形成独特竞争优势&#xff0c;从而有助于产品价值的实现。 因此做好产品定位迫在眉睫&am…

软件杯 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

【Linux】从零认识文件操作

送给大家一句话&#xff1a; 要相信&#xff0c;所有的不美好都是为了迎接美好&#xff0c;所有的困难都会为努力让道。 —— 简蔓《巧克力色微凉青春》 开始理解基础 IO 吧&#xff01; 1 前言2 知识回顾3 理解文件3.1 进程和文件的关系3.2 文件的系统调用openwrite文件 fd 值…

OpenHarmony实战:小型系统平台驱动移植

在这一步&#xff0c;我们会在源码目录//device/vendor_name/soc_name/drivers目录下创建平台驱动。 建议的目录结构&#xff1a; device ├── vendor_name │ ├── drivers │ │ │ ├── common │ │ │ ├── Kconfig # 厂商驱动内核菜单入口 │ …

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头&#xff0c;旨在建立基于现有开源最佳实践的安全…