From e9fee3c0abfcd83c8f8d09ad428a298580db2bcd Mon Sep 17 00:00:00 2001 From: ZLY Date: Sun, 28 Sep 2025 16:15:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(event):=20=E5=AE=9E=E7=8E=B0=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增事件列表展示页面 - 实现事件的增删查功能- 添加事件名称、标识、描述字段校验 - 集成事件相关的API接口调用 - 使用场景ID查询事件列表 - 实现事件删除确认弹窗提示 --- src/api/event.ts | 41 +++ src/pages/orchestration/event/index.tsx | 233 ++++++++++++++++++ .../event/style/index.module.less | 22 ++ 3 files changed, 296 insertions(+) create mode 100644 src/api/event.ts create mode 100644 src/pages/orchestration/event/index.tsx create mode 100644 src/pages/orchestration/event/style/index.module.less diff --git a/src/api/event.ts b/src/api/event.ts new file mode 100644 index 0000000..d0ce188 --- /dev/null +++ b/src/api/event.ts @@ -0,0 +1,41 @@ +import axios from 'axios'; +import { AddEventParams, DeleteEventParams, DeleteEventForAppParams } from '@/api/interface'; + +// 公共路径 +const urlPrefix = '/api/v1/bpms-workbench'; + +// 事件管理-获取事件列表 +export function getEventList() { + return axios.get(`${urlPrefix}/event/list`); +} + +// 事件管理-添加事件 +export function addEventItem(params: AddEventParams) { + return axios.post(`${urlPrefix}/event/addSub`, params); +} + +// 事件管理-删除事件 +export function deleteEventItem(id: DeleteEventParams) { + return axios.delete(`${urlPrefix}/event/${id}/del`); +} + +// 事件管理-删除应用发布(事件发送) +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 }); +} + +// 事件管理-查询事件 +export function queryEventItem(name: string) { + return axios.post(`${urlPrefix}/event/get`, { name }); +} + +// 事件管理-使用场景ID查询事件 +export function queryEventItemBySceneId(sceneId: string) { + return axios.get(`${urlPrefix}/event/${sceneId}/get`); +} + diff --git a/src/pages/orchestration/event/index.tsx b/src/pages/orchestration/event/index.tsx new file mode 100644 index 0000000..92e2ef4 --- /dev/null +++ b/src/pages/orchestration/event/index.tsx @@ -0,0 +1,233 @@ +import React, { useEffect, useState } from 'react'; +import styles from './style/index.module.less'; +import { + Button, + Input, + Space, + Divider, + Table, + TableColumnProps, + Modal, + Form, + Message, + Popconfirm +} from '@arco-design/web-react'; +import { IconSearch } from '@arco-design/web-react/icon'; +import { useSelector } from 'react-redux'; +import { addEventItem, deleteEventItem, queryEventItemBySceneId } from '@/api/event'; + +const FormItem = Form.Item; +const TextArea = Input.TextArea; + +const HandleModal = ({ visible, onChangeVisible, onRefresh }) => { + const [form] = Form.useForm(); + const { info } = useSelector((state: any) => state.ideContainer); + + const onOk = async () => { + await form.validate(); + const formData = form.getFields(); + + const params = { + name: formData.name, + topic: `${formData.topic}/${info.identity}`, + description: formData.description, + sceneId: info.id + }; + + const res: any = await addEventItem(params); + + if (res && res.code === 200) { + Message.success('添加成功'); + onChangeVisible(false); + onRefresh(); + } + else { + Message.error(res.message); + } + + // 清空表单数据和其他变量数据 + form.resetFields(); + + }; + + return ( + onOk()} + onCancel={() => onChangeVisible(false)} + autoFocus={false} + focusLock={true} + maskClosable={false} + > +
+ + + + + + + +