// 判断当前环境
const ENV = process.env.NODE_ENV;
console.log(ENV,'当前环境'); // development：开发环境		test：测试环境		production：生产环境
// 清理所有缓存并前往授权页
const goLogin = () => {
    uni.clearStorageSync();
    uni.navigateTo({
        url: '/pages/login/login'
    })
}
// 请求错误处理
const checkError = (e) => {
    // console.error("----接口错误----", e)
    if (e.data) {
        if (e.data.code) {
            switch (Number(e.data.code)) {
                case 4003:
				// 参数错误
				console.log('4003参数错误');
                    break;
				case 4004:
				// 记录不存在
				console.log('4004记录不存在');
				    break;
				case 5001:
				// xxx错误
				console.log('5001xxx错误');
				    break;
				case 5050:
				// 服务器错误，请稍后重试
				console.log('5050服务器错误，请稍后重试');
				    break;
				case 5051:
				// 未知错误
				console.log('5051未知错误');
				    break;
				case 6001:
				// token验证失败或已失效
				console.log('6001token验证失败或已失效');
				goLogin();
				    break;
            }
        }
    }
}

// 封装request的(GET、POST)请求
const request = (method, url, options) => {
    let methods = '';
    let headers = {};
    switch (method) {
        case 'get':
            methods = 'GET'
            headers = {
                'Content-Type': 'application/json; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || '',
                'token':uni.getStorageSync('token') || ''
            }
            break;
        case 'post':
            methods = 'POST'
            headers = {
                'Content-Type': 'application/json; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || '',
				'token':uni.getStorageSync('token') || ''
            }
            break;
        case 'postForm':
            methods = 'POST'
            headers = {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || '',
				'token':uni.getStorageSync('token') || ''
            }
            break;
    }
	let params = {};
	if(options!=undefined) params = options;
	// params.token = uni.getStorageSync('token');
	return new Promise((resolve, reject) => {
		uni.request({
			url: `${getApp().globalData.hostapi}${url}`,
			method: methods,
			data: params,
			header: headers,
			// sslVerify:false,//验证 ssl 证书 仅App安卓端支持
			// withCredentials:true,//跨域请求时是否携带凭证（cookies）仅H5支持
			success: res => {
				console.log(`${url}返的结果===>`,res);
				if (res.statusCode == 200) {
					// 接口调用成功
					resolve(res.data);
				} else {
					// 接口返回错误信息
					checkError(res);
				}
			},
			fail: e => {
				// 接口请求错误
				checkError(e, reject);
			},
			complete: rest => {
				// 是否成功，都会执行
				console.log(rest,115);
			}
		})
	})
}
// 上传文件 封装请求
const uploadFile = (url, options) => {
    let tempData = options || {}
    return new Promise((resolve, reject) => {
        uni.uploadFile({
            url: `${getApp().globalData.hostapi}${url}`,
            filePath: tempData.path,
            name: 'file',
			fileType:'image',
            formData: tempData,
			// sslVerify:false,//验证 ssl 证书 仅App安卓端支持
			// withCredentials:true,//跨域请求时是否携带凭证（cookies）仅H5支持
			header: {
				// 'Content-Type': 'multipart/form-data;charset=UTF-8',
				// 'Authorization': 'Bearer '+uni.getStorageSync('token') || '',
				token:uni.getStorageSync('token') || ''
			},
            success: res => {
				console.log(res,138);
                if (res.statusCode == 200) {
                    let temp = JSON.parse(res.data)
                    if (temp.code == 1) {
                        resolve(temp)
                    }
                }
            }
        });
    })
}


export default {
    get: (url, options) => {
        return request('get', url, options)
    },
    // JOSN格式
    post: (url, options) => {
        return request('post', url, options)
    },
    // form-data格式
    postForm: (url, options) => {
        return request('postForm', url, options)
    },
    // 上传
    upload: (url, options) => {
        return uploadFile(url, options)
    }
}
