//如果部署在同域名的话可以直接取cookie,后端需 HttpOnly 设置成否
// var cookie_name = 'wolfking.jeesharp.session.id'
// getCookie(cookie_name)

// 是否本地环境
function isLocalEnv() {
  let domain = window.location.origin
  if (['http://127.0.0.1:5500', 'file://'].includes(domain)) {
    return true
  } else {
    return false
  }
}

// api 前缀
function getApiUrl() {
  // 为线上时
  if (!isLocalEnv()) {
    return window.location.origin
  } else {
    // 本地时
    // return 'http://sxtc.com:10002'        // 内网环境
    // return 'http://10.8.8.100:10002'   // 内网环境
    // return 'http://1.71.170.214:18080' // 线上环境
    // return 'http://szxm.sxcig.com:8012' // 线上环境
    // return 'http://10.0.0.27:8080'     // 超哥环境
    // return 'http://10.0.0.22:8080'     // 闫敏的环境
    // return 'http://10.0.0.8:8080' // 祥慧的环境
    // return 'http://10.0.0.115:8080'    // 王蒙的环境
    return 'http://10.0.0.82:8080'
  }
}
// websocket 前缀
function getWsUrl() {
  let prefix = location.protocol === 'https:' ? 'wss://' : 'ws://'
  // 为线上时
  if (!isLocalEnv()) {
    return prefix + window.location.host
  } else {
    return prefix + 'sxtc.com:10002'
    // return prefix + '10.0.0.115:8080'
  }
}

// minio 前缀
function getMinioUrl() {
  let isProduction = location.origin.indexOf('1.71.170.214') != -1
  if (isProduction) {
    return 'http://1.71.170.214:19000/constr-documents/'
  } else {
    return 'http://10.8.8.191:9000/constr-documents-test/'
  }
}

/** axios封装
 * 请求拦截、相应拦截、错误统一处理
 */
const httpRequest = axios.create({
  baseURL: 'http://10.0.0.82:8080', // 测试环境
  timeout: 3 * 60 * 1000, // 3分钟等待
  withCredentials: true, // 携带cookie
})

// 请求拦截器
// httpRequest.interceptors.request.use(
//   function (config) {
//     if (!isLocalEnv()) {
//       if (getQueryVariable('token')) {
//         config.headers['access_token'] = getQueryVariable('token')
//       }
//     } else {
//       config.headers['access_token'] = localStorage.getItem('token')
//       // config.headers['access_token'] = '4b3ed521-f509-48d9-b907-ab127479df41'
//     }
//     // 上传文件
//     if (config.url == '/apiSys/oss/upload') {
//       config.headers['Content-Type'] = 'multipart/form-data'
//     } else {
//       config.headers['Content-Type'] = 'application/json'
//     }
//     return config
//   },
//   function (error) {
//     return Promise.reject(error)
//   }
// )

//响应拦截
httpRequest.interceptors.response.use(
  function (response) {
    const res = response.data
    // if (res.code == 201) {
    //   this.ELEMENT.Message.error(res.msg)
    //   if (!isLocalEnv()) {
    //     // 跳登录页
    //     window.location = window.location.origin
    //   } else {
    //     localEnvLogin()
    //   }
    // }
    return response
  },
  function (error) {
    this.ELEMENT.Message.error(error.message)
    return Promise.reject(error)
  }
)

function get(url, params) {
  return new Promise((resolve, reject) => {
    httpRequest
      .get(url, { params: params })
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}
// qs.stringify(data)
function post(url, data, config) {
  return new Promise((resolve, reject) => {
    httpRequest
      .post(url, data, config)
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err)
      })
  })
}

function postFile(url, blob) {
  return new Promise((resolve, reject) => {
    let formdata = new FormData()
    formdata.append('multipartFile', blob)
    httpRequest
      .post(url, formdata)
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err)
      })
  })
}

function localEnvLogin() {
  post(
    '/apiSys/login',
    {
      username: 'admin',
      password: '1q2w3e4r5t',
    },
    {
      transformRequest: [
        function (data, headers) {
          // 将请求数据转换成功 formdata 接收格式
          headers['Content-Type'] = 'application/x-www-form-urlencoded'
          return stringify(data)
        },
      ],
    }
  ).then(res => {
    localStorage.setItem('token', res.data.token || getQueryVariable('token'))
  })
}

// 将参数转换成功 formdata 接收格式
function stringify(data) {
  let ret = ''
  for (const it in data) {
    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
  }
  ret = ret.substring(0, ret.lastIndexOf('&'))
  return ret
}

// 格式化日期
function formatDate(time) {
  let date = time ? new Date(Number(time)) : new Date();
  let Y = date.getFullYear() + '-';
  let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  let D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' ';
  let h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
  let m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':';
  let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  return Y + M + D + h + m + s;
}