You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* @Author: your name
* @Date: 2021-10-13 09:28:02
* @LastEditTime: 2022-01-05 13:44:32
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/request/index.js
*/
import axios from 'axios';
// import qs from 'qs';
import router from "@/permission"
import { message} from 'ant-design-vue'
import store from '@/store'
// import baseURL from "@/utils/baseURL"
function filterRequestData(obj) {
let o = {};
for(let key in obj) {
let b1 = obj[key] === 0;
let b2 = obj[key] === false;
if(obj[key] || b1 || b2) {
o[key] = obj[key]
}
}
return o;
}
//创建axios的实例
const httpService = axios.create({
baseURL: process.env.VUE_APP_URL ,// TODO:具体的配置可以根据项目情况而来
timeout: 5000
})
//axios的拦截--request
httpService.interceptors.request.use(config => {
const rqParams = filterRequestData(config.params);
const rqData = filterRequestData(config.data);
// post 'Content-Type' === 'application/x-www-form-urlencoded'
config.headers['Content-Type'] = "application/json";
config.headers['manage-login-token'] = store.getters.getToken;
// config.headers['device-type'] = "web";
config.baseURL = process.env.VUE_APP_URL + store.getters.getCommunityCode + '/manage'
if(config.method === 'post') {
config.data = rqData;
} else {
config.data = rqData;
config.params = rqParams;
}
return config;
},err => {
Promise.reject(err);// 请求错误处理
})
//4、axios的拦截--response
httpService.interceptors.response.use(response => {
// TODO:具体的code对应的处理可继续添加修改
// let data = null;
let msg = '';
let res = response.data;
// console.log(response);
if(res.code === 200){
// code = 200;
// data = res.data;
// msg = res.msg || "";
// console.log(msg);
// console.log(data);
return res;
} else if(res.code == 10010) {
router.replace({
path: '/login'
});
} else {
msg = res.msg || "";
message.error(msg);
return Promise.reject(new Error(msg))
}
},err => {
console.log(err)
// TODO:具体的code对应的处理可继续添加修改
if(err.response.code === 301){
//登录过期跳转登录页面并将要浏览的页面fullPath传过去登录成功后跳转需要访问的页面 ---主页(index) 或者 退出到登录前的浏览的页面
//这样登录页面登录接口成功之后可以进行跳转 主页(index) 或者 退出到登录前的页面: let path = this.$route.query.redirect || '/index.js'; this.$router.push(path);
setTimeout(() => {
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
});
}, 1000);
}
return Promise.reject(err);
})
export default httpService