From dce068fcb16e745215ed4773485dfcdc077db658 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 9 Mar 2024 18:08:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E4=B8=BB=E6=9C=BA?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=A0=A1=E9=AA=8C=E5=92=8C=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ne/neHost.ts | 15 +- src/i18n/locales/en-US.ts | 2 + src/i18n/locales/zh-CN.ts | 2 + src/views/ne/neHost/index.vue | 58 ++- .../neQuickSetup/components/StepCheck.vue | 358 ++++++++++++++++++ 5 files changed, 426 insertions(+), 9 deletions(-) create mode 100644 src/views/tool/neQuickSetup/components/StepCheck.vue diff --git a/src/api/ne/neHost.ts b/src/api/ne/neHost.ts index 51f22bc5..f5b46b6b 100644 --- a/src/api/ne/neHost.ts +++ b/src/api/ne/neHost.ts @@ -74,4 +74,17 @@ export function testNeHost(data: Record) { method: 'post', data: data, }); -} \ No newline at end of file +} + +/** + * 网元主机SSH方式检查服务器环境 + * @param data 网元主机对象 + * @returns object + */ +export function neHostCheckInfo(data: Record) { + return request({ + url: '/ne/host/checkBySSH', + method: 'post', + data: data, + }); +} diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index 7a2b786f..83f19b88 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -601,10 +601,12 @@ export default { addr: "IP Addr", addrPlease: "Please fill in the host IP address correctly", port: "Port", + portPlease: "Please fill in the host port number correctly", user: "Login User", userPlease: "Please fill in the host login user correctly", authMode: "Auth Mode", password: "Password", + passwordPlease: "Please fill in the host login password correctly", privateKey: "Private Key", privateKeyPlease: "Please fill in the private key characters correctly ~/.ssh/id_rsa", passPhrase: "Private Key Cipher", diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index 8e35524b..91ced0ee 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -601,10 +601,12 @@ export default { addr: "IP地址", addrPlease: "请正确填写主机IP地址", port: "端口", + portPlease: "请正确填写主机端口号", user: "用户名", userPlease: "请正确填写主机登录用户", authMode: "认证模式", password: "密码", + passwordPlease: "请正确填写主机登录密码", privateKey: "私钥", privateKeyPlease: "请正确填写私钥字符内容 ~/.ssh/id_rsa", passPhrase: "私钥密码", diff --git a/src/views/ne/neHost/index.vue b/src/views/ne/neHost/index.vue index a4e9c66d..d327e70e 100644 --- a/src/views/ne/neHost/index.vue +++ b/src/views/ne/neHost/index.vue @@ -257,10 +257,16 @@ const modalStateFrom = Form.useForm( { required: true, min: 1, - max: 50, + max: 128, message: t('views.ne.neHost.addrPlease'), }, ], + port: [ + { + required: true, + message: t('views.ne.neHost.portPlease'), + }, + ], user: [ { required: true, @@ -269,6 +275,22 @@ const modalStateFrom = Form.useForm( message: t('views.ne.neHost.userPlease'), }, ], + password: [ + { + required: true, + min: 1, + max: 128, + message: t('views.ne.neHost.passwordPlease'), + }, + ], + privateKey: [ + { + required: true, + min: 1, + max: 128, + message: t('views.ne.neHost.privateKeyPlease'), + }, + ], }) ); @@ -305,12 +327,19 @@ function fnModalVisibleByEdit(roleId?: string | number) { * 进行表达规则校验 */ function fnModalOk() { + if (modalState.confirmLoading) return; + const form = toRaw(modalState.from); + const validateArr = ['title', 'addr', 'port', 'user']; + if (form.authMode === '0') { + validateArr.push('password'); + } else { + validateArr.push('privateKey'); + } modalStateFrom - .validate() + .validate(validateArr) .then(() => { modalState.confirmLoading = true; - const from = toRaw(modalState.from); - const neHost = from.hostId ? updateNeHost(from) : addNeHost(from); + const neHost = form.hostId ? updateNeHost(form) : addNeHost(form); const hide = message.loading(t('common.loading'), 0); neHost .then(res => { @@ -380,13 +409,20 @@ function fnRecordDelete(hostId: string) { * 对话框弹出测试连接 */ function fnModalTest() { + if (modalState.confirmLoading) return; + const form = toRaw(modalState.from); + const validateArr = ['title', 'addr', 'port', 'user']; + if (form.authMode === '0') { + validateArr.push('password'); + } else { + validateArr.push('privateKey'); + } modalStateFrom - .validate() + .validate(validateArr) .then(() => { modalState.confirmLoading = true; - const from = toRaw(modalState.from); const hide = message.loading(t('common.loading'), 0); - testNeHost(from) + testNeHost(form) .then(res => { if (res.code === RESULT_CODE_SUCCESS) { message.success({ @@ -664,7 +700,11 @@ onMounted(() => { - + { v-if="modalState.from.authMode === '0'" :label="t('views.ne.neHost.password')" name="password" + v-bind="modalStateFrom.validateInfos.password" :label-col="{ span: 3 }" :label-wrap="true" > @@ -726,6 +767,7 @@ onMounted(() => { diff --git a/src/views/tool/neQuickSetup/components/StepCheck.vue b/src/views/tool/neQuickSetup/components/StepCheck.vue new file mode 100644 index 00000000..a336d9cf --- /dev/null +++ b/src/views/tool/neQuickSetup/components/StepCheck.vue @@ -0,0 +1,358 @@ + + + + +