Просмотр исходного кода

Merge branch 'master' of https://github.com/yudaocode/yudao-ui-admin-vue3

YunaiV 1 месяц назад
Родитель
Сommit
346313f524

+ 37 - 0
src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue

@@ -197,6 +197,8 @@ const addNewObject = () => {
     }
   }
   dialogVisible.value = false
+  // 触发建模器更新以保存更改
+  saveChanges()
   initDataList()
 }
 
@@ -214,6 +216,8 @@ const removeObject = (type, row) => {
       if (elementIndex !== -1) {
         rootElements.value.splice(elementIndex, 1)
       }
+      // 触发建模器更新以保存更改
+      saveChanges()
       // 刷新列表
       initDataList()
       message.success('移除成功')
@@ -221,6 +225,39 @@ const removeObject = (type, row) => {
     .catch(() => console.info('操作取消'))
 }
 
+// 触发建模器更新以保存更改
+const saveChanges = () => {
+  const modeler = bpmnInstances().modeler
+  if (!modeler) return
+
+  try {
+    // 获取 canvas,通过它来触发图表的重新渲染
+    const canvas = modeler.get('canvas')
+
+    // 获取根元素(Process)
+    const rootElement = canvas.getRootElement()
+
+    // 触发 changed 事件,通知建模器数据已更改
+    const eventBus = modeler.get('eventBus')
+    if (eventBus) {
+      eventBus.fire('root.added', { element: rootElement })
+      eventBus.fire('elements.changed', { elements: [rootElement] })
+    }
+
+    // 标记建模器为已修改状态
+    const commandStack = modeler.get('commandStack')
+    if (commandStack && commandStack._stack) {
+      // 添加一个空命令以标记为已修改
+      commandStack.execute('element.updateProperties', {
+        element: rootElement,
+        properties: {}
+      })
+    }
+  } catch (error) {
+    console.warn('保存更改时出错:', error)
+  }
+}
+
 onMounted(() => {
   initDataList()
 })