UNPKG

form-render4-vue3

Version:
175 lines (149 loc) 7.24 kB
<p align="center"><a href="https://github.com/lq9958/form-render4-vue3-pro" target="_blank" rel="noopener noreferrer"><img width="150" src="https://s1.ax1x.com/2023/05/06/p9a7EZ9.png" alt="form-render4-vue3-pro logo"></a></p> <h1 align="center">Form-Render4-Vue3-Pro</h1> > form-render4-vue3-pro 是基于 vue3 的表单生成组件,组件包含了日常使用的表单组件,意在解决项目日常开发中表单代码重复书写的问题,提高开发效率。 > 项目目前支持UI库: >1. element-plus >2. arco-design [在线演示](https://lq9958.github.io/) ## [💎 更新日志](./CHANGELOG.MD) ## 🌈 如何使用 ### 安装 ``` npm install form-render4-vue3-pro --save ``` ```javascript // main.js import { createApp } from 'vue' // import FormRender4Vue3 from 'form-render4-vue3-pro/arco-design' import FormRender4Vue3 from 'form-render4-vue3-pro/element-plus' import App from './App.vue' const app = createApp(App) app.use(FormRender4Vue3,{ warning:false }) // 安装组件时可选择警告信息打印与否 app.mount('#app') ``` ```vue <template> <!-- 你的组件 --> <form-render4-vue3-pro :schema="schema" v-model="formData" :option-data="optionData" /> </template> <script setup> import { reactive } from 'vue' const formData = reactive({}) const optionData = reactive({ address: { list: [ { label: '北京', value: 'beijing', }, { label: '上海', value: 'shanghai', }, { label: '深圳', value: 'shenzhen', }, { label: '成都', value: 'chengdu', }, ], key: 'value', }, }) const schema = reactive({ props: { layout: 'horizontal', labelAlign: 'left', }, fields: [ { type: 'input', title: '姓名', field: 'name', value: '', props: { placeholder: '输入姓名', }, }, { type: 'select', title: '地址', field: 'address', value: '', props: { placeholder: '选择地址', }, }, ], }) </script> ``` ## API ### Props | 参数名 | 类型 | 描述 | 是否必须 | | ------------------- | ------ | ---------------------------------------------------------------------------- | -------- | | modelValue(v-model) | Object | 表单数据对象 | Yes | | schema | Object | 生成表单的 JSON 对象 | Yes | | optionData | Object | `select、checkbox、radio、tree-select、cascader、transfer`等组件选项的数据源 | No | ### Methods | 方法名 | 描述 | 参数 | 返回值 | | ------------- | -------------------- | ---------- | ------- | | validate | 校验表单全部数据 | - | Promise | | clearValidate | 清除校验表单校验数据 | - | - | | reset | 重置表单字段 | -/string[] | void | ### Slots | 插槽名 | 描述 | 参数 | | | ------ | ---- | ---- | --- | | footer | 页脚 | - | - | ## Schema 字段描述 | 字段名称 | 类型 | Description | 是否必须 | | -------- | ------ | ------------------------------------------ | -------- | | fields | Array | 生成表单项的数组 | Yes | | rules | Object | 使用方式参考 arco-design from 表单 rules | No | | props | - | 使用方式参考 arco-design from 表单原生属性 | No | | column | Number | 生成表单项的列数 | Yes | | gutter | Number | 表单项之间的间隔 | No | ### fields 字段描述 | 字段名称 | 类型 | Description | 是否必须 | |------------|-------------|-----------------------------------------------------------------------------------------| -------- | | datasource | DataSource | 远程加载数据配置 | Yes | | type | String | 指定生成对应 arco-design 的组件,对应关系见下表 type | Yes | | gutter | Number | 用与表单项之间的间隔 ,该项不设置会自动取全局的 gutter | No | | title | String | 表单项的名称 | Yes | | field | String | 表单项绑定的字段 | Yes | | value | any | 该表表单项的值 | No | | props | Object | 生成最终组件的 props 项,对应 arco-design 组件的 props | No | | span | Number | 该表单项独占的栅格数(默认为 24) | No | | show | Boolean | 控制表单项显示与否,默认为:true | No | | config | Object | `a-form-item`组件配置对象,字段参考[`a-form-item`](https://arco.design/vue/component/form#API)组件属性 | No | | children | Array | 嵌套表单项 | No | | watcher | Array | 字段联动动作 | No | ## 当前支持的组件 | type | 对应的 arco-design 组件名 | |-------------------|---------------------| | form-item | 表单项,复杂表单布局可能会使用到 | | input | a-input | | input-number | a-input-number | | checkbox | a-checkbox | | radio | a-radio | | switch | a-switch | | slider | a-slider | | textarea | a-textarea | | rate | a-rate | | upload | a-upload | | time-picker | a-time-picker | | verification-code | a-verification-code | | tree-select | a-tree-select | | date-range-picker | a-date-range-picker | | date-picker | a-date-picker | | cascader | a-cascader | | transfer | a-transfer | | divider | a-divider | | alert | a-alert | | color | a-color |