<script lang="ts" setup>
|
import { reactive } from 'vue';
|
|
import { BasicPopup, usePopup, usePopupInner } from '@jnpf/ui/popup';
|
|
import FlowProcessMain from '#/components/FlowProcess/src/Main.vue';
|
|
import SubFlowParser from './SubFlowParser.vue';
|
|
defineProps({
|
defaultFullscreen: { type: Boolean, default: false },
|
});
|
const [registerPopup] = usePopupInner(init);
|
const [registerSubFlowParser, { openPopup: openSubFlowParserPopup }] = usePopup();
|
|
interface State {
|
flowInfo: any;
|
nodeList: any[];
|
opType: string;
|
taskId: string;
|
key: number;
|
isRevokeTask: boolean;
|
lineKeyList: any[] | undefined;
|
}
|
|
const state = reactive<State>({
|
flowInfo: {},
|
nodeList: [],
|
opType: '-1',
|
taskId: '',
|
key: Date.now(),
|
isRevokeTask: false,
|
lineKeyList: undefined,
|
});
|
function init(data) {
|
state.flowInfo = data.flowInfo;
|
state.nodeList = data.nodeList;
|
state.opType = data.opType;
|
state.taskId = data.taskId;
|
state.isRevokeTask = data.isRevokeTask || false;
|
state.key = Date.now();
|
state.lineKeyList = data.lineKeyList;
|
}
|
function viewSubFlow(nodeCode) {
|
if (state.isRevokeTask) return;
|
const data = {
|
opType: state.opType,
|
nodeCode,
|
taskId: state.taskId,
|
};
|
openSubFlowParserPopup(true, data);
|
}
|
</script>
|
<template>
|
<BasicPopup
|
v-bind="$attrs"
|
@register="registerPopup"
|
:show-cancel-btn="false"
|
title="流程图"
|
destroy-on-close
|
:default-fullscreen="defaultFullscreen"
|
class="full-popup basic-flow-parser">
|
<div class="jnpf-common-form-wrapper">
|
<div class="jnpf-common-form-wrapper__main">
|
<FlowProcessMain
|
class="p-[10px]"
|
:flow-info="state.flowInfo"
|
:node-list="state.nodeList"
|
:is-preview="true"
|
:key="state.key"
|
:line-key-list="state.lineKeyList"
|
v-if="state.flowInfo.id"
|
@view-sub-flow="viewSubFlow" />
|
</div>
|
</div>
|
</BasicPopup>
|
<SubFlowParser :default-fullscreen="defaultFullscreen" @register="registerSubFlowParser" />
|
</template>
|