Vue——formcreate表单设计器自定义组件实现

这篇具有很好参考价值的文章主要介绍了Vue——formcreate表单设计器自定义组件实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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,
  //拖拽组件的 key
  name,
  //拖拽组件的生成规则
  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
到这里我们已经实现新增一个菜单,并且可以拖拽到画布上,且可预览了。
效果图如下:
Vue——formcreate表单设计器自定义组件实现
右侧组件配置的内容,对应上述配置文件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如何使用自定义组件差不多就这样了,我在开发时也找了好多参考,说的并不清楚,所以罗里吧嗦的把自己的操作过程完整的又给大家描述了一遍。

针对评论里面有同学提到自定义组件挂载之后仍然不显示的问题,提个重点注意事项吧。
注意!注意!注意!重要的事说三遍!!!
在自定义组件规则中我们通过如下代码挂载了自定义组件:

component: SignBoard, //挂载自定义组件

1、保存组件规则时需去掉component属性,否则根据规则动态绘制formcreate表单时找不到对应路径的组件会报错

if (item.type === "SignBoard") {
	Reflect.deleteProperty(item, "component");
}

2、动态绘制formcreate表单时应提前注入自定义组件,我是在main.js中注入的文章来源地址https://www.toymoban.com/news/detail-458813.html

import SignBoard from '@/views/components/esign/SignBoard'
formCreate.component('SignBoard',SignBoard)

到了这里,关于Vue——formcreate表单设计器自定义组件实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue 自定义仿word表单下拉框组件,让操作更符合用户习惯

    预览时显示界面 进入编辑框时   组件代码 使用组件 以上代码仅作参考,如需完整代码可以私信我。

    2024年01月20日
    浏览(25)
  • vue+element 多选级联选择器自定义props

    我这里分享的是 Cascader 级联选择器 中的多选、以及如何 自定义props 的使用详解 效果 代码 这里在优化一下,将option放置外部引入,如果是通过后端传入的数据这里也可以直接赋值给option 创建一个regin.js 页面中使用 将rogin.js引入,然后在生命周期函数中赋值给options、这里如

    2024年02月16日
    浏览(24)
  • 使用ElEment组件实现vue表单校验空值

    1.绑定表单组件数组rules 2.在data域中设定组件rules 3.设定调用方法函数 提交校验 取消: 测试页面 提交空值 失去焦点 取消重置 提交后重置

    2024年01月24日
    浏览(30)
  • Element+Vue实现动态表单(多个下拉框组件)

    表单的内容为巡检计划,巡检计划可以选择多个巡检点位,每个巡检点位可以选择多个设备和对应操作。 点击加号图标增加一个下拉框 减号图标删除对应下拉框 下拉框备选项目相同 点击设置动作按钮,弹出可编辑表格,可以为该巡检点位设置多个动作 表格每行内容可编 设

    2024年02月15日
    浏览(31)
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十一:通用表单组件封装实现

      本章实现通用表单组件,根据实体配置识别实体属性,并自动生成编辑组件,实现对应数据填充、校验及保存等逻辑。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击下载

    2024年02月10日
    浏览(38)
  • element plus自定义组件表单校验

    方式一: 方式二: element ui 自定义组件校验方式,详见以下链接地址 使用element Form 自带校验功能,实现上传控件的校验_element form 校验mixin-CSDN博客​​​​​ ant design vue 1.x 自定义组件校验方式,详见以下链接​​​​​​​ant design vue1.x 自定义校验_1.x ant-design-vue date-ran

    2024年02月01日
    浏览(44)
  • 【VForm3】扩展自定义表单组件

    以下步骤均在 extension 文件夹中进行,新增完成后,Steps控件在 自定义扩展字段 中出现。 1. 定义组件 配置属性扩展 ,extension-schema.js中,根据组件属性进行配置 属性说明: type: 字段组件的类型名称,必须唯一,不能跟已有组件重复;且必须是新建组件的名称,例如组件名为

    2024年02月04日
    浏览(27)
  • VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置、表单组件化。

        1、本组件支持列表的表头自定义配置,checkbox实现 2、本组件支持列表列排序,vuedraggable是拖拽插件,上图中字段管理里的拖拽效果 ,需要的话请自行npm install 3、本组件支持查询条件动态配置,穿梭框实现 https://download.csdn.net/download/askuld/88216937

    2024年01月16日
    浏览(48)
  • 【分页表格】Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)

    这篇文章,主要介绍Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)。 目录 一、分页表格 1.1、运行效果 1.2、运行环境 1.3、案例代码

    2024年02月11日
    浏览(46)
  • ant.design(简称antd)中Form表单组件提交表单、表单数据效验、表单自定义效验、表单布局集合

            ant.design(简称antd)现在我们使用较为广泛,web端中后台表单使用非常广泛,此遍文章集合了表单日常用法及使用注意事项。         下图是UI目标样式图                           1、以下是一个组件,首先引入ant相关依赖,在引入react相关依赖,主要使用了For

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包