当前位置: 首页 > news >正文

Vue可视化表单设计 FcDesigner v3.1.0 发布,新增 12 个组件,支持事件配置等

FcDesigner 是一款可视化表单设计器组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。

本项目采用 Vue 和 ElementPlus 进行页面构建,内置多语言解决方案,支持二次扩展开发,支持自定义组件扩展。

兼容 Vue2 和 Vue3 版本
帮助文档 | 在线演示 | 源码下载

3.2.0

  • 增加 12 个可拖拽组件,目前共内置了 36 个可拖拽组件
  • 新增表格布局
  • 新增表格表单组件
  • 增加表单结构预览
  • 增加默认值录入功能
  • 增加表单和组件的事件配置
  • 增加多端预览和操作撤销和重做

img

安装

npm install @form-create/designer@next

引入

CDN:

<link href="https://unpkg.com/element-plus@2.0.1/dist/index.css"></link>
<script src="https://unpkg.com/vue@next"></script>
<script src="https://unpkg.com/element-plus@2.0.1/dist/index.full.js"></script>
<!-- import @form-create/element-ui -->
<script src="https://unpkg.com/@form-create/element-ui@next/dist/form-create.min.js"></script>
<!-- import @form-create/designer -->
<script src="https://unpkg.com/@form-create/designer@next/dist/index.umd.js"></script>
<div id="app"><fc-designer height="100vh" />
</div>
<script>const { createApp } = Vueconst app = createApp({});app.use(formCreate);app.use(FcDesigner);app.mount('#app');
</script>

NodeJs:

shell

npm install @form-create/designer@next

请自行导入 ElementPlus 并挂载

import formCreate from '@form-create/element-ui'
import FcDesigner from '@form-create/designer'
import ELEMENT from 'element-plus';
import 'element-plus/dist/index.css';
app.use(ELEMENT);
app.use(formCreate)
app.use(FcDesigner)

使用

<fc-designer ref="designer" height="100vh" />

组件配置

<fc-designer ref="designer" />
  • locale Object

多语言配置,默认为中文

  • mask boolean

是否显示组件的遮罩,默认为 true,不可以操作组件

  • height string|number

设计器组件的高度

  • menu MenuList

自定义左侧的菜单列表,会覆盖默认的菜单列表

  • config Config

可以配置设计器内模块是否显示和默认规则的修改

  • handle Handle

设计器顶部扩展操作按钮

组件的事件

  • active 组件选中事件,当组件在设计器中被选中时触发

    emit('active', Rule);
    
  • create 组件新增事件,创建新组件时触发

    emit('create', Rule);
    
  • copy 组件复制事件,当组件被复杂时触发

    emit('copy', Rule);
    
  • delete 组件删除事件,当组件在设计器中被删除时触发

    emit('delete', Rule);
    
  • drag组件拖入事件,当拖入新组件时触发

    emit('drag', {dragRule, item});
    
  • inputData录入数据事件, 保存录入数据时出发

    emit('inputData', formData);
    

组件的方法

<fc-designer ref="designer" />

