/*
 * 公共方法
 *
 */
import moment from 'moment';
import { lang } from 'moment';

const base64ToFile = (dataurl, filename = 'file') => {
	let arr = dataurl.split(',')
	let mime = arr[0].match(/:(.*?);/)[1]
	let suffix = mime.split('/')[1]
	let bstr = atob(arr[1])
	let n = bstr.length
	let u8arr = new Uint8Array(n)
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n)
	}
	return new File([u8arr], `${filename}.${suffix}`, {
		type: mime
	})

}
const toast = (msg, time, callback) => {
	uni.showToast({
		icon: "none",
		title: msg,
		duration: time || 1500,
		success: function(res) {
			if (callback && typeof(callback) == 'function') {
				console.log(callback)
				callback()
			}
		}
	})
}
// 转换日期为日月
const formatDateToMonthDay = (dateString) => {
	const month = moment(dateString).format('MM')
	const day = moment(dateString).format('DD')
	return `${month}月${day}日`;
}
// 比较当前时间是否在活动期间 在true 不在false
const isCurrentTimeBetween = (startTime, endTime) => {
	let that = this
	const now = moment().valueOf()
	const start = moment(startTime).valueOf();
	const end = moment(endTime).valueOf();
	return now < start || now > end;
}
// 验证是否填写的是中文
const isOnlyChinese = (str) => {
	const chineseRegex = /^[\u4e00-\u9fa5]+$/;
	return chineseRegex.test(str);
}

// 验证是否为空
const isNull = (p) => {
	return p == '' || p == undefined || p == null || p == 'undefined' || p == 'null';
}

// 验证手机号
const isMobile = (phoneNumber) => {
	const regex = /^1[3-9]\d{9}$/;
	return regex.test(phoneNumber);
}
// 分享
const shareInfo = {
	title:"蟹太太",
	imageUrl:"/static/share.jpg"
}

// 计算距离   
const getDistance = (la1, lo1, la2, lo2) => { // 当前的纬度，当前的经度，接口拿到的纬度，接口拿到的经度
	console.log(la1, lo1, la2, lo2)
	la1 = parseFloat(la1)
	lo1 = parseFloat(lo1)
	la2 = parseFloat(la2)
	lo2 = parseFloat(lo2)
	console.log(la1, lo1, la2, lo2)
	let La1 = la1 * Math.PI / 180.0;
	let La2 = la2 * Math.PI / 180.0;
	let La3 = La1 - La2;
	let Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;
	let distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math
		.pow(Math.sin(Lb3 / 2), 2)));
	distance = distance * 6378.137;
	distance = Math.round(distance * 10000) / 10000;
	if (distance < 0) {
		return distance * 1000 + '米'
	} else {
		return distance.toFixed(2) + '公里'
	}
}

// 打开导航
const toMapAPP = (lat,lng,name) => {
	let that = this
	const lat1 = parseFloat(lat)
	const lng1 = parseFloat(lng)
	// 获取用户是否开启 授权获取当前的地理位置、速度的权限。
	uni.getSetting({
		success(res) {
			console.log(res, '----1')
			// 如果没有授权
			if (!res.authSetting['scope.userLocation']) {
				// 则拉起授权窗口
				uni.authorize({
					scope: 'scope.userLocation',
					success() {
						//如果授权了
						uni.openLocation({
							latitude: lat1, //到达的纬度
							longitude: lng1, //到达的经度
							name: name, //到达的名字
							scale: 12,
							success() {
								console.log('success')
							}
						})
					},
					fail(error) {
						//点击了拒绝授权后--就一直会进入失败回调函数--此时就可以在这里重新拉起授权窗口
						console.log('拒绝授权', error)

						uni.showModal({
							title: '提示',
							content: '若点击不授权，将无法使用位置功能',
							cancelText: '不授权',
							cancelColor: '#999',
							confirmText: '授权',
							confirmColor: '#f94218',
							success(res) {
								console.log(res)
								if (res.confirm) {
									// 选择弹框内授权
									uni.openSetting({
										success(res) {
											console.log(res.authSetting)
										}
									})
								} else if (res.cancel) {
									// 选择弹框内 不授权
									console.log('用户点击不授权')
								}
							}
						})
					}
				})
			} else {
				console.log('有授权');
				// 有权限则直接获取
				uni.openLocation({
					latitude: lat1, //到达的纬度
					longitude: lng1, //到达的经度
					name: name, //到达的名字
					scale: 12,
					success() {
						console.log('success')
					}
				})
			}
		}
	})

}
// 检查是否空对象
const isEmptyObject = (obj) => {
  // 检查传入参数是否为一个对象
  if (typeof obj !== 'object' || obj === null) {
    throw new Error('Input must be an object');
  }

  // 使用Object.keys()方法获取对象的属性键数组，并检查其长度是否为0
  return Object.keys(obj).length === 0;
}

export {
	base64ToFile,
	toast,
	formatDateToMonthDay,
	isCurrentTimeBetween,
	isOnlyChinese,
	isNull,
	isMobile,
	getDistance,
	toMapAPP,
	shareInfo,
	isEmptyObject
}