diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 5c6432555..91910214f 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1173,6 +1173,8 @@ const message = { emailHelper: 'For password retrieval', title: 'Panel Alias', panelPort: 'Panel Port', + titleHelper: + 'Supports non-special character starting, English, Chinese, numbers, spaces, .- and _, length 3-30', portHelper: 'The recommended port range is 8888 to 65535. Note: If the server has a security group, permit the new port from the security group in advance', portChange: 'Port change', diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts index c16e808f8..559c92cfb 100644 --- a/frontend/src/lang/modules/tw.ts +++ b/frontend/src/lang/modules/tw.ts @@ -1116,6 +1116,7 @@ const message = { emailHelper: '用於密碼找回', title: '面板別名', panelPort: '面板端口', + titleHelper: '支援非特殊字符開頭,英文、中文、數字、空格、.-和_, 長度3-30', portHelper: '建議端口範圍8888 - 65535,註意:有安全組的服務器請提前在安全組放行新端口', portChange: '端口修改', portChangeHelper: '服務端口修改需要重啟服務,是否繼續?', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 2af5e9b07..9b797c164 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1116,6 +1116,7 @@ const message = { passwd: '面板密码', emailHelper: '用于密码找回', title: '面板别名', + titleHelper: '支持非特殊字符开头,英文、中文、数字、空格、.-和_,长度3-30', panelPort: '面板端口', portHelper: '建议端口范围8888 - 65535,注意:有安全组的服务器请提前在安全组放行新端口', portChange: '端口修改', diff --git a/frontend/src/views/setting/panel/name/index.vue b/frontend/src/views/setting/panel/name/index.vue index d11137b18..615e0dd74 100644 --- a/frontend/src/views/setting/panel/name/index.vue +++ b/frontend/src/views/setting/panel/name/index.vue @@ -4,10 +4,17 @@ - + - + @@ -30,7 +37,6 @@ import i18n from '@/lang'; import { MsgSuccess } from '@/utils/message'; import { updateSetting } from '@/api/modules/setting'; import { FormInstance } from 'element-plus'; -import { Rules } from '@/global/form-rules'; import { GlobalStore } from '@/store'; import DrawerHeader from '@/components/drawer-header/index.vue'; const globalStore = GlobalStore(); @@ -47,6 +53,20 @@ const loading = ref(); const form = reactive({ panelName: '', }); +const rules = reactive({ + panelName: [{ validator: checkPanelName, trigger: 'blur', required: true }], +}); + +function checkPanelName(rule: any, value: any, callback: any) { + if (value === '') { + return callback(new Error(i18n.global.t('setting.titleHelper'))); + } + const reg = /^[a-zA-Z0-9\u4e00-\u9fa5]{1}[a-zA-Z0-9_ .\u4e00-\u9fa5-]{2,29}$/; + if (!reg.test(value)) { + return callback(new Error(i18n.global.t('setting.titleHelper'))); + } + callback(); +} const formRef = ref();