import axios from 'axios'
import QS from 'qs'
import store from '@/store'
import router from '@/router'
import constv from '@/config/constv'
// const wayValue = (process.env.NODE_ENV == 'development' || process.env.NODE_ENV == 'production') ? constv.Proxy_WAY_DEV_PROD : constv.Proxy_WAY_DEMO_API2
const wayValue = constv.Proxy_Way
var instance = axios.create({
baseURL: `${process.env.VUE_APP_BASE_API}`, // 'http://192.168.x.x:3000/mock/130',
headers: { 'Content-Type': 'application/json', way: wayValue },
timeout: 60000
})
// instance.defaults.baseURL = 'http://192.168.x.x:3000/mock/130'
// instance.defaults.headers.post['Content-Type'] = 'application/json'
let flag = true
// 对外接口
export function requestJson ({ method, url, params, responseType, header }) {
if (method === 'Get') {
return get(url, params, responseType)
} else if (method === 'Post') {
return post(url, params, responseType)
}
}
// 封装get方法
function get (url, params, responseType) {
return new Promise((resolve, reject, responseType) => {
instance
.get(url, params)
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err.data)
})
})
}
// 封装post方法
function post (url, params, responseType) {
return new Promise((resolve, reject) => {
instance
.post(url, JSON.stringify(params), responseType, { headers: { 'Content-Type': 'application/json' } })
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err.data)
})
})
}
// //请求拦截(请求发出前处理请求)
instance.interceptors.request.use(
config => {
const headers = config.headers
if (headers['content-type'] === 'application/octet-stream;charset=utf-8') {
return config.data
}
const token = localStorage.getItem('token')
config.headers.common['token'] = token
config.headers.common['way'] = wayValue
// config.headers.common['content-type'] = 'application/json'
return config
},
error => {
return Promisee.error(error)
}
)
// // 响应拦截器(处理响应数据)
instance.interceptors.response.use(
response => {
if (response.status === 200) {
if (response.data.code === 10200) {
if (flag) {
alert(response.data.msg)
flag = false
}
store.dispatch('Logout').then(() => {
router.replace('/user/login')
})
} else if (
response.data.code === 0 ||
response.data.errcode === 0 ||
response.headers['content-type'] === 'application/pdf'
) {
return Promise.resolve(response)
} else {
alert(response.data.msg)
return Promise.resolve(response)
}
} else {
// 这个地方可以由后台编辑状态码区分不同情况,做不同的逻辑处理
return Promise.reject(response)
}
},
error => {
if (error.response.status === 401) {
alert('登陆过期,重新登陆')
store.dispatch('Logout').then(() => {
router.replace('/user/login')
})
} else {
return Promise.reject(error.response)
}
}
)