| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <template>
- <PageWrapper title="自定义组件示例">
- <CollapseContainer title="自定义表单">
- <BasicForm @register="register" @submit="handleSubmit">
- <template #f3="{ model, field }">
- <a-input v-model:value="model[field]" placeholder="自定义slot" />
- </template>
- </BasicForm>
- </CollapseContainer>
- </PageWrapper>
- </template>
- <script lang="ts">
- import { defineComponent, h } from 'vue';
- import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
- import { CollapseContainer } from '/@/components/Container/index';
- import { useMessage } from '/@/hooks/web/useMessage';
- import { Input } from 'ant-design-vue';
- import { PageWrapper } from '/@/components/Page';
- const schemas: FormSchema[] = [
- {
- field: 'field1',
- component: 'Input',
- label: 'render方式',
- colProps: {
- span: 8,
- },
- rules: [{ required: true }],
- render: ({ model, field }) => {
- return h(Input, {
- placeholder: '请输入',
- value: model[field],
- onChange: (e: ChangeEvent) => {
- model[field] = e.target.value;
- },
- });
- },
- },
- {
- field: 'field2',
- component: 'Input',
- label: 'render组件slot',
- colProps: {
- span: 8,
- },
- rules: [{ required: true }],
- renderComponentContent: () => {
- return {
- suffix: () => 'suffix',
- };
- },
- },
- {
- field: 'field3',
- component: 'Input',
- label: '自定义Slot',
- slot: 'f3',
- colProps: {
- span: 8,
- },
- rules: [{ required: true }],
- },
- ];
- export default defineComponent({
- components: { BasicForm, CollapseContainer, PageWrapper },
- setup() {
- const { createMessage } = useMessage();
- const [register, { setProps }] = useForm({
- labelWidth: 120,
- schemas,
- actionColOptions: {
- span: 24,
- },
- });
- return {
- register,
- schemas,
- handleSubmit: (values: any) => {
- createMessage.success('click search,values:' + JSON.stringify(values));
- },
- setProps,
- };
- },
- });
- </script>
|