Files
ctms-client/common/util.js
fm453 c62d15b288 首次完整推送,
V:1.20240808.006
2024-08-13 18:32:37 +08:00

160 lines
4.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.

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
}