feat: 国标级联新增字段验证

This commit is contained in:
JiangQiming 2023-02-28 21:54:33 +08:00
parent 80ea19a6e2
commit 2456da950d
1 changed files with 76 additions and 11 deletions

View File

@ -157,8 +157,7 @@
message: '请输入上级SIP 地址',
},
{
max: 64,
message: '最多可输入64个字符',
validator: checkSIP,
},
]"
>
@ -213,7 +212,10 @@
:rules="[
{
required: true,
message: '请输入SIP本地地址',
message: '请选择SIP本地地址',
},
{
validator: checkLocalSIP,
},
]"
>
@ -242,11 +244,8 @@
<a-select
v-model:value="formData.port"
placeholder="请选择端口"
>
<a-select-option value="1">
1
</a-select-option>
</a-select>
:options="allListPorts"
/>
</a-col>
</a-row>
</a-form-item>
@ -261,8 +260,7 @@
message: '请输入SIP远程地址',
},
{
max: 64,
message: '最多可输入64个字符',
validator: checkPublicSIP,
},
]"
>
@ -303,6 +301,7 @@
<a-radio-group
button-style="solid"
v-model:value="formData.transport"
@change="setPorts"
>
<a-radio-button value="UDP">
UDP
@ -614,16 +613,27 @@ getClustersList();
/**
* SIP本地地址
*/
const allList = ref([]);
const allList = ref<any[]>([]);
const getAllList = async () => {
const { result } = await CascadeApi.all();
allList.value = result.map((m: any) => ({
label: m.host,
value: m.host,
}));
setPorts();
};
getAllList();
/**
* 传输协议改变, 获取对应的端口
*/
const allListPorts = ref([]);
const setPorts = () => {
allListPorts.value = allList.value.find(
(f: any) => f.host === formData.value.host,
)?.ports[formData.value.transport || ''];
};
/**
* 获取详情
*/
@ -667,6 +677,61 @@ onMounted(() => {
getDetail();
});
const regDomain =
/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/;
/**
* 上级SIP地址 字段验证
* @param _
* @param value 此处绑定的是 remoteAddress
*/
const checkSIP = (_: any, value: string) => {
return checkHost(value, formData.value.remotePort);
};
/**
* SIP远程地址 字段验证
* @param _
* @param value 此处绑定的是 publicHost
*/
const checkPublicSIP = (_: any, value: string) => {
return checkHost(value, formData.value.publicPort);
};
/**
* 字段验证
* @param host ip
* @param port 端口
*/
const checkHost = (host: string, port: string | number | undefined) => {
if (!host) {
return Promise.resolve();
} else if (!host) {
return Promise.reject(new Error('请输入IP 地址'));
} else if (host && !regDomain.test(host)) {
return Promise.reject(new Error('请输入正确的IP地址'));
} else if (!port) {
return Promise.reject(new Error('请输入端口'));
} else if ((host && Number(host) < 1) || Number(host) > 65535) {
return Promise.reject(new Error('端口请输入1~65535之间的正整数'));
}
return Promise.resolve();
};
/**
* SIP本地地址 字段验证
* @param _
* @param value
*/
const checkLocalSIP = (_: any, value: string) => {
if (!value) {
return Promise.resolve();
} else if (!value) {
return Promise.reject(new Error('请选择IP地址'));
} else if (!formData.value.port) {
return Promise.reject(new Error('请选择端口'));
}
return Promise.resolve();
};
/**
* 表单提交
*/