Skip to content

Commit dc5aa6d

Browse files
committed
feat: 完善监听器表单校验
1 parent 4014816 commit dc5aa6d

File tree

1 file changed

+94
-41
lines changed

1 file changed

+94
-41
lines changed

src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue

Lines changed: 94 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -359,11 +359,7 @@
359359

360360
<el-divider content-position="left">是否需要签名</el-divider>
361361
<el-form-item prop="signEnable">
362-
<el-switch
363-
v-model="configForm.signEnable"
364-
active-text=""
365-
inactive-text=""
366-
/>
362+
<el-switch v-model="configForm.signEnable" active-text="" inactive-text="" />
367363
</el-form-item>
368364
</el-form>
369365
</div>
@@ -445,7 +441,7 @@
445441
</div>
446442
</el-tab-pane>
447443
<el-tab-pane label="监听器" name="listener">
448-
<el-form :model="configForm" label-position="top">
444+
<el-form ref="listenerFormRef" :model="configForm" label-position="top">
449445
<div v-for="(listener, listenerIdx) in taskListener" :key="listenerIdx">
450446
<el-divider content-position="left">
451447
<el-text tag="b" size="large">{{ listener.name }}</el-text>
@@ -484,7 +480,16 @@
484480
:key="index"
485481
>
486482
<div class="mr-2">
487-
<el-input class="w-160px" v-model="item.key" />
483+
<el-form-item
484+
:prop="`task${listener.type}ListenerHeader.${index}.key`"
485+
:rules="{
486+
required: true,
487+
message: '参数名不能为空',
488+
trigger: 'blur'
489+
}"
490+
>
491+
<el-input class="w-160px" v-model="item.key" />
492+
</el-form-item>
488493
</div>
489494
<div class="mr-2">
490495
<el-select class="w-100px!" v-model="item.type">
@@ -497,24 +502,42 @@
497502
</el-select>
498503
</div>
499504
<div class="mr-2">
500-
<el-input
501-
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
502-
class="w-160px"
503-
v-model="item.value"
504-
/>
505-
<el-select
506-
v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
507-
class="w-160px!"
508-
v-model="item.value"
505+
<el-form-item
506+
:prop="`task${listener.type}ListenerHeader.${index}.value`"
507+
:rules="{
508+
required: true,
509+
message: '参数值不能为空',
510+
trigger: 'blur'
511+
}"
509512
>
510-
<el-option
511-
v-for="(field, fIdx) in formFieldOptions"
512-
:key="fIdx"
513-
:label="field.title"
514-
:value="field.field"
515-
:disabled="!field.required"
513+
<el-input
514+
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
515+
class="w-160px"
516+
v-model="item.value"
516517
/>
517-
</el-select>
518+
</el-form-item>
519+
<el-form-item
520+
:prop="`task${listener.type}ListenerHeader.${index}.value`"
521+
:rules="{
522+
required: true,
523+
message: '参数值不能为空',
524+
trigger: 'change'
525+
}"
526+
>
527+
<el-select
528+
v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
529+
class="w-160px!"
530+
v-model="item.value"
531+
>
532+
<el-option
533+
v-for="(field, fIdx) in formFieldOptions"
534+
:key="fIdx"
535+
:label="field.title"
536+
:value="field.field"
537+
:disabled="!field.required"
538+
/>
539+
</el-select>
540+
</el-form-item>
518541
</div>
519542
<div class="mr-1 flex items-center">
520543
<Icon
@@ -544,7 +567,16 @@
544567
:key="index"
545568
>
546569
<div class="mr-2">
547-
<el-input class="w-160px" v-model="item.key" />
570+
<el-form-item
571+
:prop="`task${listener.type}ListenerBody.${index}.key`"
572+
:rules="{
573+
required: true,
574+
message: '参数名不能为空',
575+
trigger: 'blur'
576+
}"
577+
>
578+
<el-input class="w-160px" v-model="item.key" />
579+
</el-form-item>
548580
</div>
549581
<div class="mr-2">
550582
<el-select class="w-100px!" v-model="item.type">
@@ -557,24 +589,42 @@
557589
</el-select>
558590
</div>
559591
<div class="mr-2">
560-
<el-input
561-
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
562-
class="w-160px"
563-
v-model="item.value"
564-
/>
565-
<el-select
566-
v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
567-
class="w-160px!"
568-
v-model="item.value"
592+
<el-form-item
593+
:prop="`task${listener.type}ListenerBody.${index}.value`"
594+
:rules="{
595+
required: true,
596+
message: '参数值不能为空',
597+
trigger: 'blur'
598+
}"
569599
>
570-
<el-option
571-
v-for="(field, fIdx) in formFieldOptions"
572-
:key="fIdx"
573-
:label="field.title"
574-
:value="field.field"
575-
:disabled="!field.required"
600+
<el-input
601+
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
602+
class="w-160px"
603+
v-model="item.value"
576604
/>
577-
</el-select>
605+
</el-form-item>
606+
<el-form-item
607+
:prop="`task${listener.type}ListenerBody.${index}.value`"
608+
:rules="{
609+
required: true,
610+
message: '参数值不能为空',
611+
trigger: 'change'
612+
}"
613+
>
614+
<el-select
615+
v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
616+
class="w-160px!"
617+
v-model="item.value"
618+
>
619+
<el-option
620+
v-for="(field, fIdx) in formFieldOptions"
621+
:key="fIdx"
622+
:label="field.title"
623+
:value="field.field"
624+
:disabled="!field.required"
625+
/>
626+
</el-select>
627+
</el-form-item>
578628
</div>
579629
<div class="mr-1 flex items-center">
580630
<Icon
@@ -792,6 +842,8 @@ const {
792842
cTimeoutMaxRemindCount
793843
} = useTimeoutHandler()
794844
845+
const listenerFormRef = ref()
846+
795847
// 保存配置
796848
const saveConfig = async () => {
797849
activeTabName.value = 'user'
@@ -807,7 +859,8 @@ const saveConfig = async () => {
807859
}
808860
809861
if (!formRef) return false
810-
const valid = await formRef.value.validate()
862+
if (!listenerFormRef) return false
863+
const valid = (await formRef.value.validate()) && (await listenerFormRef.value.validate())
811864
if (!valid) return false
812865
const showText = getShowText()
813866
if (!showText) return false

0 commit comments

Comments
 (0)