/** * 对象深度拷贝 * @param obj * @returns {Array} */ export function objClone(obj) { const result = Array.isArray(obj) ? [] : {} if (obj == undefined) { return result } for (const key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object') { result[key] = objClone(obj[key]) // 递归复制 } else { result[key] = obj[key] } } } return result } /* 检查空 */ export function isBlank(str) { return str === undefined || str === 'undefined' || str === null || str === '' || str === 'null' || str === '[]' || str === '{}' || str === null || str === JSON.stringify({}) || str === JSON.stringify([]) } export function isNotBlank(str) { return !isBlank(str) } /** * 两数相加 arg1 + arg2 * @param arg1 * @param arg2 * @returns {number} */ export function add(arg1, arg2) { let t = 0 arg1 = arg1 ? arg1.toString() : '0' arg2 = arg2 ? arg2.toString() : '0' if (arg1.includes('.')) { t = arg1.split('.')[1].length } if (arg2.includes('.')) { t = Math.max(arg2.split('.')[1].length, t) } const m = Math.pow(10, t) return (multiply(arg1, m) + multiply(arg2, m)) / m } /** * 两数相减 arg1 - arg2 * @param arg1 * @param arg2 * @returns {number} */ export function subtract(arg1, arg2) { let t = 0 arg1 = arg1 ? arg1.toString() : '0' arg2 = arg2 ? arg2.toString() : '0' if (arg1.includes('.')) { t = arg1.split('.')[1].length } if (arg2.includes('.')) { t = Math.max(arg2.split('.')[1].length, t) } const m = Math.pow(10, t) return Number(((multiply(arg1, m) - multiply(arg2, m)) / m).toFixed(t)) } /** * 两数相乘 arg1 * arg2 * @param arg1 * @param arg2 * @returns {number} */ export function multiply(arg1, arg2) { let t = 0 arg1 = arg1 ? arg1.toString() : '0' arg2 = arg2 ? arg2.toString() : '0' if (arg1.includes('.')) { t += arg1.split('.')[1].length } if (arg2.includes('.')) { t += arg2.split('.')[1].length } const r1 = Number(arg1.replace('.', '')) const r2 = Number(arg2.replace('.', '')) return (r1 * r2) / Math.pow(10, t) } /** * 两数相除 arg1 / arg2 * @param arg1 * @param arg2 * @returns {number} */ export function abs(arg1, arg2) { let t = 0 arg1 = arg1 ? arg1.toString() : '0' arg2 = arg2 ? arg2.toString() : '0' if (arg2.includes('.')) { t = arg2.split('.')[1].length } if (arg1.includes('.')) { t -= arg1.split('.')[1].length } const r1 = Number(arg1.replace('.', '')) const r2 = Number(arg2.replace('.', '')) return multiply((r1 / r2), Math.pow(10, t)) } /** * array转Str * @param array * @returns {*} */ export function array2Str(array) { if (array == null || array.length == 0) { return null } return array.length == 0 ? null : JSON.stringify(array) } /** * Str转Array * @param array * @returns {*} */ export function str2Array(str) { if (!str) { return [] } if (typeof (str) == 'object') { return str } return JSON.parse(str) } /* * @Author : liu.q [916000612@qq.com] * @Date : 2019-08-16 10:52 * @Description :uuid */ 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) }) } /** * @author Lx * @description 详情显示附件展示 * @return 返回一个对象,用isShow判断附件是否为空; 用data循环附件数据 * */ export function showAppendix(appendix) { const appendixArray = JSON.parse(appendix) // 附件数据 const appendixData = [] // 判断附件是否为空,如果不为空组织数据 let isShow = false if (appendix) { isShow = true appendixArray.forEach(item => { appendixData.push({ path: globalConf.ftpUrl + item.path, name: item.name }) }) } return { isShow: isShow, data: appendixData } } export function showImage(appendix) { const appendixArray = JSON.parse(appendix) // 附件数据 const appendixData = [] // 判断附件是否为空,如果不为空组织数据 let isShow = false if (appendix) { isShow = true appendixArray.forEach(item => { appendixData.push({ path: item.path, name: item.name }) }) } return { isShow: isShow, data: appendixData } } export function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') var uuid = []; var i radix = radix || chars.length if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] } else { // rfc4122, version 4 form var r // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' uuid[14] = '4' // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16 uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r] } } } return uuid.join('') }