diff --git a/src/views/ne/neInfo/components/EditModal.vue b/src/views/ne/neInfo/components/EditModal.vue index f838b3ad..65737bbb 100644 --- a/src/views/ne/neInfo/components/EditModal.vue +++ b/src/views/ne/neInfo/components/EditModal.vue @@ -4,8 +4,9 @@ import { message, Form, Modal } from 'ant-design-vue/lib'; import useI18n from '@/hooks/useI18n'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import useNeInfoStore from '@/store/modules/neinfo'; -import { getNeInfo, addNeInfo, updateNeInfo } from '@/api/ne/neInfo'; import { NE_TYPE_LIST } from '@/constants/ne-constants'; +import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils'; +import { getNeInfo, addNeInfo, updateNeInfo } from '@/api/ne/neInfo'; import { neHostAuthorizedRSA, testNeHost } from '@/api/ne/neHost'; import useDictStore from '@/store/modules/dict'; const { getDict } = useDictStore(); @@ -114,7 +115,7 @@ let modalState: ModalStateType = reactive({ ip: '', port: 33030, pvFlag: 'PNF', - rmUid: '4400HX1AMF001', + rmUid: '4400HXAMF001', neAddress: '', dn: '', vendorName: '', @@ -177,7 +178,7 @@ const modalStateFrom = Form.useForm( ip: [ { required: true, - message: '请输入网元IP地址', + validator: modalStateFromEqualIPV4AndIPV6, }, ], neName: [ @@ -189,6 +190,28 @@ const modalStateFrom = Form.useForm( }) ); +/**表单验证IP地址是否有效 */ +function modalStateFromEqualIPV4AndIPV6( + rule: Record, + value: string, + callback: (error?: string) => void +) { + if (!value) { + return Promise.reject('请输入网元IP地址'); + } + + if (value.indexOf('.') === -1 && value.indexOf(':') === -1) { + return Promise.reject('请输入有效的IP地址'); + } + if (value.indexOf('.') !== -1 && !regExpIPv4.test(value)) { + return Promise.reject('不是有效IPv4地址'); + } + if (value.indexOf(':') !== -1 && !regExpIPv6.test(value)) { + return Promise.reject('不是有效IPv6地址'); + } + return Promise.resolve(); +} + /** * 对话框弹出显示为 新增或者修改 * @param editId 网元id, 不传为新增 @@ -471,6 +494,7 @@ onMounted(() => { style="width: 100%" :min="1" :max="65535" + :maxlength="5" placeholder="<=65535" > diff --git a/src/views/ne/neQuickSetup/components/NeInfoConfig.vue b/src/views/ne/neQuickSetup/components/NeInfoConfig.vue index accb338e..791c507c 100644 --- a/src/views/ne/neQuickSetup/components/NeInfoConfig.vue +++ b/src/views/ne/neQuickSetup/components/NeInfoConfig.vue @@ -5,6 +5,7 @@ import { addNeInfo, getNeInfoByTypeAndID, updateNeInfo } from '@/api/ne/neInfo'; import { neHostAuthorizedRSA, testNeHost } from '@/api/ne/neHost'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { NE_TYPE_LIST } from '@/constants/ne-constants'; +import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils'; import { fnRestStepState, fnToStepName, stepState } from '../hooks/useStep'; import useI18n from '@/hooks/useI18n'; import useDictStore from '@/store/modules/dict'; @@ -50,7 +51,7 @@ let modalState: ModalStateType = reactive({ ip: '', port: 33030, pvFlag: 'PNF', - rmUid: '0000XX1AMF001', + rmUid: '4400HXAMF001', neAddress: '', dn: '-', vendorName: '-', @@ -107,7 +108,7 @@ const modalStateFrom = Form.useForm( ip: [ { required: true, - message: '请输入网元IP地址', + validator: modalStateFromEqualIPV4AndIPV6, }, ], port: [ @@ -119,6 +120,28 @@ const modalStateFrom = Form.useForm( }) ); +/**表单验证IP地址是否有效 */ +function modalStateFromEqualIPV4AndIPV6( + rule: Record, + value: string, + callback: (error?: string) => void +) { + if (!value) { + return Promise.reject('请输入网元IP地址'); + } + + if(value.indexOf('.') === -1 && value.indexOf(':') === -1) { + return Promise.reject('请输入有效的IP地址'); + } + if (value.indexOf('.') !== -1 && !regExpIPv4.test(value)) { + return Promise.reject('不是有效IPv4地址'); + } + if (value.indexOf(':') !== -1 && !regExpIPv6.test(value)) { + return Promise.reject('不是有效IPv6地址'); + } + return Promise.resolve(); +} + /** * 测试主机连接 */ @@ -375,7 +398,9 @@ onMounted(() => { > { style="width: 100%" :min="1" :max="65535" + :maxlength="5" placeholder="<=65535" >