這樣的需求,在主要功能完成后,需要進行交互效果的完善,需要給請求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}` }); }