pref(flow): 优化同步事件发送节点功能

fixbug
钟良源 1 month ago
parent 5d08b79904
commit fe47ea56b8

@ -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 });
}

@ -33,6 +33,9 @@ const setIcon = (nodeType: string) => {
case 'EVENTSEND':
type = 'IconExport';
break;
case 'EVENTSEND_SYNC':
type = 'IconExport';
break;
case 'JSON2STR':
type = 'IconCodeBlock';
break;

@ -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<NodeEditorProps> = ({
return <EventListenEditor nodeData={nodeData} updateNodeData={updateNodeData} node={node} />;
case 'EVENTSEND': // 事件发送
return <EventSendEditor nodeData={nodeData} updateNodeData={updateNodeData} node={node} />;
case 'EVENTSEND_SYNC': // 同步事件发送
return <EventSendSyncEditor nodeData={nodeData} updateNodeData={updateNodeData} node={node} />;
case 'JSON2STR': // JSON转字符串
return <JsonToStringEditor nodeData={nodeData} updateNodeData={updateNodeData} />;
case 'STR2JSON': // 字符串转JSON

@ -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<NodeEditorProps> = ({ node, nodeData, updateNodeData }) => {
const [eventList, setEventList] = useState<any[]>();
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 (
<>
<Typography.Title heading={6}><IconUnorderedList style={{ marginRight: 5 }} /></Typography.Title>
<Input
value={nodeData.component?.customDef && JSON.parse(nodeData.component.customDef)?.eventName || ''}
placeholder={'请输入事件名称'}
onChange={(value) => {
updateNodeData('component', {
...nodeData.component,
customDef: JSON.stringify({ eventName: value })
});
}}
/>
</>
);
};
export default EventSendEditor;

@ -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}` : '';

@ -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,

@ -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);
// 使用展开运算符创建新数组,避免修改冻结对象

Loading…
Cancel
Save