< element-Ui表格组件:表格多选功能回显勾选时因分页问题,导致无法勾选回显的全部数据 >

news2024/9/28 19:18:09

在这里插入图片描述

文章目录

  • 👉 前言
  • 👉 一、解决思路
  • 👉 二、实现代码(仅供参考,具体问题具体分析)
    • > HTML模板
    • > Js模板
  • 往期内容 💨


👉 前言

在 Vue + elementUi 开发中,elementUI中表格在本身是自带多选功能的,但是在某些情况下,并不能完全适用,甚至可能产生bug。例如本次案例所遇Bug,情景如下:

本案例场景:在表单中,通过表单参数筛选某个明细表格数据,后端要求新增时可多选明细表格中的内容。但由于明细列表存在分页的功能,在回显时,由于element表格提供的勾选函数toggleRowSelection(cur, true)),因为数据不全面,只勾选了当前分页的内容

且由于业务需要,通常在表格中多选方法中都会存储勾选的ID或其他数据的逻辑,这就导致第一次回显勾选的数据,因分页数据导致只勾选当前页中包含的明细,然后触发多选方法,覆盖了回显的数据,导致数据丢失!

接下来,简单阐述下,开发中使用的解决方法!方法并不适用,只提供解决思路,具体问题具体分析!仅供参考!


👉 一、解决思路

遇到这种问题,一般的思路是创建一个中间变量来暂存勾选的内容,但是由于业务复杂度问题,需要在前端切换业务域时,通过本地存储暂存当前相关数据,导致回显时,要考虑的逻辑较多,就排除了再新增变量存储的问题,而且也容易存错,导致二次数据覆盖!

回到问题本身,可以看得出来,是由于分页功能导致的数据回显时,勾选不全的问题。所以就这个问题,与后端沟通,添加 usePage参数,区分是否使用分页,在回显勾选内容的方法内调用,当然这种是基于数据量少的地方才能用,而且需要使用loading,避免长时间加载,导致用户以为页面卡死没数据的情况。

在这里插入图片描述

👉 二、实现代码(仅供参考,具体问题具体分析)

> HTML模板

<el-table
	ref="multipleTable"
	:data="tableData"
	tooltip-effect="light"
	:height="tableHeight"
	:max-height="tableHeight"
	:key="formData.ssywy + tableOption.length"
	style="width: 100%"
	v-loading="tableLoading"
	element-loading-text="拼命加载中"
	element-loading-spinner="el-icon-loading"
	element-loading-background="rgba(0, 0, 0, 0.8)"
	row-key="id"
	@selection-change="handleSelectionChange($event)"
>
	<el-table-column
		type="selection"
		width="55"
		reserve-selection
		fixed="left"
		align="center"
	></el-table-column>
</el-table>

<el-pagination
	@size-change="handleSizeChange"
	@current-change="handleCurrentChange"
	:current-page="params.current"
	:page-sizes="[10, 50, 100, 200]"
	:page-size="params.size"
	background
	layout="prev, pager, next, sizes, jumper, total"
	:total="params.total"
></el-pagination>

> Js模板

// 明细列表多选
handleSelectionChange(val) {
	this.multipleSelection = val
	// window.console.log(this.formData.ywyAndRuleDTO, this.multipleSelection, val)
	this.formData.ywyAndRuleDTO[this.formData.ssywy].defectIds = Array.isArray(val) ? [...new Set(val.map(item => item.id))] : []
},
// 多选表格
async toggleSelection(v) {
  // window.console.log(this.formData.ywyAndRuleDTO, v, this.tableData)
  if (v.length !== 0) {
    let params = {
      ...this.params,
      ruleIds: this.formData.ywyAndRuleDTO[this.formData.ssywy].ruleIds.map(item => item.id),
      ywy: this.formData.ssywy,
      zrdwIds: this.formData.beCheckUnitIds.split(','),
      flag: this.formData.execStatus != undefined ? false : true,
      mark: 'export'
    };
    let rs = await this.riskReVerifyCheckDefectList(params)
    this.$refs["multipleTable"].clearSelection();
    this.tableData = rs.rows || [];
    v.forEach((item) => {
      let cur = this.tableData.find((item_1) => {
        return item === item_1.id;
      })
      if(cur) {
        this.$refs["multipleTable"].toggleRowSelection(cur, true);
      }
    });
  } else {
    this.$refs["multipleTable"].clearSelection();
  }
},
// 查询表格内容
async queryTableList(reset) {
  if (reset) {
    this.setPages();
  }
  
  let params = {
    ...this.params,
    ruleIds: this.formData.ywyAndRuleDTO[this.formData.ssywy].ruleIds.map(item => item.id),
    ywy: this.formData.ssywy,
    zrdwIds: this.formData.beCheckUnitIds.split(','),
    flag: this.formData.execStatus != undefined ? false : true
  };
  
  this.formData.ywyAndRuleDTO[this.formData.ssywy].selectDTO = JSON.parse(JSON.stringify(params))
  
  this.tableData = [];
  
  if(!this.formData.ssywy || Array.isArray(this.formData.ywyAndRuleDTO[this.formData.ssywy].ruleIds) && this.formData.ywyAndRuleDTO[this.formData.ssywy].ruleIds.length === 0) {
    this.$message.warning('请先勾选对应业务域的规则信息!')
    return
  }
  this.tableLoading = true;
  
  // 通过异步操作,进行勾选
  await this.toggleSelection(this.formData.ywyAndRuleDTO[this.formData.ssywy].defectIds)
  
  this.riskReVerifyCheckDefectList(params)
    .then((rs) => {
      if (rs && Array.isArray(rs.rows) && rs.rows.length !== 0) {
        this.tableData = rs.rows;
        this.setPages(rs.current, rs.size, rs.records);
      } else {
        this.tableData = [];
        this.setPages();
      }
    })
    .finally(() => {
      this.tableLoading = false;
    });
},

