Vue+ElementUI实现输入框日期框下拉框动态展示

1.首先根据后端返回的数据格式获取类型从而展示对应的框

// fieIdName label名字  
// fieIdType 类型  1和4是输入框  2日期框  3日期时间框  5下拉框
// isRequired  1必填 0不必填
// fieIdTypeRange 存放一部分的下拉框的值 需要拿到数据后转成下拉框所需要的格式这种数据格式
jsonExample: [{fieIdName: '账户',fieIdType: 1,isRequired: 1,fieIdValue: '',fieIdTypeRange: "是;否"}
]

2.对不符合的数据在进行一次处理  比如刚才上述提到的fieIdTypeRange

2-1  定义一个空集合 放处理后的下拉框的数据let selectList=[]2-2  对后端返回的数据进行处理for (var n = 0; n < res.data.length; n++) {if (res.data[n].fieldType == 5) {const options = res.data[n].fieldTypeRange.split(";").map((val) => ({                     label: val, value: val }));selectList = options;this.$set(res.data[n], "selectoptions", selectList);}}2-3  下拉框绑定的数据源是 selectoptions

3.具体代码如下

   <div class="form_item_content"><div  v-for="formItem in jsonExample" :key="formItem.id"><!--单行文本--><cbf-form-item v-if="formItem.fieldType == 1 || formItem.fieldType == 4":label="formItem.fieldName" :rules="requiredRules(formItem)"><cbf-inputstyle="width: 205px"placeholder="请输入内容"v-model="formItem.fieldValue"@blur="inputBlurHandler(formItem)"></cbf-input></cbf-form-item><!--日期--><cbf-form-item  v-if="formItem.fieldType == 2"  :label="formItem.fieldName":rules="requiredRules(formItem)"><cbf-date-pickerstyle="width: 205px"type="date"placeholder="请选择"v-model="formItem.fieldValue":picker-options="getPickerOptions(formItem)"format="yyyy-MM-dd"value-format="yyyy-MM-dd"></cbf-date-picker></cbf-form-item><!-- 时间 --><cbf-form-itemv-if="formItem.fieldType == 3" :label="formItem.fieldName":rules="requiredRules(formItem)"><cbf-date-pickerstyle="width: 205px"type="datetime"placeholder="请选择"v-model="formItem.fieldValue":picker-options="getPickerOptions(formItem)"format="yyyy-MM-dd HH:mm:ss"value-format="yyyy-MM-dd HH:mm:ss"></cbf-date-picker></cbf-form-item><!-- 单选下拉框 --><cbf-form-itemv-if="formItem.fieldType == 5" :label="formItem.fieldName"                 :rules="requiredRules(formItem)" ><cbf-selectclass="row-select"v-model="formItem.fieldValue"@change="selectChange(formItem)"  filterable clearable><cbf-option:key="option.label"v-for="option in formItem.selectoptions":value="option.value":label="option.label"></cbf-option></cbf-select></cbf-form-item></div></div>

4.必填项验证 及别的验证(金额)

1.验证动态的框是不是必填项 在computed写computed: {requiredRules() {return (formItem) => {if (formItem.isRequired) {return [{ required: true, message: "", trigger: "blur" }];} else {return null;}};},}2.因为有个需求是 如果类型为4代表是输入框也是金额 所以不能输入汉字const numTwoDecimals = /^([0-9]|[1-9]\d+)(\.\d{1,2})?$/;  数字保留2位小数inputBlurHandler(item){if (item.fieldType == 4 &&item.fieldValue != null &&item.fieldValue != "") {if (!numTwoDecimals.test(item.fieldValue)) {this.$msgTip(`${item.fieldName}金额格式不正确`);}}}3.还有个需求是 类型为2和3 如果并且fieIdName为XX日期  需要有以下判断比如 新增,限制日期为当天之后,如果是修改,限制日期为回显XX日期之后getPickerOptions(item) {let picker = {};if ((item.fieldType == 2 || item.fieldType == 3) &&item.fieldName == "承诺还款日期") {picker = {disabledDate(time) {return time.getTime() < Date.now() - 8.64e7;},};} else {picker = {};}return picker;},

5.还有一个要处理的逻辑是  不是后端返的下拉框数据 而是通过接口拿得 如何放到对应的动态向下拉框数据源

