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.
74 lines
2.7 KiB
74 lines
2.7 KiB
data() { |
|
var validateEveryData = (rule, value, callback) => { |
|
// console.log("callback", callback); |
|
// console.log("校验某一项的规则对象", rule); |
|
// console.log("用户输入的值", value); |
|
|
|
// 对输入框类型的校验 |
|
if (value) { |
|
if ((value + "").length > 0) { |
|
// 用于回显时候的校验,因为输入的时候是字符串类型的数字,但是回显的时候可能就是数字 |
|
callback(); // cb函数告知校验结果,必须要加 |
|
return; |
|
} |
|
} |
|
|
|
// 对下拉框类型的校验 |
|
if ( |
|
(rule.itemType == "selectOne") | |
|
(rule.itemType == "selectTwo") | |
|
(rule.itemType == "selectThree") |
|
) { |
|
if (value) { |
|
if ((value + "").length > 0) { |
|
// 注意枚举值是数字类型的,所以这里要转换成为字符串类型的 |
|
callback(); |
|
return; |
|
} |
|
} |
|
} |
|
|
|
// 根据不同的类型给予不同的校验提示 |
|
switch (rule.itemType) { |
|
case "text": |
|
callback(new Error(rule.labelName + "不能为空")); // 文本类型的规则简单,就是得填写 |
|
break; |
|
case "number": |
|
callback(new Error(rule.labelName + "请按规则填写")); // 数字类型的规则比较繁多 |
|
break; |
|
case "textarea": |
|
callback(new Error(rule.labelName + "不能为空")); // 文本域类型的规则也简单,就是得填写 |
|
break; |
|
case "selectOne": |
|
callback(new Error("请选择" + rule.labelName)); // 下拉框类型一 得填写 |
|
break; |
|
case "selectTwo": |
|
callback(new Error("请选择" + rule.labelName)); // 下拉框类型二 得填写 |
|
break; |
|
case "selectThree": |
|
callback(new Error("请选择" + rule.labelName)); // 下拉框类型三 多选数组得填写 |
|
break; |
|
case "dateRange": |
|
callback(new Error("请选择" + rule.labelName + "范围")); // 下拉框类型三 多选数组得填写 |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
}; |
|
return { |
|
// 此对象用于存储各个下拉框的数组数据值,其实也可以挂在vue的原型上,不过个人认为写在data中好些 |
|
selectTwoOptionsObj: {}, |
|
// 用于下拉框加载时的效果 |
|
loadingSelect: false, |
|
// 绑定的数据 |
|
form: {}, |
|
// 校验规则 |
|
validateEveryData: validateEveryData, |
|
}; |
|
}, |
|
|
|
作者:水冗水孚 |
|
链接:https://juejin.cn/post/7060322827148197895 |
|
来源:稀土掘金 |
|
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |