Files
ctms-client/common/util.js

168 lines
4.8 KiB
JavaScript
Raw Permalink 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.

/**
* @Author: 嗨噜客(三亚)<fm453>
* @Date: 2022-12-29 11:05:40
* @FilePath: common/util.js
* @Description:
* @Email: 393213759@qq.com
* Copyright (c) 2025 by www.hiluker.cn, All Rights Reserved.
*/
import permission from "./permission"
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]);
}
};
// 验证并返回手机号或null
function isPhone(phone) {
var pattern = /^(?:(?:\+|00)86)?1(?:3\d|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8\d|9[189])\d{8}$/;
var regex = new RegExp(pattern);
var res = regex.exec(phone);
if (res) {
return res[0];
}
return false;
}
function tel(phone) {
permission.requestAndroid('contact').then(
(res) => {
if (res !== 1) {
uni.showModal({
title: '权限申请',
content: '拨打电话需要您的授权',
success: function(res) {
if (res.confirm) {
permission.gotoAppSetting();
} else if (res.cancel) {
// console.log('用户点击取消');
}
}
})
} else {
uni.makePhoneCall({
phoneNumber: phone
})
}
}
);
}
const captcha = {
ls: 'LocalCaptcha',
get: function(scence = 'vcode', useLetter = 'false') {
let digits = '0123456789';
let upperCaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let code = '',
charType = digits;
for (let i = 0; i < 4; i++) {
// 随机选择生成数字还是大写字母
if (useLetter === true) charType = Math.random() < 0.5 ? digits : upperCaseLetters;
code += charType[Math.floor(Math.random() * charType.length)];
}
var codes = uni.getStorageSync(this.ls) || {};
codes[scence] = code;
uni.getStorageSync(this.ls, codes);
return code;
},
check: function(scence = 'vcode', code) {
var codes = uni.getStorageSync(this.ls) || {};
if (codes[scence] === code) {
return true;
}
return false;
},
pop: function(scence = 'vcode', useLetter = 'false') {
var code = this.get(scence, useLetter);
uni.showModal({
title: '请输入数字 ' + code + ' 验证',
editable: true,
success: function(res) {
if (res.confirm) {
// console.log('数字码', res.content)
if (res.content === code) return true;
return false;
} else if (res.cancel) {
// console.log('用户点击取消');
return false;
}
}
})
}
};
export default {
formatTime,
formatLocation,
dateUtils,
tel,
captcha,
isPhone
}