1.请求(a,b,c为接口名字)const requests=[a([this.addCaseForm.customerId]),b([this.addCaseForm.customerId]),c([this.addCaseForm.customerId]),];this.customerHandList = this.transitionData(result[0].data);this.productTypeList = this.transitionData(result[1].data);this.customerAreaList = this.transitionData(result[2].data);2.transitionData 对数据进行处理  2-1  因为接口返回的是这种结构[1,2,3] 所以又对此封装了一下transitionData(data) {var arr = [];arr = data.map((item) => {return {...item,label: item.val,value: item.val,};});return arr;},2-2  如果接口返回的是正常下拉框数据格式[{label:'',value:''}]就不需要再次封装了直接进行赋值即可

6.因为我这个是新增和修改都涉及到了  所以后端返回的格式非常重要 
      

  在此新增的时候  返回的数据里的fieIdValue为v-model绑定的值为空 在编辑的时候  返回的数据里的fieIdValue为回显的值点击保存的时候 直接把这个数组传给后台 这样省了前端组装数据格式

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

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

相关文章

【AI】Pytorch神经网络分类初探

Pytorch神经网络分类初探 1.数据准备 环境采用之前创建的Anaconda虚拟环境pytorch&#xff0c;为了方便查看每一步的返回值&#xff0c;可以使用Jupyter Notebook来进行开发。首先把需要的包导入进来 import torch from torch import nn from torch.utils.data import DataL…

【RHCE】openlab搭建web网站

网站需求&#xff1a; 1、基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 增加映射 [rootlocalhost ~]# vim /etc/hosts 创建网页 [rootlocalhost ~]# mkdir -p /www/openlab [rootlocalhost ~]# echo welcome to openlab > /www/openlab/index.h…

利用法线贴图渲染逼真的3D老虎模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

傅里叶变换在图像中的应用

1.图像增强与图像去噪 绝大部分噪音都是图像的高频分量&#xff0c;通过低通滤波器来滤除高频——噪声; 边缘也是图像的高频分量&#xff0c;可以通过添加高频分量来增强原始图像的边缘&#xff1b; 2.图像分割之边缘检测 提取图像高频分量 3.图像特征提取&#xff1a; 形状特…

3-Mybatis

文章目录 Mybatis概述什么是Mybatis&#xff1f;Mybatis导入知识补充数据持久化持久层 第一个Mybatis程序&#xff1a;数据的增删改查查创建环境编写代码1、目录结构2、核心配置文件&#xff1a;resources/mybatis-config.xml3、mybatis工具类&#xff1a;Utils/MybatisUtils4、…

ALNS的MDP模型| 还没整理完12-08

有好几篇论文已经这样做了&#xff0c;先摆出一篇&#xff0c;然后再慢慢更新 第一篇 该篇论文提出了一种称为深增强ALNS&#xff08;DR-ALNS&#xff09;的方法&#xff0c;它利用DRL选择最有效的破坏和修复运营商&#xff0c;配置破坏严重性参数施加在破坏算子上&#xff0c…

请简要介绍一下HTML的发展史?

问题&#xff1a;什么是池化思想&#xff1f; 回答&#xff1a; 池化思想是一种资源管理的策略&#xff0c;通过事先创建并维护一组已经初始化好的资源对象池&#xff0c;以便在需要时快速获取资源并在用完后归还给池&#xff0c;以减少资源的创建和销毁开销&#xff0c;提高资…

第二十一章网络通信总结

21.1 网络程序设计基础 Java网络程序设计基础涉及使用Java编程语言创建网络应用程序。这通常涉及到使用Java的网络API&#xff0c;如java.net包&#xff0c;以建立客户端和服务器之间的通信。 基本步骤包括&#xff1a; 1.创建服务器&#xff1a; 使用ServerSocket类创建服务…

常见的中间件--消息队列中间件测试点

最近刷题&#xff0c;看到了有问中间件的题目&#xff0c;于是整理了一些中间件的知识&#xff0c;大多是在小破站上的笔记&#xff0c;仅供大家参考~ 主要分为七个部分来分享&#xff1a; 一、常见的中间件 二、什么是队列&#xff1f; 三、常见消息队列MQ的比较 四、队列…

