UNPKG

qw-utils-vanguard

Version:

qw Utils package

333 lines (332 loc) 11.1 kB
"use strict"; var _interopRequireDefault = require("/Users/cherishxn/\u5DE5\u4F5C\u9879\u76EE/2023/VanguardVueAdmin/qw-utils/node_modules/@babel/runtime/helpers/interopRequireDefault.js").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/es.array.push.js"); var _dayjs = _interopRequireDefault(require("dayjs")); const STORAGEPREFIX = 'vanguard_'; const STORAGETYPE = window.localStorage; const vanguard = { toDateText(dateTimeStamp) { let result = ''; const minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示 const hour = minute * 60; const day = hour * 24; const week = day * 7; const month = day * 30; const now = new Date().getTime(); // 获取当前时间毫秒 const diffValue = now - dateTimeStamp; // 时间差 if (diffValue < 0) return '刚刚'; const minC = diffValue / minute; // 计算时间差的分,时,天,周,月 const hourC = diffValue / hour; const dayC = diffValue / day; const weekC = diffValue / week; const monthC = diffValue / month; if (monthC >= 1 && monthC <= 3) { result = ' ' + parseInt(monthC) + '月前'; } else if (weekC >= 1 && weekC <= 3) { result = ' ' + parseInt(weekC) + '周前'; } else if (dayC >= 1 && dayC <= 6) { result = ' ' + parseInt(dayC) + '天前'; } else if (hourC >= 1 && hourC <= 23) { result = ' ' + parseInt(hourC) + '小时前'; } else if (minC >= 1 && minC <= 59) { result = ' ' + parseInt(minC) + '分钟前'; } else if (diffValue >= 0 && diffValue <= minute) { result = '刚刚'; } else { const datetime = new Date(); datetime.setTime(dateTimeStamp); const Nyear = datetime.getFullYear(); const Nmonth = datetime.getMonth() + 1 < 10 ? '0' + (datetime.getMonth() + 1) : datetime.getMonth() + 1; const Ndate = datetime.getDate() < 10 ? '0' + datetime.getDate() : datetime.getDate(); result = Nyear + '-' + Nmonth + '-' + Ndate; } return result; }, getDate(format, strInterval, number) { var myDate = new Date(); var dtTmp = new Date(); if (strInterval) { switch (strInterval) { case 's': myDate = new Date(Date.parse(dtTmp) + 1000 * number); // 秒 break; case 'n': myDate = new Date(Date.parse(dtTmp) + 60000 * number); // 分 break; case 'h': myDate = new Date(Date.parse(dtTmp) + 3600000 * number); // 小时 break; case 'd': myDate = new Date(Date.parse(dtTmp) + 86400000 * number); // 天 break; case 'w': myDate = new Date(Date.parse(dtTmp) + 86400000 * 7 * number); // 星期 break; case 'q': myDate = new Date(dtTmp.getFullYear(), dtTmp.getMonth() + number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); // 季度 break; case 'm': myDate = new Date(dtTmp.getFullYear(), dtTmp.getMonth() + number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); // 月 break; case 'y': myDate = new Date(dtTmp.getFullYear() + number, dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); // 年 break; default: } } return vanguard.toDate(myDate, format); }, toDate(v, format) { format = format || 'yyyy-MM-dd HH:mm'; if (!v) return ''; var d = v; if (typeof v === 'string') { if (v.indexOf('/Date(') > -1) { d = new Date(parseInt(v.replace('/Date(', '').replace(')/', ''), 10)); } else { d = new Date(Date.parse(v.replace(/-/g, '/').replace('T', ' ').split('.')[0])); } } else { d = new Date(v); } var o = { 'M+': d.getMonth() + 1, 'd+': d.getDate(), 'h+': d.getHours(), 'H+': d.getHours(), 'm+': d.getMinutes(), 's+': d.getSeconds(), 'q+': Math.floor((d.getMonth() + 3) / 3), S: d.getMilliseconds() }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp('(' + k + ')').test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)); } } return format; }, getThatDay(space) { if (space === undefined) { space = 0; } const date = new Date(); date.setTime(date.getTime() + 86400000 * space); return this.assemblyDay({ year: date.getFullYear(), month: date.getMonth(), date: date.getDate() }); }, assemblyDay(data) { const year = data.year.toString(); data.month = Number(data.month + 1); const month = this.complement(data.month); const date = this.complement(data.date); return year + '-' + month + '-' + date; }, complement(value, digit) { digit = digit || 2; value = Number(value); if (value < Math.pow(10, digit - 1)) { let text = ''; for (let i = 0; i < digit - value.toString().length; i++) { text = text + '0'; } return text + value; } else { return value.toString(); } }, toTreeViewJson(data, id, parentIdText, idText) { parentIdText = parentIdText || 'parentId'; idText = idText || 'id'; id = id || 0; const treeJson = []; const childNode = data.filter(v => v[parentIdText] === id); if (childNode.length > 0) { for (let i = 0; i < childNode.length; i++) { const treeModel = { ...childNode[i], hasChildren: !!data.filter(v => v[parentIdText] === childNode[i][idText]).length, ChildNodes: vanguard.toTreeViewJson(data, childNode[i][idText], parentIdText, idText), isexpand: childNode[i].isexpand === undefined ? true : childNode[i].isexpand, complete: true }; treeJson.push(treeModel); } } return treeJson; }, toFileSize(size) { if (size === null || size === '') { return ''; } if (size < 1024.0) { return vanguard.toDecimal(size) + ' 字节'; } else if (size >= 1024.0 && size < 1048576) { return vanguard.toDecimal(size / 1024.0) + ' KB'; } else if (size >= 1048576 && size < 1073741824) { return vanguard.toDecimal(size / 1024.0 / 1024.0) + ' MB'; } else if (size >= 1073741824) { return vanguard.toDecimal(size / 1024.0 / 1024.0 / 1024.0) + ' GB'; } }, toDecimal(num) { if (num === null) { num = '0'; } num = num.toString().replace(/\$|\,/g, ''); if (isNaN(num)) { num = '0'; } var sign = num === (num = Math.abs(num)); num = Math.floor(num * 100 + 0.50000000001); var cents = num % 100; num = Math.floor(num / 100).toString(); if (cents < 10) { cents = '0' + cents; } for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { num = num.substring(0, num.length - (4 * i + 3)) + '' + num.substring(num.length - (4 * i + 3)); } return (sign ? '' : '-') + num + '.' + cents; }, idGenerator() { let quotient = new Date() - new Date('2020-08-01'); quotient += Math.ceil(Math.random() * 1000); const chars = '0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'; const charArr = chars.split(''); const radix = chars.length; const res = []; do { const mod = quotient % radix; quotient = (quotient - mod) / radix; res.push(charArr[mod]); } while (quotient); return res.join(''); }, getScriptFunc(str) { let func = null; try { func = eval(str); return func; } catch (error) { console.log(error); return false; } }, interfaceDataHandler(data) { if (!data.dataProcessing) return data.data; const dataHandler = this.getScriptFunc(data.dataProcessing); if (!dataHandler) return data.data; return dataHandler(data.data); }, // 基于dayjs日期格式化,时间戳(毫秒)转日期 dateFormat(date, format) { format = format || 'YYYY-MM-DD HH:mm'; if (!date) return ''; return (0, _dayjs.default)(date).format(format); }, // 基于dayjs日期格式化,日期转时间戳(毫秒) timestamp(val) { return (0, _dayjs.default)(val).valueOf(); }, // 基于dayjs日期格式化, 表格专用 tableDateFormat(row, column, cellValue) { const format = 'YYYY-MM-DD HH:mm'; if (!cellValue) return ''; return (0, _dayjs.default)(cellValue).format(format); }, storageSet(obj) { for (const i in obj) { cacheItem(i, obj[i]); } function cacheItem(key, val) { key = STORAGEPREFIX + key; const valType = typeof val; if (val !== null) { var valConstructor = val.constructor; } if (valType === 'string' || valType === 'number' || valType === 'boolean') { if (valConstructor === String) { val = val + '|String'; } else if (valConstructor === Number) { val = val + '|Number'; } else if (valConstructor === Boolean) { val = val + '|Boolean'; } STORAGETYPE.setItem(key, val); } else if (valType === 'object') { if (val === null) { val = JSON.stringify(val) + '|Null'; STORAGETYPE.setItem(key, val); } else { if (valConstructor === Array) { val = JSON.stringify(val) + '|Array'; } else if (valConstructor === Object) { val = JSON.stringify(val) + '|Object'; } STORAGETYPE.setItem(key, val); } } } }, storageGet(key) { key = STORAGEPREFIX + key; const keyName = STORAGETYPE.getItem(key); if (keyName === null) { return null; } const valArr = keyName.split('|'); const getDataType = valArr[valArr.length - 1]; valArr.splice(valArr.length - 1, 1); let val = valArr.join(''); if (getDataType === 'Number') { val = parseInt(val); } else if (getDataType === 'Boolean') { if (val === 'true') { val = true; } else { val = false; } } else if (getDataType === 'Array' || getDataType === 'Object' || getDataType === 'Null') { val = JSON.parse(val); } return val; }, storageRemove(key) { STORAGETYPE.removeItem(STORAGEPREFIX + key); }, storageClear() { for (const i in STORAGETYPE) { if (i.indexOf(STORAGEPREFIX) !== -1) { STORAGETYPE.removeItem(i); } } }, downloadFile(url, name) { if (!url) return; const baseUrl = ''; const a = document.createElement('a'); a.setAttribute('download', ''); const realUrl = baseUrl + url + (name ? '&name=' + name : ''); a.setAttribute('href', realUrl); a.click(); }, isEmpty(data) { return data === null || data === undefined || data === ''; }, isEmptyArray(data) { return Array.isArray(data) ? data.length === 0 : true; } }; var _default = vanguard; exports.default = _default;