(一)vForm 动态表单设计器之使用

系列文章目录

(一)vForm 动态表单设计器之使用


文章目录

前言

一、VForm是什么?

二、使用步骤

1.引入库

2.使用VFormDesigner组件

3.使用VFormRender组件

4.持久化表单设计

总结



前言

前段时间在研究Activiti工作流引擎,结合业务发现工作流各个节点都需要处理不同的表单,那么会产生很多不同的表单,这里就想到了动态表单功能,在网上找了一些,最后选择的vForm,发现免费版本的内容,基本满足需求,并且操作页面样式清新、操作简单;

另一方面,低代码平台日渐兴起,未来可能需要程序员编写的业务越来越少,而动态表单也是低代码技术实现的重要一环,这里把自己的经验总结记录一下。


一、VForm是什么?

VForm是一款基于Vue 2/Vue 3的低代码表单,支持Element UIiView两种UI库,定位为前端开发人员提供快速搭建表单、实现表单交互和数据收集的功能。

VForm全称为Variant Form,寓意为灵活的、动态的、多样化的Vue低代码表单。

VForm由表单设计器VFormDesigner和表单渲染器VFormRender两部分构成,VFormDesigner通过拖拽组件方式生成JSON格式的表单对象,VFormRender负责将表单JSON渲染为Vue组件。

以上内容摘自: VForm官网:www.vform666.com

二、使用步骤

1.引入库

代码如下:npm i vform-builds 或 yarn add vform-builds

注意:VForm依赖Element UI,需要先安装Element UI。

npm i element-ui

2.使用VFormDesigner组件

   vFormDesigner组件是设计器组件,提供各种可拖拽的组件,完成表单及组件属性填写,自由组合成表单。

2.1 main.js引入

import VForm from 'vform-builds'  //引入VForm库
import 'element-ui/lib/theme-chalk/index.css'  //引入element-ui样式
import 'vform-builds/dist/VFormDesigner.css'  //引入VForm样式

Vue.use(VForm)  //全局注册VForm(同时注册了v-form-designe、v-form-render等组件)
/* 注意:如果你的项目中有使用axios,请用下面一行代码将全局axios复位为你的axios!! */

2.2 页面引入

<template>
  <v-form-designer></v-form-designer>
</template>

<script>
  export default {
    data() {
      return {
      }
    }
  }
</script>

<style lang="scss">
body {
  margin: 0;  /* 如果页面出现垂直滚动条,则加入此行CSS以消除之 */
}
</style>

3.使用VFormRender组件

VFormRender为VForm的表单渲染器组件,用于将表单JSON对象渲染为Vue组件,简单讲就是设计器设计完,形成json数据,VFormRender的作用就是解析json数据,转换成可使用的表单。(数据展示也在此组件)

3.1 main.js引入

import VFormRender from 'vform-builds/dist/VFormRender.umd.min.js'  //引入VFormRender组件
import 'vform-builds/dist/VFormRender.css'  //引入VFormRender样式

Vue.use(VFormRender)  //全局注册VFormRender等组件

3.2 页面引入

<template>
  <div>
    <v-form-render :form-json="formJson" :form-data="formData" :option-data="optionData" ref="vFormRef">
    </v-form-render>
    <el-button type="primary" @click="submitForm">Submit</el-button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        /* 注意:formJson是指表单设计器导出的json,此处演示的formJson只是一个空白表单json!! */
        formJson: {"widgetList":[],"formConfig":{"labelWidth":80,"labelPosition":"left","size":"","labelAlign":"label-left-align","cssCode":"","customClass":"","functions":"","layoutType":"PC","onFormCreated":"","onFormMounted":"","onFormDataChange":""}},
        formData: {},
        optionData: {}
      }
    },
    methods: {
      submitForm() {
        this.$refs.vFormRef.getFormData().then(formData => {
          // Form Validation OK
          alert( JSON.stringify(formData) )
        }).catch(error => {
          // Form Validation failed
          this.$message.error(error)
        })
      }
    }
  }
</script>

4.持久化表单设计

4.1 功能梳理

