1.validate-plugin.js
/**
* 对数据做非空判断
* 并根据传入 rules 做判断
* @param {*} rules
* @param {*} values
* @returns
*/
function validate(rules, values) {
return rules.every((rule) => {
const data = String(values[rule.prop] || '').trim();
if (!data && rule.required !== false) {
this.$message({
message: rule.message,
type: 'warning',
});
return false;
}
const { validations } = rule;
if (validations) {
//every:串联执行顺序,前报错后不执行
return validations.every((validation) => {
if (!validation.validate(data)) {
this.$message({
message: validation.message,
type: 'warning',
});
return false;
}
return true;
});
}
return true;
});
}
export default {
install(Vue) {
// eslint-disable-next-line no-param-reassign
Vue.prototype.validate = validate;
},
};
2.main.js
import validate from './validate-plugin.js'
Vue.use(validate)