FcDesigner 是一款基于 Vue 的低代碼可視化表單設(shè)計(jì)器工具,通過數(shù)據(jù)驅(qū)動(dòng)表單渲染。可以通過拖拽的方式快速創(chuàng)建表單,提高開發(fā)者對(duì)表單的開發(fā)效率,節(jié)省開發(fā)者的時(shí)間。并廣泛應(yīng)用于在政務(wù)系統(tǒng)、OA 系統(tǒng)、ERP 系統(tǒng)、電商系統(tǒng)、流程管理等領(lǐng)域。
源碼地址: Github | Gitee | 文檔 | 在線演示
核心功能??
- 內(nèi)置表單多語言體系,輕松打破語言隔閡。
- 提供 30+ 常用組件,涵蓋表單組件、布局組件、輔助類組件等各類實(shí)用模塊。
- 支持靈活擴(kuò)展自定義組件,個(gè)性化開發(fā)輕松拿捏。支持二次擴(kuò)展開發(fā),深度定制不在話下。
- 支持組件樣式配置,動(dòng)態(tài)調(diào)整組件尺寸、顏色、間距等樣式屬性。
- 支持事件交互配置,靈活配置組件事件響應(yīng)邏輯,實(shí)現(xiàn)復(fù)雜交互場景。
- 表單大綱、操作記錄、數(shù)據(jù)錄入、組件生成、事件配置、表單驗(yàn)證、柵格布局、表格布局等。
3.3 版本更新內(nèi)容
? 新增功能:
- 增強(qiáng)表格布局組件,支持批量操作格子樣式,清空,合并等操作,雙擊快速添加內(nèi)容,支持通過拖動(dòng)設(shè)置格子寬和高

操作權(quán)限控制
config
增加 componentPermission
配置,可精確控制每個(gè)組件的可見配置項(xiàng)和允許的操作config
增加 beforeRemoveRule
和 beforeActiveRule
回調(diào)控制組件是否可以刪除和選中- 拖拽規(guī)則增加
allowDragTo
配置項(xiàng),控制當(dāng)前組件允許拖入到那些組件中 - 拖拽規(guī)則增加
maxChildren
配置項(xiàng),限制子組件拖入數(shù)量 - 拖拽規(guī)則和
config
增加 checkDrag
回調(diào)控制組件是否可以拖入
增加手寫簽名組件和標(biāo)題組件
左右兩側(cè)板塊增加展開收齊按鈕


- 增加 getHtml 方法,導(dǎo)出 Html
this.$refs.designer.getHtml()
增加標(biāo)題和手寫簽名組件
遠(yuǎn)程請(qǐng)求支持前置處理回調(diào)

完善表格表單組件,新增最小行,是否可刪除開關(guān),是否可新增開關(guān)和標(biāo)題位置的配置項(xiàng)
增加 previewSubmit
和 previewReset
事件,預(yù)覽彈窗表單提交和重置時(shí)觸發(fā)
config
增加 beforeRemoveRule
和 beforeActiveRule
回調(diào)控制組件是否可以刪除和選中
表單增加 beforeSubmit
事件
增加 changeField
事件,監(jiān)聽組件的字段 ID 變化
增加 showMenuBar
配置項(xiàng),控制是否顯示最左側(cè)菜單欄
增加 showPreviewBtn
配置項(xiàng),控制是否顯示預(yù)覽按鈕
增加 exitConfirm
配置項(xiàng),控制關(guān)閉設(shè)計(jì)器時(shí)是否彈出確認(rèn)操作彈窗
?? 功能優(yōu)化:
- 隱藏多語言后同步隱藏多語言選擇
- 修改上傳組件事件配置參數(shù) (??不兼容)
- 表單事件列表增加事件是否定義的狀態(tài)
menu
增加 before
參數(shù),可以顯示在頂部- 優(yōu)化事件配置
- 修改彈出框?qū)挾葹?nbsp;1080px
- 支持配置事件的描述
- 優(yōu)化設(shè)計(jì)器樣式
?? 問題修復(fù):
- ? 修復(fù) 預(yù)覽 json 時(shí)函數(shù)解析問題
- ? 修復(fù) 事件保存時(shí)可能報(bào)錯(cuò)問題
- ? 修復(fù) 自定義屬性可能保存失敗問題
- ? 修復(fù) 默認(rèn)表單配置項(xiàng)可能不生效問題
配置面板
您可以根據(jù)業(yè)務(wù)需求隨心定制設(shè)計(jì)器界面和功能組合啦,系統(tǒng)會(huì)自動(dòng)生成對(duì)應(yīng)的配置參數(shù),簡直不要太方便!


