import _config from './config'; // 导入私有配置
// 这里service是自己做的本地信息存储封装的一个配置文件,方便管理使用
import service from './service'; // 这里是之前项目配置本地存储账号信息的,不需要可以删除

export default function $http(options) {
    // 进行url字符串拼接,_config.url是再config中配置要请求的域名或者id+端口号这样方便管理,
    // options.url是index中请求配置的,完美拼接
  options.url = _config.url + options.url;
  console.log(options.url)
  return new Promise((resolve, reject) => {
    // 拦截请求
	// _config.header.Authorization=service.getToken()//这里是调用本地存储配置文件的方法不需要可以改下面这种方式
	let token = uni.getStorageSync('token')
	console.log('token',service.getToken(),uni.getStorageSync('token') )
	// if(service.getStorageExpires('utn')) {
	// 	_config.header.Authorization = service.getStorageExpires('utn')
	// 	service.setStorageExpires('utn', _config.header.Authorization, 30)	
	// 	console.log('Authorization',_config.header.Authorization )
	// }else {
	// 	service.getStorageExpires('token') && uni.removeStorageSync("token")
	// 	uni.redirectTo({
	// 		url: "/pages/login/index"
	// 	})
	// }
	
	_config.header['Content-type'] = 'application/json;charset=utf-8'
	_config.header['Authorization'] = "Bearer " + token
	_config.timeout = 600000
	// _config.header['Content-type'] = 'application/x-www-form-urlencoded;charset=utf-8'
	//_config.header.Authorization=uni.getStorageSync(STATE_KEY);
    _config.complete = (response) => {
	console.log(response)
       // 登录失效这边后台是返回403看情况
	   if(response.data.code === 403){
		   //返回登录界面
	       uni.navigateTo({
		   	url:'/pages/login/login'
		   })
		   uni.showToast({
		        icon: 'none',
		        title: '登录已失效'
		    });
		    //清空token
			service.addToken('')
	   }
	   
       //  request請求访问成功  这里返回的时候response.data才是请求返回的结果errorCode   
       if(response.data.code === 200){
		   resolve(response.data)
	   }else{
		   // 接口请求失败
		   resolve(response.data)
		   //console.log(response.data)
		   // 处理catch 请求,不在本页面之外处理,统一在这里处理
			if(options.handle){
				reject(response)
			}else{
				try {
				  Promise.reject(response).catch(err => {
				    //console.error(err);  
					_page_error(response.statusCode || response.errMsg);
				  });
				} catch (e) {
				  console.log(e)
				}
			}
	   }
    }
    // 开始请求
    uni.request(Object.assign({}, _config, options));
  })
}

// 接口錯誤
function _error(err, msg = '') {
  switch (err) {
    case 400:
      console.error(msg)
      // 错误码400的处理方式
      break;
  }
}
// request 錯誤
function _page_error(err) {
  switch (err) {
	case 401:
	  // 错误码404的处理方式
	  console.error("请求背拒绝")
	  break;
    case 404:
      // 错误码404的处理方式
      console.error("没有找到页面")
      break;
    case 405:
      console.error("错误的请求")
      break;
  }
}