| | |
| | | |
| | | /** 获取详情 */ |
| | | async function getDetail() { |
| | | // 获得审批详情 |
| | | // 两个请求相互独立:任一失败都不应阻断另一个,也不应让页面白屏 |
| | | await getApprovalDetail(); |
| | | // 获得流程模型视图 |
| | | await getProcessModelView(); |
| | | } |
| | | |
| | |
| | | const data = await getApprovalDetailApi(param); |
| | | if (!data) { |
| | | message.error('查询不到审批详情信息!'); |
| | | return; |
| | | } |
| | | if (!data.processDefinition || !data.processInstance) { |
| | | message.error('查询不到流程信息!'); |
| | | return; |
| | | } |
| | | |
| | | processInstance.value = data.processInstance; |
| | |
| | | |
| | | /** 获取流程模型视图*/ |
| | | async function getProcessModelView() { |
| | | if (BpmModelType.BPMN === processDefinition.value?.modelType) { |
| | | // 重置,解决 BPMN 流程图刷新不会重新渲染问题 |
| | | processModelView.value = { |
| | | bpmnXml: '', |
| | | }; |
| | | // 流程实例不存在时(例如历史遗留数据、或实例已被清理), |
| | | // 这里会抛异常。必须兜住,否则整个详情页白屏。 |
| | | if (!props.id) { |
| | | return; |
| | | } |
| | | const data = await getProcessInstanceBpmnModelView(props.id); |
| | | if (data) { |
| | | processModelView.value = data; |
| | | try { |
| | | if (BpmModelType.BPMN === processDefinition.value?.modelType) { |
| | | // 重置,解决 BPMN 流程图刷新不会重新渲染问题 |
| | | processModelView.value = { |
| | | bpmnXml: '', |
| | | }; |
| | | } |
| | | const data = await getProcessInstanceBpmnModelView(props.id); |
| | | if (data) { |
| | | processModelView.value = data; |
| | | } |
| | | } catch { |
| | | // 流程图取不到不影响表单和审批记录展示,静默降级即可 |
| | | processModelView.value = { bpmnXml: '' }; |
| | | } |
| | | } |
| | | |