使用ElementUI的el-tab+vxe-table表格+复选框选择

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

功能:首先进来是全部清空的状态的

  1. 点击左边选择不同项右边会实时发送接口获取数据填充表格

  2. 复选的内容可以保留显示,比如A的1勾选后切换到B再切换回来A的1仍然是勾选状态

说实话官网的setCheckboxRow方法我实现不了,这里就是纯蠢蠢的办法实现,在这里做个记录,能用咱就用着,有更好的办法就下次一定

适用el-tabs来实现该样式,关键点是:checkbox-config="{ checkField: 'checked', checkRowKey: 'checked' }"这个配置 ,vxe-table表格会根据checked的状态来判断是否给勾选状态

(我加了checkField这个后会默认给每个行添加字段checked,如果表格的数据没有这一项只需要在获取第一个表格数据的时候手动添加checked这个属性,例如后面我在init函数中加的)

<el-tabs tab-position="left" @tab-click="handleClick"><el-tab-pane v-for="(item, index)  in tabs" :key="item.testItemCode" :label="item.testGroupName"><vxe-table :ref="'table' + index" :data="testItemData" auto-resize align="center"  :checkbox-config="{ trigger: 'row', checkField: 'checked', checkRowKey: 'checked' }" @checkbox-all="selectAllEvent" @checkbox-change="selectChangeEvent"><vxe-table-column type="checkbox" width="50"><vxe-table-column type="checkbox" width="50"></vxe-table-column><vxe-table-column type="seq" title="序号" width="50"></vxe-table-column><vxe-table-column field="testItemName" title="测试项"></vxe-table-column><vxe-table-column field="testItemCode" title="测试项编码"></vxe-table-column><vxe-table-column field="testTypeName" title="测试类型"></vxe-table-column></vxe-table></el-tab-pane>
</el-tabs>        
  • 在Init初始化的时候就都给一个默认的属性checked = false,每次点击勾选的时候就把它存起来,取消勾选就把这一项删除,这里用curSelectedList来存储选中项的
  • tab-click点击事件中也就是切换tab时发送不同的请求获取表格数据,如果该数据在curSelectedList中的话我们就把他的``checked属性设置为true`,就实现了选中的状态
  • 最后确认的时候就把curSelectedList的数据传出去就好了,也就是选中的项
// 页面刚进来的时候就获取第一组数据init() {this.tabs = this.testGroupNameListthis.getTestItemData(this.tabs[0].testGroupCode)},
// 获取测试项
async getTestItemData(testGroupCode) {this.testItemData = await getItemCodesOfGroup({testNo: this.testNo,testGroupCode,entityCode: this.entityCode})//🛑上面的就是获取数据,这里比较关键,不写的话进来第一次就会勾选不了this.testItemData.forEach(i => i.checked = false)
},  
async handleClick(tab) {// 先通过左边的选择获取相应的表格数据,这里也是获取数据await this.getTestItemData(this.tabs.find(v => v.testGroupName == tab.label).testGroupCode)//🛑 这里比较关键,如果在已选择的列表内,就设置为选中状态if (this.curSelectedList.length) {this.testItemData.forEach(item => {this.curSelectedList.forEach(item2 => {if (item.testItemName == item2.testItemName) {item.checked = true}})})}},
// 复选框事件selectChangeEvent(selection) {// 选中时保存选中项if (selection.checked) {this.curSelectedList.push(selection.row)this.curSelectedList = this.unique(this.curSelectedList, 'testItemName')} else {// 取消时删除选中项this.curSelectedList = this.curSelectedList.filter(item => item.testItemName != selection.row.testItemName)}
},// vxe复选框当前页全选中方法selectAllEvent(selection) {// 选中时保存选中项if (selection.checked) {this.curSelectedList.push(...selection.records)this.curSelectedList = this.unique(this.curSelectedList, 'testItemName')} else {// 取消时删除选中项selection.$table.tableData.forEach(item => {this.curSelectedList = this.curSelectedList.filter(item2 => item2.testItemName != item.testItemName)})}
},  
// 通过testItemName去重函数 ,testItemCode不是唯一的
unique(arr, attr) {const map = new Map()const result = []for (const item of arr) {if (!map.has(item[attr])) {map.set(item[attr], true)result.push(item)}}return result
},  
// 确认选择测试项,这里就是把当前选中项传给父组件的
doChoose() {this.curSelectedList = this.unique(this.curSelectedList, 'testItemName')this.$emit('getTestItemList', this.curSelectedList)this.closeDialog()},

肯定有更简单的方法,也有更加简洁的方法,我这个就比较冗余然后就是为了实现功能,大家仅供参考

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

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

相关文章

2024年华夏银行总行社会招聘公告

信息科技部自动化测试与开发类岗  工作地点&#xff1a;北京市 学历要求&#xff1a;本科及以上 工作职责 1、持续推进自动化测试的开展&#xff0c;提升自动化测试覆盖率,包括方案设计、测试分析、测试执行和总结等。 2、负责自动化测试工具和框架搭建&#xff0c;根据…

CSAPP阅读笔记-信息的表示和处理

信息的表示和处理 包括整数、浮点数的存储格式、计算中可能存在的问题等 信息存储 大多数计算机使用8位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c…

fisco-bcos部署pro生产版本

我这里使用的 Ubuntu20.4系统&#xff0c;linux系统把操作命令apt改为yum即可 升级安装包 apt-get update 安装jdk&#xff0c;我这里使用jdk17 apt -y install openjdk-17-jdk-headless 查看java版本 java -version 安装依赖 apt-get install -y curl docker.io docker-com…

【Databend】行列转化:一行变多行和简单分列

文章目录 数据准备和需求生成序列和分隔函数根据分隔符变多行JSON 数据简单分列总结 数据准备和需求 行列转化在实际工作中很常见&#xff0c;其中最常见的有一行变多行&#xff0c;有下面一份数据&#xff1a; drop table if exists fact_suject_data; create table if not …

基于SSM+JSP的订餐管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

金融疆界:在线支付系统渠道网关的创新设计(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;11.1&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 整个渠道网关的内容预计会分成5篇来讲&#xff1a;1&#xff09;定位、术语、概要设计。2&#xff09;领域模型、状态机设计。3…

数据结构第十三弹---链式二叉树基本操作(上)

链式二叉树 1、结构定义2、手动创建二叉树3、前序遍历4、中序遍历5、后序遍历6、层序遍历7、计算结点个数8、计算叶子结点个数9、计算第K层结点个数10、计算树的最大深度总结 1、结构定义 实现一个数据结构少不了数据的定义&#xff0c;所以第一步需要定义二叉树的机构。 typ…

学习笔记-mysql基础(DDL,DML,DQL)

一.DDL DDL,Data Definition Language,数据库定义语言,该语言包括以下内容: 对数据库的常用操作对表结构的常用操作修改表结构 1.对数据库的常用操作 -- 查看所有的数据库 show databases -- 创建数据库 create database [if not exists] test [charsetutf8] -- 切换 选择 …

记录汇川:H5U与Factory IO测试12

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 辅助出料 子程序&#xff1a; 自动程序 Factory IO配置&#xff1a; 实际动作如下&#xff1a; Factory IO测试12

基于SSM的仓库在线管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

20-链表-删除链表中的节点

这是链表的第20题&#xff0c;力扣链接。 有一个单链表的 head&#xff0c;我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的&#xff0c;并且保证给定的节点 node 不是链表中的最后一个节点。 删除…

支持向量机(公式推导+举例应用)

文章目录 引言间隔与支持向量机对偶问题&#xff08;拉格朗日乘子法&#xff09;SMO算法核函数软间隔与正则化软间隔正则化&#xff08;罚函数法&#xff09; 模型的稀疏性结论实验分析 引言 在机器学习领域&#xff0c;支持向量机&#xff08;Support Vector Machine&#xf…

蓝牙音视频远程控制协议(AVRCP) AV/C command格式介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

生产数据不备份,用时两行泪

背景&#xff1a;项目使用pg一主一从&#xff0c;因慢sql导致查询慢&#xff0c;所以想从原本的4核加到16核&#xff0c;联系好运维后&#xff0c;打算先从从库开始操作&#xff0c;机器上的pgsql都正常关闭&#xff0c;然后停止&#xff0c;关机&#xff0c;扩容一切都很顺利&…

OpenCV-Python(34):FAST算法

目标 理解 FAST 算法的基础使用OpenCV 中的FAST 算法相关函数进行角点检测 介绍 FAST算法&#xff08;Features from Accelerated Segment Test&#xff09;是一种用于在图像中快速检测角点的算法。它是一种基于像素的检测方法&#xff0c;具有高效、准确的特点&#xff0c;常…

【算法分析与设计】最短路径和

题目&#xff1a; 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例&#xff1a; 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],…

【PHP AES加解密示例】从入门到精通,一篇文章让你掌握加密解密技术!

一、引言 随着互联网的普及&#xff0c;数据安全问题越来越受到人们的关注。在众多加密算法中&#xff0c;AES&#xff08;Advanced Encryption Standard&#xff09;因其高效、安全的特点被广泛应用。本文将通过PHP语言&#xff0c;为大家展示一个简单的AES加解密示例&#x…

Retinal Structure Detection in OCTA Image viaVoting-Based Multitask Learning

一、摘要 研究背景&#xff1a;自动检测视网膜结构&#xff0c;如视网膜血管(RV)、中央凹血管区(FAZ)和视网膜血管连接(RVJ)&#xff0c;对了解眼部疾病和临床决策具有重要意义。 主要工作&#xff1a;在本文中&#xff0c;提出了一种新的基于投票的自适应特征融合多任务网络…

Pr模板(剪辑素材),Pr预设(视频转场,调色),Pr插件,Pr教程,Pr模板网

PR模板,免费Premiere模板下载网站.logo片头模板,标题字幕,样机相册,节奏快闪,开场预告,转场特效,图文照片,抖音自媒体Vlog短视频模板等Premiere项目工程源文件模板下载 Pr模板&#xff1a;https://prmuban.com/template PR预设,PR转场预设,PR调色预设,Pr剪辑视频特效PR预设.pr…

优化的实时换脸项目——DeepFaceLive

DeepFaceLive是一款基于人工智能技术的换脸工具&#xff0c;可以实现实时面部捕捉和换脸效果。它利用深度学习和计算机视觉算法&#xff0c;能够以惊人的准确度和速度将脸部特征无缝地映射到任何人的脸上。DeepFaceLive的特点是可以实时换脸&#xff0c;让用户通过网络摄像头应…