import config from '../config'

// import store from '../store'

const loginUrl = 'pages/user/login';
// function JSON_to_URLEncoded(element,key,list){
//   var list = list || [];
//   if(typeof(element)=='object'){
//     for (var idx in element)
//       JSON_to_URLEncoded(element[idx],key?key+'['+idx+']':idx,list);
//   } else {
//     list.push(key+'='+encodeURIComponent(element));
//   }
//   return list.join('&');
// }
export default {
	REQUEST(url, method = 'GET', data, checkLogin = true, header) {
		
		let token = uni.getStorageSync('access_token') || 'Basic ZGV2OmRldjEyMw==';
		const headers = {
			// "Content-Type": "application/json",
			"Content-Type": "application/x-www-form-urlencoded",
			"Authorization": token,
			"x-token": token,
			"token":token,
			// "X-Forwarded-For":'client_ip'
			// 'Referer':'twzxjy.com'
		}
		var pages = getCurrentPages();
		var page = pages[pages.length - 1];
		return uni.request({
			url: config.baseUrl + url,
			method,
			header: {
				...header,
				...headers
			},
			data
		}).then(res => {
			// console.log(res)
			if (res.statusCode === 200 && res.data) {
				if (res.data.code === 409) {
					uni.showModal({
						title:"提示",
						content:"您的账号已在其他设备登录，已强制下线!",
						confirmColor: '#006647',
						showCancel: false,
						success: (res) => {
							if (res.confirm) {
								uni.removeStorageSync('access_token');
								uni.removeStorageSync('user_info');
								if (checkLogin && page.route != loginUrl) {
									uni.navigateTo({
										url: '/' + loginUrl
									});
								}
							}
						}
					});
					return {
						...res.data
					}
				}
				if (res.data.code === 5) { // 用户认证失败
					uni.removeStorageSync('access_token');
					if(page.route != loginUrl && checkLogin) {
						uni.navigateTo({
							url: '/' + loginUrl
						});
					}
				}
				return res.data;
			} else {
				const reg = /abort/;
				let code = 0;
				let msg = (res[0] && res[0].errMsg) || '未知错误';
				if ((res[0] && res[0].errMsg) && reg.test(res[0].errMsg)) {
					msg = '网络请求中断'
				}
				return {
					code,
					msg,
					data: null
				}
			}
		}).catch(parmas => {
			// console.log(params)
			return parmas
			// 　　　　	return Promise.reject()
		})
	},

	GET(url, body, checkLogin = true, header) {
		return this.REQUEST(url, 'GET', body, checkLogin, header);
	},
	POST(url, body, checkLogin = true, header) {
		return this.REQUEST(url, 'POST', body, checkLogin, header);
	},
	PUT(url, body, header) {
		return this.REQUEST(url, 'PUT', body, header);
	},
	DELETE(url, body, header) {
		return this.REQUEST(url, 'DELETE', body, header);
	},
	UPLOAD(data) {
		return new Promise((resolve, reject) => {
			let token = uni.getStorageSync('access_token') || '';
			uni.uploadFile({
				...data,
				url: config.base_url + data.url,
				header: {
					"Access-Token": token
				},
				success(res) {
					res.data = JSON.parse(res.data);
					if (res.data.code === 401) {
						uni.removeStorageSync('access_token');
						uni.removeStorageSync('userInfo');

						uni.navigateTo({
							url: '/pages/login/login'
						});
					}
					resolve(res);
				},
				fail(e) {
					console.log(e);
					reject(e)
				},
			});
		});
	},
	getShareProvider: () => {
		return uni.getProvider({
			service: "share"
		}).then(res => {
			let data = []
			for (let i = 0; i < res.provider.length; i++) {
				switch (res.provider[i]) {
					case 'weixin':
						data.push({
							name: '微信好友',
							id: 'weixin',
							icon: '/static/wx.png'
						})
						data.push({
							name: '朋友圈',
							id: 'weixin',
							type: 'WXSenceTimeline',
							icon: '/static/pyq.png'
						})
						break;
					case 'qq':
						data.push({
							name: 'QQ好友',
							id: 'qq',
							icon: '/static/qq.png'
						})
						break;
					default:
						break;
				}
			}
			return data;
		}).catch(parmas => {
			return Promise.reject()
		});
	},
	getPaymentProvider: () => {
		return uni.getProvider({
			service: "payment"
		}).then(res => {
			let data = [];
			const aliPay = {
				name: '支付宝支付',
				id: 'alipay',
				icon: '/static/order/zfbp@3x.png'
			};

			const wxPay = {
				name: '微信支付',
				id: 'wxpay',
				icon: '/static/order/wxp@3x.png'
			};

			const yuePay = {
				name: '余额支付',
				id: 'yepay',
				icon: '/static/order/yep@3x.png'
			}

			for (let i = 0; i < res[1].provider.length; i++) {
				switch (res[1].provider[i]) {
					case 'alipay':
						data.push({
							...aliPay
						})
						break
					case 'wxpay':
						data.push({
							...wxPay
						})
						break;
					default:
						break;
				}
			}

			//#ifdef H5
			return [aliPay, wxPay, yuePay];
			//#endif
			
			return [...data, yuePay];
		}).catch(parmas => {
			return Promise.reject()
		});
	}
}
