This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nezha-fronted/nezha-fronted/src/libs/bus.js
2023-06-05 14:52:04 +08:00

350 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Vue from 'vue'
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 default new Vue({
data () {
return {
selectDate: [], // 选中的时间段
emailReg: /^[a-zA-Z0-9]{1,10}@[a-zA-Z0-9]{1,5}\.[a-zA-Z0-9]{1,5}$/,
// 创建策略信息
buildRuleInfo: {
triggers: [],
actions: []
},
backtoRulelist: '', // 返回策略列表页信息
// role: md5(1),
role: 1,
// 创建图表信息
chartAddInfo: {
metricTarget: []
}
}
},
methods: {
// 获取初始化时间,默认最近一周
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, localStorage.getItem('nz-default-dateFormat') ? localStorage.getItem('nz-default-dateFormat') : 'YYYY-MM-DD HH:mm:ss')
end = this.timeFormate(end, localStorage.getItem('nz-default-dateFormat') ? localStorage.getItem('nz-default-dateFormat') : 'YYYY-MM-DD HH:mm:ss')
this.selectDate = [start, end]
},
getHoursTime (hours) {
const today = new Date().getTime()
const date = new Date(today + (hours * 60 * 60 * 1000))
return date
},
// 初始化日期
getDays (days) {
const today = new Date().getTime()
const date = new Date(today + (days * 24 * 60 * 60 * 1000))
return date
},
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}`
},
timeFormate (date, fmt = localStorage.getItem('nz-default-dateFormat') ? localStorage.getItem('nz-default-dateFormat') : 'YYYY-MM-DD HH:mm:ss') {
let time = ''
if (!isNaN(date)) {
time = new Date(date)
} else {
time = moment(date, fmt)
}
const fm = fmt
return moment(time).format(fm)
},
formateTimeToTime (date, fmt = localStorage.getItem('nz-default-dateFormat') ? localStorage.getItem('nz-default-dateFormat') : 'YYYY-MM-DD HH:mm:ss') {
if (isNaN(date)) {
const newDate = moment(date, fmt)
return newDate
} else {
return date
}
},
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) { // 小于7天step为5m
step = '5m'
} else if (numInterval < thirtyDay) { // 小于30天step为10m
step = '10m'
} else {
step = '30m'
}
return step
},
isEmptyObject (obj) {
if (obj) {
let name = ''
// eslint-disable-next-line
for (name in obj) { return false; }
return true
}
return true
},
validateEmail (rule, value, callback) {
if (value === '') {
callback(new Error('请输入邮箱'))
} else if (!this.emailReg.test(value)) {
callback(new Error('邮箱格式不正确'))
} else {
callback()
}
},
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)
},
getSingleStatRlt (statistics, result) {
let dataArray = []
if (result) {
result.forEach((item) => {
dataArray.push(item[1])
})
}
let statisticsRlt = ''
if (dataArray.length > 0) {
if (statistics === 'min') { // min最小值
statisticsRlt = dataArray.reduce(function (a, b) {
return b < a ? b : a
})
} else if (statistics === 'max') { // max最大值
statisticsRlt = dataArray.reduce(function (a, b) {
return b > a ? b : a
})
} else if (statistics === 'avg') { // avg平均值
let sum = 0
dataArray.forEach((item) => {
sum = Number(sum) + Number(item)
})
statisticsRlt = sum / dataArray.length
} else if (statistics === 'total') { // total总计
dataArray.forEach((item) => {
statisticsRlt = Number(statisticsRlt) + Number(item)
})
} else if (statistics === 'first') { // first第一个值
statisticsRlt = dataArray[0]
} else if (statistics === 'last') { // last最后一个值
statisticsRlt = dataArray[dataArray.length - 1]
} else if (statistics === 'range') { // range : max - min
const min = dataArray.reduce(function (a, b) {
return b < a ? b : a
})
const max = dataArray.reduce(function (a, b) {
return b > a ? b : a
})
statisticsRlt = max - min
} else if (statistics === 'different') { // different : last - first
statisticsRlt = dataArray[dataArray.length - 1] - dataArray[0]
}
}
dataArray = null
return statisticsRlt
},
// 将本地时区转为系统配置的时区
computeTimezone: function (sourceTime) {
let offset = localStorage.getItem('nz-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
}
},
// 将本地时区转为系统配置的时区
computeTimezoneTime: function (sourceTime) {
let offset = localStorage.getItem('nz-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
}
},
getTimezontDateRange: function (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()))
]
},
getNewTime (time, num, fmt) {
if (!fmt) {
fmt = localStorage.getItem('nz-default-dateFormat') || 'YYYY-MM-DD HH:mm:ss'
}
const date = new Date(time)
const newDate = new Date(parseInt(date.getTime(), 10) + num)
return this.timeFormate(newDate, fmt)
},
getOffsetTimezoneData (offset = 0) {
return new Date(this.computeTimezone(new Date().getTime())).setHours(new Date(this.computeTimezone(new Date().getTime())).getHours() + offset)
},
UTCTimeToConfigTimezone (utcTime) {
let offset = localStorage.getItem('nz-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
}
},
configTimezoneToUTCTime: function (configTime) {
let offset = localStorage.getItem('nz-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
}
},
countDecimals (value) {
if ((value || value === 0) && Math.floor(value) !== value) {
const arr = value.toString().split('.')
if (Math.abs(arr[0] > 0) || arr.length < 2) {
return 2
}
const dot = arr[1].split('0').length + 1
return dot || 2
}
return 2
},
debounce (fn, delay, fn1) {
// 记录上一次的延时器
let timer = null
delay = delay || 200
return function () {
const args = arguments
const that = this
if (fn1) {
fn1()
}
// 清除上一次延时器
clearTimeout(timer)
timer = setTimeout(function () {
fn.apply(that, args)
}, delay)
}
},
/**
* @desc 防抖函数
* @param {需要防抖的函数} func
* @param {延迟时间} wait
* @param {是否立即执行} immediate
*/
debounceFn (func, wait, immediate) {
let timeout
return function (...args) {
const context = this
if (timeout) clearTimeout(timeout)
if (immediate) {
const callNow = !timeout
timeout = setTimeout(function () {
timeout = null
}, wait)
if (callNow) func.apply(context, args)
} else {
timeout = setTimeout(function () {
func.apply(context, args)
}, wait)
}
}
},
// 数组对象扁平化
flatten (arr) {
const tempArr = this.$lodash.cloneDeep(arr)
// 递归调用
function handler (tempArr) {
const newArr = []
tempArr.forEach(element => {
newArr.push(element)
if (element.children) {
newArr.push.apply(newArr, handler(element.children))
delete element.children
}
})
return newArr
}
return handler(tempArr)
}
},
created () {
this.getDefaultDate()
},
computed: {
/*
isAdmin() {
return this.role === Cookies.get('owl_role');
},
*/
}
})