committed by
GitHub
5 changed files with 156 additions and 2 deletions
@ -0,0 +1,106 @@ |
|||
<script lang="ts" setup> |
|||
import { Page } from '@vben/common-ui'; |
|||
|
|||
import { NButton, NCard, useMessage } from 'naive-ui'; |
|||
|
|||
import { useVbenForm } from '#/adapter/form'; |
|||
|
|||
const message = useMessage(); |
|||
const [Form, formApi] = useVbenForm({ |
|||
commonConfig: { |
|||
// 所有表单项 |
|||
componentProps: { |
|||
class: 'w-full', |
|||
}, |
|||
}, |
|||
layout: 'horizontal', |
|||
// 大屏一行显示3个,中屏一行显示2个,小屏一行显示1个 |
|||
wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3', |
|||
handleSubmit: (values) => { |
|||
message.success(`表单数据:${JSON.stringify(values)}`); |
|||
}, |
|||
schema: [ |
|||
{ |
|||
component: 'Input', |
|||
fieldName: 'string', |
|||
label: 'String', |
|||
}, |
|||
{ |
|||
component: 'InputNumber', |
|||
fieldName: 'number', |
|||
label: 'Number', |
|||
}, |
|||
{ |
|||
component: 'RadioGroup', |
|||
fieldName: 'radio', |
|||
label: 'Radio', |
|||
componentProps: { |
|||
options: [ |
|||
{ value: 'A', label: 'A' }, |
|||
{ value: 'B', label: 'B' }, |
|||
{ value: 'C', label: 'C' }, |
|||
{ value: 'D', label: 'D' }, |
|||
{ value: 'E', label: 'E' }, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
component: 'RadioGroup', |
|||
fieldName: 'radioButton', |
|||
label: 'RadioButton', |
|||
componentProps: { |
|||
isButton: true, |
|||
class: 'flex flex-wrap', // 如果选项过多,可以添加class来自动折叠 |
|||
options: [ |
|||
{ value: 'A', label: '选项A' }, |
|||
{ value: 'B', label: '选项B' }, |
|||
{ value: 'C', label: '选项C' }, |
|||
{ value: 'D', label: '选项D' }, |
|||
{ value: 'E', label: '选项E' }, |
|||
{ value: 'F', label: '选项F' }, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
component: 'CheckboxGroup', |
|||
fieldName: 'checkbox', |
|||
label: 'Checkbox', |
|||
componentProps: { |
|||
options: [ |
|||
{ value: 'A', label: '选项A' }, |
|||
{ value: 'B', label: '选项B' }, |
|||
{ value: 'C', label: '选项C' }, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
component: 'DatePicker', |
|||
fieldName: 'date', |
|||
label: 'Date', |
|||
}, |
|||
], |
|||
}); |
|||
function setFormValues() { |
|||
formApi.setValues({ |
|||
string: 'string', |
|||
number: 123, |
|||
radio: 'B', |
|||
radioButton: 'C', |
|||
checkbox: ['A', 'C'], |
|||
date: Date.now(), |
|||
}); |
|||
} |
|||
</script> |
|||
<template> |
|||
<Page |
|||
description="表单适配器重新包装了CheckboxGroup和RadioGroup,可以通过options属性传递选项数据(选项数据将作为子组件的属性)" |
|||
title="表单演示" |
|||
> |
|||
<NCard title="基础表单"> |
|||
<template #header-extra> |
|||
<NButton type="primary" @click="setFormValues">设置表单值</NButton> |
|||
</template> |
|||
<Form /> |
|||
</NCard> |
|||
</Page> |
|||
</template> |
|||
Loading…
Reference in new issue