修改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.rhkb.cn/news/297085.html

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

相关文章

leetcode代码记录(打家劫舍 II

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 一个专业的小偷&#xff0c;计划偷窃一个环形街道上沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是…

Linux驱动学习:从Linux主机nfs共享文件到uboot

第一步&#xff1a;在Linux主机上开启NFS服务&#xff0c;使用如下命令安装NFS服务&#xff1a; sudo apt-get install nfs-kernel-server rpcbind 第二步&#xff1a;创建一个文件夹用于共享&#xff0c;直接以nfs命名就行&#xff1a; 第三步&#xff1a;打开nfs服务配置文…

ES6展开运算符

1.展开可迭代对象&#xff08;简单理解为数组和伪数组&#xff09;&#xff0c;如数组、 NodeList 、arguments。 可以通过展开运算符把一个伪数组转换为数组 const a [...document.body.children]; console.log(a); console.log(Array.isArray(a));2.实现数组的浅拷贝 cons…

分享three.js实现粒子背景

three.js中粒子效果的实现方式大概分为三种&#xff1a; 1、Javascript直接计算粒子的状态变化&#xff0c;即基于CPU实现&#xff1b; 2、Javascript通知顶点着色器粒子的生命周期&#xff0c;由顶点着色器运行&#xff0c;即基于GPU实现&#xff1b; 3、粒子生成与状态维护全…

C++基础13:C++输入输出

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 12.C输入/输出 12.1 C流类 计算机的输入和输出是数据传送的过…

大数据学习第十一天(复习linux指令3)

1、su和exit su命令就是用于账户切换的系统命令 基本语法&#xff1a;su[-] [用户名] 1&#xff09;-表示是否在切换用户后加载变量&#xff0c;建议带上 2&#xff09;参数&#xff1a;用户名&#xff0c;表示切换用户 3&#xff09;切换用户后&#xff0c;可以通过exit命令退…

Delphi 是一种内存安全的语言吗?

上个月&#xff0c;美国政府发布了 "回到基石 "报告&#xff1a; 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分&#xff0c;重点关注多个领域&#xff0c;包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告进行了评论&#xff0…

信息传播的AI时代:机器学习赋能新闻出版业的数字化之旅

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

中间件复习之-RPC框架

什么是RPC框架&#xff1f; RPC(Remote Procedure Call):远程过程调用。当多个应用部署在多个服务器上时&#xff0c;由于他们不在一个内存空间上&#xff0c;因此需要网络来进行通信&#xff0c;而RPC允许它像调用本地方法一样调用远程服务。 RPC原理 服务消费方通过RPC客户…

数据结构—堆

什么是堆 堆是一种特殊的树形结构&#xff0c;其中每个节点都有一个值。堆可以分为两种类型&#xff1a;最大堆和最小堆。在最大堆中&#xff0c;每个节点的值都大于等于其子节点的值&#xff1b;而在最小堆中&#xff0c;每个节点的值都小于等于其子节点的值。这种特性使得堆…

leetcode题库练习9\268\771

Leetcode: 9 回文数 简单的想法就是将数字转化为字符进行比较&#xff0c;但是这样占空间 class Solution { public:bool isPalindrome(int x) {if(x < 0) return false;if(x < 10 && x > 0) return true;vector<int> num;while(x > 9){num.push_b…

Three.js——scene场景、几何体位置旋转缩放、正射投影相机、透视投影相机

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

Vue tree自定义滚动条位置

贴一张效果图&#xff0c;我的效果不方便贴出来 实现支持&#xff1a; 1、懒加载 2、普通加载 下面贴关键思想&#xff1a; document有一个获取element元素的方法。 let element document.getElementById(tree); let arr document.querySelectorAll(".nodelModel&quo…

用JSch实现远程传输文件并打包成jar

本文将简单介绍一下 JSch 这个Java的第三方库的一个简单用法&#xff0c;并以此为实例&#xff0c;讲解 IntelliJ 中打包成 jar 包的2种方式。 实现目标 我们的目标是&#xff0c;做出一个jar包&#xff0c;它能够实现类似于 scp 命令的远程传输文件的功能。用法如下&#xf…

arm的状态寄存器

目录 一、arm 的 PSRs二、CPSR2.1 CPSR_cxsf 三、SPSR四、APSR 一、arm 的 PSRs arm 中有很多程序状态寄存器&#xff08;Program Status Registers&#xff0c;PSRs&#xff09;用于存储处理器的状态信息&#xff0c;包括 CPSR\SPSR\FPSR\APSR 等&#xff1a; CPSR&#xff…

OpenHarmony实战:Makefile方式组织编译的库移植

以yxml库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取yxml源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件&#xff0c;及测试脚本yxml/Makefile编译组织文件yxml/.gitat…

计算机网络-从输入网址到访问网站的全过程

当我们在浏览器中输入一个网址并按下回车键时&#xff0c;会发生一系列复杂的过程&#xff0c;最终使我们能够看到网页的内容。以下是这个过程的详细步骤&#xff1a; 客户端&#xff1a;首先&#xff0c;用户在浏览器中键入网址&#xff0c;然后浏览器会根据这个网址生成一个H…

MySQL count函数的使用

count&#xff08;&#xff09;函数在使用时参数好像不能设置为表达式&#xff0c;只能设置成指定字段或* 比如在查询性别为男的成员数目时不能写&#xff1a; select count(gendermale) from user_profile ; 否则直接得到6&#xff0c;也就是等价于select count(gender) fro…

java子集(力扣Leetcode78)

子集 力扣原题链接 问题描述 给定一个整数数组 nums&#xff0c;数组中的元素互不相同。返回该数组所有可能的子集&#xff08;幂集&#xff09;。解集不能包含重复的子集。可以按任意顺序返回解集。 示例 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#x…

LabVIEW专栏三、探针和断点

探针和断点是LabVIEW调试的常用手段&#xff0c;该节以上一节的"测试耗时"为例 探针可以打在有线条的任何地方&#xff0c;打上后&#xff0c;经过这条线的所有最后一次的数值都会显示在探针窗口。断点可以打在程序框图的所有G代码对象&#xff0c;包括结构&#xf…