vue之element-ui設置全局彈出框


這樣的需求,在主要功能完成后,需要進行交互效果的完善,需要給請求api的時候添加一個加載中的一個彈出框。但是每個頁面每個頁面過的話,會很費時間和精力,這里我們可以采用element-ui中的服務式彈出框設置
如下:
封裝的api.js文件:
import axios from 'axios'
import {Message,Loading} from 'element-ui'
import router from '../router'
 
//  請求攔截
axios.interceptors.request.use(config=> {
  Loading.service({text:"Loading..."}); return config;
}, err=> {
  Message.error({message: '請求超時!'});
  return Promise.resolve(err);
})
//  響應攔截
axios.interceptors.response.use(res=> {
  Loading.service().close(); if (res.data.code == 200) {
      return res.data.result;
    } else if (res.data.code == 401) {
      router.push('/login')
      return Promise.reject(res);
    }
    return Promise.reject(res);
  }, err=> {
  Loading.service().close(); if (err.response.status == 504||err.response.status == 404) {
      Message.error({message: '服務器被吃了⊙﹏⊙∥'});
    } else if (err.response.status == 403) {
      Message.error({message: '權限不足,請聯系管理員!'});
    } else {
      Message.error({message: '未知錯誤'});
    }
    return Promise.reject(err);
})
 
let base = '';
export const postRequest = (url, params) => {
  return axios({
    method: 'post',
    url: `${base}${url}`,
    data: params,
    transformRequest: [function (data) {
      let ret = ''
      for (let it in data) {
        ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
      }
      loadingInstance.close();
      return ret
    }],
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });
}
export const getRequest = (url,data='') => {
  return axios({
    method: 'get',
    params: data,
    url: `${base}${url}`
  });
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM