Error information presentation when using the element-ui message vue package http request, prompted only once

problem:

Multiple interfaces return an error message, suggesting that too much information page looked bored.

http.js

import axios from 'axios'
import { Message } from 'element-ui'
import router from '../router'
const showMessage = Symbol('showMessage')
// 重写
class DonMessage {
    success (options, single = true) {
      this[showMessage]('success', options, single)
    }
    warning (options, single = true) {
      this[showMessage]('warning', options, single)
    }
    info (options, single = true) {
      this[showMessage]('info', options, single)
    }
    error (options, single = true) {
      this[showMessage]('error', options, single)
    }
  
    [showMessage] (type, options, single) {
      if (single) {
        // 判断是否已存在Message
        if (document.getElementsByClassName('el-message').length === 0) {
          Message[type](options)
        }
      } else {
        Message[type](options)
      }
    }
  }
// 使用这个
var MessageOnce = new DonMessage(); axios.interceptors.request.use(config => { let user = JSON.parse(window.localStorage.getItem('user')); var Authentication = ""; if (user) { console.log(user.Authentication); Authentication = user.Authentication; } config.headers.common['Authentication'] = 'xxxxxxx'; return config; }, err => { Message.error({ message: '请求超时!' }); // return Promise.resolve(err); }) axios.interceptors.response.use(data => { The console.log (data.status); return Data; }, ERR => { Switch (err.response.status) { Case 401 : MessageOnce.error ({Message: "login information has expired, log back" } ); window.localStorage.removeItem ( "User" ); router.replace ({ path: '/' , Query: {the redirect: router.currentRoute.fullPath} }) BREAK ; Case 500 : MessageOnce.error ({Message: " internal server error "}); ,BREAK ; Case 404 : MessageOnce.error ({the Message: 'servers are eaten ⊙﹏⊙∥' }); BREAK ; Case 403 : MessageOnce.error ({the Message: '! insufficient permissions, please contact the administrator' }); BREAK ; } // return Promise.resolve (ERR); }) the let Base = 'http://192.168.0.199:8082' ; // the let Base = ''; Export postRequest = const (URL, the params) => { return Axios ({ Method: 'POST' URL: Base `$ {} {$` URL}, data: params, headers: { 'Content-Type': 'application/json; charset=utf-8' } }); } export const uploadFileRequest = (url, params) => { return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'multipart/form-data' } }); } export const putRequest = (url, params) => { return axios({ method: 'put', url: `${base}${url}`, data: params, // transformRequest: [function (data) { // let ret = '' // for (let it in data) { // ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' // } // return ret // }], headers: { // 'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/json; charset=utf-8' } }); } export const deleteRequest = (url) =>axios ({Return{ method: 'delete', url: `${base}${url}` }); } export const getRequest = (url) => { return axios({ method: 'get', url: `${base}${url}` }); }

Guess you like

Origin www.cnblogs.com/shuangzikun/p/taotao_vue_message_http.html