2024-05-31 10:42:15 +00:00
|
|
|
|
import { addressNameCodeMap } from "./enum"
|
|
|
|
|
|
|
2023-11-25 16:29:44 +00:00
|
|
|
|
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]);
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2023-12-10 05:53:38 +00:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-31 10:42:15 +00:00
|
|
|
|
// - 获取地址详情
|
|
|
|
|
|
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]
|
2024-08-02 07:59:04 +00:00
|
|
|
|
if(name && code) {
|
|
|
|
|
|
regIds[index] = code
|
|
|
|
|
|
regNames[index] = name
|
|
|
|
|
|
}
|
2024-05-31 10:42:15 +00:00
|
|
|
|
})
|
|
|
|
|
|
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])));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-16 13:25:55 +00:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
2024-05-31 10:42:15 +00:00
|
|
|
|
|
2024-07-17 16:02:14 +00:00
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-11-25 16:29:44 +00:00
|
|
|
|
export {
|
2024-05-31 10:42:15 +00:00
|
|
|
|
getAddressDetail,
|
|
|
|
|
|
setAddresModalParam,
|
2023-12-10 05:53:38 +00:00
|
|
|
|
numberToChinese,
|
2023-11-25 16:29:44 +00:00
|
|
|
|
formatTime,
|
|
|
|
|
|
formatLocation,
|
2024-05-31 10:42:15 +00:00
|
|
|
|
dateUtils,
|
|
|
|
|
|
transListKeyTitle,
|
|
|
|
|
|
debounce,
|
|
|
|
|
|
throttle,
|
|
|
|
|
|
textEncoder,
|
|
|
|
|
|
textDecoder,
|
2024-07-16 13:25:55 +00:00
|
|
|
|
getQueryObject,
|
2023-11-25 16:29:44 +00:00
|
|
|
|
}
|