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

news2024/11/19 0:27:51

系列文章目录

(一)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的引入和使用,对整体内容有个大致的了解,具体组件内的细节功能,还需自行了解,对于下拉选组件、文件上传组件等需要前后端交互的内容,后续我会继续分享,敬请期待,多谢!

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

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

相关文章

群晖搭建网页版Linux Ubuntu系统并实现远程访问

文章目录 1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 docker-webtop是一个基于Docker的Web桌面应用&#xff0c;它允许用户通过浏览器远…

[实例] Unity Shader 逐像素漫反射与半兰伯特光照

漫反射光照是Unity中最基本最简单的光照模型&#xff0c;本篇将会介绍在片元着色器中实现反射效果&#xff0c;并会采用半兰伯特光照技术对其进行改进。 1. 逐顶点光照与逐像素光照 在Unity Shader中&#xff0c;我们可以有两个地方可以用来计算光照&#xff1a;在顶点着色器…

网创教程wordpress插件自动采集并发布

使用教程 出现404的请搞定自己网站的伪静态。一般都是伪静态问题。 需要定制可以联系我。 本次更新主要更新了。界面的设置。用户可以直接设置文章的分类。 设置文章发布的金额。 使插件更加的人性化。优化了采集更新发布的代码。 更新了网站的界面。 主要功能&#xff1a; w…

K8s Service 背后是怎么工作的?

kube-proxy 是 Kubernetes 集群中负责服务发现和负载均衡的组件之一。它是一个网络代理&#xff0c;运行在每个节点上, 用于 service 资源的负载均衡。它有两种模式&#xff1a;iptables 和 ipvs。 iptables iptables 是 Linux 系统中的一个用户空间实用程序&#xff0c;用于…

Ubuntu 20/22 安装 Jenkins

1. 使用 apt 命令安装 Java Jenkins 作为一个 Java 应用程序&#xff0c;要求 Java 8 及更高版本&#xff0c;检查系统上是否安装了 Java。 sudo apt install -y openjdk-17-jre-headless安装完成后&#xff0c;再次验证 Java 是否已安装 java --version2. 通过官方存储库安…

冯喜运:5.24现货黄金趋势解读,黄金原油行情分析及操作建议

【黄金消息面分析】&#xff1a;美国劳工部公布的最新数据显示&#xff0c;截至5月18日的一周内&#xff0c;首次申请失业救济人数下降至21.5万人&#xff0c;创下自去年9月以来的最大降幅。数据公布后&#xff0c;现货黄金短线下挫6美元&#xff0c;报2362.71美元/盎司。这表明…

泰迪智能科技分享:2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第01套【子任务二:Hadoop 完全分布式安装配置】答案

Hadoop完全分布式安装配置 任务内容 本实训需要使用root用户完成相关配置&#xff0c;master、slave1、slave2三台节点都需要安装JDK与Hadoop&#xff0c;具体要求如下&#xff1a; 将JDK安装包解压到/root/software目录下&#xff1b;在“/etc/profile”文件中配置JDK环境变…

游戏联运的挑战与核心关键点

​游戏联运一个看似充满机遇与挑战的行业&#xff0c;吸引了很多创业者的加入。然而&#xff0c;真正踏入这个行业后&#xff0c;许多人会发现&#xff0c;手游代理并非想象中的那么简单。今天&#xff0c;溪谷软件就来和大家聊聊游戏联运是怎么做的&#xff0c;需要注意什么。…

使用RAG和文本转语音功能,我构建了一个 QA 问答机器人

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

VC++学习(3)——认识MFC框架,新建项目,添加按钮

目录 引出第三讲 MFC框架新建项目Windows搜索【包含内容的搜索】如何加按钮添加成员变量添加成功 添加按钮2杂项 总结 引出 VC学习&#xff08;3&#xff09;——认识MFC框架&#xff0c;新建项目&#xff0c;添加按钮 MFC(Microsoft Foundation Classes)&#xff0c;是微软公…

【Linux】关于获取进程退出状态中的core dump标志补充

通过 wait/waitpid 可以获取子进程的退出状态, 从而判断其退出结果. 记录退出状态的 int 变量 status 的使用情况如下图所示: 如果是收到信号终止的话, 低 7 位为收到的终止信号, 而低第 8 位为 core dump 标志, core dump 标志有什么用呢? core dump 标志只存 0/1, 表示是否…

leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍

文章目录 前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点总结 前言 leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍 一、移除链表元…

解决go install 网络问题

rootiZbp1hiqzlhh6w05gloffgZ:~# go install mvdan.cc/garblelatest go: mvdan.cc/garblelatest: module mvdan.cc/garble: Get "https://proxy.golang.org/mvdan.cc/garble/v/list": dial tcp 172.217.160.81:443: i/o timeout解决方法 更换阿里代理 rootiZbp1hiq…

js——数据操作——实现阶梯价格排序——基础积累

最近在写网络报价的时候&#xff0c;遇到一个需求&#xff0c;就是要根据采购数量&#xff0c;找到符合数量的阶梯区间&#xff0c;并找到最便宜的采购价格。 比如下面&#xff1a; let originViewList [{id:1,incrementalQuantity:10,priceList:[{minQuantity:1,price:20},…

加速短剧出海,优秀出海产品技术服务金帆奖颁布

当碎片化内容消费成为主流&#xff0c;短剧凭借其短小精悍、环环相扣、高频爆点等优势迅速拿捏大众喜好。作为泛娱乐市场又一个新兴的亮点&#xff0c;不止国内&#xff0c;伴随着碎片娱乐的海外移动观剧习惯持续培养&#xff0c;短剧供给量与消费规模不断上升&#xff0c;海外…

使用DockerFile 编写 指令来构建镜像

文章目录 前言使用DockerFile 编写 指令来构建镜像1. 构建2. 验证 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#x…

【课后练习分享】Java用户注册界面设计和求三角形面积的图形界面程序

目录 java编程题&#xff08;每日一练&#xff09;&#xff1a; 问题一的答案代码如下&#xff1a; 问题一的运行截图如下&#xff1a; 问题二的答案代码如下&#xff1a; 问题二的运行截图如下&#xff1a; java编程题&#xff08;每日一练&#xff09;&#xff1a; 1.…

内存马实战(持续更新中)

注&#xff1a;这篇文章记录在我的语雀里面&#xff0c;语雀格式好看一点&#xff0c;地址&#xff1a; https://ganmaocai.yuque.com/ghgp8x/zoy1yn/faet35ae9gpxzn61 计划 复现以下框架的内存马注入&#xff1a; shiro&#xff1a; 普通内存马 冰蝎马 WebSocket马 xxl-job…

【Linux】-Elasticsearch安装部署[16]

目录 简介 安装 1、添加yum仓库 2、安装es 3、配置es 4、启动es 5、关闭防火墙 6、测试 简介 全文搜索属于最常见的要求&#xff0c;开源的Elasticsearch&#xff08;以下简称es&#xff09;是目前全文搜索引擎的首选。它可以快速的储存、搜索和分析海量数据。维基百科…

蓝牙模块七种工作模式——蓝牙Mesh组网工作模式

蓝牙Mesh组网模块技术在2017年得到SIG批准&#xff0c;这是一种独立的网络技术&#xff0c;兼容4及5系列蓝牙协议。它把蓝牙设备作为信号中继站&#xff0c;利用低功耗蓝牙广播的方式进行信息收发&#xff0c;蓝牙Mesh组网技术拓展了蓝牙的通讯关系&#xff0c;打破了以往蓝牙设…