介绍

先来个简单的介绍,FormMaking 可视化表单设计器,基于Vue的表单设计器,让表单开发简单而高效。

官网地址:http://form.making.link

文档地址:https://www.yuque.com/ln7ccx/ntgo8q

表单设计器内置的组件很多时候不能满足到客户的需求,这个时候就需要自己定义一些组件来进行配置。接下来看看我们的处理方法:

作用域插槽

最开始我们在设计器中采用作用域插槽的方式,给生成器预留了插槽,可以在生成器配置的时候引入自己的组件,做到自定义,具体方法如下:

  1. 拖拽【自定义区域】放入编辑区域。

  2. 根据你需要放入到该区域的字段选择类型。

  3. 点击【生成代码】可快速查看,通过编码方式放入自己的组件。

这样来进行自定义组件的加入,需要在生成器中编写代码来实现,不是很友好,接下来介绍下更好的方法。

动态组件

最新版本我们引入了动态组件来实现。在设计器中进行自定义组件的配置,在设计中即可查看效果。

设计器字段动态配置

最新版本中我们还提供了设计器字段的动态配置,效果图如下:

如何实现的请看下面简单介绍:

  1. 简单实现一个自定义的组件
<template>
  <div class="custom-component">
    <span>
      宽:<el-input v-model="dataModel.width" style="width: 200px;"></el-input>
    </span>
    <span>
      高:<el-input v-model="dataModel.height" style="width: 200px;"></el-input>
    </span>
  </div>
</template>

<script>
export default {
  name: 'custom-width-height',
  props: {
    value: {
      type: Object,
      default: () => ({})
    }
  },
  data() {
    return {
      dataModel: this.value
    }
  },
  watch: {
    value (val) {
      this.dataModel = val
    },
    dataModel (val) {
      this.$emit('input', val)
    }
  }
}
</script>

<style lang="scss">
.custom-component{
  background: #eee;
  padding: 10px;

  span{
    +span{
      margin-left: 10px;
    }
  }
}
</style>

需要注意,自定义组件必须能够使用 v-model 进行双向绑定,如果还不知道如何创建,可以自行先阅读 Vue.js 文档。

  1. 注册组件
Vue.use(FormMaking, {
  components: [{
    name: 'custom-width-height',
    component: CustomComponent // 自定义组件
  }]
})

也可以使用 Vue.component 进行组件的注册

  1. 设计器配置
<template>
  <fm-making-form
    :custom-fields="customFields"
  >
  </fm-making-form>
</template>

<script>
export default {
  data() {
    return {
      customFields: [
        {
          name: '自定义组件', // 字段名称
          el: 'custom-width-height', // 组件注册的名称
          options: {
            defaultValue: {}, // 默认值
            customClass: '', // 自定义样式
            labelWidth: 100, // 标签宽度
            isLabelWidth: false, // 是否展示标签
            hidden: false, // 隐藏属性
            dataBind: true, // 数据绑定属性
            required: false, // 必填校验
            dataType: '', // 数据类型校验
            pattern: '', // 正则表达式校验
          }
        }
      ]
    }
  }
}
</script>

结束语

通过自定义组件,可以实现引入自己想要的各种组件(包括图表和移动端),只需要简单配置就行。

更多的功能可以进入官网体验。

Logo

前往低代码交流专区

更多推荐