From 9e2958f7d0e79f3179a969f7cbfcd5f333cea4d0 Mon Sep 17 00:00:00 2001 From: Lesan <1960681385@qq.com> Date: Tue, 10 Dec 2024 14:37:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=8C=E6=AD=A5bpm=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=AE=A1=E6=89=B9=E4=BA=BA=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=86=85=E7=94=A8=E6=88=B7=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../penal/task/task-components/UserTask.vue | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue index bd787a00..4cbe2c55 100644 --- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue +++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue @@ -109,6 +109,26 @@ /> + + + + + import { CANDIDATE_STRATEGY, - CandidateStrategy + CandidateStrategy, + FieldPermissionType } from '@/components/SimpleProcessDesignerV2/src/consts' import { defaultProps, handleTree } from '@/utils/tree' import * as RoleApi from '@/api/system/role' @@ -143,6 +164,7 @@ import * as UserApi from '@/api/system/user' import * as UserGroupApi from '@/api/bpm/userGroup' import ProcessExpressionDialog from './ProcessExpressionDialog.vue' import { ProcessExpressionVO } from '@/api/bpm/processExpression' +import { useFormFieldsPermission } from '@/components/SimpleProcessDesignerV2/src/node' defineOptions({ name: 'UserTask' }) const props = defineProps({ @@ -162,6 +184,14 @@ const deptTreeOptions = ref() // 部门树 const postOptions = ref([]) // 岗位列表 const userOptions = ref([]) // 用户列表 const userGroupOptions = ref([]) // 用户组列表 + +// 表单内用户字段 +const { formFieldOptions } = useFormFieldsPermission(FieldPermissionType.READ) +// 表单内用户字段选项, 必须是必填和用户选择器 +const userFieldOnFormOptions = computed(() => { + return formFieldOptions.filter((item) => item.type === 'UserSelect') +}) + const otherExtensions = ref() const resetTaskForm = () => { @@ -223,6 +253,12 @@ const resetTaskForm = () => { /** 更新 candidateStrategy 字段时,需要清空 candidateParam,并触发 bpmn 图更新 */ const changeCandidateStrategy = () => { userTaskForm.value.candidateParam = [] + if (userTaskForm.value.candidateStrategy === CandidateStrategy.FORM_USER) { + // 特殊处理表单内用户字段,当只有发起人选项时应选中发起人 + if (!userFieldOnFormOptions.value || userFieldOnFormOptions.value.length <= 1) { + userTaskForm.value.candidateStrategy = CandidateStrategy.START_USER + } + } updateElementTask() } @@ -235,7 +271,10 @@ const updateElementTask = () => { value: userTaskForm.value.candidateStrategy }), bpmnInstances().moddle.create(`${prefix}:CandidateParam`, { - value: userTaskForm.value.candidateParam.join(',') + value: + userTaskForm.value.candidateParam instanceof Array + ? userTaskForm.value.candidateParam.join(',') + : userTaskForm.value.candidateParam }) ] }) @@ -261,6 +300,14 @@ const selectProcessExpression = (expression: ProcessExpressionVO) => { updateElementTask() } +const handleFormUserChange = (e) => { + if (e === 'PROCESS_START_USER_ID') { + userTaskForm.value.candidateParam = [] + userTaskForm.value.candidateStrategy = CandidateStrategy.START_USER + } + updateElementTask() +} + watch( () => props.id, () => {