110 lines
2.7 KiB
JavaScript
110 lines
2.7 KiB
JavaScript
import Vue from "vue";
|
|
import {extend} from "vee-validate";
|
|
import {configure} from "vee-validate";
|
|
import {required, email} from "vee-validate/dist/rules";
|
|
import {ValidationProvider} from "vee-validate";
|
|
import {ValidationObserver} from "vee-validate";
|
|
//import {messages} from "vee-validate/dist/locale/en.json";
|
|
import {setInteractionMode} from "vee-validate";
|
|
import "./validator.css";
|
|
// import "./validator.less";
|
|
|
|
const nullMsg = {
|
|
notNull: "必填",
|
|
imperfect: "{_field_}信息不完善"
|
|
};
|
|
//过滤英文格式双引号
|
|
extend("not_doubleQuotes", {
|
|
validate: value => {
|
|
return value.indexOf("\"") < 0;
|
|
},
|
|
message: "{_field_}不能包含字符'\"'"
|
|
});
|
|
//过滤英文格式冒号
|
|
extend("not_colon", {
|
|
validate: value => {
|
|
return value.indexOf(":") < 0;
|
|
},
|
|
message: "{_field_}不能包含字符':'"
|
|
});
|
|
//过滤英文格式单引号
|
|
extend("not_apostrophe", {
|
|
validate: value => {
|
|
return value.indexOf("'") < 0;
|
|
},
|
|
message: "{_field_}不能包含字符'"
|
|
});
|
|
//判断合法包名加合法类名
|
|
extend("legal_class_name", {
|
|
validate: value => {
|
|
let reg = /^[a-zA-Z]+[0-9a-zA-Z_]*(\.[a-zA-Z]+[0-9a-zA-Z_]*)*\.[a-zA-Z]+[0-9a-zA-Z_]*$/g;
|
|
return reg.test(value);
|
|
},
|
|
message: "java类名不合法"
|
|
});
|
|
//不允许为空
|
|
extend("not_null", {
|
|
validate: value => {
|
|
return value !== "" && value.length > 0;
|
|
},
|
|
message: "{_field_}信息不完善"
|
|
});
|
|
//最大长度
|
|
extend("maxLength", {
|
|
validate: (value, {max}) => {
|
|
return value.length <= max;
|
|
},
|
|
params: ["max"],
|
|
message: "不允许超过{max}个字符"
|
|
});
|
|
//数值区间
|
|
extend("minMax", {
|
|
validate: (value, {min, max}) => {
|
|
value = parseInt(value);
|
|
min = parseInt(min);
|
|
max = parseInt(max);
|
|
return min <= value && value <= max;
|
|
},
|
|
params: ["min", "max"],
|
|
message: "{_field_}只能在{min}到{max}之间,且包含{min}和{max}"
|
|
});
|
|
//只能是数值
|
|
extend("is_number", {
|
|
validate: value => {
|
|
return new RegExp("^[0-9]*$").test(value);
|
|
},
|
|
message: "{_field_}只能是正整数"
|
|
});
|
|
//JavaScript语法校验
|
|
extend("javaScript_required", {
|
|
validate: value => {
|
|
let reg = /^function[\n\s]+(.+)[\n\s]*\((.*)\)[\n\s]*{((.|\n)*)}[\n\s]*$/g;
|
|
return reg.test(value);
|
|
},
|
|
message: "{_field_}语法错误,请检查"
|
|
});
|
|
extend("required", {
|
|
...required,
|
|
message: nullMsg.notNull
|
|
});
|
|
|
|
extend("teamName_formatCheck",{
|
|
validate: value => {
|
|
let reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/g;
|
|
return reg.test(value);
|
|
},
|
|
message: "只能输入字母、数字、汉字或下划线"
|
|
})
|
|
|
|
configure({
|
|
classes: {
|
|
valid: "is-valid ",
|
|
invalid: "is-invalid",
|
|
dirty: ["is-dirty", "is-dirty"] // multiple classes per flag!
|
|
// ...
|
|
}
|
|
});
|
|
Vue.component("ValidationProvider", ValidationProvider);
|
|
Vue.component("ValidationObserver", ValidationObserver);
|
|
|