Browse Source

feat: 下载结果调整,只保留要下载的数据

zhangjie 11 months ago
parent
commit
8b6d661780

+ 7 - 0
README.md

@@ -0,0 +1,7 @@
+### 安装 @napi-rs/canvas
+
+- 在 mac 环境安装完依赖包之后,需要安装 canvas window 工具包
+
+```
+npm i @napi-rs/canvas-win32-x64-msvc
+```

+ 7 - 0
electron/preload/api.ts

@@ -222,6 +222,12 @@ function joinPath(paths: string[]) {
   return path.join(...paths);
 }
 
+function clearFilesSync(files: string[]) {
+  files.forEach((item) => {
+    if (fs.existsSync(item)) fs.unlinkSync(item);
+  });
+}
+
 interface ImageItem {
   url: string;
   width: number;
@@ -274,6 +280,7 @@ const commonApi = {
   logger,
   getConfigData,
   writeData,
+  clearFilesSync,
 };
 
 export type CommonApi = typeof commonApi;

+ 3 - 3
src/views/base/track-export/modifySet.vue

@@ -101,9 +101,9 @@
 
   const { optionList: pictureOptions } = useDictOption('PICTURE_TYPE');
   const pictureDesc: Record<PictureTypeEnum, string> = {
-    track: '批阅后图片,下载轨迹图时同步下载原图',
-    origin: '学生作答原图,仅下载原图',
-    pdf: '将学生批阅后的图片合并成一个PDF,一个学生一个PDF,下载PDF时同步下载原图及轨迹图',
+    track: '批阅后图片',
+    origin: '学生作答原图',
+    pdf: '将学生批阅后的图片合并成一个PDF,一个学生一个PDF',
   };
 
   const defaultFormData = {

+ 31 - 19
src/views/base/track-export/useDraw.ts

@@ -132,8 +132,10 @@ export default function useDraw(drawConfig: DrawConfig) {
   let rawTask = {} as Task;
   let trackData = [] as TrackItemType[];
   let originImgs = [] as ImageItem[];
+  let trackFiles = [] as ImageItem[];
   let curStudentId = '';
-  const isOnlyOrigin = checkOnlyOrigin();
+  const hasOrigin = trackConfig.pictureType.includes('origin');
+  const hasTrack = trackConfig.pictureType.includes('track');
   const hasPdf = trackConfig.pictureType.includes('pdf');
 
   const defaultColorConfig = {
@@ -167,21 +169,22 @@ export default function useDraw(drawConfig: DrawConfig) {
       addLog(`[${curStudentId}] 02-获取任务数据成功`);
 
       originImgs = await downloadImages(rawTask.sheetUrls);
-      if (isOnlyOrigin) {
-        return true;
-      }
       addLog(`[${curStudentId}] 02-1-图片下载成功`);
 
-      await parseDrawList();
-      addLog(`[${curStudentId}] 03-解析绘制数据成功`);
+      if (hasTrack || hasPdf) {
+        await parseDrawList();
+        addLog(`[${curStudentId}] 03-解析绘制数据成功`);
 
-      const trackFiles = await drawTask();
-      addLog(`[${curStudentId}] 04-绘制成功`);
+        trackFiles = await drawTask();
+        addLog(`[${curStudentId}] 04-绘制成功`);
 
-      if (hasPdf) {
-        await window.api.imagesToPdf(trackFiles, getOutputPath('pdf'));
-        addLog(`[${curStudentId}] 05-生成pdf成功`);
+        if (hasPdf) {
+          await window.api.imagesToPdf(trackFiles, getOutputPath('pdf'));
+          addLog(`[${curStudentId}] 05-生成pdf成功`);
+        }
       }
+
+      clearResult();
     } catch (error) {
       const e = error as Error;
       console.log(e);
@@ -211,14 +214,17 @@ export default function useDraw(drawConfig: DrawConfig) {
     trackData = [] as TrackItemType[];
     answerMap = {} as AnswerMap;
     originImgs = [] as ImageItem[];
+    trackFiles = [] as ImageItem[];
     curStudentId = '';
   }
 
-  function checkOnlyOrigin() {
-    return (
-      trackConfig.pictureType.length === 1 &&
-      trackConfig.pictureType[0] === 'origin'
-    );
+  function clearResult() {
+    if (!hasOrigin) {
+      window.api.clearFilesSync(originImgs.map((item) => item.url));
+    }
+    if (!hasTrack && trackFiles.length) {
+      window.api.clearFilesSync(trackFiles.map((item) => item.url));
+    }
   }
 
   async function getTaskData(studentId: string) {
@@ -229,7 +235,7 @@ export default function useDraw(drawConfig: DrawConfig) {
       },
     ];
 
-    if (!isOnlyOrigin) {
+    if (hasTrack || hasPdf) {
       funcs.push(async () => {
         // 获取客观题选项信息
         const objectiveData = await studentObjectiveConfirmData(studentId);
@@ -271,6 +277,7 @@ export default function useDraw(drawConfig: DrawConfig) {
       filename += `-${index}`;
     }
     filename += type === 'pdf' ? '.pdf' : '.jpg';
+
     const paths = [
       trackConfig.curOutputDir,
       task.semesterName,
@@ -278,9 +285,14 @@ export default function useDraw(drawConfig: DrawConfig) {
       `${rawTask.courseName}(${rawTask.courseCode})`,
       rawTask.paperNumber,
       taskDetail.className,
-      PICTURE_TYPE[type],
-      filename,
     ];
+    if (trackConfig.pictureType.includes(type)) {
+      paths.push(PICTURE_TYPE[type]);
+    } else {
+      filename = `${type}-${filename}`;
+    }
+    paths.push(filename);
+
     return window.api.joinPath(paths);
   }
 

+ 2 - 2
src/views/base/track-export/useTask.ts

@@ -115,7 +115,7 @@ export default function useTask() {
           studentId: item.studentId,
           studentName: item.studentName,
           studentCode: item.studentCode,
-          className: item.teachClassName,
+          className: item.teachClassName || item.className,
           status: TRACK_TASK_DETAIL_STATUS.INIT,
         };
       });
@@ -139,7 +139,7 @@ export default function useTask() {
           studentId: item.studentId,
           studentName: item.studentName,
           studentCode: item.studentCode,
-          className: item.teachClassName,
+          className: item.teachClassName || item.className,
           status: TRACK_TASK_DETAIL_STATUS.INIT,
         };
       });