@cataract6545/tmui
Version:
tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI
76 lines (71 loc) • 1.94 kB
text/typescript
import type { rulesItem } from "./interface"
import type { formItem } from "./../tm-form/interface";
export function validateFunCall(rules: Array<rulesItem>, value: any) {
rules = rules.map((el) => {
if (typeof el.validator === "function" && el.required === true) {
return el;
} else if (typeof el.validator === "boolean" && el.required === true) {
return {
...el,
validator: (val: any) => {
if (val === null || val === "" || typeof val == "undefined") return false;
if (typeof val === "object") {
if (Array.isArray(val)) {
if (val.length == 0) return false;
} else if (Object.keys(val).length === 0 && val.constructor === Object) {
return false;
}
}
if (typeof val === "boolean") {
return val;
}
if (typeof val === "number") {
if (isNaN(val)) return false;
if (Number(val) < 0) return false;
}
if (typeof val === "string") {
if (val.trim().length == 0) return false;
}
return true;
},
};
} else {
return {
...el,
validator: (val: string | number) => {
return true;
},
};
}
});
let rules_filter: Array<rulesItem> = rules.filter((el) => {
return typeof el.validator === "function" && el.required === true;
});
let rules_fun: Array<rulesItem> = rules_filter.map((el) => {
let validator = true;
if (typeof el.validator === "function") {
let vr = el.validator(value);
if (vr) {
validator = true;
} else {
validator = false;
}
} else {
validator = true;
}
return {
message: String(el.message),
validator: validator,
}
});
return rules_fun;
};
export function getObjectVal(obj: any, field = "") {
if (field == "") return obj;
var arr = field.split(".");
while (arr.length > 1) {
let key = String(arr.shift());
obj = obj[key];
}
return obj[arr[0]];
}