vFormDesigner设计器设计好表单后,产生表单设计数据(json格式),需要讲设计数据持久化到数据库,要使用动态表单时,再用vFormRender组件,将保存的表单设计数据展示成可编辑数据的表单。

4.2 自定义保存按钮 

<v-form-designer ref="vfDesigner" :designer-config="designerConfig"> 
<!-- 自定义按钮插槽演示 -->
 <template #customToolButtons> 
        <el-button type="text" @click="saveFormJson"><i class="el-icon-finished" />保存</el-button>
 </template> 
</v-form-designer>

4.3 saveFormJson()方法

vFormDesigner组件提供方法:

 getFormJson(),可获得当前设计器的设计数据

 getFieldWidgets(),可获得设计器的需要编辑数据的(或者说填写的数据需要入库的)组件数据(此方法可用于根据动态表单的列数据,生成ddl语句,创建数据库物理表

//整体json,保存入库 
let formJson = this.$refs.vfDesigner.getFormJson() 
//字段json 用于生成元数据 table表 
let fieldsJson = this.$refs.vfDesigner.getFieldWidgets()

拿到数据,解下来就是调用后端接口,保存即可。

4.4 动态表单使用

vFormRender组件提供方法

setFormJson(json),设置表单设计json数据

disableForm(),设置表单不可用(用于查询时使用)

setFormData(data),设计表单数据(查询、编辑时展示数据)

vForm.setFormJson(formDesign.formJson)

调用此方法即可展示设计器设计的动态表单。


总结

此章节主要是对vForm的引入和使用,对整体内容有个大致的了解,具体组件内的细节功能,还需自行了解,对于下拉选组件、文件上传组件等需要前后端交互的内容,后续我会继续分享,敬请期待,多谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年数维杯国际大学生数学建模挑战赛D题洗衣房清洁计算解题全过程论文及程序

2023年数维杯国际大学生数学建模挑战赛 D题 洗衣房清洁计算 原题再现&#xff1a; 洗衣房清洁是人们每天都要做的事情。洗衣粉的去污作用来源于一些表面活性剂。它们可以增加水的渗透性&#xff0c;并利用分子间静电排斥机制去除污垢颗粒。由于表面活性剂分子的存在&#xff…

关于基础的流量分析(1)

1.对于流量分析基本认识 1&#xff09;简介&#xff1a;网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 2&#xff09;在我们平时的考核和CTF比赛中&#xff0c;基本每次都有…

电脑实时监控软件哪个好?这三款电脑监控软件都是万里挑一

网络安全事故的频发为我们敲响了警钟&#xff0c;企业必须普及电脑监控软件才能有效防止数据泄密和懒散的工作状态&#xff0c;在这里为你盘点三款万里挑一的电脑实时监控软件。 域智盾软件&#xff1a; 特点&#xff1a;域智盾软件是一款功能全面且强大的电脑实时监控软件。它…

利用神经网络学习语言(六)——总结与常见面试问题

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 文章列表&#xff1a; 利用神经网络学习语言&#xff08;一&#xff09;——自然语言处理的基本要素利用神经网络学习语言&…

力扣刷题---283.移动0【简单】

题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums …

2024年AI发展的四大趋势

近日&#xff0c;OpenAI发布首个视频生成模型“Sora”——通过接收文本指令&#xff0c;即可生成60秒短视频。一年前&#xff0c;同样是OpenAI发布的语言模型ChatGPT&#xff0c;让文本创作变得易如反掌。 在2023年&#xff0c;随着一系列AIGC的相继问世&#xff0c;我们看到A…

企业应考虑的优秀云安全措施

作为云客户&#xff0c;企业有责任确保正确使用他们提供的工具来保证数据和应用程序的安全。让德迅云安全来跟大家一起研究一些典型企业应该考虑的优秀云安全措施。 在数据安全和隐私方面&#xff0c;企业是否在努力跟上疫情的发展?企业不是一个人。就像多年以前&#xff0c;C…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;TCP&#xff08;2&#xff09;IP广播&#xff08;3&#xff09;ARP协议&#xff08;4&#xff09;IP路由器&#xff08;5&#xff09;MAC协议&#xff08;6&#xff09;三次握手&#xff08;7&#xff09;TCP/IP&#xf…

【设计模式深度剖析】【A】【创建型】【对比】| 工厂模式重点理解产品族的概念

回 顾&#xff1a;创建型设计模式 1.单例模式&#x1f448;️ 2.工厂方法模式&#x1f448;️ 3.抽象工厂模式&#x1f448;️ 4.建造者模式&#x1f448;️ 5.原型模式&#x1f448;️ &#x1f448;️上一篇:原型模式 | &#x1f449;️下一篇:代理模式 目录…

JavaScript基础(九)

冒泡排序 用例子比较好理解: var arry[7,2,6,3,4,1,8]; //拿出第一位数7和后面依次比较&#xff0c;遇到大的8就换位&#xff0c;8再与后面依次比较&#xff0c;没有能和8换位的数&#xff0c;再从下一位2依次与下面的数比较。 console.log(排列之前&#xff1a;arry); for (…

Unity Render入门

概述 在unity中渲染相关的组件是和Render关联的&#xff0c;比如我们常见的3D模型中的MeshRender&#xff0c;UI中的RenderCanvas等都是和Render相关联的&#xff0c;相信在unity的学习过程中&#xff0c;一定看到过非常多和Render相关的内容&#xff0c;那让我们学习一下这部…

GRPC服务使用

目标&#xff1a; 1.什么是GRPC服务&#xff1f; 2.安卓客户端怎么不熟GRPC服务&#xff1f; 3.怎么生成GRPC的java类&#xff1f; 一、什么是GRPC服务&#xff1f; GRPC 一开始由 google 开发&#xff0c;是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 支持长…

【Linux】-Tomcat安装部署[12]

目录 简介 安装 安装部署JDK环境 解压并安装Tomcat 简介 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说&#…

vscode 插件-02 html

open in brower 安装后可以在vscode中,使用浏览器打开编辑的.html文件,以查看效果。 Live Preview 实现网页的实时渲染显示功能&#xff0c;即实时预览。

K8S认证|CKA题库+答案| 1. 权限控制RBAC

1、权限控制RBAC 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s master …

ptrade从零开始学习量化交易第16期【ptrade策略API介绍之set_slippage-设置滑点】

设置函数 更加详细的调用方法&#xff0c;后续会慢慢整理。 也可找寻博主历史文章&#xff0c;搜索关键词使用方案&#xff0c;比如本文涉及函数set_slippage&#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; …

沃尔玛卖家必学:自养号测评环境搭建技巧,助你销量翻倍

沃尔玛&#xff0c;作为国际零售行业的翘楚&#xff0c;其平台的销售业绩对卖家来说意义非凡。然而&#xff0c;在现今这个充满竞争的商业环境中&#xff0c;众多卖家在沃尔玛平台上努力追求销量的过程中&#xff0c;常常面临着重重障碍和挑战。他们迫切需要在短时间内找到一种…

免费发布web APP的四个途径(Python和R)

免费发布数据分析类&#x1f310;web APP的几个途径&#x1f4f1; 数据分析类web APP目前用来部署生信工具&#xff0c;统计工具和预测模型等&#xff0c;便利快捷&#xff0c;深受大家喜爱。而一个免费的APP部署途径&#xff0c;对于开发和测试APP都是必要的。根据笔者的经验…

junams 文件上传 (CNVD-2020-24741)

漏洞环境搭建&#xff1a;vulfocus 发现这个页面后&#xff0c;通过访问IP:Port/admin.php,登录后台 通过默认用户名密码admin&#xff1a;admin进行登录 登录后台后&#xff0c;主要思路就是找到网站的文件上传点&#xff0c;然后去上传一句话木马&#xff0c;或者找到命令执…

AI大模型:GPT引领,百模征战

从 2022 年底 ChatGPT 横空出世&#xff0c;到 2023 年一整年的大模型热潮&#xff0c;在科技的巨浪中&#xff0c;大模型技术如同一颗璀璨的明星&#xff0c;迅速起并引领着一场前所未有的技术革命。大模型如同推动创新的引擎&#xff0c;将科技的边界不断拓展。 01 大模型演…