js常用函数

/***
 * 不依赖任何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;
    }

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352