手动导出公用方法

72 阅读1分钟
export function expotOut (paramData, pathName, xlsName) {
  const PATH = {
    download: '' // 后台接口地址
  }
  // 参数
  let params = '?'
  for (let key in paramData) {
    params = params + key + '=' + paramData[key] + '&'
  }
  function createObjectURL (object) { 
      return (window.URL) ? window.URL.createObjectURL(object) :   window.webkitURL.createObjectURL(object) 
  }
  var xhr = new XMLHttpRequest()
  var formData = new FormData()
  var baseUrl = ''
  if (process.env.NODE_ENV === 'development') {
    baseUrl = '' //环境配置
  } else {
    baseUrl = window.location.origin
  }
  console.log('base', baseUrl)
  xhr.open('get', baseUrl + PATH[pathName] + params) // url填写后台的接口地址,如果是post,在formData append参数
  xhr.setRequestHeader('token', JSON.parse(localStorage.getItem('token')))
  xhr.responseType = 'blob'
  xhr.onload = function (e) {
    if (this.status === 200) {
      var blob = this.response
      var filename = `${xlsName}`
      if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, filename)
      } else {
        var a = document.createElement('a')
        var url = createObjectURL(blob)
        a.href = url
        a.download = filename
        document.body.appendChild(a)
        a.click()
        window.URL.revokeObjectURL(url)
      }
    }
  }
  xhr.send(formData)
}