Initial commit
This commit is contained in:
145
web/src/utils/utils.js
Normal file
145
web/src/utils/utils.js
Normal file
@ -0,0 +1,145 @@
|
||||
import React from "react";
|
||||
import {Link} from "react-router-dom";
|
||||
|
||||
export const sleep = function (ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms))
|
||||
}
|
||||
|
||||
export const getToken = function () {
|
||||
return localStorage.getItem('X-Auth-Token');
|
||||
}
|
||||
|
||||
export const getHeaders = function () {
|
||||
return {'X-Auth-Token': getToken()};
|
||||
}
|
||||
|
||||
export const itemRender = function (route, params, routes, paths) {
|
||||
const last = routes.indexOf(route) === routes.length - 1;
|
||||
return last ? (
|
||||
<span>{route.breadcrumbName}</span>
|
||||
) : (
|
||||
<Link to={paths.join('/')}>{route.breadcrumbName}</Link>
|
||||
);
|
||||
}
|
||||
|
||||
export const formatDate = function (time, format) {
|
||||
let date = new Date(time);
|
||||
let o = {
|
||||
"M+": date.getMonth() + 1,
|
||||
"d+": date.getDate(),
|
||||
"h+": date.getHours(),
|
||||
"m+": date.getMinutes(),
|
||||
"s+": date.getSeconds(),
|
||||
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
|
||||
"S": date.getMilliseconds() //millisecond
|
||||
};
|
||||
if (/(y+)/.test(format)) {
|
||||
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
}
|
||||
for (let 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;
|
||||
};
|
||||
|
||||
export const isLeapYear = function (year) {
|
||||
return (year % 4 === 0 && year % 100 !== 0) || (year % 100 === 0 && year % 400 === 0);
|
||||
};
|
||||
|
||||
export const groupBy = (list, fn) => {
|
||||
const groups = {};
|
||||
|
||||
list.forEach(x => {
|
||||
let groupKey = fn(x).toString();
|
||||
groups[groupKey] = groups[groupKey] || [];
|
||||
groups[groupKey].push(x);
|
||||
});
|
||||
|
||||
return groups;
|
||||
};
|
||||
|
||||
export const cloneObj = (obj, ignoreFields) => {
|
||||
let str, newObj = obj.constructor === Array ? [] : {};
|
||||
if (typeof obj !== 'object') {
|
||||
return;
|
||||
} else if (window.JSON) {
|
||||
str = JSON.stringify(obj);
|
||||
newObj = JSON.parse(str);
|
||||
} else {
|
||||
for (const i in obj) {
|
||||
newObj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i];
|
||||
}
|
||||
}
|
||||
return newObj;
|
||||
};
|
||||
|
||||
export function download(url) {
|
||||
let aElement = document.createElement('a');
|
||||
aElement.setAttribute('download', '');
|
||||
aElement.setAttribute('target', '_blank');
|
||||
aElement.setAttribute('href', url);
|
||||
aElement.click();
|
||||
}
|
||||
|
||||
export function differTime(start, end) {
|
||||
//总秒数
|
||||
let millisecond = Math.floor((end.getTime() - start.getTime()) / 1000);
|
||||
|
||||
//总天数
|
||||
let allDay = Math.floor(millisecond / (24 * 60 * 60));
|
||||
|
||||
//注意同getYear的区别
|
||||
let startYear = start.getFullYear();
|
||||
let currentYear = end.getFullYear();
|
||||
|
||||
//闰年个数
|
||||
let leapYear = 0;
|
||||
for (let i = startYear; i < currentYear; i++) {
|
||||
if (isLeapYear(i)) {
|
||||
leapYear++;
|
||||
}
|
||||
}
|
||||
|
||||
//年数
|
||||
const year = Math.floor((allDay - leapYear * 366) / 365 + leapYear);
|
||||
|
||||
//天数
|
||||
let day;
|
||||
if (allDay > 366) {
|
||||
day = (allDay - leapYear * 366) % 365;
|
||||
} else {
|
||||
day = allDay;
|
||||
}
|
||||
//取余数(秒)
|
||||
const remainder = millisecond % (24 * 60 * 60);
|
||||
//小时数
|
||||
const hour = Math.floor(remainder / (60 * 60));
|
||||
//分钟数
|
||||
const minute = Math.floor(remainder % (60 * 60) / 60);
|
||||
//秒数
|
||||
const second = remainder - hour * 60 * 60 - minute * 60;
|
||||
|
||||
let show = '';
|
||||
if (year > 0) {
|
||||
show += year + '年';
|
||||
}
|
||||
|
||||
if (day > 0) {
|
||||
show += day + '天';
|
||||
}
|
||||
|
||||
if (hour > 0) {
|
||||
show += hour + '小时';
|
||||
}
|
||||
|
||||
if (minute > 0) {
|
||||
show += minute + '分钟';
|
||||
}
|
||||
|
||||
if (second > 0) {
|
||||
show += second + '秒';
|
||||
}
|
||||
return show;
|
||||
}
|
Reference in New Issue
Block a user