1.0.5 • Published 10 months ago

ef-design v1.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

formDesign npm包

一个基于element plus+vue3的的可拖拽表单组件

1. 安装

npm i ef-design
yarn add ef-design
pnpm add ef-design

2. 使用

2.1 手动全引入

#在vue3项目中的main.ts文件中手动引入
import efDesign from 'ef-design';
#加载样式
import "ef-design/dist/design.css";

const app = createApp(App);
app.use(efDesign);
#加载element plus,否则dom节点无法正常渲染
app.use(ElementPlus);
app.mount("#app");

2.2. 在Vue 3.x模板中使用表单设计器组件

<template>
<div class="layout-tab-box">
    <form-design ref="formDesignRef" :form-data-selected="formDataSelected" :form-data-all="formJson"></form-design>
     <el-button type="primary" @click=" <el-button type="primary" @click="submitForm">Submit</el-button>
">Submit</el-button>

</div>
<script setup>
const formDesignRef = ref(null)
const sourceData = {"widgetList":[],"formConfig":{"modelName":"formData","refName":"vForm","rulesName":"rules","labelWidth":80,"labelPosition":"left","size":"","labelAlign":"label-left-align","cssCode":"","customClass":"","functions":"","layoutType":"PC","jsonVersion":3,"onFormCreated":"","onFormMounted":"","onFormDataChange":""}}
const formDataSelected = reactive(parentTemplate);  //所有模版数据
const formDataAll = reactive(sourceData.widgetList) // 已选项

const submitForm = () => {
    let tempData = formDesignRef.value.getFormJson();
    console.log('template data:', tempData);
}
</script>

<style lang="scss" scoped>
.layout-tab-box{
  height: calc(100vh - 225px);
}
</style>

2.3. 在Vue 3.x模板中使用表单渲染器组件

<template>
<div>
 <form-render :form-json="formJson" :form-data="formData" :option-data="optionData" ref="vFormRef">
 </form-render>
 <el-button type="primary" @click="submitForm">Submit</el-button>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { ElMessage } from 'element-plus'

const formJson = reactive({"widgetList":[],"formConfig":{"modelName":"formData","refName":"vForm","rulesName":"rules","labelWidth":80,"labelPosition":"left","size":"","labelAlign":"label-left-align","cssCode":"","customClass":"","functions":"","layoutType":"PC","jsonVersion":3,"onFormCreated":"","onFormMounted":"","onFormDataChange":""}})
const formData = reactive({})
const optionData = reactive({})
const formRef = ref(null)

const submitForm = () => {
 formRef.value.getFormData().then(formData => {
   // Form Validation OK
   alert( JSON.stringify(formData) )
 }).catch(error => {
   // Form Validation failed
   ElMessage.error(error)
 })
}
</script>

2.4 资源链接

vForm3:https://www.vform666.com/

二次开发:https://www.ganweicloud.com/docs/6.1.0/pages/d3e6d9/#%E8%A1%A8%E5%8D%95%E7%BB%84%E4%BB%B6

3. 注意事项

可能有样式问题,建议在外层包一层div,再覆盖样式

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago