import axios from 'axios'
import router from '@/router'
import { vm } from '@/main.js'
import { globalSuccessToast } from '@/settings'

const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,      // url = base url + request url
    withCredentials: true,                      // 设置是否在请求中携带cookie
    timeout: 30000                              // 请求超时时间
})

// request interceptor（请求拦截器）
service.interceptors.request.use(
    config => {
        // vm.$Loading.show()
        // 给config统一配置属性
        return config
    },
    error => {
        return Promise.reject(error)
    }
)

//response （响应拦截器）
service.interceptors.response.use(
    response => {
        // vm.$Loading.hidden()
        const res = response.data
        const code = response.status
        if (code !== 200) {
            vm.$Toast.error(res.msg)
            return Promise.reject(new Error(res.msg || 'Error'))
        } else {
            if (globalSuccessToast && res.code == 0) {    //全局成功提示
                // vm.$Toast.success('查询成功！')         //暂时不要
            }
            return res
        }
    },
    error => {
        // vm.$Loading.hidden()
        if (error.response.status && error.response.status == 401) {       //拦截401，代表登陆失效，触发页面刷新后再触发路由拦截，拦截到重新登录
            // 401一般是权限问题或者登录失效
            // router.push('/login')      //如果项目存在登录验证，应该在这里返回登录页面重新登录；
            console.log('response status is 401')
        }
        vm.$Toast.error(error)
        return Promise.reject(error)      //请求错误不return出去，直接在这里处理toast
    }
)

export default service
