<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>
|