feat: 完善监听器表单校验

This commit is contained in:
Lesan 2025-01-10 14:48:16 +08:00
parent 401481662f
commit dc5aa6d8df

View File

@ -359,11 +359,7 @@
<el-divider content-position="left">是否需要签名</el-divider> <el-divider content-position="left">是否需要签名</el-divider>
<el-form-item prop="signEnable"> <el-form-item prop="signEnable">
<el-switch <el-switch v-model="configForm.signEnable" active-text="是" inactive-text="否" />
v-model="configForm.signEnable"
active-text="是"
inactive-text="否"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -445,7 +441,7 @@
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="监听器" name="listener"> <el-tab-pane label="监听器" name="listener">
<el-form :model="configForm" label-position="top"> <el-form ref="listenerFormRef" :model="configForm" label-position="top">
<div v-for="(listener, listenerIdx) in taskListener" :key="listenerIdx"> <div v-for="(listener, listenerIdx) in taskListener" :key="listenerIdx">
<el-divider content-position="left"> <el-divider content-position="left">
<el-text tag="b" size="large">{{ listener.name }}</el-text> <el-text tag="b" size="large">{{ listener.name }}</el-text>
@ -484,7 +480,16 @@
:key="index" :key="index"
> >
<div class="mr-2"> <div class="mr-2">
<el-form-item
:prop="`task${listener.type}ListenerHeader.${index}.key`"
:rules="{
required: true,
message: '参数名不能为空',
trigger: 'blur'
}"
>
<el-input class="w-160px" v-model="item.key" /> <el-input class="w-160px" v-model="item.key" />
</el-form-item>
</div> </div>
<div class="mr-2"> <div class="mr-2">
<el-select class="w-100px!" v-model="item.type"> <el-select class="w-100px!" v-model="item.type">
@ -497,11 +502,28 @@
</el-select> </el-select>
</div> </div>
<div class="mr-2"> <div class="mr-2">
<el-form-item
:prop="`task${listener.type}ListenerHeader.${index}.value`"
:rules="{
required: true,
message: '参数值不能为空',
trigger: 'blur'
}"
>
<el-input <el-input
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE" v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
class="w-160px" class="w-160px"
v-model="item.value" v-model="item.value"
/> />
</el-form-item>
<el-form-item
:prop="`task${listener.type}ListenerHeader.${index}.value`"
:rules="{
required: true,
message: '参数值不能为空',
trigger: 'change'
}"
>
<el-select <el-select
v-if="item.type === ListenerParamTypeEnum.FROM_FORM" v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
class="w-160px!" class="w-160px!"
@ -515,6 +537,7 @@
:disabled="!field.required" :disabled="!field.required"
/> />
</el-select> </el-select>
</el-form-item>
</div> </div>
<div class="mr-1 flex items-center"> <div class="mr-1 flex items-center">
<Icon <Icon
@ -544,7 +567,16 @@
:key="index" :key="index"
> >
<div class="mr-2"> <div class="mr-2">
<el-form-item
:prop="`task${listener.type}ListenerBody.${index}.key`"
:rules="{
required: true,
message: '参数名不能为空',
trigger: 'blur'
}"
>
<el-input class="w-160px" v-model="item.key" /> <el-input class="w-160px" v-model="item.key" />
</el-form-item>
</div> </div>
<div class="mr-2"> <div class="mr-2">
<el-select class="w-100px!" v-model="item.type"> <el-select class="w-100px!" v-model="item.type">
@ -557,11 +589,28 @@
</el-select> </el-select>
</div> </div>
<div class="mr-2"> <div class="mr-2">
<el-form-item
:prop="`task${listener.type}ListenerBody.${index}.value`"
:rules="{
required: true,
message: '参数值不能为空',
trigger: 'blur'
}"
>
<el-input <el-input
v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE" v-if="item.type === ListenerParamTypeEnum.FIXED_VALUE"
class="w-160px" class="w-160px"
v-model="item.value" v-model="item.value"
/> />
</el-form-item>
<el-form-item
:prop="`task${listener.type}ListenerBody.${index}.value`"
:rules="{
required: true,
message: '参数值不能为空',
trigger: 'change'
}"
>
<el-select <el-select
v-if="item.type === ListenerParamTypeEnum.FROM_FORM" v-if="item.type === ListenerParamTypeEnum.FROM_FORM"
class="w-160px!" class="w-160px!"
@ -575,6 +624,7 @@
:disabled="!field.required" :disabled="!field.required"
/> />
</el-select> </el-select>
</el-form-item>
</div> </div>
<div class="mr-1 flex items-center"> <div class="mr-1 flex items-center">
<Icon <Icon
@ -792,6 +842,8 @@ const {
cTimeoutMaxRemindCount cTimeoutMaxRemindCount
} = useTimeoutHandler() } = useTimeoutHandler()
const listenerFormRef = ref()
// //
const saveConfig = async () => { const saveConfig = async () => {
activeTabName.value = 'user' activeTabName.value = 'user'
@ -807,7 +859,8 @@ const saveConfig = async () => {
} }
if (!formRef) return false if (!formRef) return false
const valid = await formRef.value.validate() if (!listenerFormRef) return false
const valid = (await formRef.value.validate()) && (await listenerFormRef.value.validate())
if (!valid) return false if (!valid) return false
const showText = getShowText() const showText = getShowText()
if (!showText) return false if (!showText) return false