vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
一、vue+elementui实现下拉表格多选+搜索1.0
二、vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
在1.0的基础上,终于可以实现在下拉框表格分页的前提下不同页码的回显辣,分页是前端来分页的(代码略乱且没有封装还很长,随便看看吧)
1、在使用之前首先要安装Element-ui
1-1、template
<template><div class="goodsindex"><div class="allBox" v-loading="isloading"><el-selectid="equBox"ref="select"clearablemultiplev-model="group.equIdList"placeholder="请选择设备"@change="handleEquId"@click.native="deptogglePanel($event)"><el-optionv-for="(item, i) in group.pageAllList":key="i":label="item.equNumber":value="item.equId"></el-option></el-select><divv-if="group.showTree"class="treeDiv"id="treeDiv"ref="tableList":style="{ top: group.equBoxTop + 'px' }"><div class="equSElect"><el-inputv-model="group.name"clearablesize="mini"style="margin-right: 15px; width: 50%"placeholder="设备编码/名称"@keyup.enter.native="select"></el-input><el-button type="primary" size="mini" @click="select">搜索</el-button></div><!-- 检索结果 --><el-table:data="group.pageList"bordersize="mini"style="margin: 10px 0"ref="multipleTable"id="multipleTable"row-key="equId"@row-click="handleRegionNodeClick"@select="handleCheckBox"@select-all="handleSelectAll"@selection-change="selectionChangeHandle"><el-table-columntype="selection"header-align="center"align="center"width="50"></el-table-column><el-table-columnprop="equNumber"header-align="center"align="center"label="设备编码"min-width="180"></el-table-column><el-table-columnprop="equName"header-align="center"align="center"label="设备名称"min-width="180"></el-table-column></el-table><!-- 分页 --><el-paginationbackground@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="group.currentPage":page-size="group.pageSize"layout="total, prev, pager, next":total="group.totalPage"></el-pagination></div></div></div>
</template>
1-2、script
export default {data() {return {isShowSelect: true, //隐藏select本来的下拉框group: {name: "",// 搜索pageAllList: [], // 下拉框数据pageList: [], // 表格数据showTree: false, // 表格显示隐藏isbg: false, //整体背景equIdList: [],// 下拉框选中数据multipleSelection: [], // 表格选中数据equBoxTop: 46,// 表格原始定位topcurrentPage: 1,pageSize: 8, totalPage: 0,},};},computed: {},watch: {isShowSelect(val) {// 隐藏select自带的下拉框this.$refs.select.blur();},},async created() {await this.getSelectList();await this.getDataList();await this.getPage(this.equIdList);},methods: {//下面的方法是进行设置行标识key的方法getRowKeys(row) {return row.equId;},//设备handleEquId(val) {this.group.multipleSelection = val;this.getDataList();},// 分页handleSizeChange(val) {this.group.pageSize = val;this.getDataList();},// 分页handleCurrentChange(val) {this.group.currentPage = val;this.getDataList();},//搜素select() {this.group.currentPage = 1;this.getDataList();},// 设备下拉选获取选中页数 回显的时候计算出第一条数据在那一页async getPage(equInfoIds) {let equId = equInfoIds;let pageIndex = 0;let pageIndexArr = [];for (let i in this.group.pageAllList) {for (let j in equId) {if (equId[j] == this.group.pageAllList[i].equId) {pageIndex = Math.floor(i / this.group.pageSize) + 1;if (i == 0) {pageIndex = 1; // 如果是第一条数据,它在第一页}pageIndexArr.push(pageIndex);}}}const uniqueArr = Array.from(new Set(pageIndexArr));this.group.currentPage = uniqueArr[0];// console.log("那一页", uniqueArr);await this.getDataList();},//获取表格列表async getDataList() {this.isloading = true;await this.Sevice({url: "/select",method: "post",params: {name: this.group.name,},}).then((res) => {if (res && res.code == 200) {// res.select的数据类型 [{equId:1,equNumber:2,equName:3}]this.group.pageList = res.select;this.group.pageList = this.group.pageList.slice((this.group.currentPage - 1) * this.group.pageSize,this.group.currentPage * this.group.pageSize);this.group.totalPage = res.select.length;this.$nextTick(() => {if (this.$refs.multipleTable) {this.group.pageList.forEach((item, index) => {if (this.group.multipleSelection.findIndex((v) => v == item.equId) >= 0) {this.$refs.multipleTable.toggleRowSelection(this.$refs.multipleTable.data[index],true);}});}});// console.log("multipleSelection", this.multipleSelection);} else {this.group.pageList = [];this.group.totalPage = 0;}}).catch((err) => {console.log(err);});this.isloading = false;},// 下拉框列表(因为有接口有搜索,所以下拉框和表格分两个接口获取)async getSelectList() {this.isloading = true;await this.Sevice({url: "/select",method: "post",}).then((res) => {if (res && res.code == 200) {// res.select的数据类型 [{equId:1,equNumber:2,equName:3}]this.group.pageAllList = res.select;}}).catch((err) => {console.log(err);});this.isloading = false;},// 多选selectionChangeHandle(val) {this.showTree = true;},//该方法是单选时的方法handleCheckBox(rows, row) {this.showTree = true;if (this.group.multipleSelection.find((item) => item == row.equId)) {//下面这个filter方法就是删除的方法this.group.multipleSelection = this.group.multipleSelection.filter((item) => item != row.equId);} else {this.group.multipleSelection.push(row.equId);}// console.log("选中id2:", this.group.multipleSelection);this.group.equIdList = this.group.multipleSelection;},//该方法是当页全选的方法handleSelectAll(rows) {this.showTree = true;if (rows.length) {rows.forEach((row) => {if (!this.group.multipleSelection.find((item) => item == row.equId)) {this.group.multipleSelection.push(row.equId);}});} else {this.group.pageList.forEach((row) => {this.group.multipleSelection = this.group.multipleSelection.filter((item) => item != row.equId);});}// console.log("选中id1:", this.group.multipleSelection);this.group.equIdList = this.group.multipleSelection;},// 点击input 阻止冒泡 控制table显示隐藏async deptogglePanel(event) {// console.log(event);this.group.isbg = true;this.isShowSelect = !this.isShowSelect; //隐藏select本来的下拉框event || (event = window.event);event.stopPropagation? await event.stopPropagation(): (event.cancelBubble = true);this.group.showTree ? await this.tableHide() : await this.tableShow();await this.getDataList();},//隐藏表格async tableHide() {this.group.showTree = false;await document.addEventListener("click", this.tableHideList, false);},//显示表格async tableShow() {this.group.showTree = true;await document.addEventListener("click", this.tableHideList, false);this.$nextTick(() => {let equBox = document.getElementById("equBox").offsetHeight;this.group.equBoxTop = equBox + 10; // 表格的高度定位,应该按照所选择的});},async tableHideList(e) {let that = this;that.$nextTick(async () => {let multipleTable = document.getElementById("treeDiv");if (multipleTable && !multipleTable.contains(e.target)) {await that.tableHide();}});},// 点击table节点async handleRegionNodeClick() {this.showTree = true;},},
};
</script>
1-3、style
<style scoped>
.allBox {position: relative;width: 100%;
}
.equSElect {display: flex;
}
.treeDiv {position: absolute;top: 46px;z-index: 9999999 !important;width: calc(100% - 20px);overflow: auto;max-height: 390px;border-radius: 6px;background: #ffffff;padding: 8px 10px;box-shadow: 0 5px 5px #cccbcb;border: 1px solid #e6e5e5;margin: 0 10px;
}.treeDiv::-webkit-scrollbar {/*滚动条整体样式*/width: 4px;/*高宽分别对应横竖滚动条的尺寸*/height: 4px;
}.treeDiv::-webkit-scrollbar-thumb {/*滚动条里面小方块*/border-radius: 5px;-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);background: rgba(0, 0, 0, 0.2);
}.treeDiv::-webkit-scrollbar-track {/*滚动条里面轨道*/-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);border-radius: 0;background: rgba(0, 0, 0, 0.1);
}.treeDiv .el-table {font-size: 14px;
}.treeDiv .el-table /deep/ td {padding: 4px 0;
}
</style>
2、完结撒花(后期我一定会封装的 立个flag)
相关文章:

vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
一、vueelementui实现下拉表格多选搜索1.0 二、vueelementui实现下拉表格多选搜索分页回显全选2.0 在1.0的基础上,终于可以实现在下拉框表格分页的前提下不同页码的回显辣,分页是前端来分页的(代码略乱且没有封装还很长,随便看看…...
电商系统-产品经理
电视产品经理的工作体系: 产品经理的分类与职责 C端产品经理:面向个人用户,关注用户体验和产品易用性B端产品经理:面向企业客户,注重功能完整性和商业价值专业方向细分: 用户产品经理:专注用户…...

《庐山派从入门到...》PWM板载蜂鸣器
《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用…...

【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
2024年12月3日,河南省财政厅发布了《关于省级政务信息化建设项目支出预算标准的规定》豫财预〔2024〕105号。《关于省级政务信息化建设项目支出预算标准的规定 (试行)》(豫财预 〔2020〕81号)同时废止。新的豫财预〔20…...

【数据结构】数据结构整体大纲
数据结构用来干什么的?很简单,存数据用的。 (这篇文章仅介绍数据结构的大纲,详细讲解放在后面的每一个章节中,逐个击破) 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢ÿ…...

【C++基础】09、结构体
一、结构体(struct) C/C 数组允许定义可存储相同类型数据项的变量,但是结构体是 C 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。 结构体用于表示一条记录,假设现在想要跟踪图书馆中书本的动态,可能需要跟踪每…...

大恒相机开发(2)—Python软触发调用采集图像
大恒相机开发(2)—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序,用于从大恒相机采集图像,通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码: # version:…...

QT的前景与互联网岗位发展
qt是用来干什么的 --》桌面应用开发(做电脑的应用程序,面对客户端)。 主要用于开发跨平台的应用程序和用户界面(UI)。它是一个全面的C库集合,提供了构建软件应用所需的各种工具和功能。 客户端开发的重…...

青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
近日,工业和信息化部公示了“2024年网络安全技术应用典型案例拟支持项目名单”,青藤云安全联合某股份制银行共同申报的主机威胁狩猎平台项目凭借其技术先进性及行业示范性成功入选。 网络安全技术应用试点示范工作是由工业和信息化部、国家互联网信息办公…...
NVIDIA GPU 内部架构介绍
NVIDIA GPU 架构 NVIDIA GPU 的 SM(Streaming Multiprocessor) 和 GPC(Graphics Processing Cluster) 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能,以下是对这两个参数的详细介绍: 1. …...

重温设计模式----装饰模式
文章目录 装饰模式定义UML 图其主要优点包括:装饰模式的主要角色有:C 代码示例总结 装饰模式定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式必生成子类更加灵活 装饰模式(Decorator Pattern&…...

第十六章 C++ 字符串
C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此,一个以 null 结尾的…...
MySQL中Seconds_Behind_Master是怎么计算的
目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…...
React Native 集成原生Android功能
React Native 集成原生功能完整指南 前言 在 React Native 开发中,我们经常需要使用设备的原生功能,比如蓝牙、打印机等。本文将以集成打印机功能为例,详细介绍如何在 React Native 项目中集成 Android 原生功能。 集成步骤概述 创建原生…...
Mac mini m4安装PD和Crack和关闭SIP
文章目录 说明PD下载地址Crack下载地址PD版本补丁版本说明SIP简介SIP关闭方法启用 SIP:补充说明 说明 参考文章地址 PD下载地址 PD20.0.0 PD20.0.1 PD20.1.0 PD20.1.1 PD20.1.2 PD20.1.3 Crack下载地址 Parallels Desktop Activation Tool PD版本补丁版本…...
详解C语言中的关键词:extern以及它需要注意的事项
extern 是C语言中一个非常重要的关键字,用于声明变量或函数的 外部链接性,即在当前文件中使用另一个文件中定义的变量或函数。以下是 extern 的作用和使用场景: 1. extern 的作用 跨文件访问: extern 告诉编译器,某个…...

框架程序设计-简答以及论述
目录 maven的pom作用: Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用,redis配置过程 Redis配置过程: SpringBoot缓存配置过程: AOP的五种增强注解: 论述题:包结构作用、…...

ce第六次作业
1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。 [rootServer ~]# yum install -y mailx [rootServer ~]# yum -y install bind-utils [rootServer ~]# vim /etc/mail.rc set from15339…...
为何页面搜索应避免左模糊和全模糊查询???
前言 在构建高效且可扩展的Web应用程序时,数据库查询的性能是影响用户体验的关键因素之一。特别是对于涉及大量数据的页面搜索功能,选择正确的查询方式不仅可以提升应用的速度,还能显著改善用户交互体验。 B-Tree索引与最左前缀匹配特性 1…...

AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
前言 在当今科技迅猛发展的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活与工作方式。作为AI领域的重要盛会,CSIG青年科学家会议AI可信论坛汇聚了众多青年科学家与业界精英,共同探讨AI技术的最新进展、挑…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...