vue-apps/com.actionsoft.apps.coe.pal/api/validator/validator.js
shangxiaoran@qq.com 9d8f9f0e92 初始化应用
2022-06-28 01:29:37 +08:00

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