zcloud-ui
Version:
A Component Library for Vue.js.
67 lines (64 loc) • 2.3 kB
JavaScript
;
exports.__esModule = true;
var formValidErrObj = {};
exports.default = {
methods: {
/* 异步验证混入函数
* beforeValid 非必填 返回true 表示直接通过验证
* params 非必填 默认传参source对象 如果传入,就用 params 函数返回的 参数。
*/
formValid: function formValid(rule, value, callback, source) {
var _this = this;
if (typeof rule.beforeValid === 'function' && rule.beforeValid.call(this)) {
callback();
return;
}
var validKey = rule.url + rule.message;
if (!this._currentValue) this._currentValue = {};
if (this._currentValue[validKey] === value) {
callback(formValidErrObj[validKey]);
return;
}
var params = Object.assign({}, source);
// 有的接口返回的是 true , 但是要验证通过。也就是说翻转。
var isReverse = false;
if (typeof rule.params === 'function') {
params = rule.params.call(this, value, rule);
if (params.reverse) {
isReverse = true;
delete params.reverse;
}
}
if (rule.url) {
this.validating = this.Http(rule.url, params).then(function (result) {
delete formValidErrObj[validKey];
if (result.data && !isReverse || !result.data && isReverse) {
formValidErrObj[validKey] = result.message || rule.message;
if (rule.errorCallback) {
rule.errorCallback.call(_this);
}
callback(formValidErrObj[validKey]);
} else {
if (rule.callback) {
rule.callback.call(_this);
}
callback();
}
}).catch(function (errors) {
formValidErrObj[validKey] = errors.res.message || rule.message;
if (rule.errorCallback) {
rule.errorCallback.call(_this);
}
callback(formValidErrObj[validKey]);
}).finally(function () {
_this.validating = false;
_this._currentValue[validKey] = value;
});
} else {
formValidErrObj[validKey] = '异步验证缺少参数:[url]';
this.$message(formValidErrObj[validKey]);
callback(formValidErrObj[validKey]);
}
}
}
};