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

虽然form-create已经内置了许多组件,但如果我们需要的组件不是常规组件或者内置组件效果实现的不满意,那我们就需要自定义组件来实现,毕竟自定义组件的灵活度非常高,能实现你想要的任何效果。

本文将从如何给表单设计器新增一个自定义组件,并让form-create展示出来成功提交表单来介绍。

如何给表单设计器左侧新增一个菜单

官方文档:http://designer.form-create.com/guide/menu.html
官方内置了main,aide,layout三个分组。可以在已有分组中新增菜单,也可以新增分组并添加菜单。

在已有分组中新增菜单

//插入拖拽按钮到`main`分类下
this.$refs.designer.appendMenuItem('main', {icon: 'icon-checkbox',name: 'checkbox',label: '单选框'
})

新增分组并新增菜单

//插入自定义菜单
this.$refs.designer.addMenu({title: "自定义组件",name: "custom",list: [{icon: 'icon-checkbox',name: 'checkbox',label: '单选框'}]
});

上面代码新建了一个自定义组件的分组,并且在这个分组中新增了一个单选框的菜单。如果这里我们新增的菜单关联的是一个自定义组件,那么我们需要先插入组件生成规则,否则只是新增了按钮,拖拽无效。修改上述代码如下:

//插入自定义组件signboard的生成规则(详细内容下一节讲)
this.$refs.designer.addComponent(signboard);//插入自定义菜单
this.$refs.designer.addMenu({title: "自定义组件",name: "custom",list: [{icon: signboard.icon,name: signboard.name,label: signboard.label}]});
});

自定义组件

官方文档说明:http://designer.form-create.com/guide/component.html

新增Vue自定义组件

这个内容没什么好说,就跟你平时开发Vue自定义组件一样。新建完成之后,我们需要定义组件的生成规则,这样才能在form-create中使用。

自定义组件生成规则

组件生成规则是一份js文件,定义了一个对象,以及组件生成所需配置的一些属性,常用的如:type,field,title,props,options等,具体的字段说明参考:http://www.form-create.com/v2/guide/rule.html#%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE
代码示例:

import SignBoard from "./components/esign/SignBoard.vue";const label = "电子签名";
const name = "SignBoard";function makeRequiredRule() {return {type: "Required",field: "formCreate$required",title: "是否必填"};
}export const signboard = {//拖拽组件的图标icon: "icon-checkbox",//拖拽组件的名称label,//拖拽组件的 keyname,//拖拽组件的生成规则rule() {//如果在 props 方法中需要修改 rule 的属性,需要提前在 rule 上定义对应的属性return {//生成组件的名称type: name,field: "signValue", //表单组件的字段名称,即v-model绑定的值title: label,component: SignBoard, //挂载自定义组件effect: {//设置自定义属性fetch: "",required: "请点击签名" //必填校验},//校验规则validate: [{ type: "string", required: true, message: "请点击签名" }],props: {},// options: []};},props() {return [makeRequiredRule(),// makeOptionsRule("options"),{ type: "switch", field: "disabled", title: "是否禁用" },{ type: "input", field: "action", title: "上传的地址(必填)" },{type: "Struct",field: "headers",title: "设置上传的请求头部",props: { defaultValue: {} }}];}
};

官方文档中对于组件规则的定义并没有很详细,如果大家遇到不知如何定义的问题,可以参考内置组件的规则的代码,https://gitee.com/xaboy/form-create-designer/tree/master/src/config/rule
到这里我们已经实现新增一个菜单,并且可以拖拽到画布上,且可预览了。
效果图如下:

右侧组件配置的内容,对应上述配置文件props的配置内容。

form-create展示自定义组件

官方文档说明:http://www.form-create.com/v2/guide/custom-form-component.html
要生成的自定义组件必须通过vue.component方法挂载到全局,或者通过formCreate.component方法挂载

例如:

formCreate.component('TestComponent',component);

挂载完成之后,我们就可以根据接口下发的组件生成规则来生成自定义组件了。这里的组件生成规则就是你前面定义的规则。但这里有个问题,前面我们在表单设计器里插入组件规则时,定义了component,这样在接口下发时也会下发这个字段,这会导致找不到自定义组件的文件,因为你可能并不是在同一个项目中使用这个自定义组件的,所以我这里加了一点处理,在下发组件规则时手动去掉了component字段。这样,我们通过先挂载自定义组件,再生成form-create就不会有问题了。

