czy-avue-form-design
Version:
Vue3.0版本,因Avue还存在一些bug,请慎重使用。
99 lines (94 loc) • 2.33 kB
JavaScript
export function getAsVal(obj, bind = '') {
let result = deepClone(obj)
if (validatenull(bind)) return result
bind.split('.').forEach(ele => {
if (!validatenull(result[ele])) {
result = result[ele]
} else {
result = ''
}
});
return result
}
export function validatenull(val) {
if (val instanceof Date || typeof val === 'boolean' || typeof val === 'number' || val instanceof Array) return false;
else if (val instanceof Function) {
const fun = val.toString().replace(/\s+/g,'')
const arr = ['({value})=>{}', '(res,cb)=>{}', '(res)=>{}', '()=>{}']
if (arr.includes(fun)) return true
else return false
} else if (val instanceof Object) {
for (var o in val) {
return false;
}
return true;
} else {
if (
val === 'null' ||
val == null ||
val === 'undefined' ||
val === undefined ||
val === ''
) {
return true;
}
return false;
}
}
export const deepClone = data => {
var type = getObjType(data);
var obj;
if (type === 'array') obj = [];
else if (type === 'object') obj = {};
else return data;
if (type === 'array') {
for (var i = 0, len = data.length; i < len; i++) {
data[i] = (() => {
if (data[i] === 0) {
return data[i];
}
return data[i];
})();
if (data[i]) {
delete data[i].$parent;
}
obj.push(deepClone(data[i]));
}
} else if (type === 'object') {
for (var key in data) {
if (data) {
delete data.$parent;
}
obj[key] = deepClone(data[key]);
}
}
return obj;
};
export const getObjType = obj => {
var toString = Object.prototype.toString;
var map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
};
if (obj instanceof Element) {
return 'element';
}
return map[toString.call(obj)];
};
/**
* 验证是否存在true/false
*/
export const vaildData = (val, dafult) => {
if (typeof val === 'boolean') {
return val;
}
return !validatenull(val) ? val : dafult;
};