
import store from '@/store'
import config from '@/config'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
// import { toast, showConfirm, tansParams } from '@/utils/common'
let timeout = 10000
const baseUrl = config.baseUrl
/**
* 显示消息提示框
* @param content 提示的标题
*/
export function toast(content) {
  uni.showToast({
    icon: 'none',
    title: content
  })
}

/**
* 显示模态弹窗
* @param content 提示的标题
*/
export function showConfirm(content) {
  return new Promise((resolve, reject) => {
    uni.showModal({
      title: '提示',
      content: content,
      cancelText: '取消',
      confirmText: '确定',
      success: function(res) {
        resolve(res)
      }
    })
  })
}

// 字典值匹配
export function selectDictLabel(datas, value) {
	var actions = [];
	Object.keys(datas).some((key) => {
		// if (datas[key].dictValue == ('' + value)) {
		// 	actions.push(datas[key].dictLabel);
		// 	return true;
		// }
		if (datas[key].dictLabel == ('' + value)) {
			actions.push(datas[key].dictValue);
			return true;
		}
	})
	return actions.join('');
}
export function selectDictValue(datas, value) {
	var actions = [];
	Object.keys(datas).some((key) => {
		if (datas[key].dictValue == ('' + value)) {
			actions.push(datas[key].dictLabel);
			return true;
		}
	})
	return actions.join('');
}

/**
* 参数处理
* @param params 参数
*/
export function tansParams(params) {
  let result = ''
  for (const propName of Object.keys(params)) {
    const value = params[propName]
    var part = encodeURIComponent(propName) + "="
    if (value !== null && value !== "" && typeof (value) !== "undefined") {
      if (typeof value === 'object') {
        for (const key of Object.keys(value)) {
          if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
            let params = propName + '[' + key + ']'
            var subPart = encodeURIComponent(params) + "="
            result += subPart + encodeURIComponent(value[key]) + "&"
          }
        }
      } else {
        result += part + encodeURIComponent(value) + "&"
      }
    }
  }
  return result
}
// 上传
//上传图片
export function uploadmore(api, filePaths, successUp, failUp, i, length, files, callback) {
	const isToken = (config.headers || {}).isToken === false
	config.header = config.header || {}
	if (getToken() && !isToken) {
	  config.header['Authorization'] = 'Bearer ' + getToken()
	}
	// get请求映射params参数
	if (config.params) {
	  let url = config.url + '?' + tansParams(config.params)
	  url = url.slice(0, -1)
	  config.url = url
	}
	
	uni.showLoading({
		title: '上传中'
	})
	var failfile = [];
	uni.uploadFile({
		timeout: config.timeout || timeout,
		url: baseUrl + api, //仅为示例，非真实的接口地址
		filePath: filePaths[i],
		name: 'file',
		header: config.header,
		formData: config.formData,
		success: function(resp) {
			uni.hideLoading();
			let result = JSON.parse(resp.data)
			const code = result.code || 200
			const msg = errorCode[code] || result.msg || errorCode['default']
			// console.log(result.fileName,8)
			if (result.code == 200) {
				successUp++;
				files[i] = result.fileName;
			} else if(result.code==401) {
				showConfirm("登录状态已过期，您可以继续留在该页面，或者重新登录?").then(res => {
				  if (res.confirm) {
				    store.dispatch('LogOut').then(res => {
				      uni.reLaunch({ url: '/pages/login/login' })
				    })
				  }
				})
				callback('无效的会话，或者会话已过期，请重新登录。');
			}else{
				failfile = failfile.concat(filePaths[i])
				failUp++;
			}
		},
		fail: function(res) {
			uni.hideLoading();
			failfile = failfile.concat(filePaths[i])
			failUp++;
		},
		complete: function(rsp) {
			// console.log(rsp, filePaths[i])
			uni.hideLoading();
			i++;
			if (i == length) {
				uni.showToast({
					title: '总共' + successUp + '张上传成功,' + failUp + '张上传失败！',
					icon: 'none',
					duration: 2000
				});
				callback(files);
			} else { //递归调用upload函数
				uploadmore(api, filePaths, successUp, failUp, i, length, files, callback);
			}
		}
	});

}





