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