/** * 纯工具函数 —— 类型判断、数据转换、日期解析 * 无组件状态依赖、无副作用(除类型转换的 console.error) */ export function is(val, type) { return Object.prototype.toString.call(val) === `[object ${type}]` } export function changeStringToObject(json) { if (is(json, 'String') && json?.length) { return changeStringToObject(JSON.parse(json)) } else if (is(json, 'Object')) { return json } else { console.error('数据类型不正确!') return null } } export function base64ToBlob(base64Data, contentType = '') { const byteCharacters = atob(base64Data) const byteNumbers = new Array(byteCharacters.length) for (let i = 0; i < byteCharacters.length; i++) { byteNumbers[i] = byteCharacters.charCodeAt(i) } const byteArray = new Uint8Array(byteNumbers) return new Blob([byteArray], { type: contentType }) } export function blobToBase64(blob) { return new Promise((resolve, reject) => { const reader = new FileReader() reader.onload = () => { const base64 = reader.result.split(',')[1] resolve(base64) } reader.onerror = reject reader.readAsDataURL(blob) }) } export function formatterOADateNumber(input) { const regex = /OADate\(([\d.]+)\)/ const match = input.match(regex) let OADate = null if (match && match[1]) { OADate = Number(match[1]) OADate = isNaN(OADate) ? null : parseInt(OADate) } return OADate !== null ? new Date(Math.round(OADate - 25569) * 86400000) : null }