刘光辉
12 小时以前 0dfe84494048ce27ba8449831782128412d3eb13
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
62
63
64
65
66
67
68
69
<script lang="ts" setup>
import { onBeforeUnmount, onMounted } from 'vue';
 
import { usePopup } from '@jnpf/ui/popup';
 
import { checkInfo } from '#/api/workFlow/task';
import { isDraftFlowConfig, onlineUtils, resolveOpenFlowEditConfig } from '#/utils/jnpf';
import FlowParser from '#/views/workFlow/components/FlowParser.vue';
 
defineOptions({ name: 'GlobalFlowDetailPopup' });
 
const [registerFlowParser, { openPopup: openFlowParser }] = usePopup();
const emitter = onlineUtils.getEmitter();
 
async function handleOpenFlowDetail(config: any) {
  const data = {
    ...config,
    id: config.id || config.taskId,
    flowId: config.flowId,
    opType: config.opType,
    operatorId: config.operatorId,
  };
  if (data.opType == 6) {
    openFlowParser(true, data);
    return;
  }
  if (isDraftFlowConfig(data)) {
    await handleOpenFlowEdit(data);
    return;
  }
  try {
    const res = await checkInfo(data.operatorId || data.id, data.opType);
    data.opType = res.data.opType;
    openFlowParser(true, { ...data, showHeaderCancelBtn: true });
  } catch {}
}
 
function handleOpenFlowForm(config: any) {
  const data = {
    ...config,
    id: '',
    flowId: config.flowId,
    opType: '-1',
    showHeaderCancelBtn: true,
  };
  openFlowParser(true, data);
}
 
async function handleOpenFlowEdit(config: any) {
  const data = await resolveOpenFlowEditConfig({ ...config, opType: config.opType ?? '-1', showHeaderCancelBtn: true });
  openFlowParser(true, data);
}
 
onMounted(() => {
  emitter.on('OPEN_FLOW_DETAIL', handleOpenFlowDetail);
  emitter.on('OPEN_FLOW_EDIT', handleOpenFlowEdit);
  emitter.on('OPEN_FLOW_FORM', handleOpenFlowForm);
});
 
onBeforeUnmount(() => {
  emitter.off('OPEN_FLOW_DETAIL', handleOpenFlowDetail);
  emitter.off('OPEN_FLOW_EDIT', handleOpenFlowEdit);
  emitter.off('OPEN_FLOW_FORM', handleOpenFlowForm);
});
</script>
 
<template>
  <FlowParser @register="registerFlowParser" />
</template>