ProcessInstanceBpmnViewer.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <el-card v-loading="loading" class="box-card">
  3. <MyProcessViewer key="designer" :xml="view.bpmnXml" :view="view" class="h-700px" />
  4. </el-card>
  5. </template>
  6. <script lang="ts" setup>
  7. import { propTypes } from '@/utils/propTypes'
  8. import { MyProcessViewer } from '@/components/bpmnProcessDesigner/package'
  9. import * as ProcessInstanceApi from '@/api/bpm/processInstance'
  10. defineOptions({ name: 'BpmProcessInstanceBpmnViewer' })
  11. const props = defineProps({
  12. loading: propTypes.bool.def(false), // 是否加载中
  13. id: propTypes.string, // 流程实例的编号
  14. bpmnXml: propTypes.string // BPMN XML
  15. })
  16. const view = ref({
  17. bpmnXml: ''
  18. }) // BPMN 流程图数据
  19. /** 只有 loading 完成时,才去加载流程列表 */
  20. watch(
  21. () => props.loading,
  22. async (value) => {
  23. if (value && props.id) {
  24. view.value = await ProcessInstanceApi.getProcessInstanceBpmnModelView(props.id)
  25. }
  26. }
  27. )
  28. /** 监听 bpmnXml */
  29. watch(
  30. () => props.bpmnXml,
  31. (value) => {
  32. view.value.bpmnXml = value
  33. }
  34. )
  35. </script>
  36. <style>
  37. .box-card {
  38. width: 100%;
  39. margin-bottom: 20px;
  40. }
  41. </style>