FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定

FormCreate官网:https://www.form-create.com

帮助文档:https://form-create.com/v3/


1. 生成内置组件
<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{type: 'input', field: 'field1', title: 'input', value: ''},
{type: 'datePicker', field: 'field2', title: 'date', value: ''},
]
}
}
}
</script>

2. 生成UI组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'AButton',
props: {
size: 'mini'
},
children: ['AButton']
},
{
type: 'AImage',
//非表单组件不会自动生成col,自定义组件需要通过native控制是否生成col
native: false,
props: {
width: '200px',
src: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
}
},
]
}
}
}
</script>

3. 生成自定义组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
import {h, defineComponent, resolveComponent} from 'vue'
import formCrate from '@form-create/ant-design-vue'
import formCreate from "@form-create/ant-design-vue";
// import UserSelect from "./UserSelect.vue";
//自定义表单组件
const UserSelect = defineComponent({
props: {
//预定义
disabled: Boolean,
modelValue: Number,
options: Array,
},
emits: ['update:modelValue'],
data: function () {
return {
value: this.modelValue,
}
},
render() {
return h(resolveComponent('ASelect'), {
disabled: this.disabled,
value: this.value,
'onUpdate:value': this.onChange,
options: this.options
});
},
watch: {
modelValue(n) {
//同步 value 的值
this.value = n
}
},
methods: {
onChange: function (val) {
this.value = val;
//更新组件内部的值
this.$emit('update:modelValue', val)
},
},
}); export default {
beforeCreate() {
//挂载组件
formCrate.component('UserSelect', UserSelect);
},
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'UserSelect',
field: 'field1',
title: '用户选择',
value: '小王',
props: {
options: [
{label: '小王', value: '小王'},
{label: '小李', value: '小李'},
]
},
},
]
}
}
}
</script>

4. 通过插槽生成组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'div',
style: 'width:200px;height:200x;background-color:#FF7271;',
children: [
{
type: 'span',
style: 'color:#FFFFFF;',
children: ['FormCreate']
}
]
},
]
}
}
}
</script>

5. 生成HTML标签

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
<template #type-UserSelect="scope">
<ASelect :value="scope.model.value" v-bind="scope.prop" @update:value="scope.model.callback">
</ASelect>
</template>
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'UserSelect',
field: 'field1',
title: '用户选择',
value: '小王',
props: {
options: [
{label: '小王', value: '小王'},
{label: '小李', value: '小李'},
]
},
},
]
}
}
}
</script>

使用form-create生成表单组件的更多相关文章

  1. 编写antd配置表单组件

    编写antd配置表单组件 整体思路 抽取formitem的配置数组:包含组件类型.名称.label名称,相关的opts和扩展的opts,传递进入组件 组件通过Form.create()进行表单创建,能 ...

  2. 表单组件 form fastadmin(生成表单元素)

    Form组件 定义文件位置: /extend/fast/Formphp 通用参数 $name 通常为我们组件的名称(name属性值),我们在后台接收时可以通过这个名称来获取到它所对应的值 $value ...

  3. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  4. Form( 表单) 组件

    本节课重点了解 EasyUI 中 Form(表单)组件的使用方法, 这个组件不依赖于任何组件.一. 加载方式表单组件只能在 JS 区域设置,首先定义一张表单.<form id="box ...

  5. 第二百二十一节,jQuery EasyUI,Form(表单)组件

    jQuery EasyUI,Form(表单)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Form(表单)组件的使用方法,这个组件不依赖于 ...

  6. Vue + Element-ui实现后台管理系统(5)---封装一个Form表单组件和Table表格组件

    封装一个Form表单组件和Table组件 有关后台管理系统之前写过四遍博客,看这篇之前最好先看下这四篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-syste ...

  7. 封装react antd的form表单组件

    form表单在我们日常的开发过程中被使用到的概率还是很大的,比如包含了登录.注册.修改个人信息.新增修改业务数据等的公司内部管理系统.而在使用时这些表单的样式如高度.上下边距.边框.圆角.阴影.高亮等 ...

  8. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  9. vue自定义表单生成器,可根据json参数动态生成表单

    介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...

  10. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

随机推荐

  1. 准备好"干翻世界"之前,不妨先听听我们的意见

    期待大家的到来哦~    

  2. Mac下SSH Key配置

    1 .检查.ssh文件夹是否存在 $ ls -al ~/.ssh 2.如果不存在新建.ssh文件平 $ mkdir ~/.ssh 3.生成KEY在命令行中输入,your_email@example.c ...

  3. IPV6禁用导致 RabbitMQ 无法启动的问题

    问题现象 在开发的过程中遇到了 RabbitMQ 怎么也启动不起来的现象.查看 RabbitMQ 自身的启动日志,并没有发现有什么有用的报错信息,只是从某天开始就一直在打印重启的日志,尝试多次重启也不 ...

  4. Python__FLASK__MySQL基础

    1.数据库的基本操作 创建数据库:使用"CREATE DATABASE 数据库名:"语句创建新的数据库 查看数据库:使用"SHOW DATABASES:"语句查 ...

  5. [转]Windows系统下彻底删除Windows.old 文件夹的方法

    系统是直接硬盘安装的,导致c盘产生了旧系统的文件夹Windows.old,占用很大的磁盘空间,删也删不掉,咋办?不要紧,下面大神来教你神操作!!! 1.打开"计算机",选择C盘,进 ...

  6. 贝叶斯定律和卡尔曼滤波中,关于(e^-x)*(e^-x)的积分的计算方法

    贝叶斯定律和卡尔曼滤波中,关于(e^-x)*(e^-x)的积分的计算方法: 1.用数学软件Mathmatica计算: 2.用复变函数中的留数定理计算: 3.用FFT+卷积公式计算.

  7. 架构-初识DDD

    引言 继上一篇BFF的文章后,我又去网上学习了一下DDD(领域驱动设计),发现一篇不错的文章,参考并写了一些自己的理解分享在这里. DDD 是什么 领域驱动设计(Domain Driven Desig ...

  8. x86平台SIMD编程入门(3):浮点指令

    1.算术指令 算术类型 函数示例 备注 加 _mm_add_sd._mm256_add_ps 减 _mm_sub_sd._mm256_sub_ps 乘 _mm_mul_sd._mm256_mul_ps ...

  9. 10.3 - AM - 模拟赛 总结

    复盘 T1 很水,一道异或求和,但是某两位仁兄因没打括号而死. T2 很水,一道字符串处理,但是我和某位仁兄因没特判而死(虽然没有 hack 掉我,所以我理论上还是满分). T3 不水,看了很久,没想 ...

  10. w3cschool-OpenResty 最佳实践Library

    https://www.w3cschool.cn/openresty1/ OpenResty LRR 访问有授权验证的 Redis 2.不重启Redis设置密码: 在配置文件中配置requirepas ...