4
4
3. 审批人为空时
5
5
4. 操作按钮
6
6
5. 字段权限
7
+ 6. 审批类型
7
8
-->
8
9
<template >
9
10
<div >
11
+ <el-divider content-position =" left" >审批类型</el-divider >
12
+ <el-form-item prop =" approveType" >
13
+ <el-radio-group v-model =" approveType.value" >
14
+ <el-radio
15
+ v-for =" (item, index) in APPROVE_TYPE"
16
+ :key =" index"
17
+ :value =" item.value"
18
+ :label =" item.value"
19
+ >
20
+ {{ item.label }}
21
+ </el-radio >
22
+ </el-radio-group >
23
+ </el-form-item >
24
+
10
25
<el-divider content-position =" left" >审批人拒绝时</el-divider >
11
26
<el-form-item prop =" rejectHandlerType" >
12
27
<el-radio-group
@@ -158,10 +173,13 @@ import {
158
173
AssignEmptyHandlerType ,
159
174
OPERATION_BUTTON_NAME ,
160
175
DEFAULT_BUTTON_SETTING ,
161
- FieldPermissionType
176
+ FieldPermissionType ,
177
+ APPROVE_TYPE ,
178
+ ApproveType ,
179
+ ButtonSetting
162
180
} from ' @/components/SimpleProcessDesignerV2/src/consts'
163
181
import * as UserApi from ' @/api/system/user'
164
- import { cloneDeep } from ' lodash-es '
182
+ import { useFormFieldsPermission } from ' @/components/SimpleProcessDesignerV2/src/node '
165
183
166
184
defineOptions ({ name: ' ElementCustomConfig4UserTask' })
167
185
const props = defineProps ({
@@ -189,15 +207,17 @@ const assignEmptyUserIds = ref()
189
207
190
208
// 操作按钮
191
209
const buttonsSettingEl = ref ()
192
- const { buttonsSetting, btnDisplayNameEdit, changeBtnDisplayName, btnDisplayNameBlurEvent } =
193
- useButtonsSetting ()
210
+ const { btnDisplayNameEdit, changeBtnDisplayName, btnDisplayNameBlurEvent } = useButtonsSetting ()
194
211
195
212
// 字段权限
196
213
const fieldsPermissionEl = ref ([])
197
214
const { formType, fieldsPermissionConfig, getNodeConfigFormFields } = useFormFieldsPermission (
198
215
FieldPermissionType .READ
199
216
)
200
217
218
+ // 审批类型
219
+ const approveType = ref ({ value: ApproveType .USER })
220
+
201
221
const elExtensionElements = ref ()
202
222
const otherExtensions = ref ()
203
223
const bpmnElement = ref ()
@@ -217,6 +237,11 @@ const resetCustomConfigList = () => {
217
237
bpmnElement .value .businessObject ?.extensionElements ??
218
238
bpmnInstances ().moddle .create (' bpmn:ExtensionElements' , { values: [] })
219
239
240
+ // 审批类型
241
+ approveType .value =
242
+ elExtensionElements .value .values ?.filter ((ex ) => ex .$type === ` ${prefix }:ApproveType ` )?.[0 ] ||
243
+ bpmnInstances ().moddle .create (` ${prefix }:ApproveType ` , { value: ApproveType .USER })
244
+
220
245
// 审批人与提交人为同一人时
221
246
assignStartUserHandlerTypeEl .value =
222
247
elExtensionElements .value .values ?.filter (
@@ -275,6 +300,8 @@ const resetCustomConfigList = () => {
275
300
)
276
301
fieldsPermissionEl .value = []
277
302
getNodeConfigFormFields ()
303
+ // 由于默认添加了发起人元素,这里需要删掉
304
+ fieldsPermissionConfig .value = fieldsPermissionConfig .value .slice (1 )
278
305
fieldsPermissionConfig .value .forEach ((element ) => {
279
306
element .permission =
280
307
fieldsPermissionList ?.find ((obj ) => obj .field === element .field )?.permission ?? ' 1'
@@ -294,7 +321,8 @@ const resetCustomConfigList = () => {
294
321
ex .$type !== ` ${prefix }:AssignEmptyHandlerType ` &&
295
322
ex .$type !== ` ${prefix }:AssignEmptyUserIds ` &&
296
323
ex .$type !== ` ${prefix }:ButtonsSetting ` &&
297
- ex .$type !== ` ${prefix }:FieldsPermission `
324
+ ex .$type !== ` ${prefix }:FieldsPermission ` &&
325
+ ex .$type !== ` ${prefix }:ApproveType `
298
326
) ?? []
299
327
300
328
// 更新元素扩展属性,避免后续报错
@@ -343,6 +371,7 @@ const updateElementExtensions = () => {
343
371
returnNodeIdEl .value ,
344
372
assignEmptyHandlerTypeEl .value ,
345
373
assignEmptyUserIdsEl .value ,
374
+ approveType .value ,
346
375
... buttonsSettingEl .value ,
347
376
... fieldsPermissionEl .value
348
377
]
@@ -427,69 +456,6 @@ function useButtonsSetting() {
427
456
}
428
457
}
429
458
430
- // 表单字段权限设置
431
- function useFormFieldsPermission(defaultPermission ) {
432
- // 字段权限配置. 需要有 field, title, permissioin 属性
433
- const fieldsPermissionConfig = ref <Array <Record <string , string >>>([])
434
-
435
- const formType = inject <Ref <number >>(' formType' ) // 表单类型
436
-
437
- const formFields = inject <Ref <string []>>(' formFields' ) // 流程表单字段
438
-
439
- const getNodeConfigFormFields = (nodeFormFields ? : Array <Record <string , string >>) => {
440
- nodeFormFields = toRaw (nodeFormFields )
441
- fieldsPermissionConfig .value =
442
- cloneDeep (nodeFormFields ) || getDefaultFieldsPermission (unref (formFields ))
443
- }
444
- // 默认的表单权限: 获取表单的所有字段,设置字段默认权限为只读
445
- const getDefaultFieldsPermission = (formFields ? : string []) => {
446
- const defaultFieldsPermission: Array <Record <string , string >> = []
447
- if (formFields ) {
448
- formFields .forEach ((fieldStr : string ) => {
449
- parseFieldsSetDefaultPermission (JSON .parse (fieldStr ), defaultFieldsPermission )
450
- })
451
- }
452
- return defaultFieldsPermission
453
- }
454
- // 解析字段。赋给默认权限
455
- const parseFieldsSetDefaultPermission = (
456
- rule : Record <string , any >,
457
- fieldsPermission : Array <Record <string , string >>,
458
- parentTitle : string = ' '
459
- ) => {
460
- const { /** type,*/ field, title : tempTitle, children } = rule
461
- if (field && tempTitle ) {
462
- let title = tempTitle
463
- if (parentTitle ) {
464
- title = ` ${parentTitle }.${tempTitle } `
465
- }
466
- fieldsPermission .push ({
467
- field ,
468
- title ,
469
- permission: defaultPermission
470
- })
471
- // TODO 子表单 需要处理子表单字段
472
- // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) {
473
- // // 解析子表单的字段
474
- // rule.props.rule.forEach((item) => {
475
- // parseFieldsSetDefaultPermission(item, fieldsPermission, title)
476
- // })
477
- // }
478
- }
479
- if (children && Array .isArray (children )) {
480
- children .forEach ((rule ) => {
481
- parseFieldsSetDefaultPermission (rule , fieldsPermission )
482
- })
483
- }
484
- }
485
-
486
- return {
487
- formType ,
488
- fieldsPermissionConfig ,
489
- getNodeConfigFormFields
490
- }
491
- }
492
-
493
459
const userOptions = ref <UserApi .UserVO []>([]) // 用户列表
494
460
onMounted (async () => {
495
461
// 获得用户列表
0 commit comments