const baseurl = import.meta.env.VITE_REQUEST_BASE_URL + '/jeecg-boot/sys/common/static/'
/**提示*/
export const toast = (title, icon, duration) => {
	uni.showToast({
		title,
		icon: icon || 'none',
		duration: duration || 2000
	})
}
import {
	useStore
} from '@/store';
import {
	getUserPermissionApi
} from '@/api/login.js'
/**判断用户跳转前是否可以进入该页面*/
export const beforeJump = (url, callback) => {
	const store = useStore();
	// let page = store.allowPage
	getUserPermissionApi({
		token: store.token,
		type: 'mobile'
	}).then((res) => {
		if (res.success) {
			// 登录人被允许访问的页面
			let page = handleAllowPage(res.result?.menu || [])
			// console.log('@!1',res.result?.menu);
			if (page.some(item => url.indexOf(item) !== -1)) {
				callback()
			} else {
				toast('无查看权限！')
			}
		}
	}).catch((err) => {
		console.log('err@', err);
	})
	// 用户点击的页面路径是否被允许

}

// 处理接口返回的允许访问页面的数据
const handleAllowPage = (menu, arr = []) => {
	if (!menu.length) {
		return []
	}
	menu.forEach((item) => {
		if (item.children) {
			arr.push(...handleAllowPage(item.children))
		}
		arr.push(item.path)
	})
	return arr
}

/**
 * 判断是否有新版本
 * @param version 接口返回的版本号
 * @param isWgt 是否是热资源更新 默认不是
 */
export const hasNewVersion = (version, isWgt = false) => {
	// #ifdef APP_PLUS
	return new Promise((resolve) => {
		const transfer = (str) => str.replace(/\./g, '')
		if (isWgt) {
			plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
				const currentVersion = widgetInfo.version
				resolve(+transfer(version) > +transfer(currentVersion))
			})
		} else {
			const currentVersion = plus.runtime.version
			resolve(+transfer(version) > +transfer(currentVersion))
		}
	})
	// #endif
}

function downloadApp(url) {
	console.log('url', url);
	var dtask = plus.downloader.createDownload(url, {
		filename: `_downloads/wgt-${Date.now()}.wgt` //利用保存路径，实现下载文件的重命名
	}, function(d, status) {
		//d为下载的文件对象
		if (status == 200) {
			//下载成功,d.filename是文件在保存在本地的相对路径，使用下面的API可转为平台绝对路径
			var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
			console.log('fileSaveUrl', fileSaveUrl);
			installApp(fileSaveUrl)
		} else {
			//下载失败
			plus.downloader.clear(); //清除下载任务
			uni.showToast({
				title: 'App下载失败！',
				icon: 'error'
			})
		}
	})
	let prg = 0
	let showLoading = plus.nativeUI.showWaiting('正在下載')
	dtask.start()
	dtask.addEventListener('statechanged', (task, status) => {
		// 给下载任务设置一个监听 并根据状态  做操作
		switch (task.state) {
			case 1:
				showLoading.setTitle("正在下载")
				break
			case 2:
				showLoading.setTitle("已连接到服务器")
				break
			case 3:
				prg = parseInt(
					(
						parseFloat(task.downloadedSize) /
						parseFloat(task.totalSize)
					) * 100
				)
				showLoading.setTitle("  正在下载")
				break
			case 4:
				plus.nativeUI.closeWaiting()
				//下载完成
				break
		}
	})
	// const downloadTask = uni.downloadFile({
	// 	url,
	// 	success: res => {
	// 		if (res.statusCode === 200) {
	// 			console.log('res.tempFilePath',res.tempFilePath);
	// 			installApp(res.tempFilePath)
	// 		} else {
	// 			uni.showToast({
	// 				title: 'App下载失败！',
	// 				icon: 'error'
	// 			})
	// 		}
	// 	}
	// })

	// downloadTask.onProgressUpdate(res => {
	// 	progress.value = res.progress
	// })
}

function installApp(tempFilePath) {
	// #ifdef APP-PLUS
	plus.runtime.install(
		tempFilePath, {
			force: true
		},
		() => {
			uni.showModal({
				title: '更新',
				content: '更新成功，请点击确认后重启',
				showCancel: false,
				success(res) {
					if (res.confirm) {
						plus.runtime.restart()
					}
				}
			})
		},
		() =>
		uni.showToast({
			title: '安装失败！',
			icon: 'error'
		})
	)
	// #endif
}

