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 };