form-create-designer整合element-plus使用方法

最近在使用form-create-designer生成表单的时候遇到了很多问题和各种报错,按照官方文档的方法一步步来做,发现行不通,后来经过不断尝试,终于找到了使用方法,这里做一下总结。

1、安装所需的依赖包

npm install element-plus --save
npm install @form-create/designer@next

2、在main.ts文件中添加配置

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import formCreate from '@form-create/element-ui'
import FcDesigner from '@form-create/designer'

app.use(ElementPlus)
app.use(formCreate)
app.use(FcDesigner)

3、创建表单生成器

<template>
  <div>
    <fc-designer ref="designer" :height="height" />
  </div>
</template>
<script setup lang="ts">
import { onMounted, ref, type Ref } from 'vue';
import type ProcessTemplate from '../type/ProcessTemplate';

const height=ref<string>()
onMounted(() => {
  const viewportHeight = document.documentElement.clientHeight
  const headerHeight = (document.querySelector('.el-header') as HTMLElement).offsetHeight;
  const tabsHeight = (document.querySelector('.tabs') as HTMLElement).offsetHeight
  const topPadding = 10
  const stepsHeight = (document.querySelector('.el-steps') as HTMLElement).offsetHeight
  const marginBottom = 20
  const buttonHeight = (document.querySelector('.bottom') as HTMLElement).offsetHeight
  const margin = 40
  height.value = (viewportHeight - headerHeight - tabsHeight - topPadding - stepsHeight - marginBottom - buttonHeight - margin) + 'px'
})

const designer=ref()

let rule=null,option=null

const handleNext=(stepActive:Ref<number>) => {
  rule=designer.value.getRule()
  option=designer.value.getOption()
  stepActive.value++
  return {formProps:JSON.stringify(rule),formOptions:JSON.stringify(option)}
}

const setData=(data:ProcessTemplate) => {
  designer.value.setRule(JSON.parse(data.formProps))
  designer.value.setOption(JSON.parse(data.formOptions))
}

defineExpose({handleNext,setData})

</script>

其中,fc-designer标签是用来显示表单生成器的组件,ref="designer"和const designer=ref()用来获取表单生成器组件的对象,然后通过这个对象,调用它里面的方法获取获取表单结构的数据,并转换为JSON格式的字符串,然后提交给后台,保存数据库。通过查询数据库,获取JOSN字符串,进行解析,也能够通过调用这个对象里面的方法,进行表单内容的回显。
height属性用于动态设置表单生成器的高度,以适应屏幕高度。
在这里插入图片描述

4、在微信公众号或移动端网页显示生成的表单

<template>
  <NavBar title="发起审批" left-text="返回" left-arrow @click-left="handleBack"></NavBar>
  <div class="container">
    <form-create v-model="data" :rule="rule" :option="option" @submit="handleSubmit"></form-create>
  </div>
</template>
<script setup lang="ts">
import {NavBar} from 'vant'
import { ref } from 'vue';

const handleBack=() => history.back()

const data=ref()
const rule=ref(JSON.parse(history.state.formProps))
const option=ref(JSON.parse(history.state.formOptions))

const handleSubmit=(data:any) => {
  console.log(data)
}
</script>

其中,form-create标签是显示表单内容的组件,rule和option对象用来保存生成表单的数据,通过解析后台传过来的JSON字符串,进行表单内容的回显。handleSubmit方法中的data参数就是表单要提交的数据。
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值