zhangwencui
8 天以前 4eaf74efba7ead917bf53155a9b9fa59c4743cf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<script setup lang="ts">
import type { Ref } from 'vue';
 
import type { SimpleFlowNode } from '../../consts';
 
import { inject, ref } from 'vue';
 
import { useVbenModal } from '@vben/common-ui';
 
import { useTaskStatusClass, useWatchNode } from '../../helpers';
import ProcessInstanceModal from './modules/process-instance-modal.vue';
 
defineOptions({ name: 'EndEventNode' });
const props = defineProps({
  flowNode: {
    type: Object as () => SimpleFlowNode,
    default: () => null,
  },
});
// 监控节点变化
const currentNode = useWatchNode(props);
// 是否只读
const readonly = inject<boolean>('readonly');
const processInstance = inject<Ref<any>>('processInstance', ref({}));
 
const [Modal, modalApi] = useVbenModal({
  connectedComponent: ProcessInstanceModal,
  destroyOnClose: true,
});
 
function nodeClick() {
  if (readonly && processInstance && processInstance.value) {
    const processInstanceInfo = [
      {
        startUser: processInstance.value.startUser,
        createTime: processInstance.value.startTime,
        endTime: processInstance.value.endTime,
        status: processInstance.value.status,
        durationInMillis: processInstance.value.durationInMillis,
      },
    ];
    modalApi
      .setData(processInstanceInfo)
      .setState({ title: '流程信息' })
      .open();
  }
}
</script>
<template>
  <div class="end-node-wrapper">
    <div
      class="end-node-box cursor-pointer"
      :class="`${useTaskStatusClass(currentNode?.activityStatus)}`"
      @click="nodeClick"
    >
      <span class="node-fixed-name" title="结束">结束</span>
    </div>
  </div>
  <!-- 流程信息弹窗 -->
  <Modal />
</template>