Browse Source

!155 fix: 处理 window.bpmnInstances 有时候为 undefined 问题
Merge pull request !155 from OlyLis/master

芋道源码 1 year ago
parent
commit
13e0ede788
1 changed files with 20 additions and 20 deletions
  1. 20 20
      src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue

+ 20 - 20
src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue

@@ -113,18 +113,18 @@ const timer = ref()
 provide('prefix', props.prefix)
 provide('width', props.width)
 const bpmnInstances = () => (window as any)?.bpmnInstances
-const initModels = () => {
-  // console.log(props, 'props')
-  // console.log(props.bpmnModeler, 'sakdjjaskdsajdkasdjkadsjk')
-  // 初始化 modeler 以及其他 moddle
-  // nextTick(() => {
-  if (!props.bpmnModeler) {
+
+// 监听 props.bpmnModeler 然后 initModels
+const unwatchBpmn = watch(
+  () => props.bpmnModeler,
+  () => {
     // 避免加载时 流程图 并未加载完成
-    timer.value = setTimeout(() => initModels(), 10)
-    return
-  }
-  if (timer.value) {
-    clearTimeout(timer.value)
+    if (!props.bpmnModeler) {
+      console.log('缺少props.bpmnModeler')
+      return
+    }
+
+    console.log('props.bpmnModeler 有值了!!!')
     const w = window as any
     w.bpmnInstances = {
       modeler: props.bpmnModeler,
@@ -137,12 +137,16 @@ const initModels = () => {
       replace: props.bpmnModeler.get('replace'),
       selection: props.bpmnModeler.get('selection')
     }
+
+    console.log(bpmnInstances(), 'window.bpmnInstances')
+    getActiveElement()
+    unwatchBpmn()
+  },
+  {
+    immediate: true
   }
+)
 
-  console.log(bpmnInstances(), 'window.bpmnInstances')
-  getActiveElement()
-  // })
-}
 const getActiveElement = () => {
   // 初始第一个选中元素 bpmn:Process
   initFormOnChanged(null)
@@ -190,11 +194,7 @@ const initFormOnChanged = (element) => {
   )
   formVisible.value = elementType.value === 'UserTask' || elementType.value === 'StartEvent'
 }
-onMounted(() => {
-  setTimeout(() => {
-    initModels()
-  }, 100)
-})
+
 onBeforeUnmount(() => {
   const w = window as any
   w.bpmnInstances = null