日照项目的居民端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

51 lines
1007 B

import rules from './rules';
/**
* 表单验证
*
* @param {Object} fmData [表单数据]
* @param {Object} opts [参数]
* @return {Object} [descrsiption]
*/
export default function(fmData, opts){
let res = {
valid: true,
error: '',
errors: [],
fields: {}
};
Object.keys(opts).forEach(key => {
let value = fmData[key],
item = opts[key],
resItem = {
valid: true,
error: '',
errors: []
};
item.forEach(ruleItem => {
let {rule, message, param} = ruleItem;
if (rules[rule]) {
if (!rules[rule].check(value, param)) {
message = message
? message
: rules[rule].message;
if (res.valid) {
res.valid = false;
res.error = message;
}
if (resItem.valid) {
resItem.valid = false;
resItem.error = message;
}
resItem.errors.push(message);
res.errors.push(message);
}
}
});
res.fields[key] = resItem;
});
return res;
}