import React, { useEffect, useRef, useState, useMemo, useCallback } from 'react'; import styles from './style/sideBar.module.less'; import { ResizeBox, Tree, Input, Button, Modal, Form, Message, Dropdown, Menu, Popconfirm } from '@arco-design/web-react'; import { IconApps, IconMore, IconDelete, IconEdit, IconEye, IconSearch, IconPlus, IconEyeInvisible, IconExpand, IconShrink, IconLeft, IconLoading } from '@arco-design/web-react/icon'; import { menuData1, menuData2 } from './config/menuData'; import { Selected } from '@/pages/ideContainer/types'; import { useDispatch, useSelector } from 'react-redux'; import { updateMenuData, updateFlowData, updateCanvasDataMap, updateCurrentAppData, updateEventListOld, updateEventNodeList, updateIsRunning, updateRuntimeId } from '@/store/ideContainer'; import { addApp, getProjectEnv, editApp, deleteApp } from '@/api/apps'; import _ from 'lodash'; import { getAppInfoNew } from '@/api/appRes'; import { getAppEventData } from '@/api/appEvent'; import { queryEventItemBySceneIdOld } from '@/api/event'; import { convertFlowData } from '@/utils/convertFlowData'; const TreeNode = Tree.Node; const FormItem = Form.Item; const TextArea = Input.TextArea; const MenuItem = Menu.Item; interface MenuItemType { title: string; key?: string; children?: MenuItemType[]; path?: string; icon?: React.ReactNode; [key: string]: string | MenuItemType[] | React.ReactNode; } interface SideBarProps { subMenuData: any; selected?: any; identity?: string; showSubMenu: boolean; onMenuSelect?: (selected: Selected) => void; onRefresh: () => void; onDeleteApp?: (appId: string) => void; // 添加删除应用的回调函数 } const compTypeMap = { appComponent: '普通组件', subComponent: '子流程' }; const AppHandleModal = ({ appInfo, visible, type, onChangeVisible, onClose, onRefresh }) => { const { info } = useSelector(state => state.ideContainer); const [form] = Form.useForm(); useEffect(() => { if (type === 'EDIT' && appInfo && visible) { form.setFieldsValue({ id: appInfo?.id, name: appInfo?.name, description: appInfo?.description, published: appInfo?.published === 1, logo: 'scene04.png', // 先写死 sceneId: info.id }); } }, [type, appInfo, visible, form, info.id]); const onOk = async () => { await form.validate(); const formData = form.getFields(); // 新增 if (type === 'ADD') { // 新增应用的入参 const params = { description: formData.description, name: formData.name, logo: 'scene04.png', // 先写死 published: 0, sceneId: info.id }; const res: any = await addApp(params); if (res.code === 200) Message.success('创建成功'); else Message.error(res.message); } // 编辑 else { const res: any = await editApp(formData); if (res.code === 200) Message.success('编辑成功'); else Message.error(res.message); } // 清空表单数据和其他变量数据 form.resetFields(); onRefresh(); onClose(); }; return ( onOk()} onCancel={() => onChangeVisible(false)} autoFocus={false} focusLock={true} maskClosable={false} >
{/**/}