1
1
<!-- UserTask 自定义配置:
2
2
1. 审批人与提交人为同一人时
3
3
2. 审批人拒绝时
4
+ 3. 审批人为空时
4
5
-->
5
6
<template >
6
7
<div class =" panel-tab__content" >
33
34
</el-select >
34
35
</el-form-item >
35
36
37
+ <el-divider content-position =" left" >审批人为空时</el-divider >
38
+ <el-form-item prop =" assignEmptyHandlerType" >
39
+ <el-radio-group v-model =" assignEmptyHandlerType" @change =" updateAssignEmptyHandlerType" >
40
+ <div class =" flex-col" >
41
+ <div v-for =" (item, index) in ASSIGN_EMPTY_HANDLER_TYPES" :key =" index" >
42
+ <el-radio :key =" item.value" :value =" item.value" :label =" item.label" />
43
+ </div >
44
+ </div >
45
+ </el-radio-group >
46
+ </el-form-item >
47
+ <el-form-item
48
+ v-if =" assignEmptyHandlerType == AssignEmptyHandlerType.ASSIGN_USER"
49
+ label =" 指定用户"
50
+ prop =" assignEmptyHandlerUserIds"
51
+ span =" 24"
52
+ >
53
+ <el-select
54
+ v-model =" assignEmptyUserIds"
55
+ clearable
56
+ multiple
57
+ style =" width : 100% "
58
+ @change =" updateAssignEmptyUserIds"
59
+ >
60
+ <el-option
61
+ v-for =" item in userOptions"
62
+ :key =" item.id"
63
+ :label =" item.nickname"
64
+ :value =" item.id"
65
+ />
66
+ </el-select >
67
+ </el-form-item >
68
+
36
69
<el-divider content-position =" left" >审批人与提交人为同一人时</el-divider >
37
70
<el-radio-group v-model =" assignStartUserHandlerType" @change =" updateAssignStartUserHandlerType" >
38
71
<div class =" flex-col" >
48
81
import {
49
82
ASSIGN_START_USER_HANDLER_TYPES ,
50
83
RejectHandlerType ,
51
- REJECT_HANDLER_TYPES
84
+ REJECT_HANDLER_TYPES ,
85
+ ASSIGN_EMPTY_HANDLER_TYPES ,
86
+ AssignEmptyHandlerType
52
87
} from ' @/components/SimpleProcessDesignerV2/src/consts'
88
+ import * as UserApi from ' @/api/system/user'
53
89
54
90
defineOptions ({ name: ' ElementCustomConfig' })
55
91
const props = defineProps ({
@@ -69,6 +105,12 @@ const returnNodeIdEl = ref()
69
105
const returnNodeId = ref ()
70
106
const returnTaskList = ref ([])
71
107
108
+ // 审批人为空时
109
+ const assignEmptyHandlerTypeEl = ref ()
110
+ const assignEmptyHandlerType = ref ()
111
+ const assignEmptyUserIdsEl = ref ()
112
+ const assignEmptyUserIds = ref ()
113
+
72
114
const elExtensionElements = ref ()
73
115
const otherExtensions = ref ()
74
116
const bpmnElement = ref ()
@@ -107,13 +149,31 @@ const resetCustomConfigList = () => {
107
149
)?.[0 ] || bpmnInstances ().moddle .create (` ${prefix }:RejectReturnTaskId ` , { value: ' ' })
108
150
returnNodeId .value = returnNodeIdEl .value .value
109
151
152
+ // 审批人为空时
153
+ assignEmptyHandlerTypeEl .value =
154
+ elExtensionElements .value .values ?.filter (
155
+ (ex ) => ex .$type === ` ${prefix }:AssignEmptyHandlerType `
156
+ )?.[0 ] || bpmnInstances ().moddle .create (` ${prefix }:AssignEmptyHandlerType ` , { value: 1 })
157
+ assignEmptyHandlerType .value = assignEmptyHandlerTypeEl .value .value
158
+ assignEmptyUserIdsEl .value =
159
+ elExtensionElements .value .values ?.filter (
160
+ (ex ) => ex .$type === ` ${prefix }:AssignEmptyUserIds `
161
+ )?.[0 ] || bpmnInstances ().moddle .create (` ${prefix }:AssignEmptyUserIds ` , { value: ' ' })
162
+ assignEmptyUserIds .value = assignEmptyUserIdsEl .value .value .split (' ,' ).map ((item ) => {
163
+ // 如果数字超出了最大安全整数范围,则将其作为字符串处理
164
+ let num = Number (item )
165
+ return num > Number .MAX_SAFE_INTEGER || num < - Number .MAX_SAFE_INTEGER ? item : num
166
+ })
167
+
110
168
// 保留剩余扩展元素,便于后面更新该元素对应属性
111
169
otherExtensions .value =
112
170
elExtensionElements .value .values ?.filter (
113
171
(ex ) =>
114
172
ex .$type !== ` ${prefix }:AssignStartUserHandlerType ` &&
115
173
ex .$type !== ` ${prefix }:RejectHandlerType ` &&
116
- ex .$type !== ` ${prefix }:RejectReturnTaskId `
174
+ ex .$type !== ` ${prefix }:RejectReturnTaskId ` &&
175
+ ex .$type !== ` ${prefix }:AssignEmptyHandlerType ` &&
176
+ ex .$type !== ` ${prefix }:AssignEmptyUserIds `
117
177
) ?? []
118
178
119
179
// 更新元素扩展属性,避免后续报错
@@ -141,13 +201,27 @@ const updateReturnNodeId = () => {
141
201
updateElementExtensions ()
142
202
}
143
203
204
+ const updateAssignEmptyHandlerType = () => {
205
+ assignEmptyHandlerTypeEl .value .value = assignEmptyHandlerType .value
206
+
207
+ updateElementExtensions ()
208
+ }
209
+
210
+ const updateAssignEmptyUserIds = () => {
211
+ assignEmptyUserIdsEl .value .value = assignEmptyUserIds .value .toString ()
212
+
213
+ updateElementExtensions ()
214
+ }
215
+
144
216
const updateElementExtensions = () => {
145
217
const extensions = bpmnInstances ().moddle .create (' bpmn:ExtensionElements' , {
146
218
values: [
147
219
... otherExtensions .value ,
148
220
assignStartUserHandlerTypeEl .value ,
149
221
rejectHandlerTypeEl .value ,
150
222
returnNodeIdEl .value ,
223
+ assignEmptyHandlerTypeEl .value ,
224
+ assignEmptyUserIdsEl .value
151
225
]
152
226
})
153
227
bpmnInstances ().modeling .updateProperties (toRaw (bpmnElement .value ), {
@@ -200,4 +274,10 @@ function findAllPredecessorsExcludingStart(elementId, modeler) {
200
274
201
275
return Array .from (predecessors ) // 返回前置节点数组
202
276
}
277
+
278
+ const userOptions = ref <UserApi .UserVO []>([]) // 用户列表
279
+ onMounted (async () => {
280
+ // 获得用户列表
281
+ userOptions .value = await UserApi .getSimpleUserList ()
282
+ })
203
283
</script >
0 commit comments