fetch.js 2.36 KB
import axios from 'axios'
import {message, notification} from 'ant-design-vue'

axios.defaults.timeout = 30000;
axios.defaults.baseURL = process.env.VUE_APP_BASE_URL;
// axios.defaults.baseURL = ''

// type默认为form,如果要在请求体里传json,则传json,如果要上传文件,传file
function fetch(url = '', params = {}, method = 'get', contentType = 'form', token) {
    contentType === 'form' && (contentType = 'application/x-www-form-urlencoded');
    contentType === 'json' && (contentType = 'application/json; charset=utf-8')
    contentType === 'file' && (contentType = 'multipart/form-data')
    //移除空白参数
    let keyArr = [];
    for (let k in params) {
        let val = params[k];
        if (val === null || val === undefined || val === 'null' || val === '' || val === ' ') {
            keyArr.push(k);
        }
    }
    keyArr.forEach(x => {
        delete params[x];
    })
    let query = [];
    for (let k in params) {
        query.push(k + '=' + params[k])
    }
    let qs = query.join('&')
    if (method.toLowerCase() === 'get' && query.length > 0) {
        url += (url.indexOf('?') < 0 ? '?' : '&') + qs
    }
    if (contentType !== 'application/x-www-form-urlencoded' && method !== 'get') {
        qs = params
    }
    return new Promise((resolve, reject) => {
        axios({
            method: method,
            url: url,
            data: params,
            headers: {
                Authorization: token || window.sessionStorage.getItem('token'),
                'Content-Type': contentType,
            }
        }).then(function (response) {
            if (response.data.code === 'BIZ.TOKEN_EXPIRATION') {
                console.log('没有token接口返回')
                window.top.postMessage({messageType: "LOGOUT"}, '*')
                return
            }
            if (response.data.code === 'BIZ.BUSSINESS_EXCEPTION') {
                message.error(response.data.msg);
            }
            if (response.data.code === 'PARAM.EXCEPTION') {
                message.error('系统异常请联系客服!');
            }
            if (response.data.code === 'SYS.UNKNOWN_EXCEPTION') {
                message.error('系统异常请联系客服!');
            }
            resolve(response.data);
        }).catch(function (err) {
            console.log(err)
            reject(err)
        })
    })
}

export default fetch