案例较为粗浅,仅供参考! 若有大佬有更好的解决方案,希望大佬们赐教! 目前暂时还没想出比较简洁的办法! 该解决方案并不成熟,仅以抛砖引玉!


往期内容 💨

🔥 < 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >

🔥 < 每日算法 - JavaScript解析:搜索旋转排序数组 >

🔥 < CSS小技巧:类似photoShop的混合模式(mix-blend-mode / background-blend-mode)使用 >

🔥 <开源: 推荐10个开源的前端低代码项目>

🔥 < CSS小技巧:那些不常用,却很惊艳的CSS属性 >

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

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

相关文章

Linux服务器怎么修改系统时间

Linux服务器怎么修改系统时间 linux服务器的系统时间&#xff0c;有的时候会产生误差&#xff0c;导致我们的程序出现一些延迟&#xff0c;或者其他的一些错误&#xff0c;那么怎么修改linux的系统时间呢&#xff1f; 我是艾西&#xff0c;今天又是跟linux小白分享小知识的时间…

C语言函数大全-- l 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- l 开头的函数 1. labs&#xff0c;llabs 1.1 函数说明 函数声明函数功能long labs(long n);计算长整型的绝对值long long int llabs(long long int n);计算long long int 类型整数的绝对值 1.2 演示示例 #include <stdio.h> …

Python-Python基本用法(全:含基本语法、用户交互、流程控制、数据类型、函数、面向对象、读写文件、异常、断言等)

1 环境准备 编辑器&#xff1a;Welcome to Python.org 解释器&#xff1a;pycharm&#xff1a;Thank you for downloading PyCharm! (jetbrains.com) 2 Quick start 创建项目 new project create demo print(Dad!!)3 基本语法 3.1 print 直接打印 print(Dad!!)拼接打印…

记录-Vue.js模板编译过程揭秘:从模板字符串到渲染函数

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 Vue.js是一个基于组件化和响应式数据流的前端框架。当我们在Vue中编写模板代码时&#xff0c;它会被Vue编译器处理并转换为可被浏览器解析的JavaScript代码。Vue中的模板实际上是HTML标记和Vue指令的组…

STM32HAL库 串口USART的使用

STM32HAL库 串口USART的使用 文章目录STM32HAL库 串口USART的使用前言一、配置USART1串口通信引脚二、使用步骤三、串口中断回调函数1. 配置2. 在icode中增加usart.c和usart.h文件3. 中断处理对比4. 编写串口控制程序总结前言 本文为串口输出打印的hal库&#xff0c;参考洋桃电…

【LeetCode】剑指 Offer 57. 和为 s 的数字 p280 -- Java Version

1. 题目介绍&#xff08;57. 和为 s 的数字&#xff09; 面试题57&#xff1a;和为 s 的数字&#xff0c; 一共分为两小题&#xff1a; 题目一&#xff1a;和为 s 的两个数字题目二&#xff1a;和为 s 的连续正数序列 2. 题目1&#xff1a;和为s的两个数字 题目链接&#xff1…

图结构基本知识

图1. 相关概念2. 图的表示方式3. 图的遍历3.1 深度优先遍历&#xff08;DFS&#xff09;3.2 广度优先遍历&#xff08;BFS&#xff09;1. 相关概念 图G(V,E) &#xff1a;一种数据结构&#xff0c;可表示“多对多”关系&#xff0c;由顶点集V和边集E组成&#xff1b;顶点(vert…

数据库管理-第六十七期 SQL Domain 2(20230414)

数据库管理 2023-04-14第六十七期 SQL Domain 21 Domain函数示例总结第六十七期 SQL Domain 2 昨晚割接&#xff0c;搭了一套19c的ADG&#xff0c;今天睡了个懒觉&#xff0c;早上把笔记本内存扩到了64GB&#xff0c;主要是为了后面做实验。然后下午拼了个乐高&#xff0c;根据…

