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

}