import JSZip from "jszip";
import { saveAs } from "file-saver";
import lrz from "lrz";
import moment from "moment";
import { Spin } from "iview";
export const downloadZip = data => {
// console.log(data);
var zip = new JSZip();
Spin.show();
var fileBox = [];
var images = [];
var imagesAccount = 0;
var iszipDone = false;
data.forEach((item, index) => {
// item.mergeImages.forEach((it, idx) => {
if (typeof images[index] == "undefined") {
images[index] = [];
}
if (typeof fileBox[index] === "undefined") {
fileBox[index] = [];
}
images[index].push(item);
item.mergeImages.forEach((it, idx) => {
imagesAccount++;
});
});
zipCtrl();
function zipDone() {
if (imagesAccount == 0) {
if (!iszipDone) {
iszipDone = true;
zip.generateAsync({ type: "blob" }).then(content => {
saveAs(content, moment().format("YYYYMMDD") + ".zip");
Spin.hide();
});
console.log("打包完成");
}
}
}
function imagesCtrl(index) {
images[index].forEach((it, idx) => {
let name = it.license_plate
? it.license_plate + "_" + (index + 1)
: it.vin;
let img = zip.folder(name);
if (it.mergeImages.length != 0) {
it.mergeImages.forEach(async (j, i) => {
if (it.mergeImages[i]) {
const filename = it.license_plate ? it.license_plate : it.vin;
const rst = await lrz(it.mergeImages[i]).then(rst => rst);
const imageData = rst.base64.split(";base64,");
// console.log(imageData, "imageData");
let extension = "";
switch (imageData[0].replace("data:image/", "").toLowerCase()) {
case "jpeg":
extension = ".jpg";
break;
default:
extension =
"." + imageData.replace("data:image/", "").toLowerCase();
}
img.file(filename + "_" + i + extension, imageData[1], {
base64: true
});
imagesAccount--;
// console.log(
// "图片置入",
// it.mergeImages[i],
// "图片待下载置入数量:" + imagesAccount
// );
zipDone();
}
});
}
});
}
function zipCtrl() {
fileBox.forEach((item, index) => {
imagesCtrl(index);
});
}
};