Excel小技巧:对比两列数据的异同、vlookup使用方法

目录 问题一&#xff1a; 在联盟对接的时候&#xff0c;团购站会推送一个返利值&#xff0c;称为“推送返利”&#xff0c;联盟后台又会计算一个返利值&#xff0c;称为“计算返利”。当团购站的推送返利与计算返利相同的时候&#xff0c;我们才认为这个团购站在返利上对接完…

JMeter全局变量在使用时第一次取到null的问题解决

1. 在执行JMeter测试时&#xff0c;登录操作只需要执行一次。这样就需要用到全局变量&#xff0c;但在前一个提取器执行了请求后&#xff0c;如果返回结果是json格式的数据&#xff0c;会在下面添加一个JSON提取器&#xff0c;并在json提取器下会添加一个后置BeanShell PostPro…

10个镜像网站工具箱供你使用,不注册ChatGPT也能免费使用ChatGPT

ChatGPT已经成为了人工智能技术中备受瞩目的一员&#xff0c;它可以为我们带来更加智能化、个性化的交互体验。对于没有ChatGPT账号或者不想注册账号的人来说&#xff0c;他们可能会错过这种神奇的体验。 而本篇文章就帮大家解决这个问题&#xff0c;不用登录ChatGPT账号&…

Spark 写 MySQL经典50题

目录 建表 & 添加数据 表结构分析图 连接数据库 题目 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数 3、查询平均成绩大于等于60分的同学的学生编号和学…

如何将GIS地图和可视化结合使用实现更好的数据呈现

GIS&#xff08;地理信息系统&#xff09;和可视化&#xff08;visualization&#xff09;是两个紧密相关的领域。GIS是一种用于管理、分析和展示地理空间数据的技术&#xff0c;而可视化则是一种用图形、图表、动画等形式展示数据的方式。GIS地图则是指基于地理信息系统技术&a…

【举一反三】只出现一次的数字

本文&#xff0c;讲位运算——异或运算。因为题干中说明要线性时间复杂度&#xff0c;所以采用位运算进行操作&#xff0c;而没有采用哈希表。 目录 1.只出现一次的数字 I 2.只出现一次的数字 II 3.只出现一次的数字 III 1.只出现一次的数字 I 136. 只出现一次的数字 - 力扣&…

浅析Dubbo核心设计

大家好&#xff0c;我是易安&#xff01; 当今互联网时代&#xff0c;随着企业业务的不断扩展和用户量的增加&#xff0c;分布式系统已成为大型企业必不可少的组成部分。而Dubbo框架作为阿里巴巴开源的高性能Java RPC框架&#xff0c;一直以来都备受关注和使用。其核心设计思想…

机器学习正以惊人的速度破解宇宙奥秘

宇航员、科学家和其他以探索并记录终极边界为己任的人们&#xff0c;才积极转向机器学习&#xff08;ML&#xff09;以协助应对自己面临的非凡挑战。从引导火箭穿越太空到研究遥远行星的表面&#xff0c;再到测量宇宙大小和计算天体的运动轨迹&#xff0c;AI在太空中拥有着众多…

300左右蓝牙耳机推荐,口碑好的平价蓝牙耳机选购指南

300元预算&#xff0c;想入手一款最值得蓝牙耳机&#xff0c;咋选&#xff1f;作为一个有4年玩机经验的爱好者&#xff0c;蓝牙耳机推荐性价比高的产品&#xff0c;今天就总结了几款目前很受欢迎&#xff0c;同时性能各方面都不错的机型&#xff0c;选对这几款&#xff0c;不用…

WIN10、WIN11 新电脑配置

WIN10、WIN11 新电脑配置WIN10、WIN11 新电脑配置开启管理员模式启用power shell脚本WIN10、WIN11 新电脑配置 开启管理员模式 WIN11 下没有安装本地安全策略组件&#xff0c;表现为CMD运行 secpol.msc 命令会提示异常 开启本地安全策略 echo off pushd "%~dp0"…

电脑上怎么把PDF转换成PPT?几步教你轻松转换

PDF文件是一种常见的办公文档格式&#xff0c;它具有固定格式和内容不易改变的特点&#xff0c;广泛应用于各种正式场合。虽然各种办公软件都能够将文件转换为PDF格式&#xff0c;但如果需要将PDF文件转换为其他格式&#xff0c;就需要使用专门的工具了。今天我们将介绍两款常用…

论文解读 | 解耦知识蒸馏

10 年来&#xff0c;DNN 的变革给计算机视觉领域带来了重大发展&#xff0c;促成了各种实时任务的繁荣&#xff0c;如图像分类、目标检测、语义分割等。然而强大的网络通常得益于大的网络容量&#xff0c;这通常以大量的计算和存储为代价&#xff0c;是工业应用所不喜欢的。在工…