From e189ffeb4d0080d0dc9b83afe0892781d4cc4c46 Mon Sep 17 00:00:00 2001 From: ZLY Date: Tue, 2 Sep 2025 14:45:59 +0800 Subject: [PATCH] =?UTF-8?q?pref(flowEditor):=20=E4=BC=98=E5=8C=96=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=97=B6=E9=95=BF=E5=B1=95=E7=A4=BA=E5=92=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构 formatFooter 函数,支持 WAIT 和 CYCLE 类型的节点时长展示 - 优化 WaitEditor 组件,直接使用 customDef 对象而非字符串解析 - 提高代码可维护性,为未来扩展其他节点类型做准备 --- .../flowEditor/components/nodeContent.tsx | 26 ++++++++++--------- .../nodeEditors/components/WaitEditor.tsx | 4 +-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/pages/flowEditor/components/nodeContent.tsx b/src/pages/flowEditor/components/nodeContent.tsx index 256f203..5c2b7ac 100644 --- a/src/pages/flowEditor/components/nodeContent.tsx +++ b/src/pages/flowEditor/components/nodeContent.tsx @@ -179,17 +179,19 @@ const renderRegularNodeHandles = (dataIns: any[], dataOuts: any[], apiIns: any[] }; const formatFooter = (data: any) => { - // TODO 这里后续需要优化 - if (isJSON(data)) { - const { duration } = JSON.parse(data); - const hours = Math.floor(duration / 3600); - const minutes = Math.floor((duration % 3600) / 60); - const seconds = Math.floor(duration % 60); - return `${hours}小时${minutes}分钟${seconds}秒`; - } - else { - const keyMap = ['intervalSeconds']; - return cronstrue.toString(data.intervalSeconds, { locale: 'zh_CN' }); + console.log('formatFooter:', data); + switch (data.type) { + case 'WAIT': + const { duration } = data.customDef; + const hours = Math.floor(duration / 3600); + const minutes = Math.floor((duration % 3600) / 60); + const seconds = Math.floor(duration % 60); + return `${hours}小时${minutes}分钟${seconds}秒`; + case 'CYCLE': + const { intervalSeconds } = data.customDef; + return cronstrue.toString(intervalSeconds, { locale: 'zh_CN' }); + default: + return '这个类型还没开发'; } }; @@ -199,7 +201,7 @@ const NodeContent = ({ data }: { data: NodeContentData }) => { const dataIns = data.parameters?.dataIns || []; const dataOuts = data.parameters?.dataOuts || []; const showFooter = data?.component?.customDef || false; - const footerData = (showFooter && data.component?.customDef) || {}; + const footerData = (showFooter && data.component) || {}; // 判断节点类型 const isStartNode = data.type === 'start'; diff --git a/src/pages/flowEditor/nodeEditors/components/WaitEditor.tsx b/src/pages/flowEditor/nodeEditors/components/WaitEditor.tsx index 3c7fda4..7f0353a 100644 --- a/src/pages/flowEditor/nodeEditors/components/WaitEditor.tsx +++ b/src/pages/flowEditor/nodeEditors/components/WaitEditor.tsx @@ -25,7 +25,7 @@ const WaitEditor: React.FC = ({ nodeData, updateNodeData }) => useEffect(() => { if (nodeData?.component?.customDef) { - const duration = JSON.parse(nodeData.component.customDef).duration; + const duration = nodeData.component.customDef.duration; setDuration({ hour: Math.floor(duration / 3600), minute: Math.floor((duration % 3600) / 60), @@ -42,7 +42,7 @@ const WaitEditor: React.FC = ({ nodeData, updateNodeData }) => time }); updateNodeData('component', { - customDef: JSON.stringify({ duration: time }), + customDef: { duration: time }, type: 'WAIT' }); };