275 lines
7.5 KiB
JavaScript
275 lines
7.5 KiB
JavaScript
|
|
// 获取初始化时间,默认最近一周
|
|||
|
|
import moment from 'moment-timezone'
|
|||
|
|
|
|||
|
|
Date.prototype.setStart = function () {
|
|||
|
|
this.setHours(0)
|
|||
|
|
this.setMinutes(0)
|
|||
|
|
this.setSeconds(0)
|
|||
|
|
}
|
|||
|
|
Date.prototype.setEnd = function () {
|
|||
|
|
this.setHours(23)
|
|||
|
|
this.setMinutes(59)
|
|||
|
|
this.setSeconds(59)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function getDefaultDate () {
|
|||
|
|
let start = this.getDays(-7)
|
|||
|
|
let end = this.getDays(0)
|
|||
|
|
start.setStart()
|
|||
|
|
end.setEnd()
|
|||
|
|
// let start = this.getHoursTime(-1);
|
|||
|
|
// let end = this.getHoursTime(0);
|
|||
|
|
start = this.timeFormate(start, 'yyyy-MM-dd hh:mm:ss')
|
|||
|
|
end = this.timeFormate(end, 'yyyy-MM-dd hh:mm:ss')
|
|||
|
|
this.selectDate = [start, end]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function getHoursTime (hours) {
|
|||
|
|
const today = new Date().getTime()
|
|||
|
|
const date = new Date(today + (hours * 60 * 60 * 1000))
|
|||
|
|
return date
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 初始化日期
|
|||
|
|
export function getDays (days) {
|
|||
|
|
const today = new Date().getTime()
|
|||
|
|
return new Date(today + (days * 24 * 60 * 60 * 1000))
|
|||
|
|
}
|
|||
|
|
export function formatDate (date, type) {
|
|||
|
|
const yy = date.getFullYear()
|
|||
|
|
const dateM = date.getMonth() + 1
|
|||
|
|
const mm = dateM > 9 ? dateM : `0${dateM}`
|
|||
|
|
const dateD = date.getDate()
|
|||
|
|
const dd = dateD > 9 ? dateD : `0${dateD}`
|
|||
|
|
if (type) {
|
|||
|
|
return `${yy}${type}${mm}${type}${dd}`
|
|||
|
|
}
|
|||
|
|
return `${yy}${mm}${dd}`
|
|||
|
|
}
|
|||
|
|
export function timeFormate (date, fmt = 'yyyy-MM-dd hh:mm:ss') {
|
|||
|
|
const time = new Date(date)
|
|||
|
|
let fm = fmt
|
|||
|
|
// fmt 自定义格式,如:yy-MM-dd
|
|||
|
|
let week = ''
|
|||
|
|
switch (time.getDay()) {
|
|||
|
|
case 0:
|
|||
|
|
week = '周日'
|
|||
|
|
break
|
|||
|
|
case 1:
|
|||
|
|
week = '周一'
|
|||
|
|
break
|
|||
|
|
case 2:
|
|||
|
|
week = '周二'
|
|||
|
|
break
|
|||
|
|
case 3:
|
|||
|
|
week = '周三'
|
|||
|
|
break
|
|||
|
|
case 4:
|
|||
|
|
week = '周四'
|
|||
|
|
break
|
|||
|
|
case 5:
|
|||
|
|
week = '周五'
|
|||
|
|
break
|
|||
|
|
case 6:
|
|||
|
|
week = '周六'
|
|||
|
|
break
|
|||
|
|
default:
|
|||
|
|
week = ''
|
|||
|
|
break
|
|||
|
|
}
|
|||
|
|
const o = {
|
|||
|
|
'M+': time.getMonth() + 1, // 月份
|
|||
|
|
'd+': time.getDate(), // 日
|
|||
|
|
hh: time.getHours(), // 小时
|
|||
|
|
'm+': time.getMinutes(), // 分
|
|||
|
|
's+': time.getSeconds(), // 秒
|
|||
|
|
'q+': Math.floor((time.getMonth() + 3) / 3), // 季度
|
|||
|
|
S: time.getMilliseconds(), // 毫秒
|
|||
|
|
w: week
|
|||
|
|
}
|
|||
|
|
if (/(y+)/.test(fm)) {
|
|||
|
|
fm = fm.replace(RegExp.$1, (time.getFullYear().toString()).substr(4 - RegExp.$1.length))
|
|||
|
|
}
|
|||
|
|
Object.keys(o).forEach((k) => {
|
|||
|
|
if (new RegExp(`(${k})`).test(fm)) {
|
|||
|
|
fm = fm.replace(RegExp.$1, (RegExp.$1.length === 1)
|
|||
|
|
? (o[k])
|
|||
|
|
: ((`00${o[k]}`).substr((`${o[k]}`).length)))
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
return fm
|
|||
|
|
}
|
|||
|
|
// 格式化tag为字符串表达式
|
|||
|
|
export function tagsToString (metric, arr) {
|
|||
|
|
let str = metric
|
|||
|
|
let sepStr = ''
|
|||
|
|
arr.forEach((item, index) => {
|
|||
|
|
if (index === 0) {
|
|||
|
|
str += '{'
|
|||
|
|
if (item.value.length === 1) {
|
|||
|
|
str += `${item.name}='${item.value.join('|')}'`
|
|||
|
|
sepStr = ','
|
|||
|
|
} else if (item.value.length > 1) {
|
|||
|
|
str += `${item.name}=~'${item.value.join('|')}'`
|
|||
|
|
sepStr = ','
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (item.value.length === 1) {
|
|||
|
|
str += sepStr + `${item.name}='${item.value.join('|')}'`
|
|||
|
|
sepStr = ','
|
|||
|
|
} else if (item.value.length > 1) {
|
|||
|
|
str += sepStr + `${item.name}=~'${item.value.join('|')}'`
|
|||
|
|
sepStr = ','
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
if (str.indexOf('{') > -1) {
|
|||
|
|
str += '}'
|
|||
|
|
}
|
|||
|
|
if (str.endsWith('{}')) {
|
|||
|
|
str = str.substring(0, str.indexOf('{'))
|
|||
|
|
}
|
|||
|
|
return str
|
|||
|
|
}
|
|||
|
|
export function getStep (startTime, endTime) {
|
|||
|
|
const start = new Date(startTime)
|
|||
|
|
const end = new Date(endTime)
|
|||
|
|
let step = '15s'
|
|||
|
|
const numInterval = end.getTime() - start.getTime()
|
|||
|
|
const oneDay = 86400000
|
|||
|
|
const sevenDay = 604800000
|
|||
|
|
const thirtyDay = 2592000000
|
|||
|
|
if (numInterval < oneDay) { // 小于1天,step为15s
|
|||
|
|
step = '15s'
|
|||
|
|
} else if (numInterval < sevenDay) {
|
|||
|
|
step = '5m'
|
|||
|
|
} else if (numInterval < thirtyDay) {
|
|||
|
|
step = '10m'
|
|||
|
|
} else {
|
|||
|
|
step = '30m'
|
|||
|
|
}
|
|||
|
|
return step
|
|||
|
|
}
|
|||
|
|
export function isEmptyObject (obj) {
|
|||
|
|
if (obj) {
|
|||
|
|
let name = ''
|
|||
|
|
// eslint-disable-next-line
|
|||
|
|
for (name in obj) { return false; }
|
|||
|
|
return true
|
|||
|
|
}
|
|||
|
|
return true
|
|||
|
|
}
|
|||
|
|
export function validateEmail (rule, value, callback) {
|
|||
|
|
if (value === '') {
|
|||
|
|
callback(new Error('请输入邮箱'))
|
|||
|
|
} else if (!this.emailReg.test(value)) {
|
|||
|
|
callback(new Error('邮箱格式不正确'))
|
|||
|
|
} else {
|
|||
|
|
callback()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
export function getNumStr (num) {
|
|||
|
|
if (num >= 1000) {
|
|||
|
|
const kbNum = num / 1000
|
|||
|
|
if (kbNum >= 1000) {
|
|||
|
|
const mbNum = kbNum / 1000
|
|||
|
|
if (mbNum > 1000) {
|
|||
|
|
const gbNum = mbNum / 1000
|
|||
|
|
if (gbNum > 1000) {
|
|||
|
|
const tbNum = gbNum / 1000
|
|||
|
|
if (tbNum > 1000) {
|
|||
|
|
const pbNum = tbNum / 1000
|
|||
|
|
return `${pbNum.toFixed(2)}PB`
|
|||
|
|
}
|
|||
|
|
return `${tbNum.toFixed(2)}TB`
|
|||
|
|
}
|
|||
|
|
return `${gbNum.toFixed(2)}GB`
|
|||
|
|
}
|
|||
|
|
return `${mbNum.toFixed(2)}MB`
|
|||
|
|
}
|
|||
|
|
return `${kbNum.toFixed(2)}KB`
|
|||
|
|
}
|
|||
|
|
return num.toFixed(2)
|
|||
|
|
}
|
|||
|
|
// 将本地时区转为系统配置的时区
|
|||
|
|
export function computeTimezone (sourceTime) {
|
|||
|
|
let offset = localStorage.getItem('cn-sys-timezone')
|
|||
|
|
offset = moment.tz(offset).format('Z')
|
|||
|
|
if (offset && offset !== 'undefined') {
|
|||
|
|
offset = Number.parseInt(offset)
|
|||
|
|
const date = new Date(sourceTime)
|
|||
|
|
const localOffset = date.getTimezoneOffset() * 60 * 1000 // 默认 一分钟显示时区偏移的结果
|
|||
|
|
const utcTime = sourceTime + localOffset
|
|||
|
|
return utcTime + (offset * 60 * 60 * 1000)
|
|||
|
|
} else {
|
|||
|
|
return sourceTime
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// 将本地时区转为系统配置的时区
|
|||
|
|
export function computeTimezoneTime (sourceTime) {
|
|||
|
|
let offset = localStorage.getItem('cn-sys-timezone')
|
|||
|
|
offset = moment.tz(offset).format('Z')
|
|||
|
|
if (offset && offset !== 'undefined') {
|
|||
|
|
offset = Number.parseInt(offset)
|
|||
|
|
const date = new Date(sourceTime)
|
|||
|
|
const localOffset = date.getTimezoneOffset() * 60 * 1000 // 默认 一分钟显示时区偏移的结果
|
|||
|
|
const utcTime = date.getTime() + localOffset
|
|||
|
|
return utcTime + (offset * 60 * 60 * 1000)
|
|||
|
|
} else {
|
|||
|
|
return sourceTime
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
export function getTimezontDateRange (offset = -1) {
|
|||
|
|
return [
|
|||
|
|
new Date(new Date(this.computeTimezone(new Date().getTime())).setHours(new Date(this.computeTimezone(new Date().getTime())).getHours() + offset)),
|
|||
|
|
new Date(this.computeTimezone(new Date().getTime()))
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
export function getOffsetTimezoneData (offset = 0) {
|
|||
|
|
return new Date(this.computeTimezone(new Date().getTime())).setHours(new Date(this.computeTimezone(new Date().getTime())).getHours() + offset)
|
|||
|
|
}
|
|||
|
|
export function debounce (fn, delay) {
|
|||
|
|
// 记录上一次的延时器
|
|||
|
|
let timer = null
|
|||
|
|
delay = delay || 200
|
|||
|
|
return function () {
|
|||
|
|
const args = arguments
|
|||
|
|
const that = this
|
|||
|
|
// 清除上一次延时器
|
|||
|
|
clearTimeout(timer)
|
|||
|
|
timer = setTimeout(function () {
|
|||
|
|
fn.apply(that, args)
|
|||
|
|
}, delay)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
export function UTCTimeToConfigTimezone (utcTime) {
|
|||
|
|
let offset = localStorage.getItem('cn-sys-timezone')
|
|||
|
|
offset = moment.tz(offset).format('Z')
|
|||
|
|
if (offset && offset !== 'undefined') {
|
|||
|
|
let time = utcTime
|
|||
|
|
if (typeof time === 'string' && /(\d+?-){2}\d+?\s(\d+?:)*\d+/.test(time)) {
|
|||
|
|
time = new Date(time).getTime()
|
|||
|
|
}
|
|||
|
|
offset = Number.parseInt(offset)
|
|||
|
|
time += offset * 60 * 60 * 1000
|
|||
|
|
return time
|
|||
|
|
} else {
|
|||
|
|
return utcTime
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
export function configTimezoneToUTCTime (configTime) {
|
|||
|
|
let offset = localStorage.getItem('cn-sys-timezone')
|
|||
|
|
offset = moment.tz(offset).format('Z')
|
|||
|
|
if (offset && offset !== 'undefined') {
|
|||
|
|
let time = configTime
|
|||
|
|
if (typeof time === 'string' && /(\d+?-){2}\d+?\s(\d+?:)*\d+/.test(time)) {
|
|||
|
|
time = new Date(time).getTime()
|
|||
|
|
}
|
|||
|
|
offset = Number.parseInt(offset)
|
|||
|
|
time -= offset * 60 * 60 * 1000
|
|||
|
|
return time
|
|||
|
|
} else {
|
|||
|
|
return configTime
|
|||
|
|
}
|
|||
|
|
}
|