likeshop/uniapp/utils/request.js

116 lines
2.2 KiB
JavaScript

import axios from '../js_sdk/xtshadow-axios/axios.min'
import store from '../store'
import {
paramsToStr,
currentPage,
tabbarList,
acountList
} from './tools'
import Cache from './cache'
import {
TOKEN,
BACK_URL
} from '../config/cachekey'
import {
baseURL
} from '../config/app'
import {
getWxCode,
toLogin,
wxMnpLogin
} from './login'
let index = 0;
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
function checkParams(params) {
if (typeof params != 'object') return params
for (let key in params) {
const value = params[key];
if (value === null || value === undefined || value === "") {
delete params[key];
}
}
return params;
}
const service = axios.create({
baseURL: baseURL,
timeout: 10000,
header: {
'content-type': 'application/json'
},
});
// request拦截器
service.interceptors.request.use(
config => {
config.data = checkParams(config.data)
config.params = checkParams(config.params)
if (config.method == 'GET') {
config.url += paramsToStr(config.params)
}
config.header.token = Cache.get(TOKEN)
// throw new axios.Cancel('Operation canceled by the user.');
source.cancel('Operation canceled by the user.');
return config
},
error => {
// Do something with request error
console.log(error) // for debug
Promise.reject(error)
}
)
// response 拦截器
service.interceptors.response.use(
async (response) => {
if (response.data) {
const {
code,
show,
msg
} = response.data;
const {
route,
options
} = currentPage()
if (code == 0 && show && msg) {
uni.showToast({
title: msg,
icon: "none"
})
} else if (code == -1) {
store.commit('LOGOUT')
//#ifdef MP-WEIXIN
wxMnpLogin()
// #endif
//#ifdef H5 || APP-PLUS
if (route && !tabbarList.includes(route)) {
toLogin()
}
// #endif
//#ifdef H5
if (!acountList.includes(route)) {
Cache.set(BACK_URL, `/${route}${paramsToStr(options)}`)
}
// #endif
}
}
return Promise.resolve(response.data)
},
error => {
// tryHideFullScreenLoading()
console.log(error)
console.log('err' + error) // for debug
return Promise.reject(error)
}
)
export default service