Skip to content

Commit bfb9e2e

Browse files
YunaiVgitee-org
authored andcommitted
!614 bpm设计器优化
Merge pull request !614 from Lesan/feature/bpm
2 parents 46985c6 + fe2ac97 commit bfb9e2e

File tree

2 files changed

+198
-81
lines changed

2 files changed

+198
-81
lines changed

src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue

Lines changed: 34 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,24 @@
44
3. 审批人为空时
55
4. 操作按钮
66
5. 字段权限
7+
6. 审批类型
78
-->
89
<template>
910
<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+
1025
<el-divider content-position="left">审批人拒绝时</el-divider>
1126
<el-form-item prop="rejectHandlerType">
1227
<el-radio-group
@@ -158,10 +173,13 @@ import {
158173
AssignEmptyHandlerType,
159174
OPERATION_BUTTON_NAME,
160175
DEFAULT_BUTTON_SETTING,
161-
FieldPermissionType
176+
FieldPermissionType,
177+
APPROVE_TYPE,
178+
ApproveType,
179+
ButtonSetting
162180
} from '@/components/SimpleProcessDesignerV2/src/consts'
163181
import * as UserApi from '@/api/system/user'
164-
import { cloneDeep } from 'lodash-es'
182+
import { useFormFieldsPermission } from '@/components/SimpleProcessDesignerV2/src/node'
165183
166184
defineOptions({ name: 'ElementCustomConfig4UserTask' })
167185
const props = defineProps({
@@ -189,15 +207,17 @@ const assignEmptyUserIds = ref()
189207
190208
// 操作按钮
191209
const buttonsSettingEl = ref()
192-
const { buttonsSetting, btnDisplayNameEdit, changeBtnDisplayName, btnDisplayNameBlurEvent } =
193-
useButtonsSetting()
210+
const { btnDisplayNameEdit, changeBtnDisplayName, btnDisplayNameBlurEvent } = useButtonsSetting()
194211
195212
// 字段权限
196213
const fieldsPermissionEl = ref([])
197214
const { formType, fieldsPermissionConfig, getNodeConfigFormFields } = useFormFieldsPermission(
198215
FieldPermissionType.READ
199216
)
200217
218+
// 审批类型
219+
const approveType = ref({ value: ApproveType.USER })
220+
201221
const elExtensionElements = ref()
202222
const otherExtensions = ref()
203223
const bpmnElement = ref()
@@ -217,6 +237,11 @@ const resetCustomConfigList = () => {
217237
bpmnElement.value.businessObject?.extensionElements ??
218238
bpmnInstances().moddle.create('bpmn:ExtensionElements', { values: [] })
219239
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+
220245
// 审批人与提交人为同一人时
221246
assignStartUserHandlerTypeEl.value =
222247
elExtensionElements.value.values?.filter(
@@ -275,6 +300,8 @@ const resetCustomConfigList = () => {
275300
)
276301
fieldsPermissionEl.value = []
277302
getNodeConfigFormFields()
303+
// 由于默认添加了发起人元素,这里需要删掉
304+
fieldsPermissionConfig.value = fieldsPermissionConfig.value.slice(1)
278305
fieldsPermissionConfig.value.forEach((element) => {
279306
element.permission =
280307
fieldsPermissionList?.find((obj) => obj.field === element.field)?.permission ?? '1'
@@ -294,7 +321,8 @@ const resetCustomConfigList = () => {
294321
ex.$type !== `${prefix}:AssignEmptyHandlerType` &&
295322
ex.$type !== `${prefix}:AssignEmptyUserIds` &&
296323
ex.$type !== `${prefix}:ButtonsSetting` &&
297-
ex.$type !== `${prefix}:FieldsPermission`
324+
ex.$type !== `${prefix}:FieldsPermission` &&
325+
ex.$type !== `${prefix}:ApproveType`
298326
) ?? []
299327
300328
// 更新元素扩展属性,避免后续报错
@@ -343,6 +371,7 @@ const updateElementExtensions = () => {
343371
returnNodeIdEl.value,
344372
assignEmptyHandlerTypeEl.value,
345373
assignEmptyUserIdsEl.value,
374+
approveType.value,
346375
...buttonsSettingEl.value,
347376
...fieldsPermissionEl.value
348377
]
@@ -427,69 +456,6 @@ function useButtonsSetting() {
427456
}
428457
}
429458
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-
493459
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
494460
onMounted(async () => {
495461
// 获得用户列表

0 commit comments

Comments
 (0)