/**
 * @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
}