导入与导出

112 阅读1分钟

导入、导出功能

导入

//页面
<el-upload
  action="#"
  :show-file-list="false"
  accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
  :http-request="httpRequestP"
>
  <el-button>导入</el-button>
</el-upload>

//导入逻辑
httpRequestP(file) {
  // if (this.beforeAvatarUpload(file)) {
  const formData = new FormData()
  formData.append('file', file.file)
  importP(formData).then(res => {
    const { data } = res
    if(data){
      this.showError=true
      this.$message({
        message: '部分数据导入失败,请查看',
        type: 'error'
      });
    }else {
      this.showError=false
      this.$message({
        message: '导入成功',
        type: 'success'
      });
    }
    this.dialogShop = false
    this.goodsList()//刷新列表
  }).catch(err => {
    console.log(err)
    this.$message.error(err)
  })
},
//}
//校验格式
beforeAvatarUpload(file) {
  // 通过split方法和fileArr方法获取到文件的后缀名
  let fileArr = file.name.split('.')
  let suffix = fileArr[fileArr.length - 1]
  //只能导入.xls和.xlsx文件
  if (!/(xls|xlsx)/i.test(suffix)) {
    this.$message('文件格式不正确')
    return false
  }
  //不能导入大小超过2Mb的文件
  if (file.size > 2 * 1024 * 1024) {
    this.$message('文件过大,请上传小于2MB的文件〜')
    return false
  }
  return true
},
//接口地址
export function importP(data) {
  return request({
    url: '/admin/goods/import',
    method: 'POST',
    data,
    headers: { 'Content-Type': 'application/json;charset=UTF-8' }
    // responseType: "blob"
  })
}

导出

//接口地址
export function exportTicket(data) {
  return request({
    url: '/admin/actives/list/cashBackItem/export',
    method: 'POST',
    data,
    responseType: 'blob'
  })
}
//方法
exportClick(className, excelName) {
  this.exportLoad = true
//this.pageInfo 是接口参数
  exportTicket(this.pageInfo).then(res => {
    this.exportLoad = false
    var blob = new Blob([res], { type: 'application/vnd.ms-excel' }) // type这里表示xlsx类型
    var downloadElement = document.createElement('a')
    var href = window.URL.createObjectURL(blob) // 创建下载的链接
    downloadElement.href = href
    downloadElement.download = new Date().toLocaleDateString() + '券核销数据表导出.xls' // 下载后文件名
    document.body.appendChild(downloadElement)
    downloadElement.click() // 点击下载
    document.body.removeChild(downloadElement) // 下载完成移除元素
  }).catch(err => {
    this.$message.error('导出失败')
  })
},