359
359
360
360
<el-divider content-position =" left" >是否需要签名</el-divider >
361
361
<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 =" 否" />
367
363
</el-form-item >
368
364
</el-form >
369
365
</div >
445
441
</div >
446
442
</el-tab-pane >
447
443
<el-tab-pane label =" 监听器" name =" listener" >
448
- <el-form :model =" configForm" label-position =" top" >
444
+ <el-form ref = " listenerFormRef " :model =" configForm" label-position =" top" >
449
445
<div v-for =" (listener, listenerIdx) in taskListener" :key =" listenerIdx" >
450
446
<el-divider content-position =" left" >
451
447
<el-text tag =" b" size =" large" >{{ listener.name }}</el-text >
484
480
:key =" index"
485
481
>
486
482
<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 >
488
493
</div >
489
494
<div class =" mr-2" >
490
495
<el-select class =" w-100px!" v-model =" item.type" >
497
502
</el-select >
498
503
</div >
499
504
<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
+ }"
509
512
>
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"
516
517
/>
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 >
518
541
</div >
519
542
<div class =" mr-1 flex items-center" >
520
543
<Icon
544
567
:key =" index"
545
568
>
546
569
<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 >
548
580
</div >
549
581
<div class =" mr-2" >
550
582
<el-select class =" w-100px!" v-model =" item.type" >
557
589
</el-select >
558
590
</div >
559
591
<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
+ }"
569
599
>
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"
576
604
/>
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 >
578
628
</div >
579
629
<div class =" mr-1 flex items-center" >
580
630
<Icon
@@ -792,6 +842,8 @@ const {
792
842
cTimeoutMaxRemindCount
793
843
} = useTimeoutHandler ()
794
844
845
+ const listenerFormRef = ref ()
846
+
795
847
// 保存配置
796
848
const saveConfig = async () => {
797
849
activeTabName .value = ' user'
@@ -807,7 +859,8 @@ const saveConfig = async () => {
807
859
}
808
860
809
861
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 ())
811
864
if (! valid ) return false
812
865
const showText = getShowText ()
813
866
if (! showText ) return false
0 commit comments