Vue使用form-create-designer插件搭建表单构建器

11 篇文章 0 订阅
订阅专栏

一、插件简介

form-create-designer 是基于 @form-create/element-ui 实现的表单设计器组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。

1.快速导航

  • 插件地址:https://github.com/xaboy/form-create-designer
  • 文档地址:http://designer.form-create.com/guide
  • 演示Demo:http://form-create.com/designer

2.核心功能

  • 内置22个常用的表单组件和布局组件
  • 通过 JSON 生成表单
  • 双向数据绑定
  • 方便扩展
  • 事件扩展,事件注入
  • 数据验证
  • 栅格布局
  • 内置组件

二、基础使用

1.下载插件

npm install @form-create/designer --save
npm install @form-create/element-ui --save

2.引入插件

import Vue from 'vue'
import formCreate from '@form-create/element-ui'
import FcDesigner from '@form-create/designer'
Vue.use(formCreate)
Vue.use(FcDesigner)

3.配置使用

<template>
    <div>
        <fc-designer ref="designer"/>
    </div>
</template>
<script>
    export default {
        data() {
            return {

            }
        }
    }
</script>

4.效果演示

在这里插入图片描述

三、功能扩展

利用 codemirror 插件和 @form-create/designer 的API实现表单配置的导入导出功能

1.下载插件

# codemirror
npm install vue-codemirror --save
# JSON校验器插件
npm install jsonlint-mod --save

2.引入插件

// 引入表单构建插件
import Vue from 'vue'
import formCreate from '@form-create/element-ui'
import FcDesigner from '@form-create/designer'
Vue.use(formCreate)
Vue.use(FcDesigner)

// 引入代码编辑器
import jsonlint from 'jsonlint-mod';
import {codemirror} from 'vue-codemirror'
import 'codemirror/addon/lint/lint'
import 'codemirror/addon/lint/json-lint'
import 'codemirror/lib/codemirror.css'
import 'codemirror/addon/lint/lint.css'
import 'codemirror/addon/edit/matchbrackets.js'
import 'codemirror/mode/javascript/javascript.js'

3.配置使用

  • HTML代码

    <template>
      <div class="main">
        <div class="middle">
          <div class="tool">
            <!--功能按钮-->
            <el-row>
              <el-button icon="el-icon-download" type="primary" size="small" 
                         @click="handleDownloadRule()" round>生成表单JSON</el-button>
              <el-button icon="el-icon-upload2" type="success" size="small" 
                         @click="handleUploadRule()" round>导入表单JSON</el-button>
              <el-button icon="el-icon-download" type="primary" size="small" 
                         @click="handleDownloadOption()" round>生成表单配置</el-button>
              <el-button icon="el-icon-upload2" type="success" size="small" 
                         @click="handleUploadOption()" round>导入表单配置</el-button>
            </el-row>
          </div>
          <!--表单构建器-->
          <fc-designer class="form-build" ref="designer"/>
        </div>
    	
        <!--对话框-->
        <el-dialog :title="dialogTitle" 
                   :visible.sync="dialogState" 
                   :close-on-click-modal="false" 
                   append-to-body>
          <codemirror v-model="codemirrorContent" 
                      :options="codemirrorOptions" 
                      style="height: 90%;text-align: left;border: 1px solid #ccc;">
          </codemirror>
          <el-row v-if="dialogMenu">
            <el-button @click="dialogState = false">取 消</el-button>
            <el-button type="primary" @click="handleImport()">导 入</el-button>
          </el-row>
        </el-dialog>
      </div>
    </template>
    
  • JavaScript代码

    export default {
        beforeCreate() {
    		// 开启JSON校验
            window.jsonlint = jsonlint
        },
        data() {
            return {
                dialogTitle: '', // 对话框标题
                dialogState: false, // 对话框状态
                dialogMenu: false, // 对话框菜单状态
    			
                // codemirror配置
                codemirrorOptions: {
                    mode: "application/json",
                    theme: "default",
                    gutters: ['CodeMirror-lint-markers'],
                    tabSize: 2,
                    lint: true,
                    line: true,
                    lineNumbers: true,
                    matchBrackets: true,
                    lineWrapping: true,
                    styleActiveLine: true,
                    readOnly: false
                },
                // codemirror内容
                codemirrorContent: null
            }
        },
        components: {
            codemirror
        },
        methods: {
            // 导出表单JSON
            handleDownloadRule(){
                this.dialogTitle = "表单规则"
                this.dialogState = true
                this.dialogMenu = false
    
                this.codemirrorOptions.readOnly = true
                this.codemirrorContent = JSON.stringify(this.$refs.designer.getRule(), 
                                                        null, 2)
            },
            // 导出表单配置
            handleDownloadOption(){
                this.dialogTitle = "表单配置"
                this.dialogState = true
                this.dialogMenu = false
    
                this.codemirrorOptions.readOnly = true
                this.codemirrorContent = JSON.stringify(this.$refs.designer.getOption(), 
                                                        null, 2)
            },
            // 导入表单JSON
            handleUploadRule(){
                this.dialogTitle = "导入表单规则"
                this.dialogState = true
                this.dialogMenu = true
    
                this.codemirrorOptions.readOnly = false
                this.codemirrorContent = JSON.stringify([], null, 2)
            },
            // 导入表单配置
            handleUploadOption(){
                this.dialogTitle = "导入表单配置"
                this.dialogState = true
                this.dialogMenu = true
    
                this.codemirrorOptions.readOnly = false
                this.codemirrorContent = JSON.stringify({}, null, 2)
            },
            // 配置导入
            handleImport(){
                try {
                    let content = JSON.parse(this.codemirrorContent)
                    if(this.dialogTitle == "导入表单规则"){
                        this.$refs.designer.setRule(content)
                    }
                    if(this.dialogTitle == "导入表单配置"){
                        this.$refs.designer.setOptions(content)
                    }
                    this.dialogState = false
                } catch(e) {
                    alert('输入内容格式有误!')
                }
            }
        }
    }
    

