vue-next-form
Version:
A configurable form component based on Vue 3 and Element Plus
137 lines (127 loc) • 2.57 kB
Markdown
中文 | [English](./readme.en.md)
# vue-next-form
基于 vue,使用了 element-plus 组件库封装的,通过配置文件驱动的,下一代动态表单
## 安装
```bash
npm install --save vue-next-form
```
## 使用
```vue
<template>
<VueNextForm v-model="bindValue" :formField="options.formField" ></VueNextForm>
</template>
<script setup lang="ts">
import { VueNextForm, type FormProps } from 'vue-next-form';
const options: FormProps = {
formField: [
{
type: 'input-text',
model: 'aa',
defaultValue: '',
placeholder: '请输入内容',
},
{
type: 'input-number',
model: 'bb',
defaultValue: 0,
rule(rule, value, callback) {
if (value < 10) {
callback(new Error('必须大于10'))
} else {
callback()
}
},
},
{
type: 'select-single',
model: 'cc',
defaultValue: '',
options: [
{
label: '选项1',
value: '1',
},
{
label: '选项2',
value: '2',
},
],
getDate() {
return [
{
label: '选项1',
value: '1',
},
{
label: '选项2',
value: '2',
},
]
},
},
{
type: 'date-picker',
model: 'dd',
defaultValue: '',
placeholder: '请选择日期112',
},
{
type: 'date-picker-range',
model: 'ee',
defaultValue: [],
startPlaceholder: '开始',
endPlaceholder: '结束',
},
{
type: 'text',
model: 'ff',
defaultValue: '这是一段文本',
formatter: () => {
return '<span style="color:red">format</span>'
},
},
{
type: 'radio-group',
model: 'gg',
defaultValue: '',
options: [
{
label: '选项1',
value: '1',
},
{
label: '选项2',
value: '2',
},
],
},
{
type: 'checkbox',
model: 'hh',
defaultValue: '',
label: '激活',
trueValue: '1',
falseValue: '0',
},
{
type: 'checkbox-group',
model: 'ii',
defaultValue: [],
options: [
{
label: '选项1',
value: '1',
},
{
label: '选项2',
value: '2',
},
],
},
],
}
const bindValue = ref({})
</script>
```
## 未来计划
因为本人有工作,所以时间相对有限,后续会继续完善这个组件