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; 通过…

三个AI智能体开源项目:MetaGPT/AutoGPT/DB-GPT

三个AI智能体开源项目&#xff1a;MetaGPT/AutoGPT/DB-GPT (qq.com) MetaGPT以其元学习的能力&#xff0c;展现出自我优化的独特魅力&#xff1b;AutoGPT则以其自动化的特性&#xff0c;为编程领域带来了革命性的变革&#xff1b;而DB-GPT则在数据库管理领域&#xff0c;以其深…

requests快速入门

1 安装requests库 如果你还没有安装requests库&#xff0c;可以通过pip安装&#xff1a; pip install requests 2 GET请求 GET请求通常用于从服务器请求数据。使用requests.get()函数可以发送GET请求。 2.1 基本使用 import requests url https://api.example.com/da…

如何在Java中将数据库查询结果转换为枚举类型

前言 在开发过程中&#xff0c;我们经常需要将从数据库获取的字符串或数字转换为更具语义的枚举类型。这不仅可以提高代码的可读性&#xff0c;还可以确保类型安全。这时候我们从数据库查出来的值如何通过枚举转换返回&#xff1f; 1. 构建枚举类型 首先&#xff0c;我们需要…

leetcode 括号类型题解

参考宫水三叶题解&#xff0c;非常有启发意义https://leetcode.cn/problems/valid-parenthesis-string/solutions/992601/gong-shui-san-xie-yi-ti-shuang-jie-dong-801rq/ 32. 最长有效括号 使用栈一次遍历&#xff0c;巧妙得出最长有效括号长度 func longestValidParenthes…

【888题竞赛篇】第五题,2023ICPC澳门-传送(Teleportation)

这里写自定义目录标题 更多精彩内容256题算法特训课&#xff0c;帮你斩获大厂60W年薪offer 原题2023ICPC澳门真题传送B站动画详解 问题分析思路分析图的构建最短路径算法具体步骤 算法实现Dijkstra 算法图的构建 代码详解标准代码程序C代码Java代码Python代码Javascript代码 复…

pycharm中gurobi使用指南-变量类型及声明

文章目录 Gurobi 变量声明&#xff1a;全面指南与示例gurobi声明变量的数学含义整数变量&#xff08;Integer Variable&#xff09;定义数学表示示例 二元变量&#xff08;Binary Variable&#xff09;定义数学表示示例 连续变量&#xff08;Continuous Variable&#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逻辑设备…

2024华为OD机试真题- 贪吃的猴子Python-C卷D卷-200分

目录 题目描述 输入描述 输出描述 用例1 用例2 用例3 解题思路 代码 2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述 一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。 猴子获取香蕉,…

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

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

Java--SpringBoot工厂模式

工厂模式 Spring Boot是一个基于Spring框架的快速开发框架&#xff0c;它提供了许多便利的功能来简化企业级应用的开发。在Spring Boot中&#xff0c;工厂模式是一种常用的设计模式&#xff0c;它用于创建对象&#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使用笔记

1.后台运行每天一个日志文件 nohup python3.8 manage.py >> $(date %Y-%m-%d).log 2>&1 &2.目录操作&#xff1a; ls&#xff1a;列出目录内容。cd&#xff1a;改变当前工作目录。pwd&#xff1a;显示当前工作目录的路径。mkdir&#xff1a;创建新目录。rmd…

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排序…