import axios from 'axios'
import utils from '@/utils/encode'

// const env = process.env.NODE_ENV
const env = 'production'/*  */
// const env = 'test'
const testUrl = 'http://192.168.110.77:38080'
// const productUrl = 'http://121.196.213.68/adminapi' //预生产

const productUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new 
// const productUrl = 'http://uat.xingoil.com/adminapi' // 生产,加密 new 
const service = axios.create({
	baseURL: env == 'production' ? productUrl : testUrl,
	// baseURL: testUrl,
	timeout: 5000
})
var url = '' 
    
service.interceptors.request.use(
	config => {
		uni.showLoading({
			title: '加载中...'
		})
		const token = uni.getStorageSync('Authorization') || " "
		const unionId = uni.getStorageSync('unionid')
		const openId = uni.getStorageSync('openid')
		const accountSources = 'LOGIN_MP_WECHAT'

		config.headers['openId'] = openId
		config.headers['Authorization'] = token
		config.headers['accountSources'] = accountSources
		config.headers['imei'] = unionId
		config.headers['dataSources'] = 'MP'
		
		if(['/oil-site/oilSiteAppInfo/findKASiteInfoByPage','/oil-site/oilSiteAppInfo/getSiteDetailsByKA','/oil-site/oilSiteAppInfo/getSitePriceKAByBelong'].includes(config.url)) {
			let parentCompanyId = config.baseURL === 'https://www.xingoil.com/adminapi' ? '1812649739013771264' : '1810568376122056704'
			if(config.data.params) {
				config.data.params['parentCompanyId'] = parentCompanyId
			}else config.data['parentCompanyId'] = parentCompanyId
		}
	
		if (env === 'production') {
			const JSESSIONID = utils.uuid()
			config.headers['JSESSIONID'] = JSESSIONID
			config.headers['token'] = utils.md5Salt(JSESSIONID)
			const data = { 
				params: ''
			}
			data.params = utils.encrypt(JSON.stringify(config.data))
			config.data = data
		} else {
			url = config.url
		}

		return config
	},
	error => {
		uni.hideLoading()
		uni.showToast({
			title: '网络超时',
			icon: "none"
		})
		return Promise.reject(error)
	}
)

service.interceptors.response.use(
	response => {
		const res = response.data

		if (env === 'production') {
			if (res.encrypt == 1) {
				const dataParam = JSON.parse(utils.decrypt(res.data))
				res.data = JSON.stringify(dataParam) === '{}' ? null : dataParam
			}
		}

		uni.hideLoading()
		if(response.config.url.indexOf('/oil-site/oilSiteOrderInfo/getOrderQrCode')  == -1){
			if (res.code != 20000 && res.msg != '令牌为空,不允许操作' && res.msg != '您的ip已经更改,请重新登录' && res.msg != '登录与操作设备不同') {
				uni.showToast({
					title: res.msg,
					icon: "none"
				})
			
			}
			
		}
		return res
	},
	error => {
		uni.hideLoading()
		uni.getNetworkType({
			success: function(res) {
				console.log(res.networkType);
				if (res.networkType === 'none') {
					uni.showToast({
						title: '没有网啦!',
						icon: "none"
					})
				} else {
					uni.showToast({
						title: '请求失败!',
						icon: "none"
					})
					console.log(error)
				}
			}
		});

		return Promise.reject(error)
	}
)

// #ifndef H5
service.defaults.adapter = function(config) {
	return new Promise((resolve, reject) => {
		var settle = require('axios/lib/core/settle');
		var buildURL = require('axios/lib/helpers/buildURL');
		uni.request({
			method: config.method.toUpperCase(),
			url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
			header: config.headers,
			data: config.data,
			dataType: config.dataType,
			responseType: config.responseType,
			sslVerify: config.sslVerify,
			complete: function complete(response) {
				response = {
					data: response.data,
					status: response.statusCode,
					errMsg: response.errMsg,
					header: response.header,
					config: config
				};
				settle(resolve, reject, response);
			}
		})
	})
}
// #endif

export default service