4.效果演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


form-createform-create-designer创建自定义组件
FinelyYang的专栏
05-26 2517
在项目中,我需要使用表单设计form-create-designer设计带有选择用户的弹窗组件,而设计内置的组件不能满足需求,因此要创建自定义组件。app.component('selectUser', SelectUser) 注册组件。name = 'selectUser',name的值为注册的组件名称。1.开发选择用户的组件 SelectUser.vue。3.form-create-designer创建自定义组件。全局注册:在main.ts中引入自定义组件,(1)定义组件的拖拽规则。
formDesigner
04-12
js-ework.rar 博文链接:https://lx13345.iteye.com/blog/1692241
项目推荐:Form-Create-Designer
gitblog_07080的博客
09-13 359
项目推荐:Form-Create-Designer form-create-designer 好用的vue可视化表单设计 项目地址: https://gitcode.com/gh_mirrors/fo/form-create-d...
form-create-designer:好用的vue可视化表单设计
04-06
表单创建设计师 形式创建设计师是基于实现的表单设计组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。 如果对您有帮助,您可以点右上角“ Star”支持一下谢谢!本项目还在不断开发完善中,如有任何建议或问题 本项目QQ讨论群 安装 npm install @form-create/designer ♡ CDN: <!-- import Vue.js --> < script src =" //vuejs.org/js/vue.min.js " > </ script > <!-- import stylesheet --> < link rel =" stylesheet " href =" https://unpkg.com/element-ui/lib/theme-chalk/index.css " > <!-- import element -
开源项目 `form-create-designer` 常见问题解决方案
最新发布
gitblog_07082的博客
09-13 372
开源项目 form-create-designer 常见问题解决方案 form-create-designer 好用的vue可视化表单设计 项目地址: https://gitcode.com/gh_mirrors/fo/form...
form-create-designer
weixin_43878117的博客
08-04 5377
1、简介 form-create-designer 是基于 @form-create/element-ui实现的表单设计组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。 2、文档地址:http://designer.form-create.com/guide 3、核心功能 内置22个常用的表单组件和布局组件 通过 JSON 生成表单 双向数据绑定 方便扩展 事件扩展,事件注入 数据验证 栅格布局 内置组件 4、安装 yarn add @form-create/
form-create-designer表单设计,组件关联字段值
qq_41169990的博客
03-15 1340
表单设计要求在字段id绑定的时候下拉关联获取到的字段,不需要手动填写,下拉选择就好!
Form-Create-Designer 项目教程
gitblog_00587的博客
08-10 523
Form-Create-Designer 项目教程 form-create-designer好用的vue可视化表单设计项目地址:https://gitcode.com/gh_mirrors/fo/form-create-designer 1. 项目的目录结构及介绍 Form-Create-Designer 项目的目录结构如下: form-create-designer/ ├── compone...
vue3中使用form-create-designer
qq_45383777的博客
02-23 3351
具体内容可参考官网因为我主要的需求只有两点,第一是自己设计表单,第二是根据表单规则在FcDesigner中回显表单主要用到了两个api。
vue自定义表单生成form-create使用详解
12-08
`vue自定义表单生成form-create`是一个强大的工具,专为Vue.js开发人员设计,用于简化复杂的表单创建过程。它允许通过JSON定义来动态渲染表单,并且支持数据收集、验证和提交功能。此外,它还具备生成任何Vue组件...
使用form-create动态生成vue自定义组件和嵌套表单组件
10-17
`form-create`是一个专为Vue设计的工具,用于动态生成表单及自定义组件,使得构建复杂的表单场景变得简单。在本文中,我们将深入探讨如何使用`form-create`来动态生成vue自定义组件和嵌套表单组件。 首先,`form-...
form-builder:Web表单构建
05-09
Web表单生成 克隆存储库并移至项目目录 git clone https://github.com/randseay/draggable-forms.git && cd draggable-forms 安装全局和本地节点依赖项 npm install -g bower browserify gulp npm install 安装Bower依赖项 bower install 服务项目 gulp serve
vue_form_design:基于Vue3.0的表单设计
03-16
vue_form_design:基于Vue3.0的表单设计
JS+HTML版表单构造(Fom Builder)适合Web系统使用
06-21
JS+HTML版表单构造(Fom Builder),适合Web系统使用,ASP.NET,JSP,PHP 在线构造,拖拉完成表单制作,立即生成HTML源代码,实时预览。
vueeleformgenerator是专为vueeleform开发的可视化表单设计工具
08-10
vue-ele-form-generator是专为vue-ele-form开发的可视化表单设计工具, 让表单开发的效率更上一层楼
推荐一款高效表单设计form-create-designer
gitblog_00078的博客
05-15 818
推荐一款高效表单设计form-create-designer form-create-designer好用的vue可视化表单设计项目地址:https://gitcode.com/gh_mirrors/fo/form-create-designer 在前端开发中,表单设计往往是一项既重要又耗时的任务。现在,让我们一起探索@form-create/designer——一个基于Vue.js和El...
Vue 使用form-create-designer插件搭建表单构建
weixin_38673922的博客
01-26 2062
一、下载 cnpm install @form-create/designer --save cnpm install @form-create/element-ui --save 二、引入main.js import formCreate1 from "@form-create/element-ui" import FcDesigner from '@form-create/designer' Vue.use(formCreate1) Vue.use(FcDesigner) 三、.vue
写文章

热门文章

  • Vue使用form-create-designer插件搭建表单构建器 11387
  • 大数据技术之云数据库 5575
  • GitHub访问加速 4736
  • Vue实现数据表格的打印、导入、导出 4307
  • Google云计算之Megastore 3906

分类专栏

  • JVM教程 47篇
  • Vue 11篇
  • 23种设计模式 23篇
  • Spring Boot 18篇
  • Java 26篇
  • Spring Cloud 22篇
  • 笔记 15篇
  • Python基础入门 5篇
  • 网络安全 4篇
  • 高效率技巧 2篇
  • Python机器学习 9篇
  • 大数据 7篇
  • 云计算 9篇
  • 软件质量与测试 3篇
  • 数据库 2篇
  • HTML 1篇
  • 运维 1篇
  • Redis 2篇

最新评论

  • Vue使用form-create-designer插件搭建表单构建器

    长相思798: 没看懂,git下载下来的东西要怎么使用呢?是直接在开发项目上运行,还是git下载后按照你的步骤做? 他这个说明书没整明白,

  • Google云计算之Dapper

    2301_77765187: 比老师ppt清晰多了

  • Google云计算之Dremel

    四处碰壁嘤嘤怪: 请问Name.Url的第一个项http://A的r为什么不是2呀,读取路径上language字段不是重复了吗

  • Vue使用form-create-designer插件搭建表单构建器

    y574713948: 使用"codemirror": "^5.60.0" 版本

  • Python机器学习算法之AdaBoost算法

    尤瑞卡: 能不能麻烦博主公布一下数据集,万分感谢!

大家在看

  • 为什么学网安?网络安全真的算是近些年前景很不错的IT领域
  • 探索网页组件化:原生JavaScript动态加载HTML与iframe的使用与比较
  • 基于Java+SpringBoot+Vue的大学生就业招聘系统的设计与实现
  • 使用分支限界法解决电路布线问题
  • 关于EasyX图形库以及基于其实现的小游戏 179

最新文章

  • JVM运行时参数详解
  • JVM监控诊断之工具使用(下篇)
  • JVM监控诊断之工具使用(上篇)
2021年147篇
2020年3篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家热门玻璃钢面包雕塑舟山玻璃钢人物雕塑厂家泰州玻璃钢鹿雕塑SMC玻璃钢雕塑瓷厂最新的美陈商场拉丝玻璃钢雕塑择优推荐河北广场玻璃钢雕塑厂家河北室内商场美陈市场世界名牌玻璃钢花盆会发光的玻璃钢雕塑厂家电话扬州关公玻璃钢雕塑福建开业商场美陈订购上海环保玻璃钢雕塑生产厂家玻璃钢园林雕塑定制北京高质量玻璃钢雕塑销售厂家汉中玻璃钢雕塑厂家深圳欧式玻璃钢雕塑定做厂家福建卡通玻璃钢雕塑定制玻璃钢佛像雕塑哪个信誉好云南玻璃钢卡通雕塑设计黄山司马光玻璃钢雕塑四川季节性商场美陈销售公司玻璃钢树脂雕塑大门四川玻璃钢人物雕塑厂家福建玻璃钢雕塑摆件销售宜昌玻璃钢树脂雕塑昆明主题玻璃钢雕塑供应商福建超市商场美陈有哪些斗门商场美陈扬州玻璃钢人物雕塑设计香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化