element+vue 之动态form

1.页面部分
<div v-for="(item,index) in formList" :key="index"><el-col :span="6" v-if="item.inputType==0"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请输入', trigger: 'change' }"><el-input v-model.trim="detailForm[item.conditionCode]" :placeholder="item.placeHolder"clearable></el-input></el-form-item></el-col><el-col :span="6" v-else-if="item.inputType==1"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message: item.placeHolder?item.placeHolder:'请输入', trigger: 'change' }"><el-input v-model.number="detailForm[item.conditionCode]":placeholder="item.placeHolder" clearable></el-input></el-form-item></el-col><el-col :span="24" v-else-if="item.inputType==2"><el-form-item :label="item.conditionName" :prop="item.conditionCode" :rows="3":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请输入', trigger: 'change' }"><el-input clearable style="width: 100%" v-model.trim="detailForm[item.conditionCode]"autocomplete="off" placeholder="请输入" type="textarea" maxlength="100"></el-input></el-form-item></el-col><el-col :span="24" v-else-if="item.inputType==3"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请选择', trigger: 'change' }"><!-- <el-input v-model="detailForm[item.conditionCode]" v-show="false" /> --><el-upload list-type="picture-card" action="#" :headers="headers" multiple:before-upload="beforeUpload" :http-request="f_upload" :on-remove="handleRemoveUrl":on-preview="handlePictureCardPreview" :file-list="fileImgurl"accept=".jpg,.jpeg,.png,.bmp"><i slot="default" class="el-icon-plus"></i><div class="el-upload__tip" slot="tip">仅支持JPG、JPEG、PNG、BMP格式文件</div></el-upload><el-dialog :visible.sync="dialogVisible" :modal-append-to-body="false"><img width="100%" :src="dialogImageUrl" alt=""></el-dialog></el-form-item></el-col><el-col :span="24" v-else-if="item.inputType==4 && item.singleton==0"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请选择', trigger: 'change' }"><el-checkbox-group v-model="detailForm[item.conditionCode]"><el-col :span="24" v-if="item.optionList"><el-checkbox v-for="(it,ind) in item.optionList" :label="it.name":key="ind"></el-checkbox></el-col></el-checkbox-group></el-form-item></el-col><el-col :span="6" v-else-if="item.inputType==4 && item.singleton==1"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请选择', trigger: 'change' }"><el-radio-group v-model="detailForm[item.conditionCode]"><el-col :span="24" v-if="item.optionList"><el-radio v-for="(it,ind) in item.optionList" :label="it.name":key="ind">{{it.name}}</el-radio></el-col></el-radio-group></el-form-item></el-col><el-col :span="6" v-else-if="item.inputType==5"><el-form-item :label="item.conditionName" :prop="item.conditionCode":rules="{required: item.required==0?false:true, message:item.placeHolder?item.placeHolder:'请选择', trigger: 'change' }"><el-select v-model="detailForm[item.conditionCode]" placeholder="请选择"style="width: 100%" v-if="item.optionList":multiple="item.inputType==5 && item.singleton==0"><el-option v-for="(it,ind) in item.optionList" :key="ind" :label="it.name":value="it.name"></el-option></el-select></el-form-item></el-col></div>
2.数据格式

