import { addressNameCodeMap } from "./enum" 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= {}, showDetail = true)=> { let ary = [] addressNameCodeMap.map((t)=> { ary.push(item[t.nameKey]) }) if(showDetail) { ary.push(item.address) } return ary.join("") } const setAddresModalParam = (data = {})=> { let regIds = [] let regNames = [] addressNameCodeMap.map((t, index)=> { let name = data[t.nameKey] let code = data[t.codeKey] if(name && code) { regIds[index] = code regNames[index] = name } }) return { regIds, regNames } } // - 转换list的key val const transListKeyTitle = ({ valKey = '', titleKey = '', list = [] })=> { list.map(t=> { t.title = t[titleKey] || t.title t.val = t[valKey] || t.val }) 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) } } //TextEncoder const textEncoder = (input)=> { return unescape(encodeURIComponent(input)).split("").map(val => val.charCodeAt()); } //TextDecoder const textDecoder = (input)=> { return decodeURIComponent(escape(String.fromCharCode(...[input]))); } const getQueryObject = (url)=> { var query = url.split('?')[1]; var obj = {}; query = query.split('&'); query.forEach(query => { var item = query.split('='); obj[item[0]] = item[1]; // 当然如果有中文/Unicode字符可以在这里用URIencode方法转码一下 }); return obj; } export function isPlainObject(obj){ return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]' } export function isPlainArray(obj){ return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Array]' } export function deepAssign() { let len = arguments.length, target = arguments[0] if (!isPlainObject(target)) { target = {} } for (let i = 1; i < len; i++) { let source = arguments[i] if (isPlainObject(source)) { for (let s in source) { if (s === '__proto__' || target === source[s]) { continue } if (isPlainObject(source[s])) { target[s] = deepAssign(target[s], source[s]) } else { target[s] = source[s] } } } } return target } export { getAddressDetail, setAddresModalParam, numberToChinese, formatTime, formatLocation, dateUtils, transListKeyTitle, debounce, throttle, textEncoder, textDecoder, getQueryObject, }