Element-UI Table实现列表筛选数据及列表嵌套选择框

VUE 框架在 Element UI 的基础上,Table 组件中实现了列表数据的修改功能,支持单选和多选功能,并且列表具备筛选功能。样式如图所示。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

功能介绍

  • 点击table列名实现筛选查询功能
  • 相关性判断点击列表中的正方形实现选择框功能,同时修改列表数据
  • 其他标记点击列表实现复选框功能,列表样式根据选择数据的数量动态适应宽度。

功能实现

相关性判断类单选功能

  • 表头筛选功能
    在表头位置添加了一个 el-popover 弹出框,里面包含了 el-checkbox-group 用于选择不同的相关性判断选项。通过点击表头旁边的图标来打开弹出框并选择筛选条件。点击“查询”按钮时,将关闭弹出框,并执行查询逻辑。
  • 列表数据修改功能
    每行数据旁边都有一个 el-popover,其中包含可点击的不同相关性判断选项。当点击某个选项时,会更新该行数据的相关性判断,并发送请求到后端进行数据更新。
代码
<el-table-column width="60" prop="correlationJudgment"><!-- 列数据筛选功能 --><template #header><span class="top-header">相关性<br />判断<!-- 弹出框,用于显示相关性判断的选择 --><el-popover @show="correlationJudgmentshowPopover('相关性')" @hide="correlationJudgmenthidePopover" ref="correlationJudgmentPopover" placement="bottom" trigger="click" popper-class="top-popover" :popper-options="{ boundariesElement: 'viewport', removeOnDestroy: true }"><div class="genePopover-title">相关性判断</div><div class="genePopover-box"> <div style="padding: 5px 15px"><!-- 多选框组,用于选择相关性判断的选项 --><el-checkbox-group v-model="correlationJudgmentList"><el-checkbox label="高度相关">高度相关</el-checkbox><el-checkbox label="其他可疑">其他可疑</el-checkbox><br><el-checkbox label="参考位点">参考位点</el-checkbox><el-checkbox label="热点突变">热点突变</el-checkbox><br><el-checkbox label=""></el-checkbox></el-checkbox-group></div></div><div class="popover-footer"><!-- 取消按钮 --><div class="geneBtnCancel" @click="correlationJudgmentCancelBtn">取消</div><!-- 查询按钮 --><div class="geneBtnQuery" @click="correlationJudgmentQueryBtn">查询</div></div><!-- 弹出框的参考内容 --><div slot="reference" class="determine"><img src="../../../assets/images/筛选.png" class="top-img" alt="" v-if="correlationJudgmentList.length == 0" /><img src="../../../assets/images/red.png" class="top-img1" alt="" v-else /></div></el-popover></span></template><!-- 列表数据修改显示 --><template slot-scope="scope"><div class="determine-box"><!-- 每一行数据的弹出框 --><el-popover :ref="`popover-${scope.$index}`" placement="left" trigger="click" :offset="30" :popper-options="{ boundariesElement: 'viewport',removeOnDestroy: true }"><!-- 相关性判断的选项,每个选项都调用 getdetermine 方法 --><div style="width: 100px;margin: 0;display: flex;justify-content: center;line-height: 2;" @click="getdetermine('高度相关', scope)">高度相关</div><div style="width: 100px;margin: 0;display: flex;justify-content: center;line-height: 2;" @click="getdetermine('其他可疑', scope)">其他可疑</div><div style="width: 100px;margin: 0;display: flex;justify-content: center;line-height: 2;" @click="getdetermine('参考位点', scope)">参考位点</div><div style="width: 100px;margin: 0;display: flex;justify-content: center;line-height: 2;" @click="getdetermine('热点突变', scope)">热点突变</div><div style="width: 100px;margin: 0;display: flex;justify-content: center;line-height: 2;" @click="getdetermine('无', scope)"></div><!-- 显示当前行的相关性判断结果 --><div slot="reference" class="determine">{{ scope.row.correlationJudgment }}</div></el-popover></div></template>
</el-table-column>
methods:{//悬浮correlationJudgmentshowPopover (row) {this.titleContent = row;},//悬浮隐藏correlationJudgmenthidePopover () {},//悬浮取消correlationJudgmentCancelBtn () {this.$refs.correlationJudgmentPopover.doClose();},//悬浮查询correlationJudgmentQueryBtn () {this.pageSize = 10;this.pageNum = 1;this.getAllParams();this.$refs.correlationJudgmentPopover.doClose();},//选中数据getdetermine (val, row) {let oldcorrelationJudgment = row.row.correlationJudgment;if (val == "无") {row.row.correlationJudgment = "";}let params = {参数...};updateReport(params).then((res) => {this.getList();});this.$refs[`popover-${row.$index}`].doClose();this.$forceUpdate();},
}
注释说明:
  • <el-table-column>: 定义表格的列,指定宽度和绑定的数据属性。
  • <template #header>: 自定义表头,包含一个弹出框用于选择相关性判断。
  • <el-popover>: 弹出框组件,用于显示选项和操作按钮。
  • <el-checkbox-group>: 用于多个复选框的分组,允许用户选择多个选项。
  • @click: 事件处理器,触发相应的方法。
  • slot-scope: 用于访问当前行数据(scope),使得每一行可以独立操作。

