From 71c80efab01d874c42bd9bed11da4210fda50aed Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 29 Nov 2025 18:09:49 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91=E3=80=90bpm?= =?UTF-8?q?=E3=80=91bpmn=20=E8=AE=BE=E8=AE=A1=E5=99=A8=EF=BC=9A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B6=88=E6=81=AF=E4=B8=8E=E4=BF=A1=E5=8F=B7=E7=9A=84?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E3=80=81=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=9D=A5=E8=87=AA=EF=BC=9Ahttps://gitee.com/yudaocode?= =?UTF-8?q?/yudao-ui-admin-vue3/commit/c568d45180cfe86f09aa40eb055e7efd8ad?= =?UTF-8?q?352ba?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../penal/signal-message/SignalAndMessage.vue | 149 ++++++++++++++++-- 1 file changed, 133 insertions(+), 16 deletions(-) diff --git a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/signal-message/SignalAndMessage.vue b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/signal-message/SignalAndMessage.vue index ad28bf71f..6eb3d7d74 100644 --- a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/signal-message/SignalAndMessage.vue +++ b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/signal-message/SignalAndMessage.vue @@ -5,6 +5,7 @@ import { IconifyIcon } from '@vben/icons'; import { Button, + Divider, Form, FormItem, Input, @@ -23,10 +24,20 @@ const modelObjectForm = ref({}); const rootElements = ref(); const messageIdMap = ref(); const signalIdMap = ref(); +const editingIndex = ref(-1); // 正在编辑的索引,-1 表示新建 const modelConfig = computed(() => { + const isEdit = editingIndex.value !== -1; return modelType.value === 'message' - ? { title: '创建消息', idLabel: '消息ID', nameLabel: '消息名称' } - : { title: '创建信号', idLabel: '信号ID', nameLabel: '信号名称' }; + ? { + title: isEdit ? '编辑消息' : '创建消息', + idLabel: '消息ID', + nameLabel: '消息名称', + } + : { + title: isEdit ? '编辑信号' : '创建信号', + idLabel: '信号ID', + nameLabel: '信号名称', + }; }); const bpmnInstances = () => (window as any)?.bpmnInstances; @@ -48,35 +59,101 @@ const initDataList = () => { } }); }; + const openModel = (type: any) => { modelType.value = type; + editingIndex.value = -1; modelObjectForm.value = {}; dialogVisible.value = true; }; + +const openEditModel = (type: any, row: any, index: number) => { + modelType.value = type; + editingIndex.value = index; + modelObjectForm.value = { ...row }; + dialogVisible.value = true; +}; + const addNewObject = () => { if (modelType.value === 'message') { - if (messageIdMap.value[modelObjectForm.value.id]) { - message.error('该消息已存在,请修改id后重新保存'); + // 编辑模式 + if (editingIndex.value === -1) { + // 新建模式 + if (messageIdMap.value[modelObjectForm.value.id]) { + message.error('该消息已存在,请修改id后重新保存'); + return; + } + const messageRef = bpmnInstances().moddle.create( + 'bpmn:Message', + modelObjectForm.value, + ); + rootElements.value.push(messageRef); + } else { + const targetMessage = messageList.value[editingIndex.value]; + // 查找 rootElements 中的原始对象 + const rootMessage = rootElements.value.find( + (el: any) => el.$type === 'bpmn:Message' && el.id === targetMessage.id, + ); + if (rootMessage) { + rootMessage.id = modelObjectForm.value.id; + rootMessage.name = modelObjectForm.value.name; + } } - const messageRef = bpmnInstances().moddle.create( - 'bpmn:Message', - modelObjectForm.value, - ); - rootElements.value.push(messageRef); } else { - if (signalIdMap.value[modelObjectForm.value.id]) { - message.error('该信号已存在,请修改id后重新保存'); + // 编辑模式 + if (editingIndex.value === -1) { + // 新建模式 + if (signalIdMap.value[modelObjectForm.value.id]) { + message.error('该信号已存在,请修改id后重新保存'); + return; + } + const signalRef = bpmnInstances().moddle.create( + 'bpmn:Signal', + modelObjectForm.value, + ); + rootElements.value.push(signalRef); + } else { + const targetSignal = signalList.value[editingIndex.value]; + // 查找 rootElements 中的原始对象 + const rootSignal = rootElements.value.find( + (el: any) => el.$type === 'bpmn:Signal' && el.id === targetSignal.id, + ); + if (rootSignal) { + rootSignal.id = modelObjectForm.value.id; + rootSignal.name = modelObjectForm.value.name; + } } - const signalRef = bpmnInstances().moddle.create( - 'bpmn:Signal', - modelObjectForm.value, - ); - rootElements.value.push(signalRef); } dialogVisible.value = false; initDataList(); }; +// 补充"编辑"、"移除"功能。相关 issue:https://github.com/YunaiV/yudao-cloud/issues/270 +const removeObject = (type: any, row: any) => { + Modal.confirm({ + title: '提示', + content: `确认移除该${type === 'message' ? '消息' : '信号'}吗?`, + okText: '确 认', + cancelText: '取 消', + onOk() { + // 从 rootElements 中移除 + const targetType = type === 'message' ? 'bpmn:Message' : 'bpmn:Signal'; + const elementIndex = rootElements.value.findIndex( + (el: any) => el.$type === targetType && el.id === row.id, + ); + if (elementIndex !== -1) { + rootElements.value.splice(elementIndex, 1); + } + // 刷新列表 + initDataList(); + message.success('移除成功'); + }, + onCancel() { + // console.info('操作取消'); + }, + }); +}; + onMounted(() => { initDataList(); }); @@ -103,6 +180,26 @@ onMounted(() => { + + +
@@ -124,6 +221,26 @@ onMounted(() => { + + +