@form-create/designer ElementPlus/ElementUI表單設(shè)計(jì)器 ??
@form-create/antd-designer AntDesignVue表單設(shè)計(jì)器(Vue3) ??
@form-create/vant-designer Vant移動(dòng)端表單設(shè)計(jì)器(Vue3) ??
作者:無懈可擊
鏈接:https://juejin.cn/post/7505633505980907529
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
Element UI 版本表單設(shè)計(jì)器

本項(xiàng)目采用 Vue2.7 和 Element UI 進(jìn)行頁面構(gòu)建,內(nèi)置多語言解決方案,支持二次擴(kuò)展開發(fā),支持自定義組件擴(kuò)展。演示站
安裝
要開始使用 @form-create/designer,首先需要將其安裝到您的項(xiàng)目中。可以通過 npm 安裝:
npm install @form-create/designer@^1
npm install @form-create/element-ui@^2.7
npm install element-ui
如已安裝舊版本渲染器,請(qǐng)執(zhí)行以下命令更新至最新版:
npm update @form-create/element-ui@^2.7
請(qǐng)檢查當(dāng)前 Vue 版本,若版本低于 2.7,請(qǐng)執(zhí)行以下升級(jí)命令:
npm update vue@^2.7
引入
Node.js 引入
對(duì)于 Node.js 項(xiàng)目,您需要通過 npm 安裝相關(guān)依賴,并在您的項(xiàng)目中引入并配置它們。
import Vue from 'vue';
import FcDesigner from '@form-create/designer';
import ELEMENT from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ELEMENT);
Vue.use(FcDesigner);
Vue.use(FcDesigner.formCreate);
CDN 引入
如果您希望通過 CDN 方式引入 FcDesigner,請(qǐng)確保先引入 Vue.js 和 Element UI。然后引入 @form-create/element-ui 和 @form-create/designer,并在 Vue 實(shí)例中進(jìn)行配置
<script src="https://unpkg.com/vue@2.7.16/dist/vue.js"></script>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="https://unpkg.com/@form-create/element-ui/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/designer/dist/index.min.js"></script>
<div id="app">
<fc-designer height="100vh"></fc-designer>
</div>
<script>
Vue.use(FcDesigner);
Vue.use(FcDesigner.formCreate);
new Vue().$mount('#app');
</script>
使用
在 Vue 組件中,您可以像下面這樣使用 fc-designer 組件:
<template>
<fc-designer ref="designer" height="100vh" />
</template>
Element Plus 版本表單設(shè)計(jì)器
@form-create/designer 支持 Vue 3 環(huán)境,以下是如何在 Vue 3 項(xiàng)目中安裝和使用該庫的指南。
演示站
安裝
首先,安裝 @form-create/designer 的 Vue 3 版本
npm install @form-create/designer@^3
npm install @form-create/element-ui@^3
npm install element-plus
如已安裝舊版本渲染器,請(qǐng)執(zhí)行以下命令更新至最新版:
npm update @form-create/element-ui@^3
引入
Node.js 引入
對(duì)于使用 Node.js 的項(xiàng)目,按照以下步驟在您的 Vue 3 項(xiàng)目中引入并配置:
import { createApp } from 'vue';
import FcDesigner from '@form-create/designer';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
const app = createApp(App);
app.use(ElementPlus);
app.use(FcDesigner);
app.use(FcDesigner.formCreate);
app.mount('#app');
CDN 引入
如果您選擇使用 CDN,可以按照以下步驟在 HTML 文件中引入相關(guān)依賴:
<link href="https://unpkg.com/element-plus/dist/index.css" rel="stylesheet" />
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/element-plus/dist/index.full.js"></script>
<script src="https://unpkg.com/@form-create/element-ui@next/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/designer@next/dist/index.umd.js"></script>
<div id="app">
<fc-designer height="100vh"></fc-designer>
</div>
<script>
const { createApp } = Vue;
const app = createApp({});
app.use(ElementPlus);
app.use(FcDesigner);
app.use(FcDesigner.formCreate);
app.mount('#app');
</script>
使用
在 Vue 3 組件中,您可以通過以下方式使用 fc-designer 組件:
<template>
<fc-designer ref="designer" height="100vh" />
</template>
<script setup>
import { ref } from 'vue';
const designer = ref(null);
</script>
AntDesignVue 版本 PC 端表單設(shè)計(jì)器
演示站
本項(xiàng)目采用 Vue3.0 和 Ant Design Vue 進(jìn)行頁面構(gòu)建,內(nèi)置多語言解決方案,支持二次擴(kuò)展開發(fā),支持自定義組件擴(kuò)展。

