lg_frontend/utils/tools.js

72 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import checkTypes from "@/utils/checkTypes";
export function guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
const r = (Math.random() * 16) | 0
const v = c === 'x' ? r : (r & 0x3) | 0x8
return v.toString(16)
})
}
export const getTheTruth = function (data) {
if (typeof data !== 'object' && typeof data !== 'string') return data
if (typeof data === 'string') {
if (data.startsWith('{') || data.startsWith('['))
return getTheTruth(JSON.parse(data))
return data
}
if (Array.isArray(data)) return data.map((item) => getTheTruth(item))
for (const key in data) data[key] = getTheTruth(data[key])
return data
}
export const isEmpty = (data) => {
return checkTypes.isUndefined(data) || checkTypes.isNull(data) || data == NaN
}
export function isDef(v) {
return v !== undefined && v !== null
}
export function isPromise(val) {
return (
isDef(val) &&
typeof val.then === 'function' &&
typeof val.catch === 'function'
)
}
export const toPromise = (task, data) => {
return new Promise((resolve, reject) => {
let _isPromise = false // 当前任务是不是一个promise
try {
// 执行任务
const results = task(data)
// 任务是一个异步函数执行promise
if (isPromise(results)) {
_isPromise = true
results.then(resolve, reject)
} else {
// 非异步任务
resolve(results)
}
} catch (e) {
if (!_isPromise) {
reject(e)
}
}
})
}
export function getSize(size, defaultValue = undefined) {
if (!size) {
if (checkTypes.isNumber(size)) return size
return defaultValue || undefined
}
if (/^\-?\d+$/.test(`${size}`)) return `${size}px`
if (/(%|px)$/.test(`${size}`)) return size
if (/calc/.test(`${size}`)) return size
return size
}