diff --git a/packages/core/client/src/flow/components/DynamicFlowsIcon.tsx b/packages/core/client/src/flow/components/DynamicFlowsIcon.tsx
index 9937a8f3731..121ad634f2f 100644
--- a/packages/core/client/src/flow/components/DynamicFlowsIcon.tsx
+++ b/packages/core/client/src/flow/components/DynamicFlowsIcon.tsx
@@ -8,7 +8,7 @@
*/
import React from 'react';
-import { ThunderboltOutlined, DeleteOutlined, PlusOutlined, CloseOutlined } from '@ant-design/icons';
+import { ThunderboltOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons';
import {
ActionDefinition,
ActionScene,
@@ -18,6 +18,7 @@ import {
useFlowContext,
FlowDefinition,
FlowStep,
+ FlowStepContext,
} from '@nocobase/flow-engine';
import { Collapse, Input, Button, Space, Tooltip, Empty, Dropdown, Select } from 'antd';
import { uid } from '@formily/shared';
@@ -345,12 +346,16 @@ const DynamicFlowsEditor = observer((props: { model: FlowModel }) => {
- {flowEngine.flowSettings.renderStepForm({
- uiSchema: actionDef.uiSchema,
- initialValues: untracked(() => step.defaultParams), // 防止代码编辑器失焦
- flowEngine,
- onFormValuesChange: (form: any) => handleActionValueChange(step, form.values),
- })}
+ {React.createElement(
+ FlowStepContext.Provider,
+ { value: { params: step.defaultParams, path: `${model.uid}_${step.flowKey}_${step.key}` } },
+ flowEngine.flowSettings.renderStepForm({
+ uiSchema: actionDef.uiSchema,
+ initialValues: untracked(() => step.defaultParams), // 防止代码编辑器失焦
+ flowEngine,
+ onFormValuesChange: (form: any) => handleActionValueChange(step, form.values),
+ }),
+ )}
);
diff --git a/packages/core/flow-engine/src/flowSettings.ts b/packages/core/flow-engine/src/flowSettings.ts
index f978a564ab0..695e2b93b1b 100644
--- a/packages/core/flow-engine/src/flowSettings.ts
+++ b/packages/core/flow-engine/src/flowSettings.ts
@@ -30,6 +30,7 @@ import {
resolveUiMode,
setupRuntimeContextSteps,
} from './utils';
+import { FlowStepContext } from './hooks/useFlowStep';
const Panel = Collapse.Panel;
@@ -777,12 +778,21 @@ export class FlowSettings {
return React.createElement(
FlowSettingsContextProvider as any,
{ value: entry.ctx },
- this.renderStepForm({
- uiSchema: entry.mergedUiSchema,
- initialValues: entry.initialValues,
- flowEngine,
- form,
- }),
+ React.createElement(
+ FlowStepContext.Provider,
+ {
+ value: {
+ params: { ...entry.initialValues, ...form.values },
+ path: `${model.uid}_${entry.flowKey}_${entry.stepKey}`,
+ },
+ },
+ this.renderStepForm({
+ uiSchema: entry.mergedUiSchema,
+ initialValues: entry.initialValues,
+ flowEngine,
+ form,
+ }),
+ ),
);
};
diff --git a/packages/core/flow-engine/src/hooks/index.ts b/packages/core/flow-engine/src/hooks/index.ts
index e6868818b4c..1901598f098 100644
--- a/packages/core/flow-engine/src/hooks/index.ts
+++ b/packages/core/flow-engine/src/hooks/index.ts
@@ -12,3 +12,4 @@ export * from './useFlowModel';
export * from './useApplyAutoFlows';
export * from './useFlowSettingsContext';
export * from './useNiceDropdownMaxHeight';
+export * from './useFlowStep';
diff --git a/packages/core/flow-engine/src/hooks/useFlowStep.tsx b/packages/core/flow-engine/src/hooks/useFlowStep.tsx
new file mode 100644
index 00000000000..2d43ae5eff1
--- /dev/null
+++ b/packages/core/flow-engine/src/hooks/useFlowStep.tsx
@@ -0,0 +1,19 @@
+/**
+ * This file is part of the NocoBase (R) project.
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
+ * Authors: NocoBase Team.
+ *
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
+ * For more information, please refer to: https://www.nocobase.com/agreement.
+ */
+
+import React, { useContext } from 'react';
+
+export const FlowStepContext = React.createContext({
+ path: '',
+ params: {} as Record,
+});
+
+export const useFlowStep = () => {
+ return useContext(FlowStepContext);
+};