import * as baseUrls from "@/utils/request.js";
import api from '@/api/api'
import router from '@/router/index'//引入路由对象
// import { map } from "core-js/core/array";
export default {
	getUrl() {
		return baseUrls.BASE_IMG_URL + '/'
	},
	isLogin() {
		if (uni.getStorageSync('union_id')) {
			return true;
		} else {
			return false
		}
	},
	splitImgHost(url) {
		if (!url) {
			return ''
		}
		if (url.indexOf("http") != -1 || url.indexOf("https") != -1 || url.indexOf("base64") != -1) {
			return url;
		}
		return baseUrls.BASE_IMG_URL + '/' + url
	},
	onlyForma(timeStamp, Diszing = true) {
		if (!timeStamp) {
			return
		}
		var date = new Date(timeStamp * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000
		var Y = date.getFullYear() + '-';
		var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
		var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
		var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
		var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
		var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
		if (Diszing) {
			return Y + M + D + ' ' + h + m + s; //时分秒可以根据自己的需求加上
		}
		return Y + M + D;
	},
	/**
	 * 
	 * @returns 获取当前时间戳
	 */
	getNewTime() {
		var data = new Date().getTime()
		return data
	},
	//判断是否为数字
	isNotANumber(inputData) {
		//isNaN(inputData)不能判断空串或一个空格
		//如果是一个空串或是一个空格，而isNaN是做为数字0进行处理的，而parseInt与parseFloat是返回一个错误消息，这个isNaN检查不严密而导致的。
		if (parseFloat(inputData).toString() == "NaN") {
			//alert("请输入数字……");注掉，放到调用时，由调用者弹出提示。
			return false;
		} else {
			return true;
		}
	},
	//判断是否为数组
	isArrayFn(o) {
		return Object.prototype.toString.call(o) === '[object Array]';
	},
	computedAge(birthday) {
		let birthDayTime = new Date(birthday).getTime();
		//当前时间 毫秒
		let nowTime = new Date().getTime();
		//一年毫秒数(365 * 86400000 = 31536000000)
		return Math.ceil((nowTime - birthDayTime) / 31536000000);
	},
	time10to13(time, int) {
		if (time === null) {
			return null
		}
		// int = 1 为13转10
		// int = 2 为10转13
		if (int === 1) {
			return parseInt(time / 1000)
		} else {
			return parseInt(time * 1000)
		}
	},

	//计算两个时间之间的时间差 多少天时分秒
	intervalTime(startTime, endTime) {
		// var timestamp=new Date().getTime(); //计算当前时间戳
		var timestamp = (Date.parse(new Date())) / 1000;//计算当前时间戳 (毫秒级)
		var date1 = ""; //开始时间
		if (timestamp < startTime) {
			date1 = startTime;
		} else {
			date1 = timestamp; //开始时间
		}
		var date2 = endTime; //结束时间
		// var date3 = date2.getTime() - date1.getTime(); //时间差的毫秒数
		var date3 = (date2 - date1) * 1000; //时间差的毫秒数
		//计算出相差天数
		var days = Math.floor(date3 / (24 * 3600 * 1000));
		//计算出小时数
		//2021-11-15 10:48:07 2021-11-15 17:34:39 406分钟
		var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
		var hours = Math.floor(leave1 / (3600 * 1000));
		//计算相差分钟数
		var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
		var minutes = Math.floor(leave2 / (60 * 1000));

		//计算相差秒数

		var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
		var seconds = Math.round(leave3 / 1000);
		console.log(days + "天 " + hours + "小时 ")
		// return   days + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒"
		return days + "天 " + hours + "小时 "
	},
	//计算两个时间之间的时间差 多少天时分秒
	newTime(endTime) {
		if (!endTime) {
			return '-'
		}
		var date1 = (Date.parse(new Date())) / 1000; //开始时间
		if (date1 > endTime) {
			return '0'
		}
		var date2 = endTime; //结束时间
		// var date3 = date2.getTime() - date1.getTime(); //时间差的毫秒数
		var date3 = (date2 - date1) * 1000; //时间差的毫秒数
		//计算出相差天数
		var days = Math.floor(date3 / (24 * 3600 * 1000));
		//计算出小时数
		//2021-11-15 10:48:07 2021-11-15 17:34:39 406分钟
		var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
		var hours = Math.floor(leave1 / (3600 * 1000));
		//计算相差分钟数
		var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
		var minutes = Math.floor(leave2 / (60 * 1000));

		//计算相差秒数

		var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
		var seconds = Math.round(leave3 / 1000);
		return days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒"
		// return days
	},
	/**
	 * 
	 * @param {int} result 
	 * @returns {string}
	 * @remard 单位S转小时分钟秒
	 */
	secondToDate(result, Diszing = true) {
		var h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
		var m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
		var s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
		if (h == 0 && Diszing) {
			result = m + ":" + s;
		} else {
			result = h + ':' + m + ":" + s
		}
		return result;
	},
	/**
	 * @param {string} result 
	 * @returns int
	 * @remard 00:00:00格式转秒
	 */
	secondFormDate(result) {
		if (result) {
			let reTime = result.split(":").map(Number)
			var hs = reTime[0] * 60 * 60
			var ms = reTime[1] * 60
			var ss = reTime[2]
			return hs + ms + ss
		} else {
			return 0
		}
	},
	/**
	 * 扁平结构转换成树形结构 ---最佳性能方法
	 * @param {Arrays} items 数据
	 * @param {Strings} Id 参数名称 例如:'id' 默认id
	 * @param {Strings} pId	参数名称 例如:'pid' 默认 pid
	 * @returns 返回树形结构
	 */
	arrayToTree(items, Id = 'id', pId = 'pid') {
		const result = []; // 存放结果集
		const itemMap = {}; //
		for (const item of items) {
			const id = item[Id];
			const pid = item[pId];

			if (!itemMap[id]) {
				itemMap[id] = {
					children: [],
				};
			}

			itemMap[id] = {
				...item,
				children: itemMap[id]["children"],
			};

			const treeItem = itemMap[id];

			if (pid === 0) {
				result.push(treeItem);
			} else {
				if (!itemMap[pid]) {
					itemMap[pid] = {
						children: [],
					};
				}
				itemMap[pid].children.push(treeItem);
			}
		}
		return result;
	},
	//JS计算两个时间戳相差月数、天数、时数、分钟、秒数
	humandate(time1, time2) {
		// var time1 = Date.parse(new Date()) / 1000;
		var s = time1 - time2;
		if (s < 0) {
			s = Math.abs(s);
		}
		return parseInt(s / 60) + '分钟'
	},
	//判断是否过期 true过期 false未过期
	expiredTime(items) {
		var currentTime = parseInt(Date.parse(new Date()) / 1000)
		if (currentTime > items) {
			return true
		} else {
			return false
		}
	},
	/**
	 * int 0.今天时间戳范围 1.昨天时间戳范围 2.7天时间戳范围
	 */
	timestampConvert(int) {
		var date1, date2
		switch (int) {
			case 0:
				date1 = new Date(new Date().toLocaleDateString()).getTime()
				date2 = new Date().getTime()
				break;
			case 1:
				date1 = new Date(new Date().toLocaleDateString()).getTime() - 86400000
				date2 = new Date(new Date().toLocaleDateString()).getTime() - 1000
				break;
			case 2:
				date1 = new Date(new Date().toLocaleDateString()).getTime() - 604800000
				date2 = new Date().getTime()
				break;
			default:
				break;
		}
		return [parseInt(date1), parseInt(date2)]
	},
	getQueryVariable(variable) {
		var query = window.location.search.substring(1);
		var vars = query.split("&");
		for (var i = 0; i < vars.length; i++) {
			var pair = vars[i].split("=");
			if (pair[0] == variable) { return pair[1]; }
		}
		return (false);
	},
	setToken(tokenInfo, int) {
		var newTime = new Date().getTime()
		var ESTime = new Date().getTime() + 1000 * 60 * 60 * 24
		var SEVENTime = new Date().getTime() + 1000 * 60 * 60 * 24 * 7
		if (int === 1) {
			localStorage['Expiration' + this.getQueryVariable('TenantId')] = ESTime
		}
		if (int === 7) {
			localStorage['Expiration' + this.getQueryVariable('TenantId')] = SEVENTime
		}
		localStorage['token' + this.getQueryVariable('TenantId')] = tokenInfo
	},
	checkToken() {
		var newTime = new Date().getTime()
		var Time = localStorage['Expiration' + this.getQueryVariable('TenantId')]
		if (newTime > Time) {
			localStorage.removeItem('Expiration' + this.getQueryVariable('TenantId'))
			localStorage.removeItem('token' + this.getQueryVariable('TenantId'))
			setTimeout(() => {
				router.replace({
					path: `/login?TenantId=${this.getQueryVariable('TenantId')}`
				})
			}, 500)
			return
		} else {
			return localStorage.getItem('token' + this.getQueryVariable('TenantId'))
		}
	},
	delToken(status) {
		localStorage.removeItem('Expiration' + this.getQueryVariable('TenantId'))
		localStorage.removeItem('token' + this.getQueryVariable('TenantId'))
		if (status) {
			setTimeout(() => {
				router.replace({
					path: `/login?TenantId=${this.getQueryVariable('TenantId')}`
				})
			}, 500)
		}
	},
	/**
	 * 
	 * @param {strings} name 
	 * @returns 获取localStorage缓存
	 */
	storageGet(name) {
		return window.localStorage.getItem(name)
	},
	/**
	 * 
	 * @param {strings} name 
	 * @param {strings} val 
	 * @returns 设置localStorage缓存
	 */
	storageSet(name, val) {
		return window.localStorage.setItem(name, val)
	},
	/**
	 * 
	 * @param {strings} name 
	 * @returns 移除指定name
	 */
	storageRemove(name) {
		return window.localStorage.removeItem(name)
	},
	/**
	 * 
	 * @param {Arrays} arr 数据
	 * @param {Strings} uniId 根据哪个参数去重
	 * @returns 对象数组去重
	 */
	uniqueFunc(arr, uniId) {
		const res = new Map();
		return arr.filter(
			(item) => !res.has(item[uniId]) && res.set(item[uniId], 1)
		);
	},
}
