import axios from 'axios'
import { Dialog, Toast } from 'vant'
import { getToken, hasLogin } from './user-login'

// 创建axios实例
const service = axios.create({
  timeout: 66666666 // 请求超时时间
})
// request拦截器
service.interceptors.request.use(
  async config => {
    Toast.loading()
    config.headers['sid'] = await getToken()
    return config
  },
  error => {
    Toast.loading().clear()
    // Do something with request error
    Promise.reject(error)
  }
)

// response拦截器
service.interceptors.response.use(
  response => {
    Toast.loading().clear()
    const res = response.data
    if (typeof res.sts !== 'undefined') {
      return res
    }
    if (Number(res.code) === 0 || res.code === '999') {
      return res
    }
    if (res.content && res.content.code != 0) {
      // if(!)
      //noFail 表示不需要统一处理错误提示，需要给调用接口返回
      if (!response.config.noFail) {
        if (res.content.code == 40001) {
          Dialog.confirm({
            confirmButtonText: '重新登录',
            message: '你已被登出，可以取消继续留在该页面，或者重新登录'
          }).then(() => {
            //eslint-disable-next-line
            EWebBridge.webCallAppInJs('bridge', { flag: 'login' })
          })
        } else {
          console.log('res.content.message', res.content.message)
          Toast(res.content.message ? res.content.message : '未知异常')
        }
        return Promise.reject(res)
      } else {
        return res.content
      }
    } else {
      Toast.clear()
      if (res.content) {
        return res.content
      } else {
        Toast({
          icon: 'warning-o',
          message: '接口服务异常'
        })
      }
    }
  },
  error => {
    Toast(error.message ? error.message : '未知异常')
    return Promise.reject(error)
  }
)

export default service