"decisionConditionList": [{"conditionCode": "carHygiene",//表单键"conditionName": "车辆卫生",//表单名称"inputType": 5,//表单类型"conditionValueList": ["是"],//表单值"required": 1,//是否必填"singleton": 0,"placeHolder": "请选择","optionList": [{"name": "是","defaultType": 0},{"name": "否","defaultType": null}]},{"conditionCode": "productSpotCheck","conditionName": "是否抽检","inputType": 4,"conditionValueList": ["否"],"required": 1,"singleton": 1,"placeHolder": "请选择","optionList": [{"name": "是","defaultType": 0},{"name": "否","defaultType": 1}]},{"conditionCode": "carPlateNum","conditionName": "车辆号","inputType": 0,"conditionValueList": ["1"],"required": 1,"singleton": null,"placeHolder": "请输入","optionList": null},{"conditionCode": "carPlate","conditionName": "车辆数量","inputType": 1,"conditionValueList": ["1"],"required": 0,"singleton": null,"placeHolder": "请输入","optionList": null},{"conditionCode": "problemDesc","conditionName": "问题类型","inputType": 4,"conditionValueList": ["问题一"],"required": 1,"singleton": 0,"placeHolder": "请选择","optionList": [{"name": "问题一","defaultType": 0},{"name": "问题二","defaultType": 0},{"name": "问题三","defaultType": 0},{"name": "问题四","defaultType": 0}]},{"conditionCode": "imgUrl","conditionName": "图片","inputType": 3,"conditionValueList": ["https://warehouse-permanent.obs.cn-east-3.myhuaweicloud.com/74cc681c-fe39-429c-886e-8e086378c2ef.png","https://warehouse-permanent.obs.cn-east-3.myhuaweicloud.com/5b312d59-8c40-431b-ad99-ac908bbb7707.png"],"required": 1,"singleton": null,"placeHolder": "请选择","optionList": null},{"conditionCode": "remarkTwo","conditionName": "备注","inputType": 2,"conditionValueList": ["1"],"required": 0,"singleton": null,"placeHolder": "1","optionList": null}],
3.数据处理 因为后端给的数据都是数组 表单有些需要数组有些需要字符串
this.formList = res.data.data.decisionConditionList;if (this.formList) {this.formList.forEach(a => {if (a.inputType == 4 && a.singleton == 0 || a.inputType == 5 && a.singleton == 0) {this.$set(this.detailForm, a.conditionCode, a.conditionValueList ? a.conditionValueList : [])} else if (a.inputType == 3) {var fileImgurl = []if (a.conditionValueList) {a.conditionValueList.forEach((item, index) => {fileImgurl.push(Object.assign({}, { url: item }))})this.fileImgurl=fileImgurl}this.$set(this.detailForm, a.conditionCode, a.conditionValueList ? a.conditionValueList : [])}else {this.$set(this.detailForm, a.conditionCode, a.conditionValueList ? a.conditionValueList.toString() : '')}})}
4.关于图片部分的js
// 上传之前beforeUpload(file) {if (!this.checkFileType(file)) {return false}this.$forceUpdate()},// 效验文件类型checkFileType(file) {let allowTypesSet = new Set(["jpg", "jpeg", "png", "bmp", "pdf"])let fileType = file.name.replace(/.+\./, "")if (!allowTypesSet.has(fileType)) {this.$message({type: "warning",message: "不支持该文件类型"})return false}return true},//预览图片handlePictureCardPreview(file) {this.dialogImageUrl = file.url;this.dialogVisible = true;},//删除图片handleRemoveUrl(file, fileList) {if (fileList.length) {this.fileImgurl.filter((item, index) => {if (item.url == file.url) {this.fileImgurl.splice(index, 1);}});let results = this.fileImgurl.map(n => n.url);this.formList.forEach(index => {if (index.inputType == 3) {this.$set(this.detailForm, index.conditionCode, results)}})} else {this.formList.forEach(index => {if (index.inputType == 3) {this.$set(this.detailForm, index.conditionCode, [])}})this.fileImgurl = []}},// 导入f_upload(data) {const formData = new FormData()formData.append("file", data.file)this.handlefileUpload(formData)},//上传方法handlefileUpload(formData) {fileUpload(formData).then((res) => {const { code, msg } = res.dataif (code == 200) {this.formList.forEach(a => {if (a.inputType == 3) {var arr = a.conditionValueList ? a.conditionValueList : [];arr.push(res.data.data)this.$set(this.detailForm, a.conditionCode, arr)}})this.fileImgurl.push({ url: res.data.data })} else {const title = "操作失败"const type = "error"this.$notification(title, type, msg)}}).catch(() => { })},
4.提交
//提交这里还是要按照上面的格式提交
this.formList.forEach((item, index) => {this.detailForm.decisionConditionList.push(Object.assign({},item, { conditionValueList: item.inputType == 4 && item.singleton == 0 || item.inputType == 5 && item.singleton == 0 || item.inputType == 3 ? this.detailForm[item.conditionCode] : [this.detailForm[item.conditionCode]] }))})
相关文章:
element+vue 之动态form
1.页面部分 <div v-for"(item,index) in formList" :key"index"><el-col :span"6" v-if"item.inputType0"><el-form-item :label"item.conditionName" :prop"item.conditionCode":rules"{req…...
winform学习(3)-----Windows窗体应用和Windows窗体应用(.Net Framework)有啥区别?
1.模板选择 在学习winform的时候总是会对这两个应用不知道选择哪个?而且在学习的时候也没有具体的说明 首先说一下我是在添加控件的时候出现了以下问题 对于使用了Windows窗体应用这个模板的文件在工具箱中死活不见控件。 在转换使用了Windows窗体应用(.NET Fram…...
虚拟化中的中断机制:X86与PIC 8259A探索(上)
本系列深入探讨虚拟化中断技术,从X86架构和PIC 8259A的基础,到IOAPIC和MSI的编程,再到MSIX技术与Broiler设备的实战应用,全面剖析中断虚拟化的前沿进展。 X86 中断机制 在计算机架构中,CPU 运行的速度远远大于外设…...
软件外包开发语言排行榜
软件开发语言的排行榜是一个动态的话题,而在未来的几年中,新的技术和语言可能会不断涌现,影响排名。然而以下是一些在过去几年中一直受欢迎并有前途的软件开发语言,如果是新入门软件开发行业在学习语言做选择,希望下面…...
BI技巧丨利用OFFSET计算同环比
微软最近更新了很多开窗函数,其内部参数对比以往的DAX函数来说,多了很多,这就导致学习的时间成本直线上升。 而且对于新增函数的应用场景,很多小伙伴也是一知半解的,本期我们就来聊一聊关于最近新增的开窗函数——OFF…...
整理mongodb文档:collation
文章连接 整理mongodb文档:collation 看前提示 对于mongodb的collation。个人主要用的范围是在createcollection,以及find的时候用,所以本片介绍的时候也是这两个地方入手,对新手个人觉得理解概念就好。不要求强制性掌握,但是要…...
【LangChain】Prompts之Prompt templates
Prompts 编程模型的新方法是通过提示(prompts)。 prompts是指模型的输入。该输入通常由多个组件构成。 LangChain 提供了多个类和函数,使构建和使用prompts变得容易。 Prompt templates(提示模板): 参数化模型输入Example selectors(选择器示例): 动态选择要包含在…...
【数字IC基础】时序违例的修复
时序违例的修复 建立时间违例保持时间违例Buffer 插入位置参考资料 建立时间违例 基本思路是减少数据线的延时、减少 Launch clock line 的延时、增加capture clock line的delay 加强约束,重新进行综合,对违规的路径进行进一步的优化,但是一…...
深度学习实战46-基于CNN的遥感卫星地图智能分类,模型训练与预测
大家好,我是微学AI,今天给大家介绍一下深度学习实战46-基于CNN的遥感卫星地图智能分类,模型训练与预测。随着遥感技术和卫星图像获取能力的快速发展,卫星图像分类任务成为了计算机视觉研究中一个重要的挑战。为了促进这一领域的研究进展,EuroSAT数据集应运而生。本文将详细…...
Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作
一、写入文件操作 异步写入:writeFile() 同步写入:writeFileSync() const fs require("fs"); fs.writeFile("目标文件路径", "要写入的内容", err > {if(err){console.log(err);return;}console.log("写入成功&a…...
LIN协议总结
目录 一、LIN是什么1、LIN的概念2、扩展介绍一下同步通信和异步通信的区别3、LIN连接结构及节点构成 二、LIN的特点三、LIN协议层1、帧的结构2、帧的类型3、进度表4、状态机实现5、网络管理6、状态管理 四、帧收发的硬件实现1、组成2、硬件特点3、协议控制器4、总线收发器5、LI…...
Redis BigKey案例
面试题: 阿里广告平台,海量数据里查询某一固定前缀的key小红书,你如何生产上限制keys*/flushdb/flushall等危险命令以防止误删误用?美团,MEMORY USAGE命令你用过吗?BigKey问题,多大算big&#…...
ThinkPHP v6.0.8 CacheStore 反序列化漏洞
漏洞说明 1. 漏洞原理:ThinkPHP 6.0.8 CacheStore 会触发POP利用链子,造成任意命令执行 2. 组件描述: ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架 3. 影响版本:V6.0.8 漏洞复现 1. 环境安…...
Spring 事务详解(注解方式)
目 录 序言 1、编程式事务 2、配置声明式事务 2.1 基于TransactionProxyFactoryBean的方式(不常用,因为要为每一个类配置TransactionProxyFactoryBean) 2.2 基于AspectJ的XML方式(常用,可配置在某些类下的所有子…...
华为云waf 使用场景
防护Web应用免受攻击就用华为云Web应用防火墙 Web应用防火墙(Web Application Firewall, WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第…...
?.的写法 后缀修饰符
概览:处理后端返回的数据data,写法:data?.name。解决vue框架编译出现的报错Cannot read property name of undefined。出现问题的原因:这是因为我们试图访问对象中不在的 key 为 name 的属性,那么怎么解决呢ÿ…...
org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决
Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决 当在Hive中执行show locks语句时,出现"LockManager not specified"错误通常是由于…...
Adaptive autosar 都有哪些模块?各有什么功能?
Adaptive autosar是一种用于高性能计算ECU的软件平台,它支持自适应应用程序的开发和运行。它由两部分组成:基础(Foundation)和服务(Service)。基础包括了操作系统接口、执行管理、网络管理、识别访问管理、加密、更新和配置管理等功能。服务包括了通信管理、RESTful、时间…...
C++ 动态内存分配
在C中动态内存的分配技术可以保证程序在允许过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆。 申请和释放过程一般称为建立和删除。 在C程序中,建立和删除堆对象使用两个运算符&…...
设计模式——面向对象的7大设计原则
1.单一职责原则 一个类中最好只放一种类型的方法,比如Dao中只有和数据库交互相关的代码。实现高内聚,低耦合。 2.开闭原则 对外拓展开放,对内修改关闭,有新的需求时不要修改已有代码,而是添加新的代码,比…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
IP选择注意事项
IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时,需要考虑以下参数,然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...
