diff --git a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/hook/useApprovalDetailBlockProps.tsx b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/hook/useApprovalDetailBlockProps.tsx index e08e23210..509c49b22 100644 --- a/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/hook/useApprovalDetailBlockProps.tsx +++ b/packages/plugins/@hera/plugin-approval-mobile/src/client/approval/todos/hook/useApprovalDetailBlockProps.tsx @@ -9,7 +9,7 @@ export function useApprovalDetailBlockProps() { useEffect(() => { form.setValues(snapshot); - }, [form, snapshot]); + }, [form, snapshot, form?.values?.account_pay_id]); return { form }; } diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/ApprovalUpdateForm.provider.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/ApprovalUpdateForm.provider.tsx index 068628107..c2ed9f435 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/ApprovalUpdateForm.provider.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/ApprovalUpdateForm.provider.tsx @@ -1,8 +1,8 @@ import { APPROVAL_ACTION_STATUS } from '../../../constants'; -import { useContextApprovalExecutions } from './Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from './Pd.ApprovalExecutions'; export const ProviderApprovalUpdateForm = (props) => { - const { status } = useContextApprovalExecutions(); + const { status } = useContextApprovalRecords(); if (status === APPROVAL_ACTION_STATUS.PENDING) { return props.children; } else { diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Dt.ApprovalFormBlock.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Dt.ApprovalFormBlock.tsx index 24d858702..e76c0097f 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Dt.ApprovalFormBlock.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Dt.ApprovalFormBlock.tsx @@ -16,10 +16,10 @@ import { createForm, RecursionField, useField, useFieldSchema } from '@tachybase import _ from 'lodash'; import { useFlowContext } from '../../../../../FlowContext'; -import { useContextApprovalExecutions } from './Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from './Pd.ApprovalExecutions'; export function ApprovalFormBlockDecorator(props) { - const approvalExecutions = useContextApprovalExecutions(); + const approvalExecutions = useContextApprovalRecords(); const { job } = approvalExecutions; const omitApproval = _.omit(approvalExecutions, ['approval', 'job', 'node', 'snapshot']); const { execution, workflow } = useFlowContext(); diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ActionBarProvider.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ActionBarProvider.tsx index 268aa7ae7..96793c220 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ActionBarProvider.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ActionBarProvider.tsx @@ -5,10 +5,10 @@ import { str2moment } from '@tachybase/utils/client'; import { Space, Tag } from 'antd'; import { approvalStatusConfigObj } from '../../../constants'; -import { useContextApprovalExecutions } from './Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from './Pd.ApprovalExecutions'; export function ActionBarProvider(props) { - const { status } = useContextApprovalExecutions(); + const { status } = useContextApprovalRecords(); if (status) { return ; @@ -19,7 +19,7 @@ export function ActionBarProvider(props) { const ComponentUserInfo = () => { const compile = useCompile(); - const { status, updatedAt, user } = useContextApprovalExecutions() as any; + const { status, updatedAt, user } = useContextApprovalRecords() as any; const configObj = approvalStatusConfigObj[status]; return ( diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalAction.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalAction.tsx index 1335797d6..0321f91a3 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalAction.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalAction.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext } from 'react'; -import { useContextApprovalExecutions } from './Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from './Pd.ApprovalExecutions'; interface ApprovalAction { status: number | null; @@ -9,7 +9,7 @@ interface ApprovalAction { const ContextApprovalAction = createContext>({}); export function ApprovalActionProvider({ children, ...props }) { - const { status } = useContextApprovalExecutions(); + const { status } = useContextApprovalRecords(); if (!status || status === props.status) { return {children}; diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalExecutions.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalExecutions.tsx index d775e3d86..5f74da782 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalExecutions.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/Pd.ApprovalExecutions.tsx @@ -30,8 +30,8 @@ interface ApprovalExecutions { userId?: any; } -export const ContextApprovalExecutions = createContext>({}); +export const ContextApprovalRecords = createContext>({}); -export function useContextApprovalExecutions() { - return useContext(ContextApprovalExecutions); +export function useContextApprovalRecords() { + return useContext(ContextApprovalRecords); } diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/VC.ViewActionTodosContent.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/VC.ViewActionTodosContent.tsx index b1d091032..1b6b653cb 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/VC.ViewActionTodosContent.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/VC.ViewActionTodosContent.tsx @@ -25,7 +25,7 @@ import { useApprovalFormBlockProps } from './hooks/useApprovalFormBlockProps'; import { useSubmit } from './hooks/useSubmit'; import { ActionBarProvider } from './Pd.ActionBarProvider'; import { ApprovalActionProvider } from './Pd.ApprovalAction'; -import { ContextApprovalExecutions } from './Pd.ApprovalExecutions'; +import { ContextApprovalRecords } from './Pd.ApprovalExecutions'; // 审批-待办-查看: 内容 export const ViewActionTodosContent = () => { @@ -87,7 +87,7 @@ export const ViewActionTodosContent = () => { - + { ), }} /> - + diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useApprovalDetailBlockProps.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useApprovalDetailBlockProps.tsx index 211ba9f7a..48df7f056 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useApprovalDetailBlockProps.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useApprovalDetailBlockProps.tsx @@ -1,15 +1,19 @@ import { useEffect } from 'react'; import { useFormBlockContext } from '@tachybase/client'; -import { useContextApprovalExecutions } from '../Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from '../Pd.ApprovalExecutions'; export function useApprovalDetailBlockProps() { - const { snapshot } = useContextApprovalExecutions(); + const { snapshot } = useContextApprovalRecords(); const { form } = useFormBlockContext(); useEffect(() => { form.setValues(snapshot); - }, [form, snapshot]); + // NOTE: 暂时的解决办法, form?.values?.account_pay_id 这个条件解决了问题, 意思是如果被修改了值, 然后重新修改回来. 在这个审批的特殊条件下, 写法是没问题的. 但是不是根源的解决办法, 也依赖了字段 account_pay_id + // XXX: 需要重构, 寻找为何发生多次渲染, 导致设置的值, 被表单组件的默认值覆盖的问题. + // 参考文件1: client/src/block-provider/FormBlockProvider.tsx + // 参考文件1: src/client/features/approval/common/FormBlock.provider.tsx + }, [form, snapshot, form?.values?.account_pay_id]); return { form }; } diff --git a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useSubmit.tsx b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useSubmit.tsx index ad6a05f36..0e62cb923 100644 --- a/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useSubmit.tsx +++ b/packages/plugins/@tachybase/plugin-workflow/src/client/features/approval/usage/approval-block/todos/hooks/useSubmit.tsx @@ -3,7 +3,7 @@ import { useField, useForm } from '@tachybase/schema'; import { useHandleRefresh } from '../../common/useHandleRefresh'; import { useContextApprovalAction } from '../Pd.ApprovalAction'; -import { useContextApprovalExecutions } from '../Pd.ApprovalExecutions'; +import { useContextApprovalRecords } from '../Pd.ApprovalExecutions'; export function useSubmit(props: any = {}) { const { refreshTable } = useHandleRefresh(); @@ -11,7 +11,7 @@ export function useSubmit(props: any = {}) { const api = useAPIClient(); const form = useForm(); const collection = useCollection(); - const approvalExecutions = useContextApprovalExecutions(); + const approvalExecutions = useContextApprovalRecords(); const { status } = useContextApprovalAction(); const { source } = props; const needUpdateRecord = source === 'updateRecord';