import store from '@/store'
import errorCode from '@/config/errorCode'
import axios from 'axios'
import mpAdapter from 'axios-miniprogram-adapter'
axios.defaults.adapter = mpAdapter

import mock from './mock'

const baseUrl = 'https://zzjs.zzxcx.net/prod-api';

// 创建axios实例
const service = axios.create({
	// axios中请求配置有baseURL选项，表示请求URL公共部分
	baseURL: process.env.NODE_ENV==='development'?'https://jpcj-admin1.zzxcx.net/twzd-admin':'https://jpcj-admin.zzxcx.net/twzd-admin',
	// baseURL: baseUrl,
})
mock.init(service)

// request拦截器
service.interceptors.request.use(
	async config => {
			// 是否需要设置 token
			if (config.headers.isLogin) {
				return config
			}
			config.headers['Authorization'] = 'Bearer ' + await store.dispatch("getToken") // 让每个请求携带自定义token 请根据实际情况自行修改
			return config
		},
		error => {
			Promise.reject(error)
		}
)

// 响应拦截器
service.interceptors.response.use(
	res => {
		// 未设置状态码则默认成功状态
		const code = res.data.code || 200;
		// 获取错误信息
		const msg = errorCode[code] || res.data.msg || errorCode['default']
		//重置Authorization时间
		if (code !== 401) store.commit('REFRESH_TOKEN')

		if (code !== 200) {
			if (code == 500) {
				console.log('code' + code + ':' + msg)
				wx.showToast({
					title: 'code' + code + ':系统错误' ,
					icon: 'none'
				})
			}else{
				console.log('code' + code + ':' + msg)
				wx.showToast({
					title: 'code' + code + ':' + msg,
					icon: 'none'
				})
			}
		}
		
		return res.data
	},
	error => {
		let {
			message
		} = error;
		console.log(error,'error')
		if(!message){
			message = "未知错误"
			wx.showToast({
				title: message,
				icon: 'none'
			})
			return Promise.reject(error)
		}
		if (message == "Network Error") {
			message = "后端接口连接异常";
		} else if (message.includes("timeout")) {
			message = "系统接口请求超时";
		} else if (message.includes("Request failed with status code")) {
			message = "系统接口" + message.substr(message.length - 3) + "异常";
		}
		wx.showToast({
			title: message,
			icon: 'none'
		})
		return Promise.reject(error)
	}
)

export default service
