import Vue from 'vue';
import VueCookies from 'vue-cookies';
import axios from 'axios';
import qs from 'qs';
import utils from './utils';

const DATA_URL = process.env.VUE_APP_PHP_URL;
// const DATA_URL = '/phpapi';
const APP_VERSION = process.env.VUE_APP_VERSION;
const PLATFORM = process.env.VUE_APP_PLATFORM;

const defaultOptions = {
    timeout: 20000,
    baseURL: DATA_URL,
    promptError: true, // 自动弹出错误信息判断
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
};

const request = axios.create({
    ...defaultOptions,
});

request.interceptors.request.use((options) => {
    const config = { ...options };
    if (!config.data) {
        config.data = {};
    }

    const token = utils.getLocalStorage('token');
    // const token1 = utils.getLocalStorage('token');
    // console.log(token1);
    // const token = 'MDAwMDAwMDAwMLCdyZ6xrrGg';
    // const token = utils.getUrlParam('token') ? utils.getUrlParam('token') : '';

    config.data.appVersion = APP_VERSION;
    config.data.platform = PLATFORM;
    config.data.token = token;

    config.data = qs.stringify(config.data);
    return config;
});

request.interceptors.response.use((response) => {
    if (!response || response.status !== 200) {
        Vue.prototype.$message.error(response.data.message);
        return Promise.reject(response.data.message);
    }
    if (response.data.code === -100) {
        localStorage.clear();
        VueCookies.keys().forEach((cookie) => VueCookies.remove(cookie));
        return Promise.reject();
    }
    if (response.data.code !== 0) {
        Vue.prototype.$message.error(response.data.message);
        return Promise.reject(response.data.message);
    }

    return response.data;
}, (error) => {
    const { status, data } = error.response || {};
    if (status === 200) {
        return Promise.reject(data);
    }
    return Promise.reject(error);
});
export default request;