|
@@ -24,12 +24,25 @@ import { countStudents, getPackages, getStudents } from "@/api/api";
|
|
|
import { httpApp } from "@/plugins/axiosApp";
|
|
|
import mustache from "mustache";
|
|
|
|
|
|
+function millisecondsToHMS(milliseconds: number) {
|
|
|
+ let seconds = Math.floor((milliseconds / 1000) % 60);
|
|
|
+ let ms = milliseconds - seconds * 1000;
|
|
|
+ let minutes = Math.floor((milliseconds / (1000 * 60)) % 60);
|
|
|
+ let hours = Math.floor((milliseconds / (1000 * 60 * 60)) % 24);
|
|
|
+ return (
|
|
|
+ (hours ? hours + "小时 " : "") +
|
|
|
+ (minutes ? minutes + "分钟 " : "") +
|
|
|
+ (seconds + ms / 1000).toFixed(2) +
|
|
|
+ "秒"
|
|
|
+ );
|
|
|
+}
|
|
|
let statisticTime = 0;
|
|
|
|
|
|
function openSuccessDialog() {
|
|
|
const modal = Modal.success({});
|
|
|
modal.update({
|
|
|
- title: "图片下载完成",
|
|
|
+ title:
|
|
|
+ "图片下载完成,总耗时:" + millisecondsToHMS(Date.now() - statisticTime),
|
|
|
content: "完成",
|
|
|
onOk: () => router.back(),
|
|
|
});
|
|
@@ -98,6 +111,9 @@ const nextColor = storePassedToNodeJs.config.watermark.nextColor || "#0000ff";
|
|
|
const otherColor = "#ddd";
|
|
|
|
|
|
const studentHandler = async (student: any, urls: any) => {
|
|
|
+ if (store.downloadFailStatus) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
try {
|
|
|
let allTags = Object.values(student.tags || {})
|
|
|
.filter((x) => !!x)
|
|
@@ -173,7 +189,7 @@ const studentHandler = async (student: any, urls: any) => {
|
|
|
let resultImgList: any[] = [];
|
|
|
let sheetUrlsLength = (student.sheetUrls || []).length;
|
|
|
for (const sheetUrl of student.sheetUrls) {
|
|
|
- if (stopSignal) return;
|
|
|
+ if (stopSignal || store.downloadFailStatus) return;
|
|
|
try {
|
|
|
const index = student.sheetUrls.indexOf(sheetUrl);
|
|
|
student.index = index + 1;
|
|
@@ -231,6 +247,7 @@ const studentHandler = async (student: any, urls: any) => {
|
|
|
window.electron.errorLogger(student, sheetUrl, error);
|
|
|
errorCount.value += 1;
|
|
|
if (config.failover) {
|
|
|
+ store.downloadFailStatus = true;
|
|
|
throw error;
|
|
|
} else {
|
|
|
console.log(student, error);
|
|
@@ -276,7 +293,7 @@ const studentHandler = async (student: any, urls: any) => {
|
|
|
`/pdfs/${store.env.examId}/${student.subjectCode}/${pdfName}.pdf`,
|
|
|
]);
|
|
|
}
|
|
|
- } catch (error) {
|
|
|
+ } catch (error: any) {
|
|
|
const modal = Modal.error({});
|
|
|
console.log(error);
|
|
|
modal.update({
|
|
@@ -288,11 +305,13 @@ const studentHandler = async (student: any, urls: any) => {
|
|
|
};
|
|
|
|
|
|
onMounted(async () => {
|
|
|
+ store.downloadFailStatus = false;
|
|
|
// const storePassedToNodeJs = JSON.parse(JSON.stringify(store));
|
|
|
// const color = storePassedToNodeJs.config.watermark.color;
|
|
|
// const nextColor = storePassedToNodeJs.config.watermark.nextColor || "#0000ff";
|
|
|
// // const otherColor = storePassedToNodeJs.config.watermark.otherColor;
|
|
|
// const otherColor = "#ddd";
|
|
|
+ statisticTime = Date.now();
|
|
|
try {
|
|
|
if (config.type === "1") {
|
|
|
// console.log("download start ", Date.now());
|
|
@@ -307,16 +326,19 @@ onMounted(async () => {
|
|
|
});
|
|
|
totalCount.value = res.data;
|
|
|
console.log(`一共${totalCount.value}个考生`);
|
|
|
+
|
|
|
if (totalCount.value == 0) {
|
|
|
openSuccessDialog();
|
|
|
}
|
|
|
// let totalImageDownloadTime = 0;
|
|
|
- statisticTime = Date.now();
|
|
|
for (
|
|
|
let pageNumber = 0;
|
|
|
pageNumber * 10 < totalCount.value;
|
|
|
pageNumber++
|
|
|
) {
|
|
|
+ if (store.downloadFailStatus) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
const resStudents = await getStudents(
|
|
|
store.env.examId,
|
|
|
pageNumber + 1,
|