ProcessInstanceBpmnViewer.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <el-card v-loading="loading" class="box-card">
  3. <template #header>
  4. <span class="el-icon-picture-outline">流程图</span>
  5. </template>
  6. <my-process-viewer
  7. key="designer"
  8. :activityData="activityList"
  9. :prefix="bpmnControlForm.prefix"
  10. :processInstanceData="processInstance"
  11. :taskData="tasks"
  12. :value="bpmnXml"
  13. v-bind="bpmnControlForm"
  14. />
  15. </el-card>
  16. </template>
  17. <script lang="ts" name="BpmProcessInstanceBpmnViewer" setup>
  18. import { propTypes } from '@/utils/propTypes'
  19. import * as ActivityApi from '@/api/bpm/activity'
  20. // import * as DefinitionApi from '@/api/bpm/definition'
  21. const props = defineProps({
  22. loading: propTypes.bool, // 是否加载中
  23. id: propTypes.string, // 流程实例的编号
  24. processInstance: propTypes.any, // 流程实例的信息
  25. tasks: propTypes.array, // 流程任务的数组
  26. bpmnXml: propTypes.string // BPMN XML
  27. })
  28. const bpmnControlForm = ref({
  29. prefix: 'flowable'
  30. })
  31. const activityList = ref([]) // 任务列表
  32. // const bpmnXML = computed(() => { // TODO 芋艿:不晓得为啊哈不能这么搞
  33. // if (!props.processInstance || !props.processInstance.processDefinition) {
  34. // return
  35. // }
  36. // return DefinitionApi.getProcessDefinitionBpmnXML(props.processInstance.processDefinition.id)
  37. // })
  38. /** 初始化 */
  39. onMounted(async () => {
  40. if (props.id) {
  41. activityList.value = await ActivityApi.getActivityList({
  42. processInstanceId: props.id
  43. })
  44. }
  45. })
  46. </script>
  47. <style>
  48. .box-card {
  49. width: 100%;
  50. margin-bottom: 20px;
  51. }
  52. </style>