From 021c8a9a16b98c9948b18f80e40142208589f899 Mon Sep 17 00:00:00 2001 From: "bai.zixv" Date: Wed, 24 Apr 2024 16:05:44 +0800 Subject: [PATCH] fix: plugin-approval, submit approval or reject faild (#835) Reviewed-on: https://git.daoyoucloud.com/daoyoucloud/tachybase/pulls/835 Co-authored-by: bai.zixv Co-committed-by: bai.zixv --- .../src/block-provider/BlockProvider.tsx | 2 +- .../antd/remote-select/RemoteSelect.tsx | 2 +- .../approval-block/todos/hooks/useSubmit.tsx | 42 ++++++++++--------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/packages/core/client/src/block-provider/BlockProvider.tsx b/packages/core/client/src/block-provider/BlockProvider.tsx index d4e777e09..c24c0955c 100644 --- a/packages/core/client/src/block-provider/BlockProvider.tsx +++ b/packages/core/client/src/block-provider/BlockProvider.tsx @@ -254,7 +254,7 @@ export const BlockProvider = (props: { }; export const useBlockAssociationContext = () => { - const { association } = useDataBlockProps(); + const { association } = useDataBlockProps() || {}; return useContext(BlockAssociationContext) || association; }; diff --git a/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx b/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx index 1af998f5c..2cd5de098 100644 --- a/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx +++ b/packages/core/client/src/schema-component/antd/remote-select/RemoteSelect.tsx @@ -62,7 +62,7 @@ const InternalRemoteSelect = connect( const operator = useMemo(() => { if (targetField?.interface) { - return getInterface(targetField.interface)?.filterable?.operators[0].value || '$includes'; + return getInterface(targetField.interface)?.filterable?.operators?.[0]?.value || '$includes'; } return '$includes'; }, [targetField]); diff --git a/packages/plugins/@hera/plugin-approval/src/client/usage/approval-block/todos/hooks/useSubmit.tsx b/packages/plugins/@hera/plugin-approval/src/client/usage/approval-block/todos/hooks/useSubmit.tsx index 8ec88677f..7ad618d34 100644 --- a/packages/plugins/@hera/plugin-approval/src/client/usage/approval-block/todos/hooks/useSubmit.tsx +++ b/packages/plugins/@hera/plugin-approval/src/client/usage/approval-block/todos/hooks/useSubmit.tsx @@ -1,4 +1,4 @@ -import { useAPIClient, useActionContext } from '@nocobase/client'; +import { useAPIClient, useActionContext, useRefreshActionProps } from '@nocobase/client'; import { useField, useForm } from '@nocobase/schema'; import { useContextApprovalAction } from '../Pd.ApprovalAction'; import { useContextApprovalExecutions } from '../Pd.ApprovalExecutions'; @@ -10,26 +10,30 @@ export function useSubmit() { const approvalExecutions = useContextApprovalExecutions(); const { status } = useContextApprovalAction(); const { setVisible, setSubmitted } = useActionContext() as any; + // TODO: 自动更新外层block, 提升交互体验 + // const { onClick: refreshAction } = useRefreshActionProps(); return { - run() { - return async () => { - try { - if (form.values.status) return; - await form.submit(), (field.data = field.data ?? {}); - field.data.loading = true; - await api.resource('approvalRecords').submit({ - filterByTk: approvalExecutions.id, - values: { ...form.values, status }, - }); - field.data.loading = false; - await form.reset(); - setSubmitted(true); - setVisible(false); - } catch (error) { - console.error(error); - field.data && (field.data.loading = false); + run: async () => { + try { + if (form.values.status) { + return; } - }; + await form.submit(); + field.data = field.data ?? {}; + field.data.loading = true; + setVisible(false); + await api.resource('approvalRecords').submit({ + filterByTk: approvalExecutions.id, + values: { ...form.values, status }, + }); + field.data.loading = false; + await form.reset(); + // refreshAction?.(); + setSubmitted?.(true); + } catch (error) { + console.error(error); + field.data && (field.data.loading = false); + } }, }; }