其他标记复选功能

  • 表头筛选功能
    类似地,在其他标记列的表头位置也添加了一个 el-popover 弹出框,用于选择不同的其他标记。可以选择多个标记,并通过点击“查询”按钮来执行筛选操作。
  • 列表数据修改功能
    每行数据旁边也有一个 el-popover,其中包含可选择的其他标记选项。可以选择或取消选择某些标记,然后当关闭弹出框时,会更新该行数据的其他标记,并发送请求到后端进行数据更新。
代码
<el-table-column width="90" prop="multipleRelevances"><!-- 自定义表头 --><template #header><span class="top-header">其他<br />标记<!-- 弹出框,用于选择其他标记 --><el-popover @show="multipleRelevanceshowPopover('相关性')" @hide="multipleRelevancehidePopover" ref="multipleRelevancePopover" placement="bottom" trigger="click" popper-class="top-popover" :popper-options="{ boundariesElement: 'viewport', removeOnDestroy: true }"><div class="genePopover-title">其他标记</div><div class="genePopover-box"><div style="padding: 5px 15px"><!-- 多选框组,用于选择其他标记 --><el-checkbox-group v-model="multipleRelevanceList"><el-checkbox label="自闭基因">自闭基因</el-checkbox><el-checkbox label="次要发现">次要发现</el-checkbox><br><el-checkbox label=""></el-checkbox></el-checkbox-group></div></div><div class="popover-footer"><!-- 取消按钮 --><div class="geneBtnCancel" @click="multipleRelevanceCancelBtn">取消</div><!-- 查询按钮 --><div class="geneBtnQuery" @click="multipleRelevanceQueryBtn">查询</div></div><!-- 弹出框的参考内容 --><div slot="reference" class="determine"><img src="../../../assets/images/筛选.png" class="top-img" alt="" v-if="multipleRelevanceList.length == 0" /><img src="../../../assets/images/red.png" class="top-img1" alt="" v-else /></div></el-popover></span></template><!-- 列表数据修改显示 --><template slot-scope="scope"><div class="determine-box"><el-popover @hide="multipleRelevanceHide(scope)" @show="multipleRelevanceClick(scope)" :ref="`popover-${scope.$index}`" placement="left" trigger="click" :offset="30" :popper-options="{ boundariesElement: 'viewport',removeOnDestroy: true }"><div style="width: 100px;margin-left: 20px;display: flex;justify-content: center;line-height: 2;"><!-- 多选框组,用于选择其他标记 --><el-checkbox-group v-model="multipleRelevances" @change="handleMultipleRelevanceChange"><el-checkbox label="自闭基因">自闭基因</el-checkbox><el-checkbox label="次要发现">次要发现</el-checkbox></el-checkbox-group></div><!-- 弹出框的参考内容,通过数据量动态显示样式宽度 --><div slot="reference" class="determine" :style="'width: '+(scope.row.multipleRelevances && scope.row.multipleRelevances.length > 1 ? 60 : 30) + 'px;'"><span v-for="relevance in scope.row.multipleRelevances" :key="relevance">{{ relevance }}</span></div></el-popover></div></template>
</el-table-column>
注释说明:
  • <el-table-column>: 定义表格的列,指定宽度和绑定的数据属性。
  • <template #header>: 自定义表头,包含一个弹出框用于选择其他标记。
  • <el-popover>: 弹出框组件,用于显示选项和操作按钮。
  • <el-checkbox-group>: 用于多个复选框的分组,允许用户选择多个选项。
  • @click: 事件处理器,触发相应的方法。
  • slot-scope: 用于访问当前行数据(scope),使得每一行可以独立操作。
