149 lines
6.3 KiB
Diff
149 lines
6.3 KiB
Diff
From cde779dda45612036d1c25a993a80d940805e65d Mon Sep 17 00:00:00 2001
|
|
From: hugang <18768366022@163.com>
|
|
Date: Thu, 17 Oct 2024 17:03:06 +0800
|
|
Subject: [PATCH] fix input validation problem
|
|
|
|
---
|
|
packages/cron-select/index.vue | 13 ++++++++++++-
|
|
packages/cron-select/locales/lang/en.json | 3 ++-
|
|
packages/cron-select/locales/lang/zh-cn.json | 3 ++-
|
|
src/locales/lang/en.json | 1 +
|
|
src/locales/lang/zh-cn.json | 1 +
|
|
src/views/assests/HostEdition.vue | 4 +++-
|
|
src/views/execution/components/NewCommand.vue | 3 ++-
|
|
src/views/execution/components/NewScript.vue | 3 ++-
|
|
8 files changed, 25 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/packages/cron-select/index.vue b/packages/cron-select/index.vue
|
|
index 3720d29..2c27fd3 100644
|
|
--- a/packages/cron-select/index.vue
|
|
+++ b/packages/cron-select/index.vue
|
|
@@ -7,7 +7,7 @@ import Month from './Month.vue'
|
|
import Weeks from './Week.vue'
|
|
import Seconds from './Seconds.vue'
|
|
import Year from './Year.vue'
|
|
-import { ElInput, ElPopover, ElTabPane, ElTabs } from 'element-plus'
|
|
+import { ElInput, ElPopover, ElTabPane, ElTabs, ElMessage } from 'element-plus'
|
|
import 'element-plus/es/components/tabs/style/css'
|
|
import 'element-plus/es/components/tab-pane/style/css'
|
|
import 'element-plus/es/components/popover/style/css'
|
|
@@ -54,6 +54,17 @@ const emits = defineEmits(['change'])
|
|
const handleChange = (index: number, value: string) => {
|
|
if (_cron.value) {
|
|
_cron.value[index] = value
|
|
+ if (index === 3 && value !== '?') {
|
|
+ if (_cron.value[5] !== '?') {
|
|
+ ElMessage.warning(t('conflictWarning'))
|
|
+ _cron.value[5] = '?'
|
|
+ }
|
|
+ } else if (index === 5 && value !== '?') {
|
|
+ if (_cron.value[3] !== '?') {
|
|
+ ElMessage.warning(t('conflictWarning'))
|
|
+ _cron.value[3] = '?'
|
|
+ }
|
|
+ }
|
|
} else {
|
|
_cron.value = [value]
|
|
}
|
|
diff --git a/packages/cron-select/locales/lang/en.json b/packages/cron-select/locales/lang/en.json
|
|
index 98cf2ed..1fea02a 100644
|
|
--- a/packages/cron-select/locales/lang/en.json
|
|
+++ b/packages/cron-select/locales/lang/en.json
|
|
@@ -21,5 +21,6 @@
|
|
"start": "Start",
|
|
"unspecified": "Unspecified",
|
|
"week": "Week",
|
|
- "year": "Year"
|
|
+ "year": "Year",
|
|
+ "conflictWarning" : "Week and day conflict, the other has been set to unspecified"
|
|
}
|
|
diff --git a/packages/cron-select/locales/lang/zh-cn.json b/packages/cron-select/locales/lang/zh-cn.json
|
|
index 327b2cf..4bf5429 100644
|
|
--- a/packages/cron-select/locales/lang/zh-cn.json
|
|
+++ b/packages/cron-select/locales/lang/zh-cn.json
|
|
@@ -20,5 +20,6 @@
|
|
"select": "选择",
|
|
"unspecified": "不指定",
|
|
"week": "星期",
|
|
- "year": "年"
|
|
+ "year": "年",
|
|
+ "conflictWarning" : "周与日冲突,已将另一个设置为不指定"
|
|
}
|
|
diff --git a/src/locales/lang/en.json b/src/locales/lang/en.json
|
|
index 52c74fc..3191ee6 100644
|
|
--- a/src/locales/lang/en.json
|
|
+++ b/src/locales/lang/en.json
|
|
@@ -150,6 +150,7 @@
|
|
"password": "Please set the host login password",
|
|
"sshPort": "Please enter a positive integer between 0 and 65535",
|
|
"ssh_pkey": "Please set the host ssh_pkey",
|
|
+ "requireHostName": "Please enter the host name",
|
|
"username": "please enter user name",
|
|
"username_one": "Usernames are composed of numbers, English letters or special characters. They cannot contain spaces and the following special characters: :<>&,'\"\\/%.",
|
|
"username_three": "The user name consists of numbers, English letters or special characters. It cannot contain spaces and the following special characters: :<>",
|
|
diff --git a/src/locales/lang/zh-cn.json b/src/locales/lang/zh-cn.json
|
|
index c6d5b37..368818a 100644
|
|
--- a/src/locales/lang/zh-cn.json
|
|
+++ b/src/locales/lang/zh-cn.json
|
|
@@ -148,6 +148,7 @@
|
|
"ip": "请输入IP地址在 0.0.0.0~255.255.255.255 区间内",
|
|
"management": "请选择管理还是监控节点",
|
|
"password": "请设置主机登录密码",
|
|
+ "requireHostName": "请输入主机名称",
|
|
"sshPort": "请输入 0~65535 内正整数",
|
|
"ssh_pkey": "请输入主机登录密钥",
|
|
"username": "请输入用户名",
|
|
diff --git a/src/views/assests/HostEdition.vue b/src/views/assests/HostEdition.vue
|
|
index 87ed5e9..219912f 100644
|
|
--- a/src/views/assests/HostEdition.vue
|
|
+++ b/src/views/assests/HostEdition.vue
|
|
@@ -92,7 +92,8 @@ function validateHostUsername(_rule: Rule, value: string) {
|
|
* @param value
|
|
*/
|
|
function validateHostName(_rule: Rule, value: string) {
|
|
- if (/^\S?$/.test(value))
|
|
+ if (value.length === 0) return Promise.resolve()
|
|
+ if (/^\s|.*\s$/.test(value))
|
|
return Promise.reject(new Error(t('assests.validateMsg.hostName_one')))
|
|
if (!/^(?!\s*$).+/.test(value))
|
|
return Promise.reject(new Error(t('assests.validateMsg.hostName_two')))
|
|
@@ -102,6 +103,7 @@ function validateHostName(_rule: Rule, value: string) {
|
|
// form validate rules
|
|
const rules = computed<Record<string, Rule[]>>(() => ({
|
|
host_name: [
|
|
+ { required: true, message: t('assests.validateMsg.requireHostName'), trigger: 'blur' },
|
|
{ max: 50, message: t('assests.validateMsg.hostName'), trigger: 'blur' },
|
|
{
|
|
validator: validateHostName,
|
|
diff --git a/src/views/execution/components/NewCommand.vue b/src/views/execution/components/NewCommand.vue
|
|
index e063c06..c36cfb1 100644
|
|
--- a/src/views/execution/components/NewCommand.vue
|
|
+++ b/src/views/execution/components/NewCommand.vue
|
|
@@ -93,7 +93,8 @@ function validateTimeout(_rule: Rule, value: any) {
|
|
if (!value) {
|
|
return Promise.resolve()
|
|
}
|
|
- if (Number(value) < 1 || Number(value) > 86400) {
|
|
+ const val = Number(value)
|
|
+ if (val < 1 || val > 86400 || isNaN(val)) {
|
|
return Promise.reject(new Error(t('execution.command.validate.timeoutRange')))
|
|
}
|
|
return Promise.resolve()
|
|
diff --git a/src/views/execution/components/NewScript.vue b/src/views/execution/components/NewScript.vue
|
|
index 1ea8ef5..642c412 100644
|
|
--- a/src/views/execution/components/NewScript.vue
|
|
+++ b/src/views/execution/components/NewScript.vue
|
|
@@ -154,7 +154,8 @@ function validateTimeout(_rule: Rule, value: any): Promise<void> {
|
|
if (!value) {
|
|
return Promise.resolve()
|
|
}
|
|
- if (Number(value) < 1 || Number(value) > 86400) {
|
|
+ const val = Number(value)
|
|
+ if (val < 1 || val > 86400 || isNaN(val)) {
|
|
return Promise.reject(new Error(t('execution.command.validate.timeoutRange')))
|
|
}
|
|
return Promise.resolve()
|
|
--
|
|
2.43.0.windows.1
|
|
|