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,
() => {