/** * @Author: 嗨噜客(三亚) * @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 }