You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.2 KiB
114 lines
3.2 KiB
1 year ago
|
const messages = {
|
||
|
default: "%s验证失败",
|
||
|
required: "%s是必填项",
|
||
|
enum: "%s必须是%s之一",
|
||
|
whitespace: "%s不能为空",
|
||
|
// date: {
|
||
|
// format: '%s date %s is invalid for format %s',
|
||
|
// parse: '%s date could not be parsed, %s is invalid ',
|
||
|
// invalid: '%s date %s is invalid',
|
||
|
// },
|
||
|
types: {
|
||
|
string: "%s不是有效的字符串",
|
||
|
method: "%s不是有效的函数",
|
||
|
array: "%s不是有效的数组",
|
||
|
object: "%s不是有效的对象",
|
||
|
number: "%s不是有效的数字",
|
||
|
date: "%s不是有效的日期",
|
||
|
boolean: "%s不是有效的布尔值",
|
||
|
integer: "%s不是有效的整数",
|
||
|
float: "%s不是有效的浮点数",
|
||
|
regexp: "%s不是有效的正则表达式",
|
||
|
email: "%s不是有效的邮箱",
|
||
|
url: "%s不是有效的 url",
|
||
|
hex: "%s不是有效的十六进制",
|
||
|
},
|
||
|
string: {
|
||
|
len: "%s长度必须是%s",
|
||
|
min: "%s最小长度为%s",
|
||
|
max: "%s最大长度为%s",
|
||
|
range: "%s长度必须在%s和%s之间",
|
||
|
},
|
||
|
number: {
|
||
|
len: "%s必须等于%s",
|
||
|
min: "%s不小于%s",
|
||
|
max: "%s不大于%s",
|
||
|
range: "%s必须在%s和%s之间",
|
||
|
},
|
||
|
array: {
|
||
|
len: "%s的数量必须是%s",
|
||
|
min: "%s的数量不小于%s",
|
||
|
max: "%s的数量不大于%s",
|
||
|
range: "%s的数量必须在%s和%s之间",
|
||
|
},
|
||
|
pattern: {
|
||
|
mismatch: "%s的值 %s 不匹配模式 %s",
|
||
|
},
|
||
|
clone: function clone() {
|
||
|
const cloned = JSON.parse(JSON.stringify(this));
|
||
|
cloned.clone = this.clone;
|
||
|
return cloned;
|
||
|
},
|
||
|
//
|
||
|
compare: "%s 和 %s 输入必须一致",
|
||
|
true: "%s必须选中",
|
||
|
remote: "%s远程验证失败",
|
||
|
};
|
||
|
|
||
|
const validators = {
|
||
|
compare(rule, value, callback, source, options) {
|
||
|
const errors = [];
|
||
|
if (value && value !== rule.data[rule.compare]) {
|
||
|
const message = format(options.messages.compare, rule.title, rule.schema.properties[rule.compare].title);
|
||
|
errors.push(new Error(message));
|
||
|
}
|
||
|
callback(errors);
|
||
|
},
|
||
|
true(rule, value, callback, source, options) {
|
||
|
const errors = [];
|
||
|
if (!value) {
|
||
|
const message = format(options.messages.true, rule.title);
|
||
|
errors.push(new Error(message));
|
||
|
}
|
||
|
callback(errors);
|
||
|
},
|
||
|
remote(rule, value, callback, source, options) {
|
||
|
const errors = [];
|
||
|
const message = format(options.messages.remote, rule.title);
|
||
|
if (!value) {
|
||
|
callback(errors);
|
||
|
} else {
|
||
|
const config = {
|
||
|
url: rule.url,
|
||
|
method: rule.method ?? "get",
|
||
|
};
|
||
|
const data = { [rule.field]: value };
|
||
|
if (config.method === "get") {
|
||
|
config.params = data;
|
||
|
} else {
|
||
|
config.data = data;
|
||
|
}
|
||
|
request
|
||
|
.request(config)
|
||
|
.then((response) => {
|
||
|
if (response.status === 200) {
|
||
|
if (response.data.code) {
|
||
|
if (response.data.code !== 200) {
|
||
|
errors.push(new Error(1 + response.data.message));
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
errors.push(new Error(2 + response.data));
|
||
|
}
|
||
|
callback(errors);
|
||
|
})
|
||
|
.catch((o) => {
|
||
|
errors.push(o.response?.data?.message ?? message ?? o.message);
|
||
|
callback(errors);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
};
|
||
|
|
||
|
export { messages };
|