import API_BASE from '../util/api.js'
/**
 * 请求封装
 */
const request = (url = '', type = 'GET', param = {}, Loading, headertype) => {
	
    //是否启动加载
    if (Loading) {
        uni.showLoading({
            mask: true
        });
    }

    //h5统一携带参数pf
    var params = Object.assign(param, {
        pf: 2
    });
    //请求es相关
    if (url.indexOf("so12.ichunt.") != -1 || url.indexOf("/esapi/") != -1|| url.indexOf("/goods/detail") != -1) {
        params = Object.assign(param, { hkyefgyd: 1 });
    }

    //请求类型判断
    let header = {
        "Content-Type": "application/json; charset=utf-8"
    }
    if (headertype) {
        header = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }
    return new Promise((resolve, reject) => {
        uni.request({
            method: type,
            url: url,
            data: params,
            header: header,
            dataType: 'json',
            withCredentials: true,
            success: response => {
                if (Loading) uni.hideLoading();
                if (response.statusCode === 200) {
                    let result = response.data;
                    resolve(result);
                } else {
                    reject(response);
                }
            },
            fail: (error) => {
                if (Loading) uni.hideLoading();
                uni.showToast({
                    title: '网络出现问题',
                    icon: 'error'
                });
                reject(error);
            }
        })
    });
}



/**
 * 平台判断
 */
const getPlatform = () => {
    let platform = uni.getSystemInfoSync().platform;
    if (platform == 'ios') {
        platform = 'ios';
    } else if (platform == 'android') {
        platform = 'android';
    }

    return platform;

}


/**
 * 设置cookit
 */
const setCookie = (name, value, expireDays) => {
    let date = new Date();
    date.setTime(date.getTime() + (expireDays * 24 * 60 * 60 * 1000));
    let expires = "expires=" + date.toGMTString();
    document.cookie = name + "=" + value + "; " + expires;
}

/**
 *获取cookie
 */
const getCookie = (name) => {
    var strCookie = document.cookie;
    var arrCookie = strCookie.split("; ");
    for (var i = 0; i < arrCookie.length; i++) {
        var arr = arrCookie[i].split("=");
        if (name == arr[0]) {
            return arr[1];
        }
    }
    return '';
}

/**
 *删除cookie
 */
const delCookie = (name) => {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if (cval != null)
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}

/**
 * 手机验证码倒计时函数
 * @param {Object} options - 配置项
 * @param {number} options.duration - 倒计时时间,单位为秒,默认为60s
 * @param {Function} options.onTick - 每秒执行的回调函数,参数为当前剩余时间
 * @param {Function} options.onComplete - 完成倒计时后执行的回调函数
 */
const startCountdown = (options) => {
    const duration = options.duration || 60; // 倒计时时间,默认为60秒
    let remainingTime = duration; // 剩余时间
    let timer = null; // 定时器

    // 每秒执行一次的回调函数
    const onTick = options.onTick || ((time) => {});

    // 完成倒计时后执行的回调函数
    const onComplete = options.onComplete || (() => {});

    // 开始倒计时
    function start() {
        timer = setInterval(() => {
            if (remainingTime <= 0) {
                clearInterval(timer);
                onComplete();
            } else {
                remainingTime--;
                onTick(remainingTime);
            }
        }, 1000);
    }

    // 停止倒计时
    function stop() {
        clearInterval(timer);
        onComplete();
    }

    // 返回 start 和 stop 方法
    return {
        start,
        stop,
    };
}

module.exports = {
    request,
    getPlatform,
    setCookie,
    getCookie,
    delCookie,
    startCountdown
}