|
|
@ -2,7 +2,7 @@ |
|
|
|
<div id="workflowChart" v-loading="state.loading"/> |
|
|
|
<div id="workflowChart" v-loading="state.loading"/> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<script lang="ts" setup> |
|
|
|
<script lang="ts" setup> |
|
|
|
import { reactive, onDeactivated } from 'vue'; |
|
|
|
import { reactive, onBeforeUnmount } from 'vue'; |
|
|
|
import { loadMicroApp, MicroApp } from 'qiankun'; |
|
|
|
import { loadMicroApp, MicroApp } from 'qiankun'; |
|
|
|
import { getSubDefineProps } from '/@/qiankun/state'; |
|
|
|
import { getSubDefineProps } from '/@/qiankun/state'; |
|
|
|
import { GlStateEnum, WORKFLOW_DESIGN_APP_COMPONENTS } from '/@/enums/microAppEnum'; |
|
|
|
import { GlStateEnum, WORKFLOW_DESIGN_APP_COMPONENTS } from '/@/enums/microAppEnum'; |
|
|
@ -14,14 +14,16 @@ |
|
|
|
|
|
|
|
|
|
|
|
interface WindowState { |
|
|
|
interface WindowState { |
|
|
|
workflowDesignApp: MicroApp; |
|
|
|
workflowDesignApp: MicroApp; |
|
|
|
|
|
|
|
workflowRef: Recordable; |
|
|
|
loading: boolean; |
|
|
|
loading: boolean; |
|
|
|
bpmnData: Recordable; |
|
|
|
bpmnData: Recordable; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const state = reactive<WindowState>({ |
|
|
|
const state = reactive<WindowState>({ |
|
|
|
workflowDesignApp: undefined!, |
|
|
|
workflowDesignApp: undefined!, |
|
|
|
|
|
|
|
workflowRef: undefined!, |
|
|
|
loading: false, |
|
|
|
loading: false, |
|
|
|
bpmnData: {} |
|
|
|
bpmnData: {}, |
|
|
|
}); |
|
|
|
}); |
|
|
|
const workflowDesignProps = { |
|
|
|
const workflowDesignProps = { |
|
|
|
style: { 'min-height': '100vh' }, |
|
|
|
style: { 'min-height': '100vh' }, |
|
|
@ -31,16 +33,16 @@ |
|
|
|
|
|
|
|
|
|
|
|
async function init(processInsId: string, processDefId: string) { |
|
|
|
async function init(processInsId: string, processDefId: string) { |
|
|
|
if (processInsId || processDefId) { |
|
|
|
if (processInsId || processDefId) { |
|
|
|
state.loading = true; |
|
|
|
|
|
|
|
// 处理流程图xml数据 |
|
|
|
// 处理流程图xml数据 |
|
|
|
try { |
|
|
|
if (processInsId) { |
|
|
|
if (processInsId) { |
|
|
|
state.bpmnData = await getProcessInsFlowChart(processInsId); |
|
|
|
state.bpmnData = await getProcessInsFlowChart(processInsId); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
const bpmnXml = await getProcessDefFlowChart(processDefId); |
|
|
|
const bpmnXml = await getProcessDefFlowChart(processDefId); |
|
|
|
state.bpmnData = { bpmnXml }; |
|
|
|
state.bpmnData = { bpmnXml }; |
|
|
|
} |
|
|
|
} |
|
|
|
state.workflowRef?.setHighlightImportDiagram(state.bpmnData); |
|
|
|
state.workflowDesignApp?.unmount(); |
|
|
|
if (!state.workflowDesignApp || state.workflowDesignApp.getStatus() === 'NOT_MOUNTED') { |
|
|
|
|
|
|
|
state.loading = true; |
|
|
|
state.workflowDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'workflow-design'), { |
|
|
|
state.workflowDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'workflow-design'), { |
|
|
|
container: '#workflowChart', |
|
|
|
container: '#workflowChart', |
|
|
|
props: { |
|
|
|
props: { |
|
|
@ -48,22 +50,19 @@ |
|
|
|
mountApp: WORKFLOW_DESIGN_APP_COMPONENTS.CHART, |
|
|
|
mountApp: WORKFLOW_DESIGN_APP_COMPONENTS.CHART, |
|
|
|
[GlStateEnum.WORKFLOW_DESIGN_APP_PROPS_KEY]: workflowDesignProps |
|
|
|
[GlStateEnum.WORKFLOW_DESIGN_APP_PROPS_KEY]: workflowDesignProps |
|
|
|
} |
|
|
|
} |
|
|
|
}), { sandbox: { experimentalStyleIsolation: true }}); |
|
|
|
}), { sandbox: { experimentalStyleIsolation: true } }); |
|
|
|
state.workflowDesignApp.mountPromise.then(() => { |
|
|
|
state.workflowDesignApp.mountPromise.then(() => { |
|
|
|
const workflowChartApp: Recordable = microAppStore.getWorkflowDesignApp(WORKFLOW_DESIGN_APP_COMPONENTS.CHART), |
|
|
|
const workflowChartApp: Recordable = microAppStore.getWorkflowDesignApp(WORKFLOW_DESIGN_APP_COMPONENTS.CHART); |
|
|
|
workflowRef: Recordable = workflowChartApp.getRef().$refs['workflow-chart']; |
|
|
|
state.workflowRef = workflowChartApp.getRef().$refs['workflow-chart']; |
|
|
|
workflowRef.setHighlightImportDiagram(state.bpmnData); |
|
|
|
state.workflowRef.setHighlightImportDiagram(state.bpmnData); |
|
|
|
state.loading = false; |
|
|
|
state.loading = false; |
|
|
|
}); |
|
|
|
}); |
|
|
|
} catch(e: any) { |
|
|
|
|
|
|
|
createMessage.error(e); |
|
|
|
|
|
|
|
state.loading = false; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} else createMessage.error('无法打开流程图,没有关联流程图ID!'); |
|
|
|
} else createMessage.error('无法打开流程图,没有关联流程图ID!'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
onDeactivated(() => { |
|
|
|
onBeforeUnmount(() => { |
|
|
|
state.workflowDesignApp?.unmount(); |
|
|
|
state.workflowDesignApp?.getStatus() === 'MOUNTED' && state.workflowDesignApp.unmount(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
defineExpose({ |
|
|
|
defineExpose({ |
|
|
|