فهرست منبع

fix: 【bpm】bpmn 设计器:保留非监听器类型的扩展属性,避免移除监听器时清空其他配置

YunaiV 2 ماه پیش
والد
کامیت
33e489ebfc

+ 4 - 1
src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue

@@ -291,7 +291,10 @@ const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const resetListenersList = () => {
   bpmnElement.value = bpmnInstances().bpmnElement
-  otherExtensionList.value = []
+  otherExtensionList.value =
+    bpmnElement.value.businessObject?.extensionElements?.values?.filter(
+      (ex) => ex.$type !== `${prefix}:ExecutionListener`
+    ) ?? [] // 保留非监听器类型的扩展属性,避免移除监听器时清空其他配置(如审批人等)。相关案例:https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/ICMSYC
   bpmnElementListeners.value =
     bpmnElement.value.businessObject?.extensionElements?.values?.filter(
       (ex) => ex.$type === `${prefix}:ExecutionListener`

+ 5 - 2
src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue

@@ -342,9 +342,12 @@ const resetListenersList = () => {
     'window.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElement'
   )
   bpmnElement.value = bpmnInstances().bpmnElement
-  otherExtensionList.value = []
+  otherExtensionList.value =
+    bpmnElement.value.businessObject?.extensionElements?.values?.filter(
+      (ex) => ex.$type !== `${prefix}:TaskListener`
+    ) ?? [] // 保留非监听器类型的扩展属性,避免移除监听器时清空其他配置(如审批人等)。相关案例:https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/ICMSYC
   bpmnElementListeners.value =
-    bpmnElement.value.businessObject?.extensionElements?.values.filter(
+    bpmnElement.value.businessObject?.extensionElements?.values?.filter(
       (ex) => ex.$type === `${prefix}:TaskListener`
     ) ?? []
   elementListenersList.value = bpmnElementListeners.value.map((listener) =>