emis-app/common/util.js
2024-04-29 11:18:29 +08:00

158 lines
3.6 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.

function formatTime(time) {
if (typeof time !== 'number' || time < 0) {
return time
}
var hour = parseInt(time / 3600)
time = time % 3600
var minute = parseInt(time / 60)
time = time % 60
var second = time
return ([hour, minute, second]).map(function(n) {
n = n.toString()
return n[1] ? n : '0' + n
}).join(':')
}
function formatLocation(longitude, latitude) {
if (typeof longitude === 'string' && typeof latitude === 'string') {
longitude = parseFloat(longitude)
latitude = parseFloat(latitude)
}
longitude = longitude.toFixed(2)
latitude = latitude.toFixed(2)
return {
longitude: longitude.toString().split('.'),
latitude: latitude.toString().split('.')
}
}
var dateUtils = {
UNITS: {
'年': 31557600000,
'月': 2629800000,
'天': 86400000,
'小时': 3600000,
'分钟': 60000,
'秒': 1000
},
humanize: function(milliseconds) {
var humanize = '';
for (var key in this.UNITS) {
if (milliseconds >= this.UNITS[key]) {
humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
break;
}
}
return humanize || '刚刚';
},
format: function(dateStr) {
var date = this.parse(dateStr)
var diff = Date.now() - date.getTime();
if (diff < this.UNITS['天']) {
return this.humanize(diff);
}
var _format = function(number) {
return (number < 10 ? ('0' + number) : number);
};
return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
_format(date.getHours()) + ':' + _format(date.getMinutes());
},
parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象
var a = str.split(/[^0-9]/);
return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
}
};
const numberToChinese = (num)=> {
const chineseNums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const chineseUnits = ['', '十', '百', '千', '万', '亿', '兆'];
if (num === 0) {
return chineseNums[0];
}
const digits = Math.floor(num).toString().split('');
const len = digits.length;
let result = '';
for (let i = 0; i < len; i++) {
const digit = parseInt(digits[i]);
const unit = chineseUnits[len - 1 - i];
if (digit !== 0) {
result += chineseNums[digit] + unit;
} else {
if (result[result.length - 1] !== chineseNums[0]) {
result += chineseNums[digit]
}
}
}
return result;
}
// - 获取地址详情
const getAddressDetail = (item= {})=> {
return `${item.countryName||''}${item.provinceName||''}${item.cityName||''}${item.countyName||''}${item.townName||''}${item.address||''}`
}
// - 转换list的key val
const transListKeyTitle = ({ valKey = '', titleKey = '', list = [] })=> {
list.map(t=> {
t.title = t[titleKey]
t.val = t[valKey]
})
return list
}
// -防抖
const debounce = (fn, wait) => {
let delay = wait || 500
let timer
return function() {
let args = arguments;
if (timer) {
clearTimeout(timer)
console.log('拦截')
}
let callNow = !timer
timer = setTimeout(() => {
console.log('发送')
fn.apply(this, args)
timer = null
}, delay)
}
}
// -节流
const throttle = (fn, wait) => {
let delay = wait || 500
let timer = null
return function() {
if (timer) {
console.log('拦截');
return
}
timer = setTimeout(() => {
console.log('发送');
fn.apply(this, arguments)
timer = null
}, delay)
}
}
export {
getAddressDetail,
numberToChinese,
formatTime,
formatLocation,
dateUtils,
transListKeyTitle,
debounce,
throttle,
}