安裝
首先,安裝 @form-create/antd-designer
npm install @form-create/antd-designer@^3
npm install @form-create/ant-design-vue@^3
npm install ant-design-vue
如已安裝舊版本渲染器,請(qǐng)執(zhí)行以下命令更新至最新版:
npm update @form-create/ant-design-vue@^3
引入
Node.js 引入
對(duì)于使用 Node.js 的項(xiàng)目,按照以下步驟在您的 Vue 3 項(xiàng)目中引入并配置:
import FcDesigner from '@form-create/antd-designer'
import antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
const app = createApp(App);
app.use(antd)
app.use(FcDesigner)
app.use(FcDesigner.formCreate)
app.mount('#app');
CDN 引入
如果您選擇使用 CDN,可以按照以下步驟在 HTML 文件中引入相關(guān)依賴:
<link rel="stylesheet" href="https://unpkg.com/ant-design-vue@4/dist/reset.css"></link>
<link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/vant@4/lib/index.css"></link>
<script src="https://unpkg.com/dayjs/dayjs.min.js"></script>
<script src="https://unpkg.com/dayjs/plugin/customParseFormat.js"></script>
<script src="https://unpkg.com/dayjs/plugin/weekday.js"></script>
<script src="https://unpkg.com/dayjs/plugin/localeData.js"></script>
<script src="https://unpkg.com/dayjs/plugin/weekOfYear.js"></script>
<script src="https://unpkg.com/dayjs/plugin/weekYear.js"></script>
<script src="https://unpkg.com/dayjs/plugin/advancedFormat.js"></script>
<script src="https://unpkg.com/dayjs/plugin/quarterOfYear.js"></script>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/ant-design-vue@4/dist/antd.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js"></script>
<script src="https://unpkg.com/@form-create/ant-design-vue@^3/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/vant@^3/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/antd-designer@^3/dist/index.umd.js"></script>
<div id="app">
<fc-designer height="100vh"></fc-designer>
</div>
<script>
const app = Vue.createApp({});
app.use(antd);
app.use(FcDesigner);
app.use(FcDesigner.formCreate);
app.mount('#app');
</script>
使用
在 Vue 3 組件中,您可以通過以下方式使用 fc-designer 組件:
<template>
<fc-designer ref="designer" height="100vh" />
</template>
<script setup>
import { ref } from 'vue';
const designer = ref(null);
</script>
移動(dòng)端表單設(shè)計(jì)器

