12
12
<el-divider class =" !my-8px" />
13
13
<div class =" flex items-center gap-5 mb-10px h-40px" >
14
14
<div class =" text-26px font-bold mb-5px" >{{ processInstance.name }}</div >
15
- <dict-tag :type =" DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value =" processInstance.status" />
15
+ <dict-tag
16
+ v-if =" processInstance.status"
17
+ :type =" DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS"
18
+ :value =" processInstance.status"
19
+ />
16
20
</div >
17
21
18
22
<div class =" flex items-center gap-5 mb-10px text-13px h-35px" >
19
23
<div
20
24
class =" bg-gray-100 h-35px rounded-3xl flex items-center p-8px gap-2 dark:color-gray-600"
21
25
>
22
- <img class =" rounded-full h-28px" src =" @/assets/imgs/avatar.jpg" alt =" " />
26
+ <!-- <img class="rounded-full h-28px" src="@/assets/imgs/avatar.jpg" alt="" /> -->
27
+ <el-avatar
28
+ :size =" 28"
29
+ v-if =" processInstance?.startUser?.avatar"
30
+ :src =" processInstance?.startUser?.avatar"
31
+ />
32
+ <el-avatar :size =" 28" v-else-if =" processInstance?.startUser?.nickname" >
33
+ {{ processInstance?.startUser?.nickname.substring(0, 1) }}
34
+ </el-avatar >
23
35
{{ processInstance?.startUser?.nickname }}
24
36
</div >
25
37
<div class =" text-#878c93" > {{ formatDate(processInstance.startTime) }} 提交 </div >
26
38
</div >
27
39
28
- <el-tabs v-model =" activeTab" >
40
+ <el-tabs v-model =" activeTab" @tab-change = " onTabChange " >
29
41
<!-- 表单信息 -->
30
42
<el-tab-pane label =" 审批详情" name =" form" >
31
43
<div class =" form-scroll-area" >
32
44
<el-scrollbar >
33
- <el-row :gutter = " 10 " >
45
+ <el-row >
34
46
<el-col :span =" 18" class =" !flex !flex-col formCol" >
35
47
<!-- 表单信息 -->
36
48
<div
37
49
v-loading =" processInstanceLoading"
38
50
class =" form-box flex flex-col mb-30px flex-1"
39
51
>
40
52
<!-- 情况一:流程表单 -->
41
- <el-col
42
- v-if =" processInstance?.processDefinition?.formType === 10"
43
- :offset =" 6"
44
- :span =" 16"
45
- >
53
+ <el-col v-if =" processInstance?.processDefinition?.formType === 10" >
46
54
<form-create
47
55
v-model =" detailForm.value"
48
56
v-model:api =" fApi"
64
72
</el-scrollbar >
65
73
</div >
66
74
</el-tab-pane >
75
+
67
76
<!-- 流程图 -->
68
77
<el-tab-pane label =" 流程图" name =" diagram" >
69
- <ProcessInstanceBpmnViewer
70
- :id =" `${id}`"
71
- :bpmn-xml =" bpmnXml"
72
- :loading =" processInstanceLoading"
73
- :process-instance =" processInstance"
74
- :tasks =" tasks"
75
- />
78
+ <div class =" form-scroll-area" >
79
+ <el-scrollbar >
80
+ <ProcessInstanceBpmnViewer
81
+ :id =" `${id}`"
82
+ :bpmn-xml =" bpmnXml"
83
+ :loading =" processInstanceLoading"
84
+ :process-instance =" processInstance"
85
+ :tasks =" tasks"
86
+ />
87
+ </el-scrollbar >
88
+ </div >
76
89
</el-tab-pane >
90
+
77
91
<!-- 流转记录 -->
78
92
<el-tab-pane label =" 流转记录" name =" record" >
79
- <ProcessInstanceTaskList
80
- :loading =" tasksLoad"
81
- :process-instance =" processInstance"
82
- :tasks =" tasks"
83
- @refresh =" getTaskList"
84
- />
93
+ <div class =" form-scroll-area" >
94
+ <el-scrollbar >
95
+ <ProcessInstanceTaskList
96
+ :loading =" tasksLoad"
97
+ :process-instance =" processInstance"
98
+ :tasks =" tasks"
99
+ />
100
+ </el-scrollbar >
101
+ </div >
85
102
</el-tab-pane >
103
+
86
104
<!-- 流转评论 TODO 待开发 -->
87
- <el-tab-pane label =" 流转评论" name =" comment" > 流转评论 </el-tab-pane >
105
+ <el-tab-pane label =" 流转评论" name =" comment" >
106
+ <div class =" form-scroll-area" >
107
+ <el-scrollbar > 流转评论 </el-scrollbar >
108
+ </div >
109
+ </el-tab-pane >
88
110
</el-tabs >
89
111
90
- <div
91
- class =" b-t-solid border-t-1px border-[var(--el-border-color)]"
92
- v-if =" activeTab === 'form'"
93
- >
112
+ <div class =" b-t-solid border-t-1px border-[var(--el-border-color)]" >
94
113
<!-- 操作栏按钮 -->
95
114
<ProcessInstanceOperationButton
96
115
ref =" operationButtonRef"
@@ -131,6 +150,7 @@ const props = defineProps<{
131
150
const message = useMessage () // 消息弹窗
132
151
const processInstanceLoading = ref (false ) // 流程实例的加载中
133
152
const processInstance = ref <any >({}) // 流程实例
153
+ let processDefinitionId = undefined // 流程定义 Id
134
154
const operationButtonRef = ref ()
135
155
const timelineRef = ref ()
136
156
const bpmnXml = ref (' ' ) // BPMN XML
@@ -151,10 +171,10 @@ const detailForm = ref({
151
171
}) // 流程实例的表单详情
152
172
153
173
/** 获得详情 */
154
- const getDetail = () => {
174
+ const getDetail = async () => {
155
175
// 1. 获得流程实例相关
156
176
getProcessInstance ()
157
- // 2. 获得流程任务列表(审批记录)
177
+ // 2. 获得流程任务列表
158
178
getTaskList ()
159
179
}
160
180
@@ -202,9 +222,9 @@ const getProcessInstance = async () => {
202
222
// 注意:data.processDefinition.formCustomViewPath 是组件的全路径,例如说:/crm/contract/detail/index.vue
203
223
BusinessFormComponent .value = registerComponent (data .processDefinition .formCustomViewPath )
204
224
}
205
-
225
+ processDefinitionId = processDefinition . id
206
226
// 加载流程图
207
- bpmnXml .value = (await DefinitionApi .getProcessDefinition (processDefinition .id ))?.bpmnXml
227
+ // bpmnXml.value = (await DefinitionApi.getProcessDefinition(processDefinition.id))?.bpmnXml
208
228
} finally {
209
229
processInstanceLoading .value = false
210
230
}
@@ -273,6 +293,13 @@ const refresh = () => {
273
293
/** 当前的Tab */
274
294
const activeTab = ref (' form' )
275
295
296
+ /** Tab 切换 加载流程图,直接加载显示不出来,不知道啥原因,所以切换以后在加载 */
297
+ const onTabChange = async (tabName : string ) => {
298
+ if (tabName === ' diagram' && processDefinitionId && ! bpmnXml .value ) {
299
+ // 加载流程图
300
+ bpmnXml .value = (await DefinitionApi .getProcessDefinition (processDefinitionId ))?.bpmnXml
301
+ }
302
+ }
276
303
/** 初始化 */
277
304
const userOptions = ref <UserApi .UserVO []>([]) // 用户列表
278
305
onMounted (async () => {
0 commit comments