Commit bdf8bafec59ec280e843685859947479993234b0
1 parent
467a9849
bpmnjs图提示框显示问题
Showing
1 changed file
with
35 additions
and
40 deletions
yudao-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | <script setup lang="ts" name="MyProcessViewer"> | 9 | <script setup lang="ts" name="MyProcessViewer"> |
| 10 | import BpmnViewer from 'bpmn-js/lib/Viewer' | 10 | import BpmnViewer from 'bpmn-js/lib/Viewer' |
| 11 | import DefaultEmptyXML from './plugins/defaultEmpty' | 11 | import DefaultEmptyXML from './plugins/defaultEmpty' |
| 12 | -import { onMounted, onBeforeUnmount, provide, ref, watch } from 'vue' | 12 | +import { onMounted, onBeforeUnmount, provide, ref, watch, toRaw } from 'vue' |
| 13 | import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' | 13 | import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' |
| 14 | const props = defineProps({ | 14 | const props = defineProps({ |
| 15 | value: { | 15 | value: { |
| @@ -49,8 +49,8 @@ const processInstance = ref(undefined) | @@ -49,8 +49,8 @@ const processInstance = ref(undefined) | ||
| 49 | const taskList = ref([]) | 49 | const taskList = ref([]) |
| 50 | const bpmnCanvas = ref() | 50 | const bpmnCanvas = ref() |
| 51 | // const element = ref() | 51 | // const element = ref() |
| 52 | -const elementOverlayIds = ref() | ||
| 53 | -const overlays = ref() | 52 | +const elementOverlayIds = ref(null) |
| 53 | +const overlays = ref(null) | ||
| 54 | 54 | ||
| 55 | const initBpmnModeler = () => { | 55 | const initBpmnModeler = () => { |
| 56 | if (bpmnModeler) return | 56 | if (bpmnModeler) return |
| @@ -67,7 +67,6 @@ const createNewDiagram = async (xml) => { | @@ -67,7 +67,6 @@ const createNewDiagram = async (xml) => { | ||
| 67 | let newName = `业务流程_${new Date().getTime()}` | 67 | let newName = `业务流程_${new Date().getTime()}` |
| 68 | let xmlString = xml || DefaultEmptyXML(newId, newName, props.prefix) | 68 | let xmlString = xml || DefaultEmptyXML(newId, newName, props.prefix) |
| 69 | try { | 69 | try { |
| 70 | - // console.log(this.bpmnModeler.importXML); | ||
| 71 | let { warnings } = await bpmnModeler.importXML(xmlString) | 70 | let { warnings } = await bpmnModeler.importXML(xmlString) |
| 72 | if (warnings && warnings.length) { | 71 | if (warnings && warnings.length) { |
| 73 | warnings.forEach((warn) => console.warn(warn)) | 72 | warnings.forEach((warn) => console.warn(warn)) |
| @@ -94,7 +93,6 @@ const highlightDiagram = async () => { | @@ -94,7 +93,6 @@ const highlightDiagram = async () => { | ||
| 94 | let todoActivity = activityList.find((m) => !m.endTime) // 找到待办的任务 | 93 | let todoActivity = activityList.find((m) => !m.endTime) // 找到待办的任务 |
| 95 | let endActivity = activityList[activityList.length - 1] // 获得最后一个任务 | 94 | let endActivity = activityList[activityList.length - 1] // 获得最后一个任务 |
| 96 | // debugger | 95 | // debugger |
| 97 | - // console.log(this.bpmnModeler.getDefinitions().rootElements[0].flowElements); | ||
| 98 | bpmnModeler.getDefinitions().rootElements[0].flowElements?.forEach((n) => { | 96 | bpmnModeler.getDefinitions().rootElements[0].flowElements?.forEach((n) => { |
| 99 | let activity = activityList.find((m) => m.key === n.id) // 找到对应的活动 | 97 | let activity = activityList.find((m) => m.key === n.id) // 找到对应的活动 |
| 100 | if (!activity) { | 98 | if (!activity) { |
| @@ -270,27 +268,14 @@ const elementHover = (element) => { | @@ -270,27 +268,14 @@ const elementHover = (element) => { | ||
| 270 | console.log(element.value, 'element.value') | 268 | console.log(element.value, 'element.value') |
| 271 | const activity = activityLists.value.find((m) => m.key === element.value.id) | 269 | const activity = activityLists.value.find((m) => m.key === element.value.id) |
| 272 | console.log(activity, 'activityactivityactivityactivity') | 270 | console.log(activity, 'activityactivityactivityactivity') |
| 273 | - if (!activity) { | ||
| 274 | - return | ||
| 275 | - } | ||
| 276 | - console.log(elementOverlayIds.value, 'elementOverlayIds.value') | ||
| 277 | - console.log(element.value.id, 'element.value.id') | ||
| 278 | - console.log( | ||
| 279 | - elementOverlayIds.value[element.value.id], | ||
| 280 | - 'elementOverlayIds.value[element.value.id]' | ||
| 281 | - ) | ||
| 282 | - console.log( | ||
| 283 | - !elementOverlayIds.value[element.value.id], | ||
| 284 | - '!elementOverlayIds.value[element.value.id]' | ||
| 285 | - ) | ||
| 286 | - console.log(element.value.type, 'element.value.type') | 271 | + // if (!activity) { |
| 272 | + // return | ||
| 273 | + // } | ||
| 287 | if (!elementOverlayIds.value[element.value.id] && element.value.type !== 'bpmn:Process') { | 274 | if (!elementOverlayIds.value[element.value.id] && element.value.type !== 'bpmn:Process') { |
| 288 | - console.log('进入') | ||
| 289 | let html = `<div class="element-overlays"> | 275 | let html = `<div class="element-overlays"> |
| 290 | <p>Elemet id: ${element.value.id}</p> | 276 | <p>Elemet id: ${element.value.id}</p> |
| 291 | <p>Elemet type: ${element.value.type}</p> | 277 | <p>Elemet type: ${element.value.type}</p> |
| 292 | </div>` // 默认值 | 278 | </div>` // 默认值 |
| 293 | - console.log(processInstance.value, 'processInstance') | ||
| 294 | if (element.value.type === 'bpmn:StartEvent' && processInstance.value) { | 279 | if (element.value.type === 'bpmn:StartEvent' && processInstance.value) { |
| 295 | html = `<p>发起人:${processInstance.value.startUser.nickname}</p> | 280 | html = `<p>发起人:${processInstance.value.startUser.nickname}</p> |
| 296 | <p>部门:${processInstance.value.startUser.deptName}</p> | 281 | <p>部门:${processInstance.value.startUser.deptName}</p> |
| @@ -301,13 +286,24 @@ const elementHover = (element) => { | @@ -301,13 +286,24 @@ const elementHover = (element) => { | ||
| 301 | if (!task) { | 286 | if (!task) { |
| 302 | return | 287 | return |
| 303 | } | 288 | } |
| 289 | + let optionData = getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT) | ||
| 290 | + let dataResult = '' | ||
| 291 | + optionData.forEach((element) => { | ||
| 292 | + if (element.value == task.result) { | ||
| 293 | + dataResult = element.label | ||
| 294 | + } | ||
| 295 | + }) | ||
| 304 | html = `<p>审批人:${task.assigneeUser.nickname}</p> | 296 | html = `<p>审批人:${task.assigneeUser.nickname}</p> |
| 305 | <p>部门:${task.assigneeUser.deptName}</p> | 297 | <p>部门:${task.assigneeUser.deptName}</p> |
| 306 | - <p>结果:${getIntDictOptions( | ||
| 307 | - DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, | ||
| 308 | - task.result | ||
| 309 | - )}</p> | 298 | + <p>结果:${dataResult}</p> |
| 310 | <p>创建时间:${parseTime(task.createTime)}</p>` | 299 | <p>创建时间:${parseTime(task.createTime)}</p>` |
| 300 | + // html = `<p>审批人:${task.assigneeUser.nickname}</p> | ||
| 301 | + // <p>部门:${task.assigneeUser.deptName}</p> | ||
| 302 | + // <p>结果:${getIntDictOptions( | ||
| 303 | + // DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, | ||
| 304 | + // task.result | ||
| 305 | + // )}</p> | ||
| 306 | + // <p>创建时间:${parseTime(task.createTime)}</p>` | ||
| 311 | if (task.endTime) { | 307 | if (task.endTime) { |
| 312 | html += `<p>结束时间:${parseTime(task.endTime)}</p>` | 308 | html += `<p>结束时间:${parseTime(task.endTime)}</p>` |
| 313 | } | 309 | } |
| @@ -323,32 +319,32 @@ const elementHover = (element) => { | @@ -323,32 +319,32 @@ const elementHover = (element) => { | ||
| 323 | } | 319 | } |
| 324 | console.log(html) | 320 | console.log(html) |
| 325 | } else if (element.value.type === 'bpmn:EndEvent' && processInstance.value) { | 321 | } else if (element.value.type === 'bpmn:EndEvent' && processInstance.value) { |
| 326 | - html = `<p>结果:${getIntDictOptions( | ||
| 327 | - DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, | ||
| 328 | - processInstance.value.result | ||
| 329 | - )}</p>` | 322 | + let optionData = getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT) |
| 323 | + let dataResult = '' | ||
| 324 | + optionData.forEach((element) => { | ||
| 325 | + if (element.value == processInstance.value.result) { | ||
| 326 | + dataResult = element.label | ||
| 327 | + } | ||
| 328 | + }) | ||
| 329 | + html = `<p>结果:${dataResult}</p>` | ||
| 330 | + // html = `<p>结果:${getIntDictOptions( | ||
| 331 | + // DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, | ||
| 332 | + // processInstance.value.result | ||
| 333 | + // )}</p>` | ||
| 330 | if (processInstance.value.endTime) { | 334 | if (processInstance.value.endTime) { |
| 331 | html += `<p>结束时间:${parseTime(processInstance.value.endTime)}</p>` | 335 | html += `<p>结束时间:${parseTime(processInstance.value.endTime)}</p>` |
| 332 | } | 336 | } |
| 333 | } | 337 | } |
| 334 | console.log(html, 'html111111111111111') | 338 | console.log(html, 'html111111111111111') |
| 335 | - console.log( | ||
| 336 | - elementOverlayIds.value[element.value.id], | ||
| 337 | - 'elementOverlayIds.value[element.value.id]' | ||
| 338 | - ) | ||
| 339 | - elementOverlayIds.value[element.value.id] = overlays.value.add(element.value, { | 339 | + elementOverlayIds.value[element.value.id] = toRaw(overlays.value).add(element.value, { |
| 340 | position: { left: 0, bottom: 0 }, | 340 | position: { left: 0, bottom: 0 }, |
| 341 | html: `<div class="element-overlays">${html}</div>` | 341 | html: `<div class="element-overlays">${html}</div>` |
| 342 | }) | 342 | }) |
| 343 | - console.log( | ||
| 344 | - elementOverlayIds.value[element.value.id], | ||
| 345 | - 'elementOverlayIds.value[element.value.id]' | ||
| 346 | - ) | ||
| 347 | } | 343 | } |
| 348 | } | 344 | } |
| 349 | // 流程图的元素被 out | 345 | // 流程图的元素被 out |
| 350 | const elementOut = (element) => { | 346 | const elementOut = (element) => { |
| 351 | - overlays.value.remove({ element }) | 347 | + toRaw(overlays.value).remove({ element }) |
| 352 | elementOverlayIds.value[element.id] = null | 348 | elementOverlayIds.value[element.id] = null |
| 353 | } | 349 | } |
| 354 | const parseTime = (time) => { | 350 | const parseTime = (time) => { |
| @@ -416,7 +412,6 @@ onBeforeUnmount(() => { | @@ -416,7 +412,6 @@ onBeforeUnmount(() => { | ||
| 416 | watch( | 412 | watch( |
| 417 | () => props.value, | 413 | () => props.value, |
| 418 | (newValue) => { | 414 | (newValue) => { |
| 419 | - console.log(newValue, 'oldVal') | ||
| 420 | xml.value = newValue | 415 | xml.value = newValue |
| 421 | createNewDiagram(xml.value) | 416 | createNewDiagram(xml.value) |
| 422 | } | 417 | } |