关于form-create如何使用自定义组件差不多就这样了,我在开发时也找了好多参考,说的并不清楚,所以罗里吧嗦的把自己的操作过程完整的又给大家描述了一遍。

Vue——formcreate表单设计器自定义组件实现相关推荐

  1. ecology关于流程表单设计器自定义开发及常见场景方案分享

    一.表单设计器模板如何自定义开发 表单设计器可设置自定义属性以及插入代码块,二者相辅结合.灵活运用,可实现多样化客户需求 自定义属性分为:行自定义属性(绑定在table布局tr行标签上).单元格自定义 ...

  2. Vue ElementUI 表单设计器 代码生成器

    界面效果 体验地址 github gitee(国内) 特色: 1.支持ElementUI组件库,未来会持续添加更多组件库支持. 2.支持多达37种控件,满足各种业务场景. 3.组件配置详细,基本1:1 ...

  3. vue自定义表单设计器思路

    Vue是一种流行的JavaScript框架,用于构建Web应用程序.Vue的灵活性使得它成为一种非常适合创建自定义表单设计器的框架.本文将介绍如何使用Vue实现一个自定义表单设计器,并最终实现单据自定 ...

  4. 多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单

    本文完整版:<多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单> Vue 表单设计器 form-generator - 适配 Element Plus UI 框架的表单设计器 f ...

  5. activiti表单设计器_基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址: http://tools.xiaoyaoji.cn/form Gi ...

  6. 基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址:http://form.making.link GitHub地址:h ...

  7. 基于VUE的ElementUi可视化表单设计器布局器

    码农苦码农懂的个人空间 工作日志 正文 基于VUE的ElementUi可视化表单设计器布局器 顶 原 码农苦码农懂 发布于 09/11 15:35 字数 1187 阅读 41 收藏 0 点赞 1 评论 ...

  8. 基于vue Ant-Design 的表单设计器,快速开发

    基于vue Ant-Design 的表单设计器,快速开发https://gitee.com/kcz66/k-form-design/ 表单设计器 k-form-design image 简介 参考项目 ...

  9. Antd Vue 表单生成快速开发指南,内附强大的表单设计器

    之前发布了一款基于Element的表单设计器,可以快速设计和生成表单,设计器地址:http://form.making.link/.现在我可以告诉大家,Antd表单支持来了,可以使用设计器设计好表单后 ...

最新文章

  1. 个人c++ 错误记录
  2. C++的Android接口---配置NDK
  3. C++:指针数组理解
  4. SQL中DATEADD和DATEDIFF的用法
  5. mysql pxc gcache_MySQL高可用之PXC
  6. 阿里云服务器购买价格,真正实用的阿里云服务器价格表
  7. Novel 网络小说点评
  8. base64-图片传输
  9. 毕业10年总结与2019展望
  10. 设置Layui表格字段的字体颜色
  11. catia利用宏批量改名的方法_catia怎么批量改名-catia利用宏批量改名的方法 - 河东软件园...
  12. 【触动精灵】开发手册学习整理(一)
  13. 超神战记不显示服务器,《超神战记》停运公告
  14. java画乌龟_用java代码画乌龟,还要能让它爬。
  15. 基于opencv+dlib的face morph
  16. 阿里云服务器Docker安装与卸载
  17. [最完整的前端学习手册]——JavaScript基础一:
  18. 主机配置备忘: i3 2100 + h61/b75 主板
  19. 全面解析FPGA的基础知识
  20. Ventuz发布vpr显示鼠标

热门文章

  1. oracle层级计算推演,(特价书)Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解(资深Oracle专家黄玮十年磨一剑,盖国强作序力荐)(china-pub首发)...
  2. 区块链案例实践学习报告_2
  3. 关于List 的一个方法 removeif()
  4. 物联网及阿里的物联网平台
  5. 视觉设计 :汽车设计,平面设计与其他 - No.0 - 计划
  6. Java项目:Springboot生鲜水果商城
  7. .com和.cn有什么区别?
  8. ps如何把歪了的图片调正
  9. 老虎地图是手机GPS地图吗,如何下载?
  10. 定义未清过账期间变式