element ui实现多层级复杂表单的操作(添加与回显)之回显功能实现

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

前言

现在是2022年5月3日17:02:30!文接上两篇。

[element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作](element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作_穆雄雄的博客-CSDN博客)

[element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现]((30条消息) element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现_穆雄雄的博客-CSDN博客)

这是最后一篇文章,前两篇主要介绍了页面的操作以及添加功能的实现,本篇文章我们来看看elementui复杂表单下,如何进行回显。

因为这一块儿的前后端都是我自己写的,所以就比较灵活了,前端想要什么样的数据,自己说了算,然后后端就给其封装一个什么样的数据。

父组件引入子组件

[element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作](element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作_穆雄雄的博客-CSDN博客)第一篇文章我就分析过,这是一个多层级的表单,所以避免不好要使用循环来实现,于是我就在后台封装了两个对象,一个是最外面基本信息的数据,另一个就是采集数据的配置信息。

代码实现如下:

	/*** 根据设备编号查询配置文件* @return*/@GetMapping("/getDataSourceConfigInfo")@ApiOperationSupport(order = 6)@ApiOperation(value = "根据设备编号查询配置文件", notes = "传入device")public R getDataSourceConfigInfo(Long deviceId){//获取设备的信息Device device = deviceService.getById(deviceId);LambdaQueryWrapper<DataSourceConfig> dataSourceConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();dataSourceConfigLambdaQueryWrapper.eq(DataSourceConfig::getDeviceId,deviceId);//拿到配置信息的集合List<DataSourceConfig> dataSourceConfigList = dataSourceConfigService.list(dataSourceConfigLambdaQueryWrapper);Map<String,Object> map = new HashMap<>();map.put("device",device);map.put("dataSourceConfigList",dataSourceConfigList);return R.data(map);}

设备的信息都放在了device对象中,配置信息都放在了dataSourceConfigList集合中,这样放的目的就是在前台好遍历。

前台用的子父组件实现的,父组件中引用子组件:

  • 引入子组件:
import editDevice from "./editDevice.vue";
 components: {addDevice,editDevice,viewDevice,},
  <el-dialogtitle="编 辑":visible.sync="editDeviceDialogVisible":append-to-body="true"width="70%"><editDevice:editDeviceData="editDeviceData"@editDeviceResult="editDeviceResult"@quxiaoClickResult="quxiaoClickResult"></editDevice></el-dialog>

其中:editDeviceData是传递给子组件的数据,也就是在控制器中封装查出来的。

editDeviceResult是子组件传递给父组件的方法,我这边是子组件点击了确定之后,告诉父组件一下,然后将其dialog窗体关闭。分别对应的方法如下:

  1. editDeviceData数据获取的方法:
 /*查看设备的按钮*/viewDevice(row){//获取详细信息getDataSourceConfigInfo(row.id).then((res) => {this.editDeviceData =res.data.data;this.viewDeviceDialogVisible  = true;});},
  1. editDeviceResult编辑成功之后的方法:
  //编辑设备完成editDeviceResult(val){if(val==true){//关掉添加的窗体this.editDeviceDialogVisible = false;//刷新设备的信息this.refreshChangeCard();}},
  1. quxiaoClickResult子组件中取消按钮的实现方法:
 //添加和修改的子组件取消按钮点击事件quxiaoClickResult(val){if(val==true){//关掉添加的窗体this.addDeviceDialogVisible = false;this.editDeviceDialogVisible = false;this.viewDeviceDialogVisible = false;//刷新设备的信息this.refreshChangeCard();}},

子组件中实现回显

子组件的核心代码就一个方法,即拿到父组件传过来的数据,进行遍历的显示在页面上。

props:{editDeviceData: {type:Object}},

mounted中调用展示数据的方法:

//获取设备的信息this.getDeviceInfo();

methods中实现展示数据、封装数据的方法:

   //获取设备的信息getDeviceInfo(){let mapObject = this.editDeviceData;this.form = mapObject.device;this.dialogImageUrl = this.form.certificateImgUrl;this.productImgs.push({name: '',url: this.dialogImageUrl,});let deviceSdkPackage = mapObject.device.deviceSdkPackage.substring(mapObject.device.deviceSdkPackage.lastIndexOf(".")+1);this.form.deviceSdkPackage = deviceSdkPackage;this.attribute.length = mapObject.dataSourceConfigList.length;for(var i =0;i< this.attribute.length;i++) {let dataSourceConfig = mapObject.dataSourceConfigList[i];this.deviceDataCheck[i] = dataSourceConfig.dataCollectionType;this.samplingFrequency[i] = dataSourceConfig.samplingFrequency;this.schemeOfDataSourceType[i] = dataSourceConfig.schemeOfDataSourceType;this.countOfCompound[i] = dataSourceConfig.countOfCompound;this.measurePeriodExist[i] = dataSourceConfig.measurePeriodExist+"";var countOfCompoundLength =  this.countOfCompound[i];var dataSourceType = (dataSourceConfig.dataSourceType).split(",");var unitCode = (dataSourceConfig.unitCode).split(",");var dataType = (dataSourceConfig.dataType).split(",");var metricSpec = (dataSourceConfig.metricSpec).split(",");this.formList[i]=[];for(var j = 0;j<dataSourceType.length;j++){this.formList[i].push({dataSourceType: dataSourceType[j],unitCode: unitCode[j],dataType: dataType[j],metricSpec: metricSpec[j],});}}},

以上代码,回显即可实现,实际上后台的代码不是很多,前端代码要比较多点儿,但是只要你思路理清了,其实也没有太复杂。

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

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

相关文章

在Mac的Docker中运行DotNetCore2.0

最近学习Angular4&#xff0c;服务端准备使用DotNetCore API来实现&#xff0c;本文简单介绍下在Mac中怎样将DotNetCore程序部署在Docker中&#xff0c;并使用Nginx做反向代理让程序可以跑起来。 具体步骤如下 安装Docker拉取DotNetCore镜像使用VS For Mac创建DotNetCore应用…

springboot实现复杂业务下的更新操作

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月4日19:25:55&#xff01;今天写了个这样的功能&#xff1a; 某用户在一天内有多个训练项目&#xff0c;比如&#xff1a;晨跑&#xff0c;有氧训练&#xff0c;跳绳这…

elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月5日22:48:21&#xff01; 今天在使用element-ui中的el-dialog的时候遇到了个这样的问题&#xff1a;页面上点击添加的按钮&#xff0c;弹出el-dialog对话框&#xff…

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结

转载自 MySQL 中的重做日志&#xff0c;回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件&#xff0c;分别是&#xff1a;重做日志&#xff08;redo log&#xff09;、回滚日志&#xff08;undo log&#xff09;、二进制日志&#xff08;binlog&#xff09;、错误日志…

c语言分离三位数

#include<stdio.h> main(){ int k,l,m,n;printf("请输入一个三位数"); scanf("%d",&k);lk/100;mk/10%10;nk%10;printf("这个三位数的百位是:%d\n",l);printf("这个三位数的十位是:%d\n",m);printf("这个三位数的个位是…

分布式ID自增算法 Snowflake

近在尝试EF的多数据库移植&#xff0c;但是原始项目中主键用的Sqlserver的GUID。MySQL没法移植了。 其实发现GUID也没法保证数据的递增性&#xff0c;又不太想使用int递增主键&#xff0c;就开始探索别的ID形式。 后来发现twitter的Snowflake算法。 一开始我尝试过直接引用N…

java中,根据指定日期显示出前n天的日期

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 今天分享的是&#xff1a;在java中&#xff0c;根据指定日期显示出前n天的日期 效果如下&#xff1a; 大家注意观察上面的时间&#xff0c;我传入的时间是&#xff1a;2022年5月9日21:28:…

jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是&#xff1a;2022年5月19日08:01:51 今天遇到了个这样的需求&#xff0c;解析excel表中的数据&#xff0c;以JDBC的方式&#xff0c;将数据批量更新至不同的数据表中。注意&am…

.Net Core 全局配置读取管理方法 ConfigurationManager

最近在学习.Net Core的过程中&#xff0c;发现.Net Framework中常用的ConfigurationManager在Core中竟然被干掉了。 也能理解。Core中使用的配置文件全是Json&#xff0c;不像Framework使用的XML&#xff0c;暂时不支持也是能理解的&#xff0c;但是毕竟全局配置文件这种东西还…

Http 持久连接与 HttpClient 连接池

转载自 Http 持久连接与 HttpClient 连接池 一、背景 HTTP协议是无状态的协议&#xff0c;即每一次请求都是互相独立的。因此它的最初实现是&#xff0c;每一个http请求都会打开一个tcp socket连接&#xff0c;当交互完毕后会关闭这个连接。 HTTP协议是全双工的协议&#x…

jdbc解析excel文件,批量插入数据至库中

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是&#xff1a;2022年5月20日09:32:38今天遇到了个这样的需求&#xff0c;解析excel表中的数据&#xff0c;以JDBC的方式&#xff0c;将数据批量更新至不同的数据表中。注意&…

线程2

public class test{/*** 测试延迟继承* param args*/public static void main(String[] args) {Cat catnew Cat();cat.start();//启动线程&#xff0c;会导致run函数的运行Dog dognew Dog();//创建一个线程对象Thread tnew Thread(dog);t.start();}} //继承Thread创建线程 clas…

.NET及.NET Core系统架构

.NET 官方架构指南 Microservices and Docker Containers Web Applications with ASP.NET 官网地址&#xff1a;https://www.microsoft.com/net/learn/architecture 三层及多层架构 Multitier Architecture ASP.NET N-Tier Architecture Schema Visual Studio N-Tier Examp…

Spring Boot 自动配置的 “魔法” 是如何实现的?

转载自 Spring Boot 自动配置的 “魔法” 是如何实现的&#xff1f; Spring Boot是Spring旗下众多的子项目之一&#xff0c;其理念是约定优于配置&#xff0c;它通过实现了自动配置&#xff08;大多数用户平时习惯设置的配置作为默认配置&#xff09;的功能来为用户快速构建出…

解决vue登录信息不及时更新问题

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是&#xff1a;2022年5月20日09:59:34 前面写过一篇文章&#xff0c;基于bladex框架实现的模拟登录&#xff0c;后来在测试的过程中发现了个问题&#xff0c;即A系统在跳转到本系…

学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位

ASP.NET Core管道由注册的服务器和一系列中间件构成。我们在上一篇中深入剖析了中间件&#xff0c;现在我们来了解一下服务器。服务器是ASP .NET Core管道的第一个节点&#xff0c;它负责完整请求的监听和接收&#xff0c;最终对请求的响应同样也由它完成。[本文已经同步到《AS…

for循环(二)

利用for循环按规律打出星星 #include<stdio.h>main(){int i,j;for(i0;i<10;i){for(j0;j<i;j){printf(" *"); }printf("\n");} }

接口方法上的注解无法被@Aspect声明的切面拦截的原因分析

转载自 接口方法上的注解无法被Aspect声明的切面拦截的原因分析 前言 在Spring中使用MyBatis的Mapper接口自动生成时&#xff0c;用一个自定义的注解标记在Mapper接口的方法中&#xff0c;再利用Aspect定义一个切面&#xff0c;拦截这个注解以记录日志或者执行时长。但是惊奇…

springboot实现用户统一认证、管理(单点登录)

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是&#xff1a;2022年5月25日13:44:16 最近和模拟登录杠上了&#xff0c;这不&#xff0c;又来了个需求&#xff0c;还是以这个技术点入手的。 需求大概是这样的&#xff1a;为了…

学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?

ASP.NET Core管道虽然在结构组成上显得非常简单&#xff0c;但是在具体实现上却涉及到太多的对象&#xff0c;所以我们在 “通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程”&#xff08;上篇、中篇、下篇&#xff09; 中围绕着一个经过极度简化的模拟管道讲述…