main.js 3.22 KB
import Vue from 'vue';
import App from '@/App.vue';
import router from '@/router';
import store from '@/store';
import axios from 'axios';

import ElementUI from 'element-ui';
import EagleWebToolkit from '../packages';
import NProgress from 'nprogress';
import EagleCodeSnippet from "@/components/code-snippet";

import '@/styles/theme/index.css';
import '@/styles/nprogress.scss';
import "highlight.js/styles/color-brewer.css";

import { Notification } from 'element-ui';

const request = axios.create({
  baseURL: 'http://47.110.137.80:7101/',
  timeout: 1000,
  headers: {
    'Authorization': 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE2NTE4ODM0MTEsInN1YiI6ImFkbWluIiwiY3JlYXRlZCI6MTU1MTg4MzQxMTk2NX0.rocgsQq_EEbBDV-BcHpJCUS92KGjBH-0Pf47IrW9v3aj6xJCoFIrnKX4vtpPfYscTk1roBhR5s3I1DIvT8B9wg'
  }
});

const codeMessage = {
  200: '服务器成功返回请求的数据',
  201: '新建或修改数据成功。',
  202: '一个请求已经进入后台排队(异步任务)',
  204: '删除数据成功。',
  400: '发出的请求有错误,服务器没有进行新建或修改数据,的操作。',
  401: '用户没有权限(令牌、用户名、密码错误)。',
  403: '用户得到授权,但是访问是被禁止的。',
  404: '发出的请求针对的是不存在的记录,服务器没有进行操作',
  406: '请求的格式不可得。',
  410: '请求的资源被永久删除,且不会再得到的。',
  422: '当创建一个对象时,发生一个验证错误。',
  500: '服务器发生错误,请检查服务器',
  502: '网关错误',
  503: '服务不可用,服务器暂时过载或维护',
  504: '网关超时'
};

const checkStatus = (response) => {
  if (response.status >= 200 && response.status < 300) {
    return response;
  }
  const errortext = codeMessage[response.status] || response.statusText;
  const messageContent = `
    ${response.request.responseURL}
    ${errortext}
  `;
  Notification.error({
    title: `请求错误 ${response.status}:`,
    message: messageContent,
    duration: 3000,
  });
  const error = new Error(errortext);
  error.name = response.status;
  error.response = response;
  return error;
}

// respone 拦截器
request.interceptors.response.use(
  response => {
    const { data = {} } = response;
    const { businessException, errorCode, message, success } = data;
    if (success) {
      return data;
    } else if (businessException) {
      if (errorCode) {
        Notification.error({
          title: '提示',
          message,
          duration: 3000,
        });
      }
      return { success: false };
    } else {
      if (errorCode) {
        Notification.error({
          title: '提示',
          message: codeMessage[errorCode],
          duration: 3000,
        });
      }
      return { success: false };
    }
  },
  error => {
    const e = checkStatus(error.response);
    return { success: false };
  });

Vue.prototype.$axios = request;



// 进度条配置
NProgress.configure({ showSpinner: false });

// 注册代码片段组件
Vue.component("eagle-code-snippet", EagleCodeSnippet);
// 注册饿了么UI
Vue.use(ElementUI);
// 注册Eagle组件库
Vue.use(EagleWebToolkit);

Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')