From 4f4fa499618493c5fd8832a1a0c9a3a4b42bf97c Mon Sep 17 00:00:00 2001 From: zhengkunwang223 Date: Wed, 8 Mar 2023 22:41:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E9=99=90=E5=88=B6APP?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E7=9A=84=E6=AD=A3=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/global/form-rules.ts | 19 +++++++++++++++++++ frontend/src/lang/modules/en.ts | 1 + frontend/src/lang/modules/zh.ts | 1 + .../views/app-store/detail/install/index.vue | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/frontend/src/global/form-rules.ts b/frontend/src/global/form-rules.ts index e3d41542a..8aed48753 100644 --- a/frontend/src/global/form-rules.ts +++ b/frontend/src/global/form-rules.ts @@ -132,6 +132,19 @@ const checkDatabaseName = (rule: any, value: any, callback: any) => { } }; +const checkAppName = (rule: any, value: any, callback: any) => { + if (value === '' || typeof value === 'undefined' || value == null) { + callback(new Error(i18n.global.t('commons.rule.appName'))); + } else { + const reg = /^(?![_-])[a-zA-Z0-9_-]{1,29}[a-zA-Z0-9]$/; + if (!reg.test(value) && value !== '') { + callback(new Error(i18n.global.t('commons.rule.appName'))); + } else { + callback(); + } + } +}; + const checkDomain = (rule: any, value: any, callback: any) => { if (value === '' || typeof value === 'undefined' || value == null) { callback(new Error(i18n.global.t('commons.rule.domain'))); @@ -242,6 +255,7 @@ interface CommonRule { domain: FormItemRule; databaseName: FormItemRule; nginxDoc: FormItemRule; + appName: FormItemRule; paramCommon: FormItemRule; paramComplexity: FormItemRule; @@ -368,4 +382,9 @@ export const Rules: CommonRule = { validator: checkDoc, trigger: 'blur', }, + appName: { + required: true, + trigger: 'blur', + validator: checkAppName, + }, }; diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 1587ab378..62cd56b6c 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -143,6 +143,7 @@ export default { paramComplexity: 'Support English, numbers, {0}, length 6-30', paramUrlAndPort: 'The format is http(s)://(domain name/ip):(port)', nginxDoc: 'Only supports English case, numbers, and .', + appName: 'Support English, numbers, - and _, length 2-30, and cannot start and end with -_', }, res: { paramError: 'The request failed, please try again later!', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 922deb3a1..55b04b5d9 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -148,6 +148,7 @@ export default { paramComplexity: '支持英文、数字、{0},长度6-30', paramUrlAndPort: '格式为 http(s)://(域名/ip):(端口)', nginxDoc: '仅支持英文大小写,数字,和.', + appName: '支持英文、数字、-和_,长度2-30,并且不能以-_开头和结尾', }, res: { paramError: '请求失败,请稍后重试!', diff --git a/frontend/src/views/app-store/detail/install/index.vue b/frontend/src/views/app-store/detail/install/index.vue index 80519c0a9..91dc63e4c 100644 --- a/frontend/src/views/app-store/detail/install/index.vue +++ b/frontend/src/views/app-store/detail/install/index.vue @@ -62,7 +62,7 @@ const installData = ref({ let open = ref(false); let form = ref<{ [key: string]: any }>({}); let rules = ref({ - NAME: [Rules.linuxName], + NAME: [Rules.appName], }); let loading = ref(false); const paramForm = ref();