| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import axios from 'axios'
- import store from '@/store'
- import router from '@/router'
- import { getToken } from '@/utils/auth'
- export const baseURL = process.env.VUE_APP_BASE_API
- //console.log('---CONFIG---', process.env)
- // 设置接口响应时间
- axios.defaults.timeout = 60000
- axios.defaults.baseURL = baseURL + process.env.VUE_APP_API_PREFIX
- // request interceptor
- axios.interceptors.request.use(
- config => {
- // do something before request is sent
- if (store.getters.token) {
- // let each request carry token
- // ['X-Token'] is a custom headers key
- // please modify it according to the actual situation
- config.headers['accessToken'] = getToken()
- }
- console.log("======= request config ========= ", config)
- return config
- },
- error => {
- // do something with request error
- console.log(error) // for debug
- return Promise.reject(error)
- }
- )
- // response interceptor
- axios.interceptors.response.use(res => {
- console.log("========== response =========> ", res)
- if (res.data instanceof Blob) {
- return res
- }
- if (res.data.success) {
- return res;
- } else {
- if (res.data.code == "402") { //Token过期,需要登录
- const path = router.currentRoute.fullPath
- //console.log('lougout+path', path);
- if (path.indexOf('/login') == -1) {
- store.dispatch("user/logout").then(res => {
- router.push({ path: "/login?redirect=" + path});
- })
- }
- }
- if (res.data.msg) {
- return Promise.reject(res.data.msg)
- } else {
- return Promise.reject(new Error(res.msg || 'Error'))
- }
- }
- }, error => {
- console.log('http-err', error) // for debug
- return Promise.reject(error)
- }
- )
- /**
- * get 请求方法
- * @param url
- * @param params
- * @returns {Promise}
- */
- export function get(url, params = {}) {
- return new Promise((resolve, reject) => {
- axios.get(url, {
- params: params
- }).then(response => {
- resolve(response.data)
- }, err => {
- reject(err)
- }).catch(err => {
- reject(err)
- })
- })
- }
- /**
- * post 请求方法
- * @param url
- * @param data
- * @returns {Promise}
- */
- export function post(url, data = {}) {
- return new Promise((resolve, reject) => {
- axios.post(url, data)
- .then(response => {
- resolve(response.data)
- }, err => {
- reject(err)
- }).catch(err => {
- reject(err)
- })
- })
- }
- /**
- * put 请求方法
- * @param url
- * @param data
- * @returns {Promise}
- */
- export function put(url, data = {}) {
- return new Promise((resolve, reject) => {
- axios.put(url, data)
- .then(response => {
- resolve(response.data)
- }, err => {
- reject(err)
- }).catch(err => {
- reject(err)
- })
- })
- }
- /**
- * delete 请求方法
- * @param url
- * @param data
- * @returns {Promise}
- */
- export function del(url, data = {}) {
- return new Promise((resolve, reject) => {
- axios.delete(url, data)
- .then(response => {
- resolve(response.data)
- }, err => {
- reject(err)
- }).catch(err => {
- reject(err)
- })
- })
- }
- export function upload(url, data, header = {}) {
- return new Promise((resolve, reject) => {
- axios.post(url, data, {
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'multipart/form-data',
- ...header
- }
- }).then(response => {
- resolve(response.data);
- }, err => {
- reject(err);
- }).catch(err => {
- reject(err);
- });
- })
- }
- /**
- * put 文件流下载封装
- * @param url
- * @param data
- * @returns {Promise}
- */
- export function download(url, data = {}) {
- return new Promise((resolve, reject) => {
- axios({
- method: 'post',
- url: url,
- data: data,
- responseType: 'blob'
- }).then(response => {
- resolve(response.data)
- },
- err => {
- reject(err)
- }
- )
- })
- }
|