1
1
<template >
2
2
<div class =" panel-tab__content" >
3
- <el-form label-width =" 90px" >
3
+ <el-radio-group v-model =" approveMethod" @change =" onApproveMethodChange" >
4
+ <div class =" flex-col" >
5
+ <div v-for =" (item, index) in APPROVE_METHODS" :key =" index" >
6
+ <el-radio :value =" item.value" :label =" item.value" >
7
+ {{ item.label }}
8
+ </el-radio >
9
+ <el-form-item prop =" approveRatio" >
10
+ <el-input-number
11
+ v-model =" approveRatio"
12
+ :min =" 10"
13
+ :max =" 100"
14
+ :step =" 10"
15
+ size =" small"
16
+ v-if ="
17
+ item.value === ApproveMethodType.APPROVE_BY_RATIO &&
18
+ approveMethod === ApproveMethodType.APPROVE_BY_RATIO
19
+ "
20
+ @change =" onApproveRatioChange"
21
+ />
22
+ </el-form-item >
23
+ </div >
24
+ </div >
25
+ </el-radio-group >
26
+ <!-- 与Simple设计器配置合并,保留以前的代码 -->
27
+ <el-form label-width =" 90px" style =" display : none " >
4
28
<el-form-item label =" 快捷配置" >
5
29
<el-button size =" small" @click =" changeConfig('依次审批')" >依次审批</el-button >
6
30
<el-button size =" small" @click =" changeConfig('会签')" >会签</el-button >
76
100
</template >
77
101
78
102
<script lang="ts" setup>
103
+ import { ApproveMethodType , APPROVE_METHODS } from ' @/components/SimpleProcessDesignerV2/src/consts'
104
+
79
105
defineOptions ({ name: ' ElementMultiInstance' })
80
106
81
107
const props = defineProps ({
@@ -267,6 +293,91 @@ const changeConfig = (config) => {
267
293
}
268
294
}
269
295
296
+ /**
297
+ * -----新版本多实例-----
298
+ */
299
+ const approveMethod = ref (1 )
300
+ const approveRatio = ref (100 )
301
+ const getElementLoopNew = ({ loopCharacteristics }) => {
302
+ if (! loopCharacteristics ) {
303
+ approveMethod .value = ApproveMethodType .RANDOM_SELECT_ONE_APPROVE
304
+ return
305
+ }
306
+ if (loopCharacteristics .isSequential ) {
307
+ approveMethod .value = ApproveMethodType .SEQUENTIAL_APPROVE
308
+ } else {
309
+ if (loopCharacteristics .completionCondition .body === ' ${ nrOfCompletedInstances > 0 }' ) {
310
+ approveMethod .value = ApproveMethodType .ANY_APPROVE
311
+ }
312
+ if (
313
+ loopCharacteristics .completionCondition .body .includes (' nrOfCompletedInstances/nrOfInstances' )
314
+ ) {
315
+ approveMethod .value = ApproveMethodType .APPROVE_BY_RATIO
316
+ }
317
+ }
318
+ }
319
+ const onApproveMethodChange = () => {
320
+ approveRatio .value = 100
321
+ updateLoopCharacteristics ()
322
+ }
323
+ const onApproveRatioChange = () => {
324
+ updateLoopCharacteristics ()
325
+ }
326
+ const updateLoopCharacteristics = () => {
327
+ if (approveMethod .value === ApproveMethodType .RANDOM_SELECT_ONE_APPROVE ) {
328
+ bpmnInstances ().modeling .updateProperties (toRaw (bpmnElement .value ), {
329
+ loopCharacteristics: null
330
+ })
331
+ return
332
+ }
333
+ if (approveMethod .value === ApproveMethodType .APPROVE_BY_RATIO ) {
334
+ multiLoopInstance .value = bpmnInstances ().moddle .create (
335
+ ' bpmn:MultiInstanceLoopCharacteristics' ,
336
+ { isSequential: false , collection: ' ${coll_userList}' }
337
+ )
338
+ multiLoopInstance .value .completionCondition = bpmnInstances ().moddle .create (
339
+ ' bpmn:FormalExpression' ,
340
+ {
341
+ body: ' ${ nrOfCompletedInstances/nrOfInstances >= ' + approveRatio .value / 100 + ' }'
342
+ }
343
+ )
344
+ }
345
+ if (approveMethod .value === ApproveMethodType .ANY_APPROVE ) {
346
+ multiLoopInstance .value = bpmnInstances ().moddle .create (
347
+ ' bpmn:MultiInstanceLoopCharacteristics' ,
348
+ { isSequential: false , collection: ' ${coll_userList}' }
349
+ )
350
+ multiLoopInstance .value .completionCondition = bpmnInstances ().moddle .create (
351
+ ' bpmn:FormalExpression' ,
352
+ {
353
+ body: ' ${ nrOfCompletedInstances > 0 }'
354
+ }
355
+ )
356
+ }
357
+ if (approveMethod .value === ApproveMethodType .SEQUENTIAL_APPROVE ) {
358
+ multiLoopInstance .value = bpmnInstances ().moddle .create (
359
+ ' bpmn:MultiInstanceLoopCharacteristics' ,
360
+ { isSequential: true , collection: ' ${coll_userList}' }
361
+ )
362
+ multiLoopInstance .value .loopCardinality = bpmnInstances ().moddle .create (
363
+ ' bpmn:FormalExpression' ,
364
+ {
365
+ body: ' 1'
366
+ }
367
+ )
368
+ multiLoopInstance .value .completionCondition = bpmnInstances ().moddle .create (
369
+ ' bpmn:FormalExpression' ,
370
+ {
371
+ body: ' ${ nrOfCompletedInstances >= nrOfInstances }'
372
+ }
373
+ )
374
+ }
375
+
376
+ bpmnInstances ().modeling .updateProperties (toRaw (bpmnElement .value ), {
377
+ loopCharacteristics: toRaw (multiLoopInstance .value )
378
+ })
379
+ }
380
+
270
381
onBeforeUnmount (() => {
271
382
multiLoopInstance .value = null
272
383
bpmnElement .value = null
@@ -276,7 +387,8 @@ watch(
276
387
() => props .businessObject ,
277
388
(val ) => {
278
389
bpmnElement .value = bpmnInstances ().bpmnElement
279
- getElementLoop (val )
390
+ // getElementLoop(val)
391
+ getElementLoopNew (val )
280
392
},
281
393
{ immediate: true }
282
394
)
0 commit comments