123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <template>
- <PageWrapper title="可折叠表单示例">
- <CollapseContainer title="基础收缩示例">
- <BasicForm @register="register" />
- </CollapseContainer>
- <CollapseContainer title="超过3行自动收起,折叠时保留2行" class="mt-4">
- <BasicForm @register="register1" @advanced-change="onAdvancedChange" />
- </CollapseContainer>
- </PageWrapper>
- </template>
- <script lang="ts" setup>
- import { BasicForm, FormSchema, useForm } from '@/components/Form';
- import { CollapseContainer } from '@/components/Container';
- import { PageWrapper } from '@/components/Page';
- const getSchamas = (): FormSchema[] => {
- return [
- {
- field: 'field1',
- component: 'Input',
- label: '字段1',
- colProps: {
- span: 8,
- },
- componentProps: {
- placeholder: '自定义placeholder',
- onChange: (e: any) => {
- console.log(e);
- },
- },
- },
- {
- field: 'field2',
- component: 'Input',
- label: '字段2',
- colProps: {
- span: 8,
- },
- },
- {
- field: 'field3',
- component: 'DatePicker',
- label: '字段3',
- colProps: {
- span: 8,
- },
- },
- {
- field: 'field4',
- component: 'Select',
- label: '字段4',
- colProps: {
- span: 8,
- },
- componentProps: {
- options: [
- {
- label: '选项1',
- value: '1',
- key: '1',
- },
- {
- label: '选项2',
- value: '2',
- key: '2',
- },
- ],
- },
- },
- {
- field: 'field5',
- component: 'CheckboxGroup',
- label: '字段5',
- colProps: {
- span: 8,
- },
- componentProps: {
- options: [
- {
- label: '选项1',
- value: '1',
- },
- {
- label: '选项2',
- value: '2',
- },
- ],
- },
- },
- // {
- // field: 'field7',
- // component: 'RadioGroup',
- // label: '字段7',
- // colProps: {
- // span: 8,
- // },
- // componentProps: {
- // options: [
- // {
- // label: '选项1',
- // value: '1',
- // },
- // {
- // label: '选项2',
- // value: '2',
- // },
- // ],
- // },
- // },
- ];
- };
- function getAppendSchemas(): FormSchema[] {
- return [
- {
- field: 'field10',
- component: 'Input',
- label: '字段10',
- colProps: {
- span: 8,
- },
- },
- {
- field: 'field11',
- component: 'Input',
- label: '字段11',
- colProps: {
- span: 8,
- },
- },
- {
- field: 'field12',
- component: 'Input',
- label: '字段12',
- colProps: {
- span: 8,
- },
- },
- {
- field: 'field13',
- component: 'Input',
- label: '字段13',
- colProps: {
- span: 8,
- },
- },
- ];
- }
- const [register] = useForm({
- labelWidth: 120,
- schemas: getSchamas(),
- actionColOptions: {
- span: 24,
- },
- compact: true,
- showAdvancedButton: true,
- });
- const extraSchemas: FormSchema[] = [];
- for (let i = 14; i < 30; i++) {
- extraSchemas.push({
- field: 'field' + i,
- component: 'Input',
- label: '字段' + i,
- colProps: {
- span: 8,
- },
- });
- }
- const [register1] = useForm({
- labelWidth: 120,
- schemas: [
- ...getSchamas(),
- ...getAppendSchemas(),
- { field: '', component: 'Divider', label: '更多字段' },
- ...extraSchemas,
- ],
- actionColOptions: {
- span: 24,
- },
- compact: true,
- showAdvancedButton: true,
- alwaysShowLines: 2,
- });
- function onAdvancedChange(isAdvanced: boolean) {
- console.log('isAdvanced: ' + isAdvanced);
- if (isAdvanced) {
- // do something
- } else {
- // do something
- }
- }
- </script>
|