演示站
本項(xiàng)目采用 Vue3.0 和 ElementPlus 進(jìn)行移動(dòng)端頁面構(gòu)建,移動(dòng)端使用的是 vant4.0 版本,內(nèi)置多語言解決方案,支持二次擴(kuò)展開發(fā),支持自定義組件擴(kuò)展。
安裝
首先,安裝 @form-create/vant-designer
npm install @form-create/vant-designer@^3
npm install @form-create/element-ui@^3
npm install @form-create/vant@^3
npm install element-plus
npm install vant
如已安裝舊版本渲染器,請(qǐng)執(zhí)行以下命令更新至最新版:
npm update @form-create/element-ui@^3
npm update @form-create/vant@^3
引入
Node.js 引入
對(duì)于使用 Node.js 的項(xiàng)目,按照以下步驟在您的 Vue 3 項(xiàng)目中引入并配置:
import FcDesignerMobile from '@form-create/vant-designer'
import ELEMENT from 'element-plus';
import vant from 'vant';
import 'vant/lib/index.css';
import 'element-plus/dist/index.css';
const app = createApp(App);
app.use(ELEMENT)
app.use(vant)
app.use(FcDesignerMobile)
app.use(FcDesignerMobile.formCreate)
app.mount('#app');
CDN 引入
如果您選擇使用 CDN,可以按照以下步驟在 HTML 文件中引入相關(guān)依賴:
<link rel="stylesheet" href="https://unpkg.com/element-plus/dist/index.css"></link>
<link rel="stylesheet" href="https://unpkg.com/vant@4/lib/index.css"/>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/element-plus/dist/index.full.js"></script>
<script src="https://unpkg.com/vant@4/lib/vant.min.js"></script>
<script src="https://unpkg.com/@form-create/element-ui@next/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/vant@next/dist/form-create.min.js"></script>
<script src="https://unpkg.com/@form-create/vant-designer@next/dist/index.umd.js"></script>
<div id="app">
<fc-designer-mobile height="100vh"></fc-designer-mobile>
</div>
<script>
const { createApp } = Vue;
const app = createApp({});
app.use(ElementPlus);
app.use(vant);
app.use(FcDesignerMobile);
app.use(FcDesignerMobile.formCreate);
app.mount('#app');
</script>
使用
在 Vue 3 組件中,您可以通過以下方式使用 fc-designer 組件:
<template>
<fc-designer-mobile ref="designer" height="100vh" />
</template>
<script setup>
import { ref } from 'vue';
const designer = ref(null);
</script>
獲取設(shè)計(jì)表單的數(shù)據(jù)
在表單設(shè)計(jì)器中,可以通過以下方法獲取表單的生成規(guī)則和配置,這些數(shù)據(jù)通常會(huì)被保存到數(shù)據(jù)庫中,以便后續(xù)加載和回顯。
const ruleJson = this.$refs.designer.getJson();
const optionsJson = this.$refs.designer.getOptionsJson();
這些數(shù)據(jù)可以用來保存到數(shù)據(jù)庫中,確保表單的狀態(tài)和配置可以在頁面刷新或重新加載時(shí)恢復(fù)。
回顯設(shè)計(jì)表單
當(dāng)需要回顯設(shè)計(jì)好的表單時(shí),您需要加載之前保存的 JSON 規(guī)則和配置,并將其應(yīng)用到設(shè)計(jì)器中。
this.$refs.designer.setOptions(optionsJson);
this.$refs.designer.setRule(ruleJson);
通過這些方法,可以將之前保存的表單規(guī)則和配置應(yīng)用到設(shè)計(jì)器中,從而恢復(fù)表單的狀態(tài)。
表單渲染
要渲染表單,您需要掛載 form-create 到 Vue 應(yīng)用中,并加載表單規(guī)則和配置。
import {formCreate} from '@form-create/designer';
app.use(formCreate);
表單渲染示例
<template>
<div id="app">
<form-create v-model="formData" v-model:api="fApi" :rule="rule" :option="option"></form-create>
</div>
</template>
<script>
import {formCreate} from '@form-create/designer';
export default {
data() {
return {
fApi: {},
formData: {},
rule: [],
option: {}
}
},
beforeCreate(){
const rule,option;
this.rule = formCreate.parseJson(rule);
this.option = formCreate.parseJson(option);
}
}
</script>
動(dòng)態(tài)加載和保存表單配置
可以通過 API 請(qǐng)求動(dòng)態(tài)加載表單規(guī)則和配置,并將表單數(shù)據(jù)保存到服務(wù)器。
import axios from 'axios';
async function loadFormConfig() {
try {
const response = await axios.get('/api/form-config');
return response.data;
} catch (error) {
console.error('加載表單配置失敗', error);
return { rule: [], option: {} };
}
}
async function saveFormConfig(ruleJson, optionsJson) {
try {
await axios.post('/api/form-config', { rule: ruleJson, options: optionsJson });
} catch (error) {
console.error('保存表單配置失敗', error);
}
}