/* eslint-disable */ 
 | 
import axios from 'axios' 
 | 
import {MessageBox, Message} from 'element-ui' 
 | 
import utilVue from '../utils/utilVue.js' 
 | 
  
 | 
const baseUrl = process.env.VUE_APP_BASE_API 
 | 
// create an axios instance 
 | 
const service = axios.create({ 
 | 
  baseURL: baseUrl + 'wms/', // url = base url + request url 
 | 
  timeout: 120000 // request timeout 
 | 
}) 
 | 
  
 | 
// request interceptor 
 | 
service.interceptors.request.use( 
 | 
  (config) => { 
 | 
    // do something before request is sent 
 | 
  
 | 
    // if (store.getters.currentUser) { 
 | 
    //   // let each request carry token 
 | 
    //   // ['X-Token'] is a custom headers key 
 | 
    //   // please modify it according to the actual situation 
 | 
    //   config.headers['Authorization'] = sessionStorage.getItem('Authorization') 
 | 
    //   // config.headers['warehouseId'] = store.getters.currentWarehouse.id 
 | 
    //   // config.headers['requestType'] = 'spdpc' 
 | 
    // } 
 | 
    if (config.method != 'get' && window.appendParam && config.data) { 
 | 
      Object.keys(window.appendParam).forEach((key) => { 
 | 
        if (Object.prototype.hasOwnProperty.call(window.appendParam, key)) { 
 | 
          if (window.appendParam[key]) { 
 | 
            if (Array.isArray(config.data)) { 
 | 
              config.data.forEach(data => { 
 | 
                if (typeof data == 'object') { 
 | 
                  data[key] = window.appendParam[key] 
 | 
                } 
 | 
              }) 
 | 
            } else { 
 | 
              config.data[key] = window.appendParam[key] 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      }) 
 | 
      window.appendParam = null 
 | 
    } 
 | 
    return config 
 | 
  }, 
 | 
  (error) => { 
 | 
    return Promise.reject(error) 
 | 
  } 
 | 
) 
 | 
  
 | 
const download = (resp) => { 
 | 
  //这里res.data是返回的blob对象 
 | 
  var blob = new Blob([resp.data], {type: resp.headers['content-type']}); 
 | 
  
 | 
  // 自定义响应头 
 | 
  let fileName = resp.headers['content-filename'] && decodeURIComponent(resp.headers['content-filename']) 
 | 
  if (fileName === undefined || fileName === null || fileName === "") { 
 | 
      fileName = new Date().getTime() + '.xlsx' 
 | 
  } 
 | 
  
 | 
  if (window.navigator.msSaveOrOpenBlob) { 
 | 
      // 如果是IE浏览器 
 | 
      navigator.msSaveBlob(blob, fileName);//filename文件名包括扩展名,下载路径为浏览器默认路径 
 | 
      return 
 | 
  } 
 | 
  
 | 
  // chrome、Firefox 
 | 
  var downloadElement = document.createElement('a'); 
 | 
  var href = window.URL.createObjectURL(blob); //创建下载的链接 
 | 
  downloadElement.href = href; 
 | 
  downloadElement.download = fileName 
 | 
  document.body.appendChild(downloadElement); 
 | 
  downloadElement.click(); //点击下载 
 | 
  document.body.removeChild(downloadElement); //下载完成移除元素a 
 | 
  window.URL.revokeObjectURL(href); //释放掉blob对象 
 | 
} 
 | 
  
 | 
// response interceptor 
 | 
service.interceptors.response.use( 
 | 
  /** 
 | 
   * If you want to get http information such as headers or status 
 | 
   * Please return  response => response 
 | 
   */ 
 | 
  
 | 
  /** 
 | 
   * Determine the request status by custom code 
 | 
   * Here is just an example 
 | 
   * You can also judge the status by HTTP Status Code 
 | 
   */ 
 | 
  (response) => { 
 | 
    let {headers, data} = response 
 | 
  
 | 
    // 处理文件下载 
 | 
    let contentType = headers['content-type'] 
 | 
    if (headers && contentType 
 | 
        && (contentType.indexOf('application/x-msdownload') != -1 
 | 
            || contentType.indexOf('application/octet-stream') != -1 
 | 
            || contentType.indexOf('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') != -1)) { 
 | 
        download(response) 
 | 
        return response 
 | 
    } 
 | 
  
 | 
    if (contentType && contentType.indexOf('application/json') == -1) { 
 | 
      return response 
 | 
    } 
 | 
  
 | 
    let isValidexception = headers && '1' == headers.validexception 
 | 
  
 | 
    const res = data 
 | 
    // if the custom code is not 0, it is judged as an error. 
 | 
    if (res.success) { 
 | 
      return res 
 | 
    } 
 | 
    utilVue.loadHide() 
 | 
    if (res.success == undefined) { //如果未定义,直接返回 
 | 
      return res 
 | 
    } 
 | 
  
 | 
    Message({ 
 | 
      message: '<div class="el-notification__content ">'+res.msg || 'Error'+'</div>', 
 | 
      duration: 5000, 
 | 
      dangerouslyUseHTMLString: true, 
 | 
      iconClass: isValidexception ? 'el-notification__icon el-icon-warning' : 'el-notification__icon el-icon-error', 
 | 
      customClass: isValidexception ? 'warn-ajax' : 'error-ajax', 
 | 
      showClose: true, 
 | 
      showIcon: true, 
 | 
      offset: 1 
 | 
    }) 
 | 
  
 | 
    //下面功能尚未实现,暂时注释掉 
 | 
    // return Promise.reject(new Error(res.msg || 'Error')) 
 | 
    // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; 
 | 
    if (res.code === 50008 || res.code === 50012 || res.code === 50014) { 
 | 
      // to re-login 
 | 
      // MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { 
 | 
      //   confirmButtonText: 'Re-Login', 
 | 
      //   cancelButtonText: 'Cancel', 
 | 
      //   type: 'warning' 
 | 
      // }).then(() => { 
 | 
      //   store.dispatch('user/resetToken').then(() => { 
 | 
      //     location.reload() 
 | 
      //   }) 
 | 
      // }) 
 | 
    } 
 | 
    return res 
 | 
    // return Promise.reject(new Error(res.msg || 'Error')) 
 | 
  }, 
 | 
  (error) => { 
 | 
    utilVue.loadHide() 
 | 
    let response = error?error.response:null 
 | 
    let status = response?response.status:null 
 | 
    let data = response?response.data:null 
 | 
    let isValidexception = response.headers && '1' == response.headers.validexception 
 | 
    if (data && data.data && data.data.needLogin) { 
 | 
      try { 
 | 
        MessageBox.close() 
 | 
      }catch (e) { 
 | 
  
 | 
      } 
 | 
      MessageBox.alert('会话超时,请重新登录!', '系统提示', { 
 | 
        confirmButtonText: '确定', 
 | 
        type: 'warning', 
 | 
        callback: action => { 
 | 
          // router.push('/login', () => { 
 | 
          //   // Message.error(error.response.data.msg) 
 | 
          //   location.reload() 
 | 
          // }) 
 | 
        } 
 | 
      }) 
 | 
  
 | 
      return Promise.reject(error) 
 | 
    } 
 | 
    let msg='未知异常' 
 | 
    if(!status){ 
 | 
      msg= '网络连接异常,请检查本地网络是否连接' 
 | 
    }else if(status == 500){ 
 | 
      if(response.data.msg){ 
 | 
        msg= response.data.msg 
 | 
      }else if(response.data.message){ 
 | 
        msg= response.data.message 
 | 
        if(msg.indexOf('服务器异常') == -1) msg='服务器异常,原因:'+msg 
 | 
      }else if(typeof(response.data) == 'string'  && response.data.indexOf('Proxy error') != -1){ 
 | 
        msg= '服务器暂时无法访问,请稍候重试' 
 | 
      } 
 | 
    }else if(status == 502){ 
 | 
      msg= '代理服务器暂时不可以使用,请稍候重试' 
 | 
    } 
 | 
    Message({ 
 | 
      message: '<div class="el-notification__content ">'+msg+'</div>', 
 | 
      duration: 5000, 
 | 
      dangerouslyUseHTMLString: true, 
 | 
      iconClass: isValidexception ? 'el-notification__icon el-icon-warning' : 'el-notification__icon el-icon-error', 
 | 
      customClass: isValidexception ? 'warn-ajax' : 'error-ajax', 
 | 
      showClose: true, 
 | 
      showIcon: true, 
 | 
      offset: 1 
 | 
    }) 
 | 
    return Promise.reject(error) 
 | 
  } 
 | 
) 
 | 
  
 | 
export default service 
 |