1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-02-01 22:48:06 +08:00
1Panel/frontend/src/global/form-rules.ts

628 lines
20 KiB
Go
Raw Normal View History

2022-08-16 23:30:23 +08:00
import i18n from '@/lang';
import { FormItemRule } from 'element-plus';
2022-08-18 18:51:27 +08:00
const checkIp = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
} else {
const reg =
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.ip')));
} else {
callback();
}
}
};
2023-07-07 17:41:13 +08:00
const checkIpV4V6 = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
} else {
const IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
const IPv4AddressFormat = `(${IPv4SegmentFormat}[.]){3}${IPv4SegmentFormat}`;
const IPv4AddressRegExp = new RegExp(`^${IPv4AddressFormat}$`);
const IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
const IPv6AddressRegExp = new RegExp(
'^(' +
`(?:${IPv6SegmentFormat}:){7}(?:${IPv6SegmentFormat}|:)|` +
`(?:${IPv6SegmentFormat}:){6}(?:${IPv4AddressFormat}|:${IPv6SegmentFormat}|:)|` +
`(?:${IPv6SegmentFormat}:){5}(?::${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,2}|:)|` +
`(?:${IPv6SegmentFormat}:){4}(?:(:${IPv6SegmentFormat}){0,1}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,3}|:)|` +
`(?:${IPv6SegmentFormat}:){3}(?:(:${IPv6SegmentFormat}){0,2}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,4}|:)|` +
`(?:${IPv6SegmentFormat}:){2}(?:(:${IPv6SegmentFormat}){0,3}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,5}|:)|` +
`(?:${IPv6SegmentFormat}:){1}(?:(:${IPv6SegmentFormat}){0,4}:${IPv4AddressFormat}|(:${IPv6SegmentFormat}){1,6}|:)|` +
`(?::((?::${IPv6SegmentFormat}){0,5}:${IPv4AddressFormat}|(?::${IPv6SegmentFormat}){1,7}|:))` +
')(%[0-9a-zA-Z-.:]{1,})?$',
);
if (!IPv4AddressRegExp.test(value) && !IPv6AddressRegExp.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.ip')));
} else {
callback();
}
}
};
2023-03-17 10:54:16 +08:00
const checkHost = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
} else {
const regIP =
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
const regHost = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
if (!regIP.test(value) && !regHost.test(value)) {
callback(new Error(i18n.global.t('commons.rule.host')));
} else {
callback();
}
}
};
const checkIllegal = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.requiredInput')));
return;
}
if (
value.indexOf('&') !== -1 ||
value.indexOf('|') !== -1 ||
value.indexOf(';') !== -1 ||
value.indexOf('$') !== -1 ||
value.indexOf("'") !== -1 ||
value.indexOf('`') !== -1 ||
value.indexOf('(') !== -1 ||
value.indexOf(')') !== -1
) {
callback(new Error(i18n.global.t('commons.rule.illegalInput')));
} else {
callback();
}
};
2022-09-16 16:00:49 +08:00
const complexityPassword = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.complexityPassword')));
} else {
2023-03-01 19:11:51 +08:00
const reg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,30}$/;
2022-09-16 16:00:49 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.complexityPassword')));
} else {
callback();
}
}
};
const checkName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.commonName')));
} else {
const reg = /^[a-zA-Z0-9\u4e00-\u9fa5]{1}[a-zA-Z0-9_.\u4e00-\u9fa5-]{0,29}$/;
2022-09-16 16:00:49 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.commonName')));
} else {
callback();
}
}
};
const checkUserName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.userName')));
} else {
2023-03-11 17:50:26 +08:00
const reg = /[a-zA-Z0-9_\u4e00-\u9fa5]{3,30}$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.userName')));
} else {
callback();
}
}
};
2022-12-21 13:03:49 +08:00
const checkSimpleName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.simpleName')));
} else {
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_]{0,30}$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.simpleName')));
} else {
callback();
}
}
};
const checkDBName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.dbName')));
} else {
const reg = /^[a-zA-Z0-9\u4e00-\u9fa5]{1}[a-zA-Z0-9_.\u4e00-\u9fa5-]{0,64}$/;
2022-12-21 13:03:49 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.dbName')));
} else {
callback();
}
}
};
const checkImageName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
2022-12-21 13:03:49 +08:00
callback(new Error(i18n.global.t('commons.rule.imageName')));
} else {
2023-03-10 00:27:41 +08:00
const reg = /^[a-zA-Z0-9]{1}[a-z:A-Z0-9_/.-]{0,150}$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.imageName')));
} else {
callback();
}
}
};
2023-02-24 12:26:23 +08:00
const checkVolumeName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.volumeName')));
} else {
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_.-]{1,30}$/;
2023-02-24 12:26:23 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.volumeName')));
} else {
callback();
}
}
};
const checkLinuxName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
2023-03-08 22:28:21 +08:00
callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?\'"<>|'])));
} else {
const reg = /^[^/\\\"'|<>?*]{1,128}$/;
if (!reg.test(value) && value !== '') {
2023-03-08 22:28:21 +08:00
callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?\'"<>|'])));
} else {
callback();
}
}
};
2022-12-23 14:50:28 +08:00
const checkDatabaseName = (rule: any, value: any, callback: any) => {
2022-12-12 15:51:55 +08:00
if (value === '' || typeof value === 'undefined' || value == null) {
2022-12-23 14:50:28 +08:00
callback(new Error(i18n.global.t('commons.rule.databaseName')));
2022-12-12 15:51:55 +08:00
} else {
2022-12-23 14:50:28 +08:00
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_]{0,30}$/;
2022-12-12 15:51:55 +08:00
if (!reg.test(value) && value !== '') {
2022-12-23 14:50:28 +08:00
callback(new Error(i18n.global.t('commons.rule.databaseName')));
2022-12-12 15:51:55 +08:00
} else {
callback();
}
}
};
2023-03-08 22:41:45 +08:00
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();
}
}
};
2022-12-23 14:50:28 +08:00
const checkDomain = (rule: any, value: any, callback: any) => {
2022-12-20 23:18:33 +08:00
if (value === '' || typeof value === 'undefined' || value == null) {
2022-12-23 14:50:28 +08:00
callback(new Error(i18n.global.t('commons.rule.domain')));
2022-12-20 23:18:33 +08:00
} else {
2022-12-23 14:50:28 +08:00
const reg =
/^([\w\u4e00-\u9fa5\-\*]{1,100}\.){1,10}([\w\u4e00-\u9fa5\-]{1,24}|[\w\u4e00-\u9fa5\-]{1,24}\.[\w\u4e00-\u9fa5\-]{1,24})$/;
2022-12-20 23:18:33 +08:00
if (!reg.test(value) && value !== '') {
2022-12-23 14:50:28 +08:00
callback(new Error(i18n.global.t('commons.rule.domain')));
2022-12-20 23:18:33 +08:00
} else {
callback();
}
}
};
2023-03-11 17:50:26 +08:00
const checkIntegerNumber = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.integer')));
} else {
const reg = /^[1-9]\d*$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.integer')));
} else {
callback();
}
}
};
const checkIntegerNumberWith0 = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.integer')));
} else {
const reg = /^[0-9]*$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.integer')));
} else {
callback();
}
}
};
const checkFloatNumber = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.integer')));
} else {
const reg = /^\d+(\.\d+)?$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.number')));
} else {
callback();
}
}
};
2023-03-01 17:36:42 +08:00
const checkParamCommon = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.paramName')));
} else {
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9._-]{1,63}$/;
2023-03-01 17:36:42 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.paramName')));
} else {
callback();
}
}
};
const checkParamComplexity = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
2023-03-10 15:34:26 +08:00
callback(new Error(i18n.global.t('commons.rule.paramComplexity', ['.%@$!&~_-'])));
2023-03-01 17:36:42 +08:00
} else {
const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9.%@$!&~_-]{5,127}$/;
2023-03-01 17:36:42 +08:00
if (!reg.test(value) && value !== '') {
2023-03-10 15:34:26 +08:00
callback(new Error(i18n.global.t('commons.rule.paramComplexity', ['.%@$!&~_-'])));
2023-03-01 17:36:42 +08:00
} else {
callback();
}
}
};
const checkParamUrlAndPort = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.paramUrlAndPort')));
} else {
const reg =
/^(https?:\/\/)?((localhost)|([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+)(:[1-9]\d{0,3}|:[1-5]\d{4}|:6[0-4]\d{3}|:65[0-4]\d{2}|:655[0-2]\d|:6553[0-5])?(\/\S*)?$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.paramUrlAndPort')));
} else {
callback();
}
}
};
2023-03-08 22:28:21 +08:00
const checkPort = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.port')));
} else {
const reg = /^([1-9](\d{0,3}))$|^([1-5]\d{4})$|^(6[0-4]\d{3})$|^(65[0-4]\d{2})$|^(655[0-2]\d)$|^(6553[0-5])$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.port')));
} else {
callback();
}
}
};
2023-03-08 18:30:50 +08:00
const checkDoc = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.nginxDoc')));
} else {
const reg = /^[A-Za-z0-9\n./]+$/;
2023-03-08 18:30:50 +08:00
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.nginxDoc')));
} else {
callback();
}
}
};
2023-03-02 15:46:42 +08:00
export function checkNumberRange(min: number, max: number): FormItemRule {
return {
required: false,
2023-03-02 15:46:42 +08:00
trigger: 'blur',
min: min,
max: max,
type: 'number',
message: i18n.global.t('commons.rule.numberRange', [min, max]),
};
}
export function checkFloatNumberRange(min: number, max: number): FormItemRule {
let validatorFunc = function (rule: any, value: any, callback: any) {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
} else {
if ((Number(value) < min || Number(value) > max) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
} else {
callback();
}
}
};
return {
required: false,
trigger: 'blur',
validator: validatorFunc,
message: i18n.global.t('commons.rule.numberRange', [min, max]),
};
}
const checkContainerName = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback();
} else {
const reg = /^[a-zA-Z0-9][a-zA-Z0-9_.-]{1,127}$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.containerName')));
} else {
callback();
}
}
};
const checkDisableFunctions = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
} else {
const reg = /^[a-zA-Z_,]+$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.disableFunction')));
} else {
callback();
}
}
};
const checkLeechExts = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback(new Error(i18n.global.t('commons.rule.leechExts')));
} else {
const reg = /^[a-zA-Z0-9,]+$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.leechExts')));
} else {
callback();
}
}
};
const checkParamSimple = (rule: any, value: any, callback: any) => {
if (value === '' || typeof value === 'undefined' || value == null) {
callback();
} else {
const reg = /^[a-z0-9][a-z0-9]{1,128}$/;
if (!reg.test(value) && value !== '') {
callback(new Error(i18n.global.t('commons.rule.paramSimple')));
} else {
callback();
}
}
};
2022-08-16 23:30:23 +08:00
interface CommonRule {
2022-08-18 18:51:27 +08:00
requiredInput: FormItemRule;
requiredSelect: FormItemRule;
2022-11-02 18:18:20 +08:00
requiredSelectBusiness: FormItemRule;
2022-08-16 23:30:23 +08:00
name: FormItemRule;
userName: FormItemRule;
2022-12-21 13:03:49 +08:00
simpleName: FormItemRule;
dbName: FormItemRule;
imageName: FormItemRule;
2023-02-24 12:26:23 +08:00
volumeName: FormItemRule;
linuxName: FormItemRule;
2022-09-16 16:00:49 +08:00
password: FormItemRule;
2022-08-16 23:30:23 +08:00
email: FormItemRule;
2022-09-14 23:27:17 +08:00
number: FormItemRule;
2023-03-11 17:50:26 +08:00
integerNumber: FormItemRule;
integerNumberWith0: FormItemRule;
floatNumber: FormItemRule;
2022-08-18 18:51:27 +08:00
ip: FormItemRule;
2023-07-07 17:41:13 +08:00
ipV4V6: FormItemRule;
2023-03-17 10:54:16 +08:00
host: FormItemRule;
illegal: FormItemRule;
2022-08-18 18:51:27 +08:00
port: FormItemRule;
2022-12-12 15:51:55 +08:00
domain: FormItemRule;
2022-12-20 23:18:33 +08:00
databaseName: FormItemRule;
2023-03-08 18:30:50 +08:00
nginxDoc: FormItemRule;
2023-03-08 22:41:45 +08:00
appName: FormItemRule;
containerName: FormItemRule;
disabledFunctions: FormItemRule;
leechExts: FormItemRule;
2023-03-01 17:36:42 +08:00
paramCommon: FormItemRule;
paramComplexity: FormItemRule;
paramPort: FormItemRule;
paramExtUrl: FormItemRule;
paramSimple: FormItemRule;
2022-08-16 23:30:23 +08:00
}
export const Rules: CommonRule = {
2022-08-18 18:51:27 +08:00
requiredInput: {
2022-08-16 23:30:23 +08:00
required: true,
2022-08-18 18:51:27 +08:00
message: i18n.global.t('commons.rule.requiredInput'),
2022-08-16 23:30:23 +08:00
trigger: 'blur',
},
2022-08-18 18:51:27 +08:00
requiredSelect: {
required: true,
message: i18n.global.t('commons.rule.requiredSelect'),
trigger: 'change',
},
2022-11-02 18:18:20 +08:00
requiredSelectBusiness: {
required: true,
min: 1,
max: 65535,
type: 'number',
message: i18n.global.t('commons.rule.requiredSelect'),
trigger: 'change',
},
2022-12-21 13:03:49 +08:00
simpleName: {
required: true,
validator: checkSimpleName,
trigger: 'blur',
},
dbName: {
required: true,
validator: checkDBName,
trigger: 'blur',
},
imageName: {
required: true,
validator: checkImageName,
trigger: 'blur',
},
2023-02-24 12:26:23 +08:00
volumeName: {
required: true,
validator: checkVolumeName,
trigger: 'blur',
},
2022-08-16 23:30:23 +08:00
name: {
required: true,
2022-09-16 16:00:49 +08:00
validator: checkName,
trigger: 'blur',
},
userName: {
required: true,
validator: checkUserName,
trigger: 'blur',
2022-09-16 16:00:49 +08:00
},
linuxName: {
required: true,
validator: checkLinuxName,
trigger: 'blur',
},
2022-12-20 23:18:33 +08:00
databaseName: {
required: true,
validator: checkDatabaseName,
trigger: 'blur',
},
2022-09-16 16:00:49 +08:00
password: {
validator: complexityPassword,
2022-08-16 23:30:23 +08:00
trigger: 'blur',
},
email: {
2022-09-16 16:00:49 +08:00
required: true,
2022-08-16 23:30:23 +08:00
type: 'email',
message: i18n.global.t('commons.rule.email'),
trigger: 'blur',
},
2022-09-14 23:27:17 +08:00
number: {
required: true,
trigger: 'blur',
min: 0,
type: 'number',
message: i18n.global.t('commons.rule.number'),
},
2023-03-11 17:50:26 +08:00
integerNumber: {
required: true,
validator: checkIntegerNumber,
trigger: 'blur',
},
integerNumberWith0: {
required: true,
validator: checkIntegerNumberWith0,
trigger: 'blur',
},
floatNumber: {
required: true,
validator: checkFloatNumber,
trigger: 'blur',
min: 0,
message: i18n.global.t('commons.rule.number'),
},
2022-08-18 18:51:27 +08:00
ip: {
validator: checkIp,
required: true,
trigger: 'blur',
},
2023-07-07 17:41:13 +08:00
ipV4V6: {
validator: checkIpV4V6,
required: true,
trigger: 'blur',
},
2023-03-17 10:54:16 +08:00
host: {
validator: checkHost,
required: true,
trigger: 'blur',
},
illegal: {
validator: checkIllegal,
required: true,
trigger: 'blur',
},
2022-08-18 18:51:27 +08:00
port: {
required: true,
trigger: 'blur',
min: 1,
max: 65535,
type: 'number',
message: i18n.global.t('commons.rule.port'),
},
2022-12-12 15:51:55 +08:00
domain: {
required: true,
validator: checkDomain,
trigger: 'blur',
},
2023-03-01 17:36:42 +08:00
paramCommon: {
required: true,
validator: checkParamCommon,
trigger: 'blur',
},
paramComplexity: {
required: true,
validator: checkParamComplexity,
trigger: 'blur',
},
paramPort: {
required: true,
trigger: 'blur',
2023-03-08 22:28:21 +08:00
validator: checkPort,
2023-03-01 17:36:42 +08:00
},
paramExtUrl: {
required: true,
validator: checkParamUrlAndPort,
trigger: 'blur',
},
2023-03-08 18:30:50 +08:00
nginxDoc: {
required: true,
validator: checkDoc,
trigger: 'blur',
},
2023-03-08 22:41:45 +08:00
appName: {
required: true,
trigger: 'blur',
validator: checkAppName,
},
containerName: {
required: false,
trigger: 'blur',
validator: checkContainerName,
},
disabledFunctions: {
required: true,
trigger: 'blur',
validator: checkDisableFunctions,
},
leechExts: {
required: true,
trigger: 'blur',
validator: checkLeechExts,
},
paramSimple: {
required: true,
trigger: 'blur',
validator: checkParamSimple,
},
2022-08-16 23:30:23 +08:00
};