【无标题】

使用vue3+typescript-vite+Naive ui

<n-button class="btn" @click="handleExport">
            <template #icon>
              <n-icon>
                <ArrowDown />
              </n-icon> </template
            >导出</n-button
          >

引用插件

  import JSZip from 'jszip';
  import FileSaver from 'file-saver';

全选不全选

n-data-table
          :row-key="(row: any) => row"
          :columns="tableColumns"
          :data="tableData"
          :default-checked-row-keys="checkedIdArr"
          @update:checked-row-keys="handleCheck"
        />
        const checkedIdArr: any = [];

  const handleCheck = (rowKeys: DataTableRowKey[]) => {
    //赋值
    checkedIdArr.value = rowKeys;

  };

压缩成zip

const handleExport = async () => {
    if (checkedIdArr.value.length == 0) {
      // alert('请选择你要删除的数据');
      message.warning('请选择你要导出的数据');
    } else {
      let arr = [];
      checkedIdArr.value.forEach((el: any) => {
        arr.push(el.id);
      });
      const res = await downloadXdzf(arr);
      if (res.success && res.code === 200) {
        console.log(res);
        let videoData = [];
        res.data.forEach((item) => {
          videoData.push({
            fileName: item.fileName,
            filePath: 'http://10.3.10.37:9000' + item.filePath,
          });
        });

        const zip = new JSZip();
        var promises = [];
        videoData.forEach((item) => {
          const promise = getFile(item.filePath).then((data) => {
            const arr_name = item.filePath.split('/');
            const file_name = item.fileName; // 获取文件名
            console.log(data);
            zip.file(file_name, data, { binary: true });
          });
          promises.push(promise);
        });
        Promise.all(promises).then(() => {
          console.log('全部下载完成');
          zip.generateAsync({ type: 'blob' }).then((content) => {
            // 生成二进制流
            FileSaver.saveAs(content, '压缩包.zip');
          });
        });
      }
    }
  };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值