/***
 * 不依赖任何ts文件的公共方法
 * */
declare let layer: any;
/*弹层插件*/
declare let $: any;
/*jquery*/
declare let lrz: any;
/*图片压缩插件*/
declare let qrcode: any;
/*二维码插件*/
declare const getLodop: any;
/*打印插件*/
declare let JsBarcode: any;
export class AppPublic {
    /*获取get请求的参数字符串,ArgsStr*/
    handleGetArgsStr(data: any): string {
        let kArr: any = [];
        for (let k in data) {/*获取所有的key*/
            kArr.push(k);
        }
        kArr = kArr.sort();
        /*排序所有的key*/
        let sortStr = '';
        for (let v of kArr) {/*拼接排序之后的字符串*/
            if (data[v] instanceof Object) {/*参数是数组*/
                let tempS = '';
                for (let v1 of data[v]) {/*循环获取数组中的值*/
                    tempS += v1 + ','
                }
                sortStr += v + '[]=' + tempS.substring(0, tempS.length - 1) + '&';
            } else {/*参数不是数组*/
                sortStr += v + '=' + data[v] + '&';
            }
        }
        return sortStr.substring(0, sortStr.length - 1);
    }
    /*获取post请求的参数字符串,ArgsStr*/
    handlePostArgsStr(data: any): string {
        let keyA = [];
        for (let k in data) {
            if (!(data[k] instanceof Object)) {
                keyA.push(k);
            }
        }
        keyA = keyA.sort();
        let sortStr = '';
        for (let v of keyA) {
            if (data[v] instanceof Number) {
                data[v] = data[v].toFixed(2) * 1;
            }
            sortStr += v + '=' + data[v] + '&';
        }
        sortStr = sortStr.substring(0, sortStr.length - 1);
        return sortStr;
    }
    /*计算年龄事件*/
    getAge(time: any): any {
        time *= 1000;
        let cTime = new Date().getTime() - time;
        let day = 1000 * 60 * 60 * 24;
        let month = 30 * day;
        let year = 365 * day;
        let age: any = {};
        age.cYear = Math.floor(cTime / year);
        /*获取相差年*/
        let yYear = cTime % year;
        /*取年的余*/
        age.cMonth = Math.floor(yYear / month);
        /*获取相差月*/
        let yMonth = yYear % month;
        /*取月的余*/
        age.cDay = Math.floor(yMonth / day);
        /*获取相差天*/
        // console.log(age);
        return age;
    }
   
  
    /*获取当前月开始到现在的日期*/
    getNowMonthDate2Start(): any {
        let nowTime = new Date().getTime();
        let nowDate = this.time2Date((nowTime / 1000).toFixed(0));
        let starDate = this.getDataOne(nowTime, 'y') + '-' + this.getDataOne(nowTime, 'm') + '-01';
        return {
            start: starDate,
            end: nowDate
        };
    }
    /*获取时间差*/
    get2DateC(timeS: any, timeN: any): any {
        timeS *= 1000;
        let miu = 1000 * 60;
        /*一分钟*/
        let hour = miu * 60;
        /*一小时*/
        let day = hour * 24;
        /*一天*/
        let nowTime = timeN * 1000;
        /*当前时间戳*/
        let cTime = timeS - nowTime;
        if (cTime < 0) {
            return '-';
        }
        let cDay = parseInt(cTime / day + '');
        let cHour = parseInt(cTime / hour + '');
        let cMiu = parseInt(cTime / miu + '');
        if (cDay >= 1) {
            return cDay + '天';
        } else if (cHour >= 1) {
            return cHour + '小时';
        } else if (cMiu >= 1) {
            return cMiu + '分钟';
        }
    }
    getDateC(timeS: any): any {
        timeS *= 1000;
        let miu = 1000 * 60;
        /*一分钟*/
        let hour = miu * 60;
        /*一小时*/
        let day = hour * 24;
        /*一天*/
        let nowTime = new Date().getTime();
        /*当前时间戳*/
        let cTime = timeS - nowTime;
        if (cTime < 0) {
            return '-';
        }
        let cDay = parseInt(cTime / day + '');
        let cHour = parseInt(cTime / hour + '');
        let cMiu = parseInt(cTime / miu + '');
        if (cDay >= 1) {
            return cDay + '天';
        } else if (cHour >= 1) {
            return cHour + '小时';
        } else if (cMiu >= 1) {
            return cMiu + '分钟';
        }
    }
    /*读取二维码内容方法
     例:
     this._commonService.readQRCode(e, res => {
     console.log(res);
     });
     * */
    readQRCode(e: any, callback: Function): void {
        qrcode.callback = function (a) {
            callback(a);
        };
        let dom = $(e.target);
        if (dom.val() == '') {
            return;
        }
        let index = layer.load(2);
        /*显示加载中*/
        let tempFile = dom[0].files[0];
        /*获取文件对象*/
        let imgTypeArr = ['image/jpeg', 'image/png'];
        /*允许图片类型*/
        if (imgTypeArr.indexOf(tempFile.type) == -1) {
            layer.msg('请选择正确的图片格式(jpg, png, jpeg)!');
            layer.close(index);
            return;
        }
        let reader = new FileReader();
        reader.onloadend = () => {/*读取预览地址*/
            qrcode.decode(reader.result);
            layer.close(index);
        };
        if (tempFile) {
            reader.readAsDataURL(tempFile);
        } else {
            layer.close(index);
            dom.val('');
        }
    }
    /*获取支付方式名称*/
    getPayWayName(id: any): string {
        let self = this;
        let payName = '';
        switch (id) {
            case 2:
                payName = '微信';
                break;
            
        }
        return payName;
    }
    /*数据正则验证事件*/
    regulars(data: any, type: string): boolean {
        let reg = {
            regAllEn: /[^A-z\s]//*除了大小写字母和空格之外的所有字符*/,
            regNum: /[^0-9]/g/*除了数字之外的所有字符*/,
            regEmail: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$//*邮箱格式正则*/,
            regPhone: /^[1, 8]\d{10}$//*手机正则*/,
            regIDCard: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)//*身份证号码正则*/,
            regFloat: /^-?(\d*\.)?\d+$//*浮点数正则*/,
            regLandline: /[^0-9\-]/g/*座机手机正则*/
        };
        switch (type) {
            case 'phone':
                return reg.regPhone.test(data);
            default:
                return false;
        }
    }
    /*获取日期中的某一个*/
    getDataOne(time, type): any {
        let now = new Date(time);
        let year = now.getFullYear();
        let month = now.getMonth() + 1;
        let date = now.getDate();
        let hour = now.getHours();
        let minute = now.getMinutes();
        let second = now.getSeconds();
        switch (type) {
            case 'y':/*年*/
                return year;
            case 'm':/*月*/
                return (month + '').length == 1 ? '0' + month : month;
            case 'd':/*日*/
                return (date + '').length == 1 ? '0' + date : date;
            case 'h':/*时*/
                return (hour + '').length == 1 ? '0' + hour : hour;
            case 'u':/*分*/
                return (minute + '').length == 1 ? '0' + minute : minute;
            case 's':/*秒*/
                return (second + '').length == 1 ? '0' + second : second;
            default:
                return '';
        }
    }
    /*获取日期对象*/
    getDataObj(time): any {
        let now = new Date(time);
        let year = now.getFullYear();
        let month = now.getMonth() + 1;
        let date = now.getDate();
        let hour = now.getHours();
        let minute = now.getMinutes();
        let second = now.getSeconds();
        let tempD = {
            y: year,
            m: (month + '').length == 1 ? '0' + month : month,
            d: (date + '').length == 1 ? '0' + date : date,
            h: (hour + '').length == 1 ? '0' + hour : hour,
            i: (minute + '').length == 1 ? '0' + minute : minute,
            s: (second + '').length == 1 ? '0' + second : second
        };
        return tempD;
    }
    /*时间戳转日期*/
    time2Date(time: any, hasHour?: any, str?: string): any {
        if(time == 0){
            return ' '
        }
        let now = new Date(time * 1000);
        let year = now.getFullYear();
        let month = now.getMonth() + 1;
        let date = now.getDate();
        let hour = now.getHours();
        let minute = now.getMinutes();
        let second = now.getSeconds();
        str ? '' : str = '-';
        let dateStr = year + str + ((month + '').length == 1 ? '0' + month : month) + str + ((date + '').length == 1 ? '0' + date : date);
        if (hasHour) {
            dateStr += ' ' + ((hour + '').length == 1 ? '0' + hour : hour) + ':' + ((minute + '').length == 1 ? '0' + minute : minute) + ':' + ((second + '').length == 1 ? '0' + second : second);
        }
        return dateStr;
    }
    /*日期转时间戳(单位秒)*/
    date2Time(str: string): any {
        return (new Date(str.replace(/-/g, '/')).getTime() / 1000).toFixed(0);
    }
    /*解决谷歌浏览器白屏问题*/
    fixChromeW(): void {
        setTimeout(() => {
            let lo = layer.load(2);
            layer.close(lo);
        }, 10);
    }
    /*判断是否空对象*/
    isEmptyObj(obj): any {
        for (let name in obj) {
            return false;//返回false,不为空对象
        }
        return true;//返回true,为空对象
    }
    /*数组排序事件*/
    arraySort(array: any): void {
        /*给每个未确定的位置做循环*/
        for (let unfix = array.length - 1; unfix > 0; unfix--) {
            /*给进度做个记录,比到未确定位置*/
            for (let i = 0; i < unfix; i++) {
                if (array[i] > array[i + 1]) {
                    let temp = array[i];
                    array.splice(i, 1, array[i + 1]);
                    array.splice(i + 1, 1, temp);
                }
            }
        }
        return array;
    }
    /*处理分页数据*/
    handlePage(pager: any): any {
        let pageShow = 3;
        /*要显示的分页数量*/
        let startPage: number = pager.currentPage - pageShow;
        /*开始的页数*/
        let endPage: number = pager.currentPage + pageShow;
        /*结束的页数*/
        pager.pageArr = [];
        /*页码数组*/
        if (startPage < 1) {/*如果开始页数小于0*/
            endPage += 0 - startPage;
            /*结束页数增加小于0的数量*/
            startPage = 1;
        }
        if (endPage > pager.pageCount) {/*如果结束页数大于总页数*/
            let tempP = endPage - pager.pageCount;
            /*计算超出的数量*/
            if (startPage - tempP >= 1) {/**/
                startPage -= tempP;
            } else {
                startPage = 1;
            }
            endPage = pager.pageCount;
        }
        if (startPage > 1) {
            pager.pageArr.push('...');
        }
        for (let i = startPage; i <= endPage; i++) {
            pager.pageArr.push(i);
        }
        if (endPage < pager.pageCount) {
            pager.pageArr.push('...');
        }
        return pager;
    }
    /*弹层克隆打开公共方法*/
    layerDialog(option): any {
        if (!option) {
            return false;
        }
        let openDom = $(option.name);
        return layer.open({
            type: 1,
            closeBtn: 0,
            title: false,
            shadeClose: true,
            area: option.size,
            scrollbar: false,
            content: openDom,
            success(index) {/*打开之后回调*/
                option.success && option.success(openDom, index);
            },
            end() {/*关闭回调*/
                openDom.find('.js-dialog-input').val('');
                openDom.find('.js-dialog-html').html('');
                option.end && option.end(openDom);
            }
        });
    }
    /*给浮点数,返回百分比*/
    toPoint(num): any {
        var str = num.replace("%", "")
        str = str / 100
        return str
    }
    /*获取支付方式名称*/
    getPayType(num: any): string {
        let self = this;
        let payType = '';
        switch (num) {
            case 2:
                payType = '短信';
                break;
           
        }
        return payType;
    }
}