qw-utils-vanguard
Version:
qw Utils package
333 lines (332 loc) • 11.1 kB
JavaScript
;
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;