23
23
<div
24
24
class =" bg-gray-100 h-35px rounded-3xl flex items-center p-8px gap-2 dark:color-gray-600"
25
25
>
26
- <!-- <img class="rounded-full h-28px" src="@/assets/imgs/avatar.jpg" alt="" /> -->
27
26
<el-avatar
28
27
:size =" 28"
29
28
v-if =" processInstance?.startUser?.avatar"
50
49
class =" form-box flex flex-col mb-30px flex-1"
51
50
>
52
51
<!-- 情况一:流程表单 -->
53
- <el-col v-if =" processInstance?. processDefinition?.formType === 10" >
52
+ <el-col v-if =" processDefinition?.formType === 10" >
54
53
<form-create
55
54
v-model =" detailForm.value"
56
55
v-model:api =" fApi"
59
58
/>
60
59
</el-col >
61
60
<!-- 情况二:业务表单 -->
62
- <div v-if =" processInstance?. processDefinition?.formType === 20" >
61
+ <div v-if =" processDefinition?.formType === 20" >
63
62
<BusinessFormComponent :id =" processInstance.businessKey" />
64
63
</div >
65
64
</div >
66
65
</el-col >
67
66
<el-col :span =" 6" >
68
67
<!-- 审批记录时间线 -->
69
- <ProcessInstanceTimeline ref =" timelineRef" :process-instance-id = " id " />
68
+ <ProcessInstanceTimeline ref =" timelineRef" :approve-nodes = " approveNodes " />
70
69
</el-col >
71
70
</el-row >
72
71
</el-scrollbar >
104
103
<div class =" b-t-solid border-t-1px border-[var(--el-border-color)]" >
105
104
<!-- 操作栏按钮 -->
106
105
<ProcessInstanceOperationButton
106
+ ref =" operationButtonRef"
107
107
:process-instance-id =" id"
108
108
:userOptions =" userOptions"
109
109
@success =" refresh"
@@ -124,7 +124,6 @@ import ProcessInstanceBpmnViewer from './ProcessInstanceBpmnViewer.vue'
124
124
import ProcessInstanceTaskList from ' ./ProcessInstanceTaskList.vue'
125
125
import ProcessInstanceOperationButton from ' ./ProcessInstanceOperationButton.vue'
126
126
import ProcessInstanceTimeline from ' ./ProcessInstanceTimeline.vue'
127
- import { registerComponent } from ' @/utils/routerHelper'
128
127
import * as UserApi from ' @/api/system/user'
129
128
import { FieldPermissionType } from ' @/components/SimpleProcessDesignerV2/src/consts'
130
129
import audit1 from ' @/assets/svgs/bpm/audit1.svg'
@@ -141,7 +140,10 @@ const props = defineProps<{
141
140
const message = useMessage () // 消息弹窗
142
141
const processInstanceLoading = ref (false ) // 流程实例的加载中
143
142
const processInstance = ref <any >({}) // 流程实例
143
+ const processDefinition = ref <any >({}) // 流程定义
144
144
const timelineRef = ref ()
145
+ // 操作按钮组件 ref
146
+ const operationButtonRef = ref ()
145
147
const tasksLoad = ref (true ) // 任务的加载中
146
148
const tasks = ref <any []>([]) // 任务列表
147
149
const auditIcons = {
@@ -161,78 +163,92 @@ const detailForm = ref({
161
163
162
164
/** 获得详情 */
163
165
const getDetail = async () => {
164
- // 1. 获得流程实例相关
165
- getProcessInstance ()
166
+ // 1. 获取审批详情
167
+ getApprovalDetail ()
166
168
// 2. 获得流程任务列表
167
169
getTaskList ()
168
170
}
169
171
170
172
/** 加载流程实例 */
171
173
const BusinessFormComponent = ref <any >(null ) // 异步组件
172
- const getProcessInstance = async () => {
174
+ /** 获取审批详情 */
175
+ const getApprovalDetail = async () => {
176
+ processInstanceLoading .value = true
173
177
try {
174
- processInstanceLoading .value = true
175
- const data = await ProcessInstanceApi .getProcessInstance (props .id )
178
+ const param = {
179
+ processInstanceId: props .id ,
180
+ activityId: props .activityId ,
181
+ taskId: props .taskId
182
+ }
183
+ const data = await ProcessInstanceApi .getApprovalDetail (param );
176
184
if (! data ) {
185
+ message .error (' 查询不到审批详情信息!' )
186
+ return
187
+ }
188
+ if (! data .processDefinition || ! data .processInstance ) {
177
189
message .error (' 查询不到流程信息!' )
178
190
return
179
191
}
180
- processInstance .value = data
192
+ processInstance .value = data .processInstance
193
+ processDefinition .value = data .processDefinition
181
194
182
195
// 设置表单信息
183
- const processDefinition = data .processDefinition
184
- if (processDefinition .formType === 10 ) {
196
+ if (processDefinition .value .formType === 10 ) {
185
197
// 获取表单字段权限
186
- let fieldsPermission = undefined
187
- if (props .taskId || props .activityId ) {
188
- fieldsPermission = await ProcessInstanceApi .getFormFieldsPermission ({
189
- processInstanceId: props .id ,
190
- taskId: props .taskId ,
191
- activityId: props .activityId
192
- })
193
- }
194
-
195
- if (detailForm .value .rule .length > 0 ) { // 避免刷新 form-create 表单不显示
196
- detailForm .value .value = data .formVariables
198
+ const formFieldsPermission = data .formFieldsPermission
199
+
200
+ if (detailForm .value .rule .length > 0 ) { // 避免刷新 form-create 显示不了,
201
+ detailForm .value .value = processInstance .value .formVariables
197
202
} else {
198
203
setConfAndFields2 (
199
204
detailForm ,
200
- processDefinition .formConf ,
201
- processDefinition .formFields ,
202
- data .formVariables
205
+ processDefinition .value . formConf ,
206
+ processDefinition .value . formFields ,
207
+ processInstance . value .formVariables
203
208
)
204
209
}
205
-
206
210
nextTick ().then (() => {
207
211
fApi .value ?.btn .show (false )
208
212
fApi .value ?.resetBtn .show (false )
213
+ // @ts-ignore
209
214
fApi .value ?.disabled (true )
210
- if (fieldsPermission ) {
211
- Object .keys (fieldsPermission ).forEach ((item ) => {
212
- setFieldPermission (item , fieldsPermission [item ])
215
+ // 设置表单字段权限
216
+ if (formFieldsPermission ) {
217
+ Object .keys (data .formFieldsPermission ).forEach ((item ) => {
218
+ setFieldPermission (item , formFieldsPermission [item ])
213
219
})
214
220
}
215
221
})
216
- } else {
217
- // 注意:data.processDefinition.formCustomViewPath 是组件的全路径,例如说:/crm/contract/detail/index.vue
218
- BusinessFormComponent .value = registerComponent (data .processDefinition .formCustomViewPath )
219
222
}
223
+
224
+ // 获取审批节点,显示 Timeline 的数据
225
+ approveNodes .value = data .approveNodes
226
+
227
+ // 获取待办任务显示操作按钮
228
+ operationButtonRef .value ?.loadTodoTask (data .todoTask )
229
+
220
230
} finally {
221
231
processInstanceLoading .value = false
222
232
}
233
+
223
234
}
224
235
236
+ // 审批节点信息
237
+ const approveNodes = ref <ProcessInstanceApi .ApprovalNodeInfo []>([])
225
238
/**
226
239
* 设置表单权限
227
240
*/
228
241
const setFieldPermission = (field : string , permission : string ) => {
229
242
if (permission === FieldPermissionType .READ ) {
243
+ // @ts-ignore
230
244
fApi .value ?.disabled (true , field )
231
245
}
232
246
if (permission === FieldPermissionType .WRITE ) {
247
+ // @ts-ignore
233
248
fApi .value ?.disabled (false , field )
234
249
}
235
250
if (permission === FieldPermissionType .NONE ) {
251
+ // @ts-ignore
236
252
fApi .value ?.hidden (true , field )
237
253
}
238
254
}
@@ -264,9 +280,6 @@ const getTaskList = async () => {
264
280
return b .createTime - a .createTime
265
281
}
266
282
})
267
-
268
- // 获得需要自己审批的任务
269
- // operationButtonRef.value?.loadRunningTask(tasks.value)
270
283
} finally {
271
284
tasksLoad .value = false
272
285
}
@@ -278,8 +291,6 @@ const getTaskList = async () => {
278
291
const refresh = () => {
279
292
// 重新获取详情
280
293
getDetail ()
281
- // 刷新审批详情 Timeline
282
- timelineRef .value ?.refresh ()
283
294
}
284
295
285
296
/** 当前的Tab */
0 commit comments