committed by
GitHub
7 changed files with 131 additions and 77 deletions
@ -0,0 +1,71 @@ |
|||||
|
<script lang="ts" setup> |
||||
|
import { useVbenModal } from '@vben/common-ui'; |
||||
|
|
||||
|
import { useVbenForm } from '#/adapter/form'; |
||||
|
|
||||
|
defineOptions({ |
||||
|
name: 'FormModelDemo', |
||||
|
}); |
||||
|
|
||||
|
const [Form, formApi] = useVbenForm({ |
||||
|
schema: [ |
||||
|
{ |
||||
|
component: 'Input', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入', |
||||
|
}, |
||||
|
fieldName: 'field1', |
||||
|
label: '字段1', |
||||
|
rules: 'required', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Input', |
||||
|
componentProps: { |
||||
|
placeholder: '请输入', |
||||
|
}, |
||||
|
fieldName: 'field2', |
||||
|
label: '字段2', |
||||
|
rules: 'required', |
||||
|
}, |
||||
|
{ |
||||
|
component: 'Select', |
||||
|
componentProps: { |
||||
|
options: [ |
||||
|
{ label: '选项1', value: '1' }, |
||||
|
{ label: '选项2', value: '2' }, |
||||
|
], |
||||
|
placeholder: '请输入', |
||||
|
}, |
||||
|
fieldName: 'field3', |
||||
|
label: '字段3', |
||||
|
rules: 'required', |
||||
|
}, |
||||
|
], |
||||
|
showDefaultActions: false, |
||||
|
}); |
||||
|
|
||||
|
const [Modal, modalApi] = useVbenModal({ |
||||
|
fullscreenButton: false, |
||||
|
onCancel() { |
||||
|
modalApi.close(); |
||||
|
}, |
||||
|
onConfirm: async () => { |
||||
|
await formApi.validateAndSubmitForm(); |
||||
|
// modalApi.close(); |
||||
|
}, |
||||
|
onOpenChange(isOpen: boolean) { |
||||
|
if (isOpen) { |
||||
|
const { values } = modalApi.getData<Record<string, any>>(); |
||||
|
if (values) { |
||||
|
formApi.setValues(values); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
title: '内嵌表单示例', |
||||
|
}); |
||||
|
</script> |
||||
|
<template> |
||||
|
<Modal> |
||||
|
<Form /> |
||||
|
</Modal> |
||||
|
</template> |
||||
Loading…
Reference in new issue