export function onClickUpdate(updateType, url) {
	// #ifdef APP-PLUS
	if (updateType != 'wgt') plus.runtime.openURL(url.apkUrl)
	else downloadApp(url.wgtUrl)
	// #endif
}
/**
 * 获取年月日
 */
export const getTime = () => {
	let date = new Date(); //Fri Oct 29 2021 16:37:56 GMT+0800 (CST)
	let timestamp = new Date().getTime(); //1635496676223		(毫秒级)
	let y = date.getFullYear(); //获取完整的年份(4位)
	let m = (date.getMonth() + 1).toString().padStart(2, 0); //获取当前月份(0-11,0代表1月)
	let d = (date.getDate()).toString().padStart(2, 0); //获取当前日(1-31)
	return `${y}-${m}-${d}`
}
/**
 * 定位
 */
export const getLocation = () => {
	const store = useStore()
	// if (!store.positionSwitch) {
	// 	uni.setStorageSync('position', '濮阳市')
	// 	store.setPosition('濮阳市')
	// 	getWeather()
	// } else {
	// toast('定位刷新中')
	uni.getLocation({
		type: 'wgs84',
		success: function(position) {
			uni.request({
				url: 'http://api.tianditu.gov.cn/geocoder',
				method: 'GET',
				data: {
					postStr: JSON.stringify({
						lon: position.longitude,
						lat: position.latitude,
						ver: 1
					}),
					type: 'geocode',
					tk: '30fe0f0c1b2320e112bde797f3ddaff4'
				},
				success: function(res) {
					let data = res.data;
					if (data.status == 0) {
						const obj = data.result.addressComponent
						let info = obj.city ? obj.city : obj.province
						uni.setStorageSync('position', info)
						store.setPosition(info)
						// toast('定位刷新成功');
						getWeather(position.latitude, position.longitude)
					} else {
						console.log(data.message);
					}
				},
				fail: function(err) {
					toast('获取定位失败');
					console.log('地址解析失败' + err);
				}
			});
		}
	});
	// }
}
export const getWeather = (lat, lon) => {
	const store = useStore()
	// toast('天气刷新中')
	let params = {}
	// if (!store.positionSwitch) {
	// 	params.q = '濮阳市'
	// 	weatherRequest(params)
	// 	console.log('shfjshdkfj @@@@jdfg');
	// } else {
	params.lat = lat
	params.lon = lon
	weatherRequest(params)

	// }
}
const weatherRequest = (params) => {
	const store = useStore()
	uni.request({
		url: 'https://api.openweathermap.org/data/2.5/weather',
		method: 'GET',
		data: {
			...params,
			appid: '600a60694b0e453dfbaafa862f1d1482',
			lang: 'zh_cn'
		},
		success: function(res) {
			uni.setStorageSync('wendu', Math.round(res.data.main.temp - 273.15))
			uni.setStorageSync('wenduIcon', res.data.weather[0].icon)
			store.setWeather(Math.round(res.data.main.temp - 273.15), res.data
				.weather[0].icon)
			// toast('天气刷新成功');
		},
		fail: function(err) {
			toast('天气获取失败');
			console.log('天气获取失败' + err);
		}
	});
}

export const opendocument = (url) => {
	uni.downloadFile({
		url: baseurl + url,
		success: function(res) {
			var filePath = res.tempFilePath;
			uni.openDocument({
				filePath: filePath,
				showMenu: true,
				fail: function(err) {
					toast(err.errMsg);
				}
			});
		},
		fail: function(err) {
			console.error('文件下载失败', err);
		}
	});
}

export const preview = (current, urls) => {
	console.log(current, urls, 'current, urls');
	uni.previewImage({
		// current,
		urls,
		indicator: 'default',
		loop: false,
		longPressActions: {
			itemList: ['保存图片'],
			success: function(data) {
				console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
			},
			fail: function(err) {
				console.log(err.errMsg);
			}
		}
	});
}
export const imgUrl = (url) => {
	return baseurl + `/${url}`
}