diff --git a/src/api/event.ts b/src/api/event.ts index c6bd89d..3b37333 100644 --- a/src/api/event.ts +++ b/src/api/event.ts @@ -24,7 +24,7 @@ export function deleteEventPub(params: DeleteEventForAppParams) { return axios.delete(`${urlPrefix}/event/pub`, { data: params }); } -// 事件管理-删除应用定远(事件接收) +// 事件管理-删除应用订阅(事件接收) export function deleteEventSub(params: DeleteEventForAppParams) { return axios.delete(`${urlPrefix}/event/sub`, { data: params }); } diff --git a/src/components/FlowEditor/node/localNode/LocalNode.tsx b/src/components/FlowEditor/node/localNode/LocalNode.tsx index f50b77d..f63e166 100644 --- a/src/components/FlowEditor/node/localNode/LocalNode.tsx +++ b/src/components/FlowEditor/node/localNode/LocalNode.tsx @@ -33,6 +33,9 @@ const setIcon = (nodeType: string) => { case 'EVENTSEND': type = 'IconExport'; break; + case 'EVENTSEND_SYNC': + type = 'IconExport'; + break; case 'JSON2STR': type = 'IconCodeBlock'; break; diff --git a/src/components/FlowEditor/nodeEditors/LocalNodeEditor.tsx b/src/components/FlowEditor/nodeEditors/LocalNodeEditor.tsx index 0dbe962..db66300 100644 --- a/src/components/FlowEditor/nodeEditors/LocalNodeEditor.tsx +++ b/src/components/FlowEditor/nodeEditors/LocalNodeEditor.tsx @@ -9,6 +9,7 @@ import LoopEditor from './components/LoopEditor'; import CycleEditor from './components/CycleEditor'; import EventListenEditor from './components/EventListenEditor'; import EventSendEditor from './components/EventSendEditor'; +import EventSendSyncEditor from './components/EventSendSyncEditor'; import JsonToStringEditor from './components/JsonToStringEditor'; import StringToJsonEditor from './components/StringToJsonEditor'; import JsonConvertEditor from './components/JsonConvertEditor'; @@ -44,6 +45,8 @@ const LocalNodeEditor: React.FC = ({ return ; case 'EVENTSEND': // 事件发送 return ; + case 'EVENTSEND_SYNC': // 同步事件发送 + return ; case 'JSON2STR': // JSON转字符串 return ; case 'STR2JSON': // 字符串转JSON diff --git a/src/components/FlowEditor/nodeEditors/components/EventSendSyncEditor.tsx b/src/components/FlowEditor/nodeEditors/components/EventSendSyncEditor.tsx new file mode 100644 index 0000000..e262ba4 --- /dev/null +++ b/src/components/FlowEditor/nodeEditors/components/EventSendSyncEditor.tsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from 'react'; +import { NodeEditorProps } from '@/components/FlowEditor/nodeEditors'; +import { Typography, Form, Input } from '@arco-design/web-react'; +import { IconUnorderedList } from '@arco-design/web-react/icon'; +import { useDispatch, useSelector } from 'react-redux'; +import EventSelect from '@/components/FlowEditor/nodeEditors/components/EventSelect'; +import { queryEventItemBySceneId } from '@/api/event'; +import ParamsTable from '@/components/FlowEditor/nodeEditors/components/ParamsTable'; + +const EventSendEditor: React.FC = ({ node, nodeData, updateNodeData }) => { + const [eventList, setEventList] = useState(); + const { currentAppData } = useSelector(state => state.ideContainer); + + const getEventList = async () => { + const params = { + nodeId: node.id, + appId: currentAppData.id, + sceneId: currentAppData.sceneId + }; + const res = await queryEventItemBySceneId(params); + setEventList(res.data); + }; + + useEffect(() => { + getEventList(); + }, []); + + return ( + <> + 输入事件名称 + { + updateNodeData('component', { + ...nodeData.component, + customDef: JSON.stringify({ eventName: value }) + }); + }} + /> + + ); +}; + +export default EventSendEditor; \ No newline at end of file diff --git a/src/pages/flowEditor/components/nodeContentLocal.tsx b/src/pages/flowEditor/components/nodeContentLocal.tsx index 0d0bd5c..c50c57f 100644 --- a/src/pages/flowEditor/components/nodeContentLocal.tsx +++ b/src/pages/flowEditor/components/nodeContentLocal.tsx @@ -210,6 +210,15 @@ const formatFooter = (data: any, eventListOld = []) => { if (topic.includes('**empty**')) return ''; return `事件: ${name}`; } + case 'EVENTSEND_SYNC': + const parsedData1 = isJSON(data.customDef) ? JSON.parse(data.customDef) : null; + if (parsedData1) { + const { eventName } = parsedData1; + return `事件: ${eventName}`; + } + else { + return ''; + } case 'BASIC': case 'BASIC_LOOP': return data.compIdentifier ? `当前实例:${data.compIdentifier}` : ''; diff --git a/src/pages/flowEditor/sideBar/config/localNodeData.ts b/src/pages/flowEditor/sideBar/config/localNodeData.ts index 54a0857..265c3e8 100644 --- a/src/pages/flowEditor/sideBar/config/localNodeData.ts +++ b/src/pages/flowEditor/sideBar/config/localNodeData.ts @@ -109,7 +109,7 @@ const codeParameters = { dataOuts: [{ 'arrayType': null, 'dataType': 'STRING', - 'defaultValue': 'STRING', + 'defaultValue': '', 'desc': '输出参数', 'id': 'arg' }] @@ -132,12 +132,36 @@ const microParameters = { { 'arrayType': null, 'dataType': 'STRING', - 'defaultValue': 'STRING', + 'defaultValue': '', 'desc': '输出参数', 'id': 'out' } ] }; +const eventSendSyncParameters = { + apiIns: [{ + name: 'start', + desc: '', + dataType: '', + defaultValue: '' + }], + apiOuts: [{ + name: 'done', + desc: '', + dataType: '', + defaultValue: '' + }], + dataIns: [ + { + 'arrayType': null, + 'dataType': 'STRING', + 'defaultValue': '', + 'desc': '输入', + 'id': 'in' + } + ], + dataOuts: [] +}; // 定义节点基本信息 画布中添加的组件列表依赖这里 const nodeDefinitions = [ @@ -149,6 +173,7 @@ const nodeDefinitions = [ { nodeName: '周期', nodeType: 'CYCLE', nodeGroup: 'common', icon: 'IconSchedule' }, { nodeName: '事件接收', nodeType: 'EVENTLISTENE', nodeGroup: 'common', icon: 'IconImport' }, { nodeName: '事件发送', nodeType: 'EVENTSEND', nodeGroup: 'common', icon: 'IconExport' }, + { nodeName: '同步事件发送', nodeType: 'EVENTSEND_SYNC', nodeGroup: 'common', icon: 'IconExport' }, { nodeName: '语音输入', nodeType: 'MICRO', nodeGroup: 'common', icon: 'IconVoice' }, { nodeName: 'JSON转字符串', nodeType: 'JSON2STR', nodeGroup: 'common', icon: 'IconCodeBlock' }, { nodeName: '字符串转JSON', nodeType: 'STR2JSON', nodeGroup: 'common', icon: 'IconCodeSquare' }, @@ -182,6 +207,9 @@ export const localNodeData = nodeDefinitions.map(({ nodeName, nodeType, nodeGrou else if (nodeType === 'MICRO') { parameters = microParameters; } + else if (nodeType === 'EVENTSEND_SYNC') { + parameters = eventSendSyncParameters; + } return { nodeName, diff --git a/src/utils/convertFlowData.ts b/src/utils/convertFlowData.ts index 37decfe..0a46f89 100644 --- a/src/utils/convertFlowData.ts +++ b/src/utils/convertFlowData.ts @@ -85,7 +85,7 @@ export const convertFlowData = (flowData: any, useDefault = true) => { console.log(error); } } - else if (nodeId.includes('EVENTSEND')) { + else if (nodeId.includes('EVENTSEND') && !nodeId.includes('EVENTSEND_SYNC')) { try { const customDef = JSON.parse(nodeConfig.component.customDef); // 使用展开运算符创建新数组,避免修改冻结对象