UNPKG

zcloud-ui

Version:

A Component Library for Vue.js.

67 lines (64 loc) 2.3 kB
'use strict'; 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]); } } } };