通过refs.designer调用下面的方法

  • 添加模板和拖拽组件的描述文件,并按照menu字段自动添加到对应的菜单下

    type addComponent = (dragRule: dragRule|dragTemplateRule) =>void;
    type addComponent = (dragRule: Array<dragRule|dragTemplateRule>) =>void;
    
  • 覆盖添加拖拽组件到指定的菜单下

    type setMenuItem = (menuName: string, list: MenuList) => void;
    
  • 在设计器左侧添加新的菜单

    type addMenu = (menu: Menu) =>void;
    
  • 设置设计器表单的生成规则

    type setRule = (rule: string|Rule[]) => void;
    
  • 设置设计器表单的表单配置

    type setOption = (opt: Options) => void;
    

    别名方法setOptions

  • 获取设计器表单的渲染规则(Array)

    type getRule = () => Rule[];
    
  • 获取设计器表单的json渲染规则(string)

    type getJson = () => string;
    
  • 获取设计器表单的表单配置(Object)

    type getOption = () => Options;
    

    别名方法getOptions

  • 获取设计器表单的表单的json配置(string)

    type getOptionsJson = () => string;
    
  • 获取表单的formData

    type getFormData: () => Object;
    
  • 设置表单的formData

    type setFormData: (formData: Object) => void;
    
  • 获取设计器的表单的层级规则描述

    type getTree: () => TreeData;
    
  • 获取设计器的表单中表单组件的规则描述

    type getFormTree: () => TreeData;
    
  • 预览表单

    type openPreview = () => void;
    
  • 开启录入数据模式

    type openInputData: (open: boolean) => void;
    
  • 清空设计器的表单

    type clearDragRule = () => void;
    
  • 获取设计器中所有的字段名

    type fields = () => string[];
    
  • 选中设计器中指定组件

    type toolActive = (rule:Rule) => void;
    
  • 清空设计器中组件的选中状态

    type clearActiveRule = () => void;
    
  • 设置表单配置的表单规则,于config.formRule相同

    type setFormRuleConfig = (rule: () => Rule[], append: boolean) => void;
    
  • 设置组件基础配置表单的表单规则,于config.baseRule相同

    type setBaseRuleConfig = (rule: () => Rule[], append: boolean) => void;
    
  • 设置组件验证配置表单的表单规则,于config.validateRule相同

    type setValidateRuleConfig = (rule: () => Rule[], append: boolean) => void;
    
  • 设置指定组件属性配置的表单规则,于config.componentRule相同

    type setComponentRuleConfig = (id: string, rule: () => Rule[], append: boolean) => void;
    

表单回显

获取设计器表单规则和回显

获取设计表单的数据

//获取表单的生成规则
const ruleJson = this.$refs.designer.getJson();
//获取表单的配置
const optionsJson = this.$refs.designer.getOptionsJson();//todo 保存JSON数据到数据库中

回显设计表单

//todo 加载表单JSON规则//回显表单
this.$refs.designer.setOptions(optionsJson);
this.$refs.designer.setJson(ruleJson);

表单渲染

挂载 form-create, 重要!

//从设计器中导入 formCreate
import {formCreate} from '@form-create/designer';
//挂载 formCreate
app.use(formCreate);

加载规则并渲染表单

<template><div id="app"><form-create v-model="formData" v-model:api="fApi" :rule="rule" :option="option"></form-create></div>
</template>
<script>import formCreate from '@form-create/element-ui';export default {data() {return {//实例对象fApi: {},//表单数据formData: {},//表单生成规则rule: [],//组件参数配置option: {}}},beforeCreate(){const rule,option;// todo 加载表单JSON规则this.rule = formCreate.parseJson(rule);this.option = formCreate.parseJson(option);}}
</script>

相关文章:

  • Java项目:96 springboot精品在线试题库系统
  • preventDefault()与stopPropagation()有什么区别?
  • IGraph使用实例——线性代数计算(blas)
  • 强达电路营收下滑净利润急剧放缓:周转率骤降,2次因环保被罚
  • 初识SDN(二)
  • 弘君资本:存储芯片概念强势,西测测试三连板,佰维存储涨超10%
  • 【C++】6-6 你好,输出的格式控制(对齐)
  • H6911 DC2.6-40V升压IC 升24V36V48V60V80V100V10A数转模无频闪LED芯片
  • 过滤器、监听器、拦截器的区别
  • 格式化数据恢复指南:从备份到实战,3个技巧一网打尽
  • pycharm 上一次编辑位置不见了
  • AI时代下的智能商品计划管理
  • Love-Yi情侣网站3.0存在SQL注入漏洞
  • 如何在路由器上安装代理服务:详细教程
  • redis笔记1
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 2017-08-04 前端日报
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • PAT A1017 优先队列
  • 简单基于spring的redis配置(单机和集群模式)
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 算法-插入排序
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 学习HTTP相关知识笔记
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 用element的upload组件实现多图片上传和压缩
  • 运行时添加log4j2的appender
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​卜东波研究员:高观点下的少儿计算思维
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (分布式缓存)Redis持久化
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (蓝桥杯每日一题)love
  • (新)网络工程师考点串讲与真题详解
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)JAVA中的堆栈
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • **python多态
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 分布式技术比较
  • .NET 解决重复提交问题
  • .net后端程序发布到nignx上,通过nginx访问
  • .net中我喜欢的两种验证码
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BT]BUUCTF刷题第4天(3.22)
  • [c]扫雷
  • [CF226E]Noble Knight's Path