<script lang="ts" setup> import { message } from 'ant-design-vue'; import { useVbenForm } from '#/adapter/form'; const [QueryForm] = useVbenForm({ // 默认展开 collapsed: false, // 所有表单项共用,可单独在表单内覆盖 commonConfig: { // 所有表单项 componentProps: { class: 'w-full', }, }, // 提交函数 handleSubmit: onSubmit, // 垂直布局,label和input在不同行,值为vertical // 水平布局,label和input在同一行 layout: 'horizontal', schema: [ { // 组件需要在 #/adapter.ts内注册,并加上类型 component: 'Input', // 对应组件的参数 componentProps: { placeholder: '请输入用户名', }, // 字段名 fieldName: 'username', // 界面显示的label label: '字符串', }, { component: 'InputPassword', componentProps: { placeholder: '请输入密码', }, fieldName: 'password', label: '密码', }, { component: 'InputNumber', componentProps: { placeholder: '请输入', }, fieldName: 'number', label: '数字(带后缀)', suffix: () => '¥', }, { component: 'Select', componentProps: { allowClear: true, filterOption: true, options: [ { label: '选项1', value: '1', }, { label: '选项2', value: '2', }, ], placeholder: '请选择', showSearch: true, }, fieldName: 'options', label: '下拉选', }, { component: 'DatePicker', fieldName: 'datePicker', label: '日期选择框', }, ], // 是否可展开 showCollapseButton: true, submitButtonOptions: { content: '查询', }, wrapperClass: 'grid-cols-1 md:grid-cols-2', }); function onSubmit(values: Record<string, any>) { message.success({ content: `form values: ${JSON.stringify(values)}`, }); } </script> <template> <QueryForm /> </template>