import ENV_CONFIG from '@/.env.js'

// api前缀
export const HTTP_URL_DEV_PREFIX = '/api'
export const HTTP_URL_PROD_PREFIX = '/api'
const env = ENV_CONFIG[process.env.ENV_TYPE];
// 基于uview-ui的http配置
export const UVIEWUI_HTTP_CONFIG = {
	// 地址
	baseUrl: env.apiUrl+env.apiUrlPrefix,
	// 请求方式
	method: 'post',
	// 参数类型
	dataType: 'json',
	// 是否显示请求中的loading
	showLoading: true,
	// 请求loading中的文字提示
	loadingText: '请求中...',
	// 在此时间内，请求还没回来的话，就显示加载中动画，单位ms
	loadingTime: 800,
	// 是否在拦截器中返回服务端的原始数据
	originalData: true,
	// 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
	loadingMask: true,
	// header:{
	// 	token:uni.getStorageSync('token')
	// },
}

// 此处配置请求拦截器
export const httpRequest = (config) => {
	const token = uni.getStorageSync('token');
	config.header = {
		token: token
	}
	return config;
}

// 此处配置响应拦截器
export const httpResponse = (res) => {
	return new Promise(function(resolve, reject) {
		if (res.statusCode == 200) {
			console.log('成功>>>>');
			if(res.data.code==0){
				uni.showToast({
					icon:'none',
					title:res.data.msg
				})
				return reject(res.data);
			}
			if(res.data.code==401){
				console.log('接口未登录>>>>401');
				// 未登录
				uni.removeStorageSync('token');
				uni.switchTab({
					url: '/pages/home/index'
				})
				return reject(res.data);
			}
			return resolve(res.data);
		} 
		if (res.statusCode == 401) {
			console.log('未登录>>>>');
			// 未登录
			uni.switchTab({
				url: '/pages/home/index'
			})
			uni.removeStorageSync('token');
			return reject(res.data);
		}
		if (res.statusCode == 500) {
			console.log('服务器异常>>>>500');
			uni.showToast({
				title: '服务器异常，请联系客服！',
				icon: 'none',
				duration: 3000
			})
			return reject(res.data);
		}
		
		return resolve(res.data);
	})
}

// http安装方法
export const installHttpConfig = (Vue, vm) => {
	Vue.prototype.$u.http.setConfig(UVIEWUI_HTTP_CONFIG);
	Vue.prototype.$u.http.interceptor.request = httpRequest
	Vue.prototype.$u.http.interceptor.response = httpResponse
}