methods:{//悬浮multipleRelevanceshowPopover (row) {this.titleContent = row;},//悬浮隐藏multipleRelevancehidePopover () {},//悬浮取消multipleRelevanceCancelBtn () {this.$refs.multipleRelevancePopover.doClose();},//悬浮查询multipleRelevanceQueryBtn () {this.pageSize = 10;this.pageNum = 1;this.getAllParams();this.$refs.multipleRelevancePopover.doClose();},//选中数据,进行修改multipleRelevanceHide (row) {let multipleRelevanceStr = JSON.parse(JSON.stringify(this.multipleRelevances));this.multipleRelevances = [];let multipleRelevance = multipleRelevanceStr.join(',')let oldmultipleRelevance = row.row.multipleRelevance;let params = {参数...};updateReport(params).then((res) => {this.getList(); });this.$refs[`popover-${row.$index}`].doClose();this.$forceUpdate();},//点击时获取数据用于复选框数据回显multipleRelevanceClick (row) {this.multipleRelevances = row.row.multipleRelevances},//选中的数据handleMultipleRelevanceChange (value) {this.multipleRelevances = value},
}

页面样式

<style lang="scss">
@import "../../../assets/styles/index.scss";.el-popover {min-width: 100px;padding: 0;// left: 8px !important;font-size: 12px;.genePopover-title {padding: 0 10px;width: 100%;background-color: var(--topPopover);color: #ffffff;height: 30px;line-height: 30px;border-radius: 4px 4px 0 0;}.genePopover-box {padding: 8px;border-bottom: 1px solid #d0d0d0;.el-textarea__inner {font-size: 13px;}.title-info {padding: 5px 0;}}.genePopover-box {max-width: 300px !important;}.popover-footer {display: flex;justify-content: flex-end;padding: 8px;line-height: 1;.geneBtnCancel {padding: 4px 8px;border: 1px solid #d0d0d0;border-radius: 3px;margin-right: 10px;}.geneBtnQuery {padding: 4px 8px;border-radius: 3px;background-color: var(--topPopover);color: #ffffff;}}.numberOfCasesPopover {display: flex;align-items: center;padding-top: 10px;padding-bottom: 20px;.el-input--medium .el-input__inner {height: 30px;line-height: 30px;}}.el-checkbox {margin-right: 10px;.el-checkbox__label {padding-left: 5px;font-size: 12px;}}.el-checkbox__input.is-checked .el-checkbox__inner {background-color: var(--checkboxColor);border-color: var(--checkboxColor);}.el-checkbox__input.is-checked + .el-checkbox__label {color: var(--checkboxColor);}.el-checkbox__input.is-indeterminate .el-checkbox__inner {background-color: var(--checkboxColor);border-color: var(--checkboxColor);}.el-input--medium .el-input__inner {height: 30px;line-height: 30px;}.el-input__suffix {top: -3px;}.el-textarea__inner {padding-bottom: 15px;}.el-textarea .el-input__count {color: #909399;background: #ffffff;position: absolute;font-size: 12px;bottom: 2px;right: 20px;line-height: 1;}
}.top-popover[x-placement^="bottom"] {margin-top: 21px;margin-left: 5px;
}.top-popover[x-placement^="bottom"] .popper__arrow::after {border-bottom-color: var(--topPopover) !important;
}.SNPInDel {.el-textarea__inner {padding-bottom: 15px;}.el-table {font-size: 12px;.el-table__header-wrapper {border-radius: 5px 5px 0 0;}.el-table__header-wrapper,.el-table__fixed-header-wrapper {th {word-break: break-word;background-color: #e3e8f1;color: #515a6e;height: 20px;font-size: 12px;font-weight: bold;padding: 3px 0;}}.el-table__body-wrapper {.el-button [class*="el-icon-"] + span {margin-left: 1px;}}.el-table--medium .el-table__cell {padding: 10px !important;}.cell {padding: 0 !important;line-height: 1.1;// height: 100%;display: flex;flex-direction: column;p {margin: 0 !important;height: 100%;display: flex;justify-content: flex-start;align-items: center;width: 100%;}.el-icon-s-open:before {content: "";color: var(--color);}.determine-box {.determine {font-size: 12px;display: flex;justify-content: center;width: 30px;// height: 30px;min-height: 30px;align-items: center;color: var(--color);background-color: #c4e8ff;border: 1px dashed var(--color);border-radius: 2px;padding: 1px;cursor: pointer;}.determines {font-size: 12px;display: flex;justify-content: center;width: 30px;// height: 30px;min-height: 30px;align-items: center;color: var(--color);background-color: #c4e8ff;border: 1px dashed var(--color);border-radius: 2px;padding: 1px;cursor: pointer;}}}.top-header {position: relative;height: 40px;display: flex;align-items: center;.top-img {position: absolute;width: 12px !important;bottom: 3px;cursor: pointer;}.top-img1 {position: absolute;width: 12px !important;bottom: 3px;cursor: pointer;}}}
}
</style>

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

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

相关文章

Qt5 编译 Qt creator 源码中的 designer 模块

文章目录 下载 Qt Creator 源码 下载 Qt Creator 源码 Github: https://github.com/qt/qttools 笔记打算用 Qt 5.12.12 来编译 qt creator-designer 所以笔者下载的是 tag - 5.12.12 &#xff0c;解压后如下&#xff0c;先删除多余的文件&#xff0c;后续还要删除更多文件方便…

Rivian暂停亚马逊送货车生产,特斯拉Roadster再引关注

Rivian遭遇供应链挑战&#xff0c;暂停亚马逊送货车生产 电动汽车制造商Rivian近期宣布&#xff0c;由于零部件短缺&#xff0c;已暂停为零售巨头亚马逊生产商业送货车。这一决定标志着Rivian在应对供应链挑战方面遭遇了最新挫折。作为Rivian的最大投资者&#xff0c;亚马逊持有…

anaconda学习笔记:复制anaconda的base环境

在anaconda的图形界面中&#xff0c;新建环境&#xff0c;可以看到&#xff0c;默认的包只有几个&#xff08;这里是10个&#xff09;&#xff0c;像常用的numpy、pandas等等都没有&#xff0c;在使用过程中还需要再次安装。 而base环境有几百个&#xff08;325个&#xff09;这…

【Java 数据结构】PriorityQueue介绍

优先级队列 回顾二叉树堆堆是什么堆的实现初始化堆的创建向下调整建堆复杂度插入向上调整建堆复杂度删除 PriorityQueue类介绍PriorityQueue是什么PriorityQueue使用构造方法常用方法 PriorityQueue源码介绍Top-K问题 回顾二叉树 上一次我们简单的了解了二叉树这个数据结构, 但…

【Linux】软硬链接

1 .硬链接 我们知道&#xff0c;真正找到磁盘上文件的并不是文件名&#xff0c;而是inode。 其实在linux中可以让多个文件名对应于同一个inode。 我们可以通过以下命令创建一个文件的硬连接。 ln path(文件的相对/绝对路径) newname&#xff08;新文件名字&#xff09; 通过…

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展&#xff0c;远程安防监控系统已经成为现代社会中不可或缺的一部分&#xff0c;无论是在小区、公共场所还是工业领域&#xff0c;安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台&#xff0c;其在构建远程安防监控系统方面…

电测量数据交换DLMS∕COSEM组件第62部分:COSEM接口类(4)

1.7COSEM服务器模型 COSEM服务器被构建为3层体系结构如图3所示。 图4示例说明如何用COSEM服务器模型构建一台组合式计量设备。 1.8COSEM逻辑设备 1.8.1概述 COSEM逻辑设备包含一组COSEM对象,每个物理设备均应包含一个“Management logical device”。对COSEM逻辑设备…

大模型之战-操作数据表-coze

工作流直接操作数据库啦【何时可以直接访问自己的数据库呢】 1&#xff0c;第一步创建一个bot智能体 1.1&#xff0c;bot中创建数据库表&#xff1a; 1.2&#xff0c;智能体可以通过对话&#xff0c;操作表&#xff1b;【增加&#xff0c;筛选查询等】 1.2.1&#xff0c;增加…

Transformer(课程笔记)

一&#xff1a;Motivation RNN需要顺序的执行&#xff0c;不利于并行计算。 RNN的变体例如GRU、LSTM等需要依靠注意力机制解决信息瓶颈等问题。 抛弃RNN结构&#xff0c;提出了Transformer结构。 Transformer整体架构 二&#xff1a; 输入层&#xff08;BPE&#xff0c;PE&…

第2章-01-网站中的资源介绍

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲。 🎉欢迎 👍点赞✍评论⭐收…

Linux下查看各进程的swap

cat /etc/re*se Red Hat Enterprise Linux Server release 6.8 (Santiago) 简单的可以通过top命令查看 top 后 按 f 进入选择列界面 按 p 就会输出swap信息&#xff08;变为P&#xff09; 回车返回看到SWAP信息了 再按 F 再按p 按swap排序 再回车后就是各进程按swap排序…

linux:进程优先级、环境变量、地址空间

进程优先级 什么叫进程优先级&#xff1f; 进程优先级是指进程获取某些资源的先后顺序 上文中的task_struct&#xff0c;也叫进程控制块&#xff08;PCB&#xff09;&#xff0c;本质上是结构体&#xff0c;我们的优先级就被写在结构体里面&#xff08;内部字段&#xff09;…

wordpress站群搭建6外部库的引入和测试

wordpress站群搭建6wordpress外部库的引入和测试 本次目标我们主要讲解引入wordpress外部库并测试。 我们将一些外部库和工具包放入到pkg项目&#xff0c;方便其他项目引用。 1.安装go-wordpress库 进入到pkg项目 go get github.com/robbiet480/go-wordpress2.编写工具类 …

华为的流程管理

华为建设流程体系始于2000年&#xff0c;那时华为公司面临着快速扩张和全球化发展的挑战&#xff0c;意识到传统的管理模式已经无法满足业务发展的需求。为了提高公司的管理效率和竞争优势&#xff0c;华为决定启动流程体系的建设。在建设过程中&#xff0c;华为借鉴了业界最佳…

Linux命令grep -R

1. Linux 命令grep -R 的基本用法如下。 功能&#xff1a;主要用来搜索指定目录下的所有文件是否包含某个文本等等。 特点: 递归查询. 2. 特殊发现 今天使用时发现&#xff0c;这个命令同样可以从.a&#xff0c;.so 等各种动静态库 搜索出文本&#xff0c; 缺点是没有没有列举…

橙色简洁大气体育直播自适应模板赛事直播门户自适应网站源码

源码名称&#xff1a;酷黑简洁大气体育直播自适应模板赛事直播门户网站 源码开发环境&#xff1a;帝国cms 7.5 安装环境&#xff1a;phpmysql 带采集&#xff0c;可以挂着电脑上自动采集发布&#xff0c;无需人工操作&#xff01; 橙色简洁大气体育直播自适应模板赛事直播门户…

Redis的基本概念和使用

目录 一、Redis简介 1、NOSQL 2、NOSQL和关系型数据库比较 3、主流的NOSQL产品 4、什么是Redis 5、启动Redis 二、Redis基本操作 1、大概操作 三、 Redis 数据类型&#xff08;5种常用&#xff09; 1、redis 数据存储格式 2、String 3、hash 4、list 5、Set 6、…

音频剪辑软件哪个好用?五大音频剪辑软件分享

如果你正打算在家自学视频制作&#xff0c;那么恭喜你&#xff0c;你已经踏上了一段充满魔法与惊喜的旅程&#xff01;不过&#xff0c;别忘了&#xff0c;视频的灵魂不仅仅在于画面&#xff0c;更在于那直击心灵的音效。 想象一下&#xff0c;一个精心剪辑的片段&#xff0c;…

【设计模式】六大原则-下

❓首先什么是设计模式&#xff1f; &#x1f635;相信刚上大学的你和我一样&#xff0c;在学习这门课的时候根本不了解这些设计原则和模式有什么用处&#xff0c;反而不如隔壁的C更有意思&#xff0c;至少还能弹出一个小黑框&#xff0c;给我个hello world。 ✨ 如何你和我一样…

前端基础知识(一些基本标签的用法)

前端&#xff1a;html,css,javascript html:超文本结构化标记语言 使用角度 1、供显示的元素 2、供收集信息的元素 css层叠联样式单 选择器&#xff08;给谁做样式&#xff09; 盒子模型&#xff08;了解html元素内部结构&#xff09; 布局&#xff08;把元素进行摆布&a…