diff --git a/packages/core/client/src/collection-manager/Configuration/AddCollectionAction.tsx b/packages/core/client/src/collection-manager/Configuration/AddCollectionAction.tsx index 4dc2955853..da2d3d8bd5 100644 --- a/packages/core/client/src/collection-manager/Configuration/AddCollectionAction.tsx +++ b/packages/core/client/src/collection-manager/Configuration/AddCollectionAction.tsx @@ -1,6 +1,6 @@ import { DownOutlined, PlusOutlined } from '@ant-design/icons'; import { ArrayTable } from '@formily/antd'; -import { ISchema, useForm } from '@formily/react'; +import { ISchema, useField, useForm } from '@formily/react'; import { uid } from '@formily/shared'; import { Button, Dropdown, Menu } from 'antd'; import { cloneDeep } from 'lodash'; @@ -28,7 +28,7 @@ const getSchema = (schema, category, compile): ISchema => { properties['defaultValue']['x-decorator'] = 'FormItem'; } const initialValue: any = { - name : `t_${uid()}`, + name: `t_${uid()}`, template: schema.name, view: schema.name === 'view', category, @@ -195,8 +195,11 @@ const useCreateCollection = (schema?: any) => { const ctx = useActionContext(); const { refresh } = useResourceActionContext(); const { resource } = useResourceContext(); + const field = useField(); return { async run() { + field.data = field.data || {}; + field.data.loading = true; await form.submit(); const values = cloneDeep(form.values); if (schema?.events?.beforeSubmit) { @@ -218,6 +221,7 @@ const useCreateCollection = (schema?: any) => { }); ctx.setVisible(false); await form.reset(); + field.data.loading = false; refresh(); await refreshCM(); }, diff --git a/packages/core/client/src/collection-manager/Configuration/AddFieldAction.tsx b/packages/core/client/src/collection-manager/Configuration/AddFieldAction.tsx index 77b77c2935..8ea05eac36 100644 --- a/packages/core/client/src/collection-manager/Configuration/AddFieldAction.tsx +++ b/packages/core/client/src/collection-manager/Configuration/AddFieldAction.tsx @@ -1,6 +1,6 @@ import { PlusOutlined } from '@ant-design/icons'; import { ArrayTable } from '@formily/antd'; -import { useForm } from '@formily/react'; +import { useForm, useField } from '@formily/react'; import { uid } from '@formily/shared'; import { Button, Dropdown, Menu } from 'antd'; import { cloneDeep } from 'lodash'; @@ -136,9 +136,12 @@ const useCreateCollectionField = () => { const ctx = useActionContext(); const { refresh } = useResourceActionContext(); const { resource } = useResourceContext(); + const field = useField(); return { async run() { await form.submit(); + field.data = field.data || {}; + field.data.loading = true; const values = cloneDeep(form.values); if (values.autoCreateReverseField) { } else { @@ -148,6 +151,7 @@ const useCreateCollectionField = () => { await resource.create({ values }); ctx.setVisible(false); await form.reset(); + field.data.loading = false; refresh(); await refreshCM(); },