import { objToUrl } from '@/libs/tools.js';
const baseUrl = getApp().globalData.baseUrl
//带Token请求
const request = (opts, hasToken) => {
	const authorization = getApp().globalData.token
	// console.log(authorization,'authorization')
	//  hasToken是否传入token,为true则不传token
	const header = {
			'content-Type': 'application/json;charset=UTF-8'
		}
	if(!hasToken&&authorization){
		header['X-AUTH-TOKEN'] = authorization
	}	
	//此token是登录成功后后台返回保存在storage中的
	let DefaultOpts = {
		url: baseUrl+opts.url,
		data: opts.data,
		method: opts.method,
		header: opts.header ? opts.header : header
	}
	let promise = new Promise(function(resolve, reject) {
		uni.request(DefaultOpts).then(
			(res) => {
				console.log(res)
				// 是否超时已跳转
				let loginTimeOut = uni.getStorageSync('loginTimeOut');
				if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
					resolve({
						status: 6000,
						message: "网络请求失败"
					})
				}
				let ret = res[1]
				if(res[1].data.status){
					ret = res[1].data
				}else if(res[1].status){
					ret = res[1]
				}
				if(ret.status == '200'){
					resolve(ret)
				}else{
					if(ret.status == '401'){  //  未登录或登录过期
					    uni.showToast({
					    	icon:'none',
					    	title: '未登录或登录已过期,请重新登录',
					    	duration: 5000 
					    })
					    setTimeout(function() {
					      const currentRoute = getRoutePath();
					      const url = `/pages/login/login?lanuch=${currentRoute.lanuch}&path=` + encodeURIComponent(currentRoute.url);
					      uni.redirectTo({ url });
					    }, 1000);
					}
					else{
						if(ret.status == 500){
							uni.showToast({
								icon:'none',
								title: ret.message,
								mask: true,
								duration: 3000 
							})
						}
					}
					resolve(ret)
				}
				resolve(ret)
			}
		).catch(
			(response) => {
				reject(response)
			}
		)
	})
	return promise
}
function getRoutePath() {
  // eslint-disable-next-line no-undef
  const pages = getCurrentPages(); // 获取加载的页面
  const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
  let url = currentPage.route; // 当前页面url
  const options = objToUrl(currentPage.options); // 如果要获取url中所带的参数可以查看options

  const lanuch = [
    'pages/index/index'
  ].includes(url);
  url = '/' + url;
  if (options.length) {
    url += '?' + options;
  }
  return {
    url,
    lanuch
  };
}

export default {
	baseUrl,
	request
}