| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import axios from 'axios';
- import NProgress from 'nprogress';
- import 'nprogress/nprogress.css';
- import store from '@/store/index';
- import router from '@/router/index';
- import { href } from '@/cool/utils/index';
- import qs from 'qs';
- import { Message } from 'element-ui';
- axios.defaults.timeout = 600000;
- axios.defaults.withCredentials = true;
- axios.defaults.validateStatus = function(status) {
- return status >= 200 && status <= 500;
- };
- NProgress.configure({
- showSpinner: false
- });
- axios.interceptors.request.use(
- config => {
- // if (config.url) {
- // if (!['/login', '/captcha'].some(e => config.url.includes(e))) {
- // config.headers['Authorization'] = store.state.user.token || '';
- // }
- // if (!['/sys/info/record'].some(e => config.url.includes(e))) {
- // NProgress.start();
- // }
- // }
- if (store.state.user.token) config.headers['token'] = store.state.user.token || '';
- config.headers['source'] = localStorage.getItem('source') || '';
- config.headers['account'] = localStorage.getItem('account') || '';
- config.data = qs.stringify(config.data) || {};
- return config;
- },
- error => {
- return Promise.reject(error);
- }
- );
- const onerror = async ({ url, status }) => {
- if (status == 401) {
- if (url.includes('/logout')) {
- store.dispatch('userRemove');
- } else {
- await store.dispatch('userLogout');
- }
- href('/login');
- }
- // if (status == 403) {
- // router.$plugin.to('/403');
- // }
- // if (status == 500) {
- // router.$plugin.to('/500');
- // }
- return Promise.reject();
- };
- // response
- axios.interceptors.response.use(
- res => {
- NProgress.done();
- const { config, status } = res;
- if (res.status == 401) {
- return onerror({ url: config.url, status });
- }
- if (res.status == 403) {
- return onerror({ status });
- }
- if (res.status == 404) {
- return Promise.reject();
- }
- if (res.status == 500) {
- return onerror({ status });
- }
- const { code, data, msg } = res.data;
- if (!data) {
- return res.data;
- }
- switch (code) {
- case 1:
- return data;
- default:
- Message.error(msg);
- return Promise.reject(msg);
- case 2:
- Message.error(msg);
- store.dispatch('userRemove');
- break;
- }
- },
- error => {
- console.error(error);
- NProgress.done();
- return Promise.reject(error);
- }
- );
- export default axios;
|