form-generator表单生成器使用总结~~
2021/11/14 23:40:39
本文主要是介绍form-generator表单生成器使用总结~~,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
表单设计器中开发自定义组件流程
- src\components\generator\config.js 中添加一个json
- src\compontnes\目录下创建对应的组件
- main.js中全局注册刚创建的组件
- src\views\index\RightPanel.vue 中绑定第一步中json中添加的各个属性值
详细步骤
步骤一: src\components\generator\config.js 中添加一个json
export const layoutComponents = [ { __config__: { label: '自定义按钮', showLabel: false, changeTag: true, labelWidth: null, tag: 'wsButton', tagIcon: 'button', span: 24, layout: 'colFormItem', }, __slot__: { default: '分享按钮111' }, style: { width: 'auto', height: '35px', margin: '20px', borderRadius: '30px', display: 'flex', justifyContent: 'center', alignItems: 'center', color: '#FFF', backgroundColor: '#409EFF', borderColor: '#409EFF' }, dataName: '测试分享按钮', type: 'primary', icon: '', round: false, size: 'normal', site: 'center', // 按钮位置 左:flex-start 中:cneter 右:flex-end plain: false, circle: false, disabled: false, funcType: 'share' } ]
注意点:
a. 在 __config__ 中的tag属性要注意和注册组件名称一致, render时候会拿这个tag去渲染
步骤二: src\compontnes\目录下创建对应的组件
eg: wsButton组件 <template> ** 这里 ref一定要加 ** <div ref="wsButton" class="wsButton" @click="handleShare"> <div v-text="shareText"> 去分享 </div> </div> </template> <script> import { EventBus } from '@/utils/bus.js' import resetpx from '@/mixins/resetpx.js' export default { name: 'WsButton', data () { return {} }, mixins: [resetpx], // 用来转化px为vw computed: { shareText () { return this.$attrs.dataName } }, methods: { handleShare () { EventBus.$emit('openShare', 'wsButton') } } } </script>
注意点:
a. 通过监听$attrs可以拿到元素上的自定义属性值和style等; b. 组件最后要复制到另一个渲染的项目里,复制过去之后要加上 resetpx 这个混入把元素的px转换为vw; c. 组件可以用vant提供的或者自定义组件,但是不能用element-ui的一些组件; d. 组件的最外层一定要加上 ref="组件名称"
步骤三: main.js中全局注册刚创建的组件
import Vue from 'vue' import wsButton from '@/components/wsButton/index.vue' Vue.component('wsButton', wsButton)
步骤四: src\views\index\RightPanel.vue 中绑定第一步中json中添加的各个属性值
<el-form-item v-if="activeData.__config__.tag === 'wsButton'" label="按钮标题" > <el-input v-model="activeData.dataName" placeholder="请输入按钮标题" @input="changeRenderKey" /> </el-form-item>
表单设计器嵌入后台系统的数据交互
表单系统通过iframe的形式嵌入到后台管理系统中,通过postMessage进行数据交互
- 表单设计系统发送数据给后台管理系统
<!--表单设计系统发送数据--> saveData() { const formConfData = { fields: deepClone(this.drawingList), ...this.formConf } window.parent.postMessage({ source: 'formGenerator', data: formConfData }, '*') }, <!-- 后台管理系统接收数据 --> mounted () { window.addEventListener('message', event => { if (event.data.source === 'formGenerator') { let formData = event.data.data this.fromConfData = formData localStorage.setItem('fromConfData', JSON.stringify(this.fromConfData)) } }, '*') },
- 后台管理系统发送数据给表单设计系统
<!-- 后台管理系统发送数据 --> openPreView () { let formData = localStorage.getItem('fromConfData') let child = this.$refs.child.contentWindow child.postMessage({ source: 'formGenerator', data: formData }, '*'); } <!-- 表单设计系统接收数据 --> mounted () { window.addEventListener('message', event => { console.log('后台系统发送的数据===', event) }) }
渲染部分系统引入组件流程
设计器开发完组件后要把组件复制、注册到渲染系统中
具体步骤:
- 将组件复制到 src/components 目录下
- main.js中全局注册
import wsButton from './components/wsButton' Vue.component('wsButton', wsButton)
- 在utils/global.js 中添加下组件的名称
这里添加是为了下一步中的px转化vw
const allComponends = [ 'wsText', 'wsButton', 'wsImage' // 这里添加 ] export { allComponends }
- 在组件的 mixins 中引入 resetpx 方法进行px单位的转换
<script> import resetpx from '@/mixins/resetpx.js' export default { name: 'WsButton', data () { return {} }, mixins: [resetpx] // 重置元素style里的px为vw } </script>
参考资料:
form-generator官方文档:点这里 => link
这篇关于form-generator表单生成器使用总结~~的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南