vue导入导出excel

231 阅读1分钟

一、导出

    exportData() {
      let searchParams = JSON.parse(JSON.stringify(this.search))
      // 
      searchParams.pageIndex = 1;
      if (searchParams.startTime == '') {
        searchParams.startTime = null
      }
      if (searchParams.endTime == '') {
        searchParams.endTime = null
      }
      // if (searchParams.pageIndex > 5000) {
      //   this.$Notice.error({
      //     title: '导出失败',
      //     desc: '每次最多导出5000条数据,请修改查询条件',
      //   })
      //   return false
      // }
      this.$http.API_GATEWAY.post('MallReportExport', searchParams, {
        responseType: 'blob',
      }).then((res) => {
        console.log('导出', res)
        let blob = new Blob([res.data], {
          type: 'application/vnd.ms-excel;charset=utf-8',
        })
        let objectUrl = URL.createObjectURL(blob)
        let a = document.createElement('a')
        a.href = objectUrl
        //
        if (!res.headers['content-disposition']) {
          this.$Message.warning('暂无可导出数据 !!!')
        }
        a.download = decodeURIComponent(
          res.headers['content-disposition'].split('=')[1]
        )
        a.dispatchEvent(
          new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window,
          })
        )
        window.URL.revokeObjectURL(blob)
      })
    },
    
    
    
    
    

二、下载模板

downloadTemplate() {
  this.$http._bt_game_center_admin_api
    .post(
      'grayExport',
      {},
      {
        responseType: 'blob',
      }
    )
    .then(
      (res) => {
        const link = document.createElement('a')
        let blob = new Blob([res.data], {
          type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
        })
        link.style.display = 'none'
        link.href = URL.createObjectURL(blob)

        // link.download = res.headers['content-disposition'] //下载后文件名
        link.download = '模板' //下载的文件名
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
      },
      (err) => {
        console.log(err)
      }
    )
},        
    
    

三、确认导入

       batchImportSure() {

    // 参数处理
    const formData = new FormData();
    formData.append('file', this.fileInfo);
    formData.append('createBy', this.incomingData.createdBy);
    // 执行ajax情求
    this.$http._bt_game_center_admin_api
    .post('importDeviceExcel', formData).then(res => {
      const result = res.data;
      // 清空file文件信息
      this.$refs.upload.clearFiles();
      this.fileInfo = {};
      // 成功失败回调
      if (result.code === '000000') {
           this.$Message.success(`上传成功,${result.data}`);
          this.batchImportShow = false;
          this.initSet();
    
      } else {
        this.$Notice.error({
          title: `上传失败,${result.description}`
        })
      }
    }, err => {
      this.loading.import = false;
    })
  },