export function clickPeople(e){//点击下载
				let _this = this;
                //下载地址
				var downloadUlr = e; 
                //获取地址后缀
				var suffix = e.split(".")[e.split(".").length - 1];
				
                //判断是否为（图片或视频）
				if(e.substring(e.length - 3) == "MP4" || e.substring(e.length - 3) == "mp4" || e.substring(e.length - 3) == "jpg" || e.substring(e.length - 3) == "png"){
					
					const downloadTask = uni.downloadFile({
						url:e, 
						success: res => {
							if (res.statusCode === 200) {
								
								if(res.tempFilePath.substring(res.tempFilePath.length - 3) == "mp4" || res.tempFilePath.substring(res.tempFilePath.length - 3) == "MP4"){//视频
								    //保存视频到相册
									uni.saveVideoToPhotosAlbum({
										filePath: res.tempFilePath,
										success: function () {
											uni.showToast({
												title: '保存成功',
												icon: 'none',
												duration:2000,
												mask:true
											});
										},
										fail: function() {
											// this.loadProgress = 0;
											uni.showToast({
												title: '保存失败',
												icon: 'none'
											});
										}
									});
								}else{//图片
									// 图片保存到手机相册
									uni.saveImageToPhotosAlbum({
										filePath: res.tempFilePath,
										success: function() {
											uni.showToast({
												title: '保存成功',
												icon: 'none',
												duration:2000,
												mask:true
											});
										},
										fail: function() {
											
											// this.loadProgress = 0;
											uni.showToast({
												title: '保存失败',
												icon: 'none'
											});
										}
									});
								
								}
							}else{
								uni.showToast({
									title:'下载失败',
									icon:"none"
								})
							}
						},
						fail:(err) => {
							
							// this.loadProgress = 0;
							uni.showToast({
								icon:"none",
								mask:true,
								title:'下载失败'
							})
						}
					});
					// downloadTask.onProgressUpdate((res) => {
					// 	this.loadProgress = res.progress;
					// 	if (this.loadProgress < 100) {
							
					// 	} else {
					// 		this.loadProgress = 0;
					// 	}
					// 	if(res.totalBytesExpectedToWrite < 10485760){
					// 		this.dltDownLvNew = Math.ceil(res.totalBytesWritten / 1024) + "KB";
					// 		this.dltDownLvAll = Math.ceil(res.totalBytesExpectedToWrite / 1024) + "KB";
					// 		this.dltDownLvWc = res.progress + "%"
					// 	}else{
					// 		this.dltDownLvNew = Math.ceil(res.totalBytesWritten / 1048576) + "M"
					// 		this.dltDownLvAll = Math.ceil(res.totalBytesExpectedToWrite / 1048576) + "M";
					// 		this.dltDownLvWc = res.progress + "%"
					// 	}
					// });
				}else{
                    //下载文件为非图片和视频的文件
					let _this = this;
					
					const downloadTaskt = uni.downloadFile({
						url:e,//下载地址接口返回
						success:(data) => {
							uni.hideLoading()
							if(data.statusCode === 200){
								var sFilePath = data.tempFilePath
								var sFileName = downloadUlr.split('/')[downloadUlr.split('/').length - 1];//原来的文件名
								
								//#ifdef APP-PLUS
									//文件保存到本地
									uni.saveFile({
										tempFilePath: data.tempFilePath,//临时路径
										success:function(res){
											
											var savedFilePath = res.savedFilePath;
											let osname = plus.os.name;
                                            //ios手机直接打开文件，手动存储文件到手机，Android手机从根目录创建文件夹，保存文件并改名
											if (osname == 'Android') {
												uni.showToast({
													icon:'none',
													mask:true, 
													title:'保存成功1',
													duration:1000,
												});
												// _this.fSetFileName(, sFilePath,e);
												// fSetFileName(sFilePath, sFileName,urls)
												// var =
												var sFileNames = res.savedFilePath.split('/')[res.savedFilePath.split('/').length - 1];//原来的文件名
													
													var aFileUrl = sFilePath.split('/').splice(0, sFilePath.split('/').length - 1);//saveFile API保存的本地地址
													
													var url = downloadUlr;//下载地址
														// 'url下载地址（和上面的一样）'
													let dtask = plus.downloader.createDownload(url, {
															filename: "file://storage/emulated/0/Download/" + sFileNames //在手机存储更目录创建一个叫AAA的文件夹，把文件存储进去，并更改会原名
														},
														(d, status) => {
															console.log(status,77)
															if (status == 200) {
																let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
																console.log(fileSaveUrl,99)
															} else {
																//下载失败
																plus.downloader.clear(); //清除下载任务
															}
														})
													dtask.start();
												
												
												
											}
											setTimeout(() => {
												//打开文档查看
												uni.openDocument({
													filePath:res.savedFilePath,
													success:function(res){
														// console.log("成功打开文件")
													},
													fail(){
														// console.log("打开文件失败")
													}
												})
											},1000)
										},
										fail:function(res){
											
										}
									});
								//#endif
								//#ifdef MP-WEIXIN
                                    //小程序对文件下载并不友好，不建议使用小程序当做下载器
									const FileSystemManager = wx.getFileSystemManager();
									FileSystemManager.saveFile({//下载成功后保存到本地
										tempFilePath:data.tempFilePath,
										filePath:wx.env.USER_DATA_PATH + "/" + sFileName,
										success(res2){
											if(res2.errMsg == 'saveFile:ok'){
												
												// 判断手机平台是 Android 还是 IOS
												if (uni.getSystemInfoSync().platform === 'android') {
													// console.log('运行Android上')
													uni.showModal({
														title:"保存地址为",
														content:"手机存储/Android/data/com.tencent.mm/MicroMsg/wxanewfiles"
													})
												} else {
													// console.log('运行iOS上')
													uni.showToast({
														title:"请转移APP下载",
														icon:"none"
													})
												}
												
											}else{
												uni.showToast({
													title:"下载失败",
													icon:"none"
												})
											}
										},
										fail(){
											uni.showToast({
												title:"下载失败",
												icon:"none"
											})
										}
									})
								//#endif
								
							}else{
								this.loadProgress = 0;
								uni.showToast({
									icon:"none",
									mask:true,
									title:"下载失败"
								})
							}
						},
						fail:(err) => {
							this.arcZzShow = false;
							this.loadProgress = 0;
							uni.showToast({
								icon:"none",
								mask:true,
								title:"下载失败"
							})
						}
					})
					// downloadTaskt.onProgressUpdate((res) => {
					// 	this.loadProgress = res.progress;
					// 	if (this.loadProgress < 100) {
							
					// 	} else {
					// 		this.loadProgress = 0;
					// 	}
					// 	if(res.totalBytesExpectedToWrite < 10485760){
					// 		this.dltDownLvNew = Math.ceil(res.totalBytesWritten / 1024) + "KB";
					// 		this.dltDownLvAll = Math.ceil(res.totalBytesExpectedToWrite / 1024) + "KB";
					// 		this.dltDownLvWc = res.progress + "%"
					// 	}else{
					// 		this.dltDownLvNew = Math.ceil(res.totalBytesWritten / 1048576) + "M"
					// 		this.dltDownLvAll = Math.ceil(res.totalBytesExpectedToWrite / 1048576) + "M";
					// 		this.dltDownLvWc = res.progress + "%"
					// 	}
						
					// });
				}
	
					
			}
// 下载改名
export function fSetFileName(sFilePath, sFileName,urls) {
	var sFileName = sFileName.split('/')[sFileName.split('/').length - 1];//原来的文件名
		
		var aFileUrl = sFilePath.split('/').splice(0, sFilePath.split('/').length - 1);//saveFile API保存的本地地址
		
		var url = urls;//下载地址
			// 'url下载地址（和上面的一样）'
		let dtask = plus.downloader.createDownload(url, {
				filename: "file://storage/emulated/0/AAA/" + sFileName //在手机存储更目录创建一个叫AAA的文件夹，把文件存储进去，并更改会原名
			},
			(d, status) => {
				console.log(status,77)
				if (status == 200) {
					let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
					console.log(fileSaveUrl,99)
				} else {
					//下载失败
					plus.downloader.clear(); //清除下载任务
				}
			})
		dtask.start();
}