Skip to content

Commit 65f0b2f

Browse files
committed
【功能修复】 修复流程详情页面 请求模型视图接口两次的问题
1 parent 13272c2 commit 65f0b2f

File tree

3 files changed

+72
-32
lines changed

3 files changed

+72
-32
lines changed

src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,28 @@
66
<script lang="ts" setup>
77
import { propTypes } from '@/utils/propTypes'
88
import { MyProcessViewer } from '@/components/bpmnProcessDesigner/package'
9-
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
109
1110
defineOptions({ name: 'BpmProcessInstanceBpmnViewer' })
1211
1312
const props = defineProps({
1413
loading: propTypes.bool.def(false), // 是否加载中
15-
id: propTypes.string, // 流程实例的编号
16-
bpmnXml: propTypes.string // BPMN XML
14+
bpmnXml: propTypes.string, // BPMN XML
15+
modelView: propTypes.object
1716
})
1817
1918
const view = ref({
2019
bpmnXml: ''
2120
}) // BPMN 流程图数据
2221
22+
2323
/** 只有 loading 完成时,才去加载流程列表 */
2424
watch(
25-
() => props.loading,
26-
async (value) => {
27-
// 重置
28-
view.value = {
29-
bpmnXml: ''
30-
}
25+
() => props.modelView,
26+
async (newModelView) => {
3127
// 加载最新
32-
if (value && props.id) {
33-
view.value = await ProcessInstanceApi.getProcessInstanceBpmnModelView(props.id)
28+
if (newModelView) {
29+
//@ts-ignore
30+
view.value = newModelView
3431
}
3532
}
3633
)

src/views/bpm/processInstance/detail/ProcessInstanceSimpleViewer.vue

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,71 @@ import { propTypes } from '@/utils/propTypes'
88
import { TaskStatusEnum } from '@/api/bpm/task'
99
import { SimpleFlowNode, NodeType } from '@/components/SimpleProcessDesignerV2/src/consts'
1010
import { SimpleProcessViewer } from '@/components/SimpleProcessDesignerV2/src/'
11-
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
12-
1311
defineOptions({ name: 'BpmProcessInstanceSimpleViewer' })
1412
1513
const props = defineProps({
1614
loading: propTypes.bool.def(false), // 是否加载中
17-
id: propTypes.string // 流程实例的编号
15+
modelView: propTypes.object
1816
})
1917
const simpleModel = ref()
2018
// 用户任务
2119
const tasks = ref([])
2220
// 流程实例
2321
const processInstance = ref()
24-
/** 只有 loading 完成时,才去加载流程列表 */
22+
// /** 只有 loading 完成时,才去加载流程列表 */
23+
// watch(
24+
// () => props.loading,
25+
// async (value) => {
26+
// if (value && props.id) {
27+
// const modelView = await ProcessInstanceApi.getProcessInstanceBpmnModelView(props.id)
28+
// if (modelView) {
29+
// tasks.value = modelView.tasks
30+
// processInstance.value = modelView.processInstance
31+
// // 已经拒绝的活动节点编号集合,只包括 UserTask
32+
// const rejectedTaskActivityIds: string[] = modelView.rejectedTaskActivityIds
33+
// // 进行中的活动节点编号集合, 只包括 UserTask
34+
// const unfinishedTaskActivityIds: string[] = modelView.unfinishedTaskActivityIds
35+
// // 已经完成的活动节点编号集合, 包括 UserTask、Gateway 等
36+
// const finishedActivityIds: string[] = modelView.finishedTaskActivityIds
37+
// // 已经完成的连线节点编号集合,只包括 SequenceFlow
38+
// const finishedSequenceFlowActivityIds: string[] = modelView.finishedSequenceFlowActivityIds
39+
// setSimpleModelNodeTaskStatus(
40+
// modelView.simpleModel,
41+
// modelView.processInstance.status,
42+
// rejectedTaskActivityIds,
43+
// unfinishedTaskActivityIds,
44+
// finishedActivityIds,
45+
// finishedSequenceFlowActivityIds
46+
// )
47+
// simpleModel.value = modelView.simpleModel
48+
// }
49+
// }
50+
// }
51+
// )
2552
watch(
26-
() => props.loading,
27-
async (value) => {
28-
if (value && props.id) {
29-
const modelView = await ProcessInstanceApi.getProcessInstanceBpmnModelView(props.id)
30-
if (modelView) {
31-
tasks.value = modelView.tasks
32-
processInstance.value = modelView.processInstance
53+
() => props.modelView,
54+
async (newModelView) => {
55+
if (newModelView) {
56+
if (newModelView) {
57+
tasks.value = newModelView.tasks
58+
processInstance.value = newModelView.processInstance
3359
// 已经拒绝的活动节点编号集合,只包括 UserTask
34-
const rejectedTaskActivityIds: string[] = modelView.rejectedTaskActivityIds
60+
const rejectedTaskActivityIds: string[] = newModelView.rejectedTaskActivityIds
3561
// 进行中的活动节点编号集合, 只包括 UserTask
36-
const unfinishedTaskActivityIds: string[] = modelView.unfinishedTaskActivityIds
62+
const unfinishedTaskActivityIds: string[] = newModelView.unfinishedTaskActivityIds
3763
// 已经完成的活动节点编号集合, 包括 UserTask、Gateway 等
38-
const finishedActivityIds: string[] = modelView.finishedTaskActivityIds
64+
const finishedActivityIds: string[] = newModelView.finishedTaskActivityIds
3965
// 已经完成的连线节点编号集合,只包括 SequenceFlow
40-
const finishedSequenceFlowActivityIds: string[] = modelView.finishedSequenceFlowActivityIds
66+
const finishedSequenceFlowActivityIds: string[] = newModelView.finishedSequenceFlowActivityIds
4167
setSimpleModelNodeTaskStatus(
42-
modelView.simpleModel,
43-
modelView.processInstance.status,
68+
newModelView.simpleModel,
69+
newModelView.processInstance.status,
4470
rejectedTaskActivityIds,
4571
unfinishedTaskActivityIds,
4672
finishedActivityIds,
4773
finishedSequenceFlowActivityIds
4874
)
49-
simpleModel.value = modelView.simpleModel
75+
simpleModel.value = newModelView.simpleModel
5076
}
5177
}
5278
}

src/views/bpm/processInstance/detail/index.vue

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@
7979
v-show="
8080
processDefinition.modelType && processDefinition.modelType === BpmModelType.SIMPLE
8181
"
82-
:id="`${id}`"
8382
:loading="processInstanceLoading"
83+
:model-view="processModelView"
8484
/>
8585
<ProcessInstanceBpmnViewer
8686
v-show="
8787
processDefinition.modelType && processDefinition.modelType === BpmModelType.BPMN
8888
"
89-
:id="`${id}`"
9089
:loading="processInstanceLoading"
90+
:model-view="processModelView"
9191
/>
9292
</div>
9393
</el-tab-pane>
@@ -153,7 +153,7 @@ const message = useMessage() // 消息弹窗
153153
const processInstanceLoading = ref(false) // 流程实例的加载中
154154
const processInstance = ref<any>({}) // 流程实例
155155
const processDefinition = ref<any>({}) // 流程定义
156-
156+
const processModelView = ref<any>({}) // 流程模型视图
157157
const operationButtonRef = ref() // 操作按钮组件 ref
158158
const auditIcons = {
159159
1: audit1,
@@ -173,6 +173,8 @@ const detailForm = ref({
173173
/** 获得详情 */
174174
const getDetail = () => {
175175
getApprovalDetail()
176+
177+
getProcessModelView()
176178
}
177179
178180
/** 加载流程实例 */
@@ -238,6 +240,21 @@ const getApprovalDetail = async () => {
238240
}
239241
}
240242
243+
/** 获取流程模型视图*/
244+
const getProcessModelView = async () => {
245+
246+
if (BpmModelType.BPMN === processDefinition.value?.modelType) {
247+
// 重置,解决 BPMN 流程图刷新不会重新渲染问题
248+
processModelView.value = {
249+
bpmnXml: ''
250+
}
251+
}
252+
const data = await ProcessInstanceApi.getProcessInstanceBpmnModelView(props.id)
253+
if (data) {
254+
processModelView.value = data
255+
}
256+
}
257+
241258
// 审批节点信息
242259
const activityNodes = ref<ProcessInstanceApi.ApprovalNodeInfo[]>([])
243260
/**

0 commit comments

Comments
 (0)