//引入axios
import axios from 'axios'
import qs from 'qs'
import store from '@/store'
import router from '@/router'


axios.defaults.baseURL = store.state.app.serverName
//设置默认请求头
axios.defaults.headers = {
	'Content-Type': 'application/x-www-form-urlencoded',
}
axios.defaults.timeout = 600000

//请求拦截器
axios.interceptors.request.use(config => {
	//console.log(config.url)
	var bool1 = config.url.indexOf("import")
	var bool2 = config.url.indexOf("upload")
	var bool3 = config.url.indexOf("export")
	config.headers.token = localStorage.getItem('token')
	config.headers.userId = localStorage.getItem('userId')
	if(localStorage.getItem('belongId')){
		config.headers.belongId = localStorage.getItem('belongId') 
	}else {
		config.headers.belongId = '0'
	}
	// if (config.url.indexOf("login")<0) {
	// 	config.headers.belongId = localStorage.getItem('belongId')
	// 	console.log("config.headers.belongId:"+JSON.stringify(belongId))
	// }
	if (bool1 > 0 || bool2 > 0) {
		return config
	} else {
		config.data = qs.stringify(config.data);
		return config
	}

}, error => {
	return Promise.reject(error)
})

//响应拦截器即异常处理
axios.interceptors.response.use(response => {
	//console.log("response.data.code"+response.data.code)
	switch (response.data.code) {
		case 101:
			router.replace({
				path: '/login',
			})
			break;
		default:
			return response
			break;
	}
	// 	if (response.data.code == 101) {
	// 		 router.replace({
	// 			path: '/login',
	// 		})
	// 	} else {
	// 		return response
	// 	}
}, err => {
	if (err && err.response) {
		switch (err.response.status) {
			case 400:
				err.message = '错误请求'
				break;
			case 401:
				err.message = '未授权，请重新登录'
				break;
			case 403:
				err.message = '拒绝访问'
				break;
			case 404:
				err.message = '请求错误,未找到该资源'
				break;
			case 405:
				err.message = '请求方法未允许'
				break;
			case 408:
				err.message = '请求超时'
				break;
			case 500:
				err.message = '服务器端出错'
				break;
			case 501:
				err.message = '网络未实现'
				break;
			case 502:
				err.message = '网络错误'
				break;
			case 503:
				err.message = '服务不可用'
				break;
			case 504:
				err.message = '网络超时'
				break;
			case 505:
				err.message = 'http版本不支持该请求'
				break;
			default:
				err.message = `连接错误${err.response.status}`
		}
	} else {
		err.message = "连接到服务器失败"
	}
	message.err(err.message)
	return Promise.resolve(err.response)
})



export default {
	//get请求
	get(url, param) {
		return new Promise((resolve, reject) => {
			axios({
				method: 'get',
				url,
				params: param
			}).then(response => {
				resolve(response)
			}).catch(error => {
				reject(error)
			})
		})
	},

	//post请求
	post(url, param) {

		return new Promise((resolve, reject) => {
			axios({
				method: 'post',
				url,
				data: param,
				
			}).then(response => {
				resolve(response)
			}).catch(error => {
				reject(error)
			})
		})
	}
};
