@@ -200,7 +200,11 @@ const handleAudit = async (task, pass) => {
200
200
// 1.2 校验表单
201
201
const elForm = unref (auditFormRef )
202
202
if (! elForm ) return
203
- const valid = await elForm .validate ()
203
+ let valid = await elForm .validate ()
204
+ if (! valid ) return
205
+ // 校验申请表单
206
+ if (! fApi .value ) return
207
+ valid = await fApi .value .validate ()
204
208
if (! valid ) return
205
209
206
210
// 2.1 提交审批
@@ -216,6 +220,9 @@ const handleAudit = async (task, pass) => {
216
220
await formCreateApi .validate ()
217
221
data .variables = approveForms .value [index ].value
218
222
}
223
+ // 获取表单可编辑字段的值
224
+ data .variables = getWritableValueOfForm (task .fieldsPermission )
225
+
219
226
await TaskApi .approveTask (data )
220
227
message .success (' 审批通过成功' )
221
228
} else {
@@ -251,11 +258,11 @@ const handleSign = async (task: any) => {
251
258
}
252
259
253
260
/** 获得详情 */
254
- const getDetail = () => {
255
- // 1. 获得流程实例相关
261
+ const getDetail = async () => {
262
+ // 1. 获得流程任务列表(审批记录)。 需要先获取任务,表单的权限设置需要根据任务来设置
263
+ await getTaskList ()
264
+ // 2. 获得流程实例相关
256
265
getProcessInstance ()
257
- // 2. 获得流程任务列表(审批记录)
258
- getTaskList ()
259
266
}
260
267
261
268
/** 加载流程实例 */
@@ -283,6 +290,15 @@ const getProcessInstance = async () => {
283
290
fApi .value ?.btn .show (false )
284
291
fApi .value ?.resetBtn .show (false )
285
292
fApi .value ?.disabled (true )
293
+ // 设置表单权限。后续需要改造成。只处理一个运行中的任务
294
+ if (runningTasks .value .length > 0 ) {
295
+ const task = runningTasks .value .at (0 )
296
+ if (task .fieldsPermission ) {
297
+ Object .keys (task .fieldsPermission ).forEach ((item ) => {
298
+ setFieldPermission (item , task .fieldsPermission [item ])
299
+ })
300
+ }
301
+ }
286
302
})
287
303
} else {
288
304
// 注意:data.processDefinition.formCustomViewPath 是组件的全路径,例如说:/crm/contract/detail/index.vue
@@ -353,6 +369,7 @@ const loadRunningTask = (tasks) => {
353
369
if (! task .assigneeUser || task .assigneeUser .id !== userId ) {
354
370
return
355
371
}
372
+
356
373
// 2.3 添加到处理任务
357
374
runningTasks .value .push ({ ... task })
358
375
auditForms .value .push ({
@@ -371,6 +388,35 @@ const loadRunningTask = (tasks) => {
371
388
})
372
389
}
373
390
391
+ /**
392
+ * 设置表单权限
393
+ */
394
+ const setFieldPermission = (field : string , permission : string ) => {
395
+ if (permission === ' 1' ) {
396
+ fApi .value ?.disabled (true , field )
397
+ }
398
+ if (permission === ' 2' ) {
399
+ fApi .value ?.disabled (false , field )
400
+ }
401
+ if (permission === ' 3' ) {
402
+ fApi .value ?.hidden (true , field )
403
+ }
404
+ }
405
+ /**
406
+ * 获取可以编辑字段的值
407
+ */
408
+ const getWritableValueOfForm = (fieldsPermission : Object ) => {
409
+ const fieldsValue = {}
410
+ if (fieldsPermission && fApi .value ) {
411
+ Object .keys (fieldsPermission ).forEach ((item ) => {
412
+ if (fieldsPermission [item ] === ' 2' ) {
413
+ fieldsValue [item ] = fApi .value .getValue (item )
414
+ }
415
+ })
416
+ }
417
+ return fieldsValue
418
+ }
419
+
374
420
/** 初始化 */
375
421
const userOptions = ref <UserApi .UserVO []>([]) // 用户列表
376
422
onMounted (async () => {
0 commit comments