用户管理 --汇总

一、第一节课 1.1 本人写的 前端&#xff1a; 鱼皮 --&#xff1e; 用户中心 第1节课-CSDN博客 中期&#xff1a; 一、用户管理 第1节课中间-CSDN博客 后端&#xff1a; 一、用户管理-CSDN博客 其他的链接 亿图脑图MindMaster 1.2 优秀球友&#xff0c;推荐 Docs 另…

12_企业架构之Tomcat部署使用

Tomcat 学习目标和内容 1、能够描述Tomcat的使用场景 2、能够简单描述Tomcat的工作原理 3、能够实现部署安装Tomcat 4、能够实现配置Tomcat的service服务和自启动 5、能够实现Tomcat的Host的配置 6、能够实现Nginx反向代理Tomcat 7、能够实现Nginx负载均衡到Tomcat 一、Tomcat介…

Abaqus许可证配置文件问题

在使用Abaqus工程设计和仿真软件时&#xff0c;您可能会遇到许可证配置文件问题。这些问题可能会影响软件的正常运行和工作效率。为了帮助您解决这些问题&#xff0c;我们特别撰写了这篇文章&#xff0c;以提供全面、有效的解决方案。 一、Abaqus许可证配置文件问题及原因 许…

力扣labuladong一刷day32天二叉树

力扣labuladong一刷day32天二叉树 一、297. 二叉树的序列化与反序列化 题目链接&#xff1a;https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/ 思路&#xff1a;关于序列化与反序列化&#xff0c;题目不要求序列化的方式&#xff0c;只要求树经过序列化…

linux的定时任务Corntab

安装crontab # yum安装crontab yum install -y crontab# 开机自启crond服务并现在启动 systemctl enable --now crondcron系统任务调度 系统任务调度&#xff1a; 系统周期性所要执行的工作&#xff0c;比如写缓存数据到硬盘、日志清理等。 在/etc/crontab文件&#xff0c;这…

机器学习之全面了解回归学习器

我们将和大家一起探讨机器学习与数据科学的主题。 本文主要讨论大家针对回归学习器提出的问题。我将概要介绍&#xff0c;然后探讨以下五个问题&#xff1a; 1. 能否将回归学习器用于时序数据&#xff1f; 2. 该如何缩短训练时间&#xff1f; 3. 该如何解释不同模型的结果和…

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有两种情况&#xff1a; 压根没安装下载了但没设为库或方法不对 大多数为第一种情况&#xff1a; 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…

优化 SQL 日志记录的方法

为什么 SQL 日志记录是必不可少的 SQL 日志记录在数据库安全和审计中起着至关重要的作用&#xff0c;它涉及跟踪在数据库上执行的所有 SQL 语句&#xff0c;从而实现审计、故障排除和取证分析。SQL 日志记录可以提供有关数据库如何访问和使用的宝贵见解&#xff0c;使其成为确…

JNPF低代码平台详解 -- 系统架构

目录 一、技术介绍 技术架构 二、设计原理 三、界面展示 1.代码生成器 2.工作流程 3.门户设计 4.大屏设计 5.报表设计 6.第三方登录 7.多租户实现 8.分布式调度 9.消息中心 四、功能框架 JNPF低代码是一款新奇、实用、高效的企业级软件开发工具&#xff0c;支持企…

Qt/C++音视频开发58-逐帧播放/上一帧下一帧/切换播放进度/实时解码

一、前言 逐帧播放是近期增加的功能&#xff0c;之前也一直思考过这个功能该如何实现&#xff0c;对于mdk/qtav等内核组件&#xff0c;可以直接用该组件提供的接口实现即可&#xff0c;而对于ffmpeg&#xff0c;需要自己处理&#xff0c;如果有缓存的数据的话&#xff0c;可以…

Rust的eBFP框架Aya(一) - Linux内核网络基础

前言 在我的Rust入门及实战系列文章中已经说明&#xff0c; Rust是一门内存安全的高性能编程语言&#xff0c;从它的这些优秀特性来看&#xff0c;就是一门专为系统开发而诞生的语言。至于很多使用Rust来进行web开发的行为&#xff0c;不能说它们不好&#xff0c;只能说是杀鸡…