// 通用工具函数
|
import dayjs from 'dayjs'
|
|
/**
|
* 格式化日期时间
|
* @param {Date|string|number} date - 日期对象、日期字符串或时间戳
|
* @param {string} format - 格式化模板,默认 'YYYY-MM-DD HH:mm:ss'
|
* @returns {string} 格式化后的日期字符串
|
*/
|
export function formatDateTime(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
return dayjs(date).format(format)
|
}
|
|
/**
|
* 格式化日期
|
* @param {Date|string|number} date - 日期对象、日期字符串或时间戳
|
* @returns {string} 格式化后的日期字符串 YYYY-MM-DD
|
*/
|
export function formatDate(date) {
|
return formatDateTime(date, 'YYYY-MM-DD')
|
}
|
|
/**
|
* 格式化时间
|
* @param {Date|string|number} date - 日期对象、日期字符串或时间戳
|
* @returns {string} 格式化后的时间字符串 HH:mm:ss
|
*/
|
export function formatTime(date) {
|
return formatDateTime(date, 'HH:mm:ss')
|
}
|
|
/**
|
* 数字格式化,添加千分位
|
* @param {number} num - 数字
|
* @param {number} decimals - 小数位数,默认0
|
* @returns {string} 格式化后的数字字符串
|
*/
|
export function formatNumber(num, decimals = 0) {
|
return Number(num).toLocaleString('zh-CN', {
|
minimumFractionDigits: decimals,
|
maximumFractionDigits: decimals
|
})
|
}
|
|
/**
|
* 获取随机颜色
|
* @returns {string} 颜色值
|
*/
|
export function getRandomColor() {
|
const colors = [
|
'#409EFF', '#67C23A', '#E6A23C', '#F56C6C',
|
'#909399', '#5470c6', '#91cc75', '#fac858',
|
'#ee6666', '#73c0de', '#3ba272', '#fc8452'
|
]
|
return colors[Math.floor(Math.random() * colors.length)]
|
}
|
|
/**
|
* 防抖函数
|
* @param {Function} func - 要防抖的函数
|
* @param {number} wait - 等待时间(毫秒)
|
* @returns {Function} 防抖后的函数
|
*/
|
export function debounce(func, wait = 300) {
|
let timeout
|
return function executedFunction(...args) {
|
const later = () => {
|
clearTimeout(timeout)
|
func(...args)
|
}
|
clearTimeout(timeout)
|
timeout = setTimeout(later, wait)
|
}
|
}
|
|
/**
|
* 节流函数
|
* @param {Function} func - 要节流的函数
|
* @param {number} wait - 等待时间(毫秒)
|
* @returns {Function} 节流后的函数
|
*/
|
export function throttle(func, wait = 300) {
|
let inThrottle
|
return function executedFunction(...args) {
|
if (!inThrottle) {
|
func(...args)
|
inThrottle = true
|
setTimeout(() => inThrottle = false, wait)
|
}
|
}
|
}
|
|
/**
|
* 深拷贝
|
* @param {any} obj - 要拷贝的对象
|
* @returns {any} 拷贝后的对象
|
*/
|
export function deepClone(obj) {
|
if (obj === null || typeof obj !== 'object') return obj
|
if (obj instanceof Date) return new Date(obj)
|
if (obj instanceof Array) return obj.map(item => deepClone(item))
|
if (obj instanceof Object) {
|
const cloneObj = {}
|
for (const key in obj) {
|
if (obj.hasOwnProperty(key)) {
|
cloneObj[key] = deepClone(obj[key])
|
}
|
}
|
return cloneObj
|
}
|
}
|