# vains-form-designer **Repository Path**: yunsuo/vains-form-designer ## Basic Information - **Project Name**: vains-form-designer - **Description**: vite+ts+vue3+element-plus制作的可视化表单生成器 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-02-22 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vains-form-designer #### 介绍 Vite + TypeScript + Vue3 + Element-plus制作的可视化表单生成器; #### [预览地址](https://vains-sofia.gitee.io/vains-form-designer/) #### 项目所需依赖 **注意:项目中需先添加ElementPlus与ElementIcon的依赖** #### 快速开始 ##### 下载 ```shell npm i vains-form-designer ``` ##### main.ts/main.js引入 ```javascript import App from './App.vue'; import { createApp } from 'vue'; import ElementPlus from 'element-plus'; import * as ElIcons from "@element-plus/icons"; import VainsFormDesigner from 'vains-form-designer'; import 'element-plus/dist/index.css'; import 'vains-form-designer/dist/style.css'; const app = createApp(App); // 加载图标 for (const icon in ElIcons) { // @ts-ignore app.component(icon, ElIcons[icon]); } app.use(ElementPlus); app.use(VainsFormDesigner); app.mount('#app'); ``` ##### 代码中使用 ```vue ``` ##### 根据已有配置生成 ```vue ``` #### 属性介绍 ##### 编辑器DesignerContainer | 属性名 | 是否必填 | 说明 | 字段类型 | 默认值 | | --------- | -------- | ---------------------- | -------- | ------------------------------------------------ | | height | 否 | 编辑器高度 | string | 96.8vh(单位请使用vh或px,百分比的情况下会有问题) | | formData | 否 | 表单双向绑定的json对象 | object | {} | | formItems | 否 | 拖拽生成的表单组件列表 | Array | [] | ##### 展示使用Designer | 属性名 | 是否必填 | 说明 | 字段类型 | 默认值 | | ---------- | -------- | ------------------------------------------------ | -------- | ------------------------------------------------ | | height | 否 | 编辑器高度 | string | 96.8vh(单位请使用vh或px,百分比的情况下会有问题) | | formData | 是 | 表单双向绑定的json对象,复选和步进器要求有初始值 | object | {} | | formConfig | 否 | 表单的配置,具体如下表所示 | object | 下表所示默认值 | | formItems | 是 | 表单显示的列表 | Array | undefined | ##### 表单配置项 | 属性名 | 说明 | 字段类型 | 默认值 | | -------------------- | ------------------------------------------------------------ | -------- | -------- | | inline | 行内表单模式 | boolean | false | | labelPosition | 表单域标签的位置, 如果值为 left 或者 right 时,则需要设置 label-width | string | 'right' | | labelSuffix | 表单域标签的后缀 | string | '' | | statusIcon | 是否在输入框中显示校验结果反馈图标 | boolean | false | | hideRequiredAsterisk | 隐藏必填字段的标签旁边的红色星号 | boolean | false | | showMessage | 是否显示校验错误信息 | boolean | true | | size | 用于控制该表单内组件的尺寸 | string | 'medium' | | disabled | 禁用 | boolean | false | ##### 其它各组件的属性说明请参考ElementPlus文档 #### 事件 (DesignerContainer事件、Designer事件通用) submit:提交事件,只有当添加了提交类型的按钮才会触发(触发方式:@click) #### Designer组件属性 dynamicForm:表单实例,用于验证重置表单等,获取示例 ```vue ``` #### DesignerContainer组件方法 getDynamicForm(): 获取表单实例对象 使用示例 ```vue ``` #### 背景 前段时间在学习Vue3+TypeScript,想着边学边写,这样学起来会快一些,本项目完全就是学习中的一个产出,所以有些代码比较乱,特别是末期加的Vuex,导致项目更乱了...TypeScript也逐渐演化成AnyScript了( (╯°Д°)╯︵ ┻━┻ )
本项目完全使用script setup的方式开发(这样开发起来很简单) #### 目前支持的组件 复选框、输入框、步进器、密码框、单选框、评分、滑块、开关、文本域、颜色选择器、日期时间选择器、下拉选择器、虚拟选择器、时间选择器、时间范围选择、时间下拉选择、按钮、布局容器 #### 运行教程 先从[Gitee](https://gitee.com/vains-Sofia/vains-form-designer.git)中拉取代码 1.拉取代码之后运行命令安装依赖 ```shell npm install ``` 2.依赖安装完成之后可运行命令启动项目 ```shell npm run dev ``` 3.完成之后访问 http://localhost:3000/vains-form-designer/ 查看效果 #### 发现问题 如果有什么问题或者好的建议请在评论区提出或提交issue
最后,如果觉得项目还不错,请点个star ( φ(゜▽゜*)♪ )