diff --git a/src/components/InstanceCanvas/index.tsx b/src/components/InstanceCanvas/index.tsx index 9279052..8e09d0f 100644 --- a/src/components/InstanceCanvas/index.tsx +++ b/src/components/InstanceCanvas/index.tsx @@ -112,8 +112,6 @@ const InstanceCanvas: React.FC = ({ instanceData, title, on } }; - console.log('InstanceCanvas - 转换后的 flowData:', newFlowData); - // 只在数据真正变化时才更新 if (!flowDataRef.current) { flowDataRef.current = newFlowData; @@ -221,9 +219,6 @@ const InstanceCanvas: React.FC = ({ instanceData, title, on return flowData; } - console.log('InstanceCanvas - 注入状态前的 flowData:', flowData); - console.log('InstanceCanvas - 要注入的状态映射:', nodeStatusMap); - // 深拷贝 flowData 并注入节点状态 const componentsWithStatus = { ...flowData.components }; Object.keys(nodeStatusMap).forEach((nodeId) => { @@ -245,7 +240,6 @@ const InstanceCanvas: React.FC = ({ instanceData, title, on } }; - console.log('InstanceCanvas - 注入状态后的 flowData:', result); return result; }, [flowData, nodeStatusMap]); diff --git a/src/hooks/useFlowCallbacks.ts b/src/hooks/useFlowCallbacks.ts index 0288eaf..4b2dbc1 100644 --- a/src/hooks/useFlowCallbacks.ts +++ b/src/hooks/useFlowCallbacks.ts @@ -1534,6 +1534,9 @@ export const useFlowCallbacks = ( document.dispatchEvent(new CustomEvent('refreshAppList')); } + // 重置节点状态 + dispatch(resetNodeStatus()); + // 更新运行ID dispatch(updateRuntimeId('')); diff --git a/src/hooks/useFlowEditorState.ts b/src/hooks/useFlowEditorState.ts index fa91ae6..9e01227 100644 --- a/src/hooks/useFlowEditorState.ts +++ b/src/hooks/useFlowEditorState.ts @@ -6,7 +6,7 @@ import { updateCanvasDataMap } from '@/store/ideContainer'; import { Dispatch } from 'redux'; -export const useFlowEditorState = (initialData?: any) => { +export const useFlowEditorState = (initialData?: any, readOnly?: boolean) => { const [nodes, setNodes] = useState([]); const [edges, setEdges] = useState([]); @@ -63,22 +63,33 @@ export const useFlowEditorState = (initialData?: any) => { setNodes(prevNodes =>{ return prevNodes.map(node => { - // 优先使用运行时状态,其次使用节点自身的状态(历史实例),最后默认为 waiting - const nodeStatus = currentNodeStatusMap[node.id] || node.data.status || 'waiting'; + // 如果是只读模式(历史实例查看),优先使用节点自身的历史状态 + // 如果是正常运行模式,只使用运行时状态 + let nodeStatus = 'waiting'; + let showStatus = false; + + if (readOnly) { + // 只读模式:使用历史状态 + nodeStatus = node.data.status as string || 'waiting'; + showStatus = hasInitialDataStatus as boolean || node.data.isStatusVisible as boolean || false; + } else { + // 正常模式:只使用运行时状态 + nodeStatus = currentNodeStatusMap[node.id] || 'waiting'; + showStatus = currentAppIsRunning; + } return { ...node, data: { ...node.data, status: nodeStatus, - // 在运行时或有历史状态时显示状态指示器 - isStatusVisible: currentAppIsRunning || hasInitialDataStatus || node.data.isStatusVisible + isStatusVisible: showStatus } }; }); }); - }, [appRuntimeData, currentAppKey, currentAppIsRunning, initialData?.id, initialData?.components, nodes.length]); + }, [appRuntimeData, currentAppKey, currentAppIsRunning, initialData?.id, initialData?.components, nodes.length, readOnly]); const updateCanvasDataMapDebounced = useRef( debounce((dispatch: Dispatch, canvasDataMap: any, id: string, nodes: Node[], edges: Edge[]) => { diff --git a/src/pages/flowEditor/index.tsx b/src/pages/flowEditor/index.tsx index 707d2a9..c845a81 100644 --- a/src/pages/flowEditor/index.tsx +++ b/src/pages/flowEditor/index.tsx @@ -63,7 +63,7 @@ const FlowEditor: React.FC<{ initialData?: any, useDefault?: boolean, readOnly?: // Initial data initialData: stateInitialData - } = useFlowEditorState(initialData); + } = useFlowEditorState(initialData, readOnly); // 使用自定义Hook管理回调函数 const { diff --git a/src/utils/convertFlowData.ts b/src/utils/convertFlowData.ts index 59ed6b2..623d99b 100644 --- a/src/utils/convertFlowData.ts +++ b/src/utils/convertFlowData.ts @@ -150,11 +150,9 @@ export const convertFlowData = (flowData: any, useDefault = true) => { // 保留节点状态信息(用于历史实例查看) if (nodeConfig.status) { node.data.status = nodeConfig.status; - console.log(`convertFlowData - 保留节点 ${nodeId} 的状态:`, nodeConfig.status); } if (nodeConfig.isStatusVisible !== undefined) { node.data.isStatusVisible = nodeConfig.isStatusVisible; - console.log(`convertFlowData - 保留节点 ${nodeId} 的状态可见性:`, nodeConfig.isStatusVisible); } // 注册循环节点类型