Browse Source

add more types

Michael Wang 3 years ago
parent
commit
eb32b4191d
6 changed files with 113 additions and 24 deletions
  1. 4 0
      package.json
  2. 2 2
      src/features/ImageDownload/ImageDownload.vue
  3. 20 21
      src/lib/watermark.ts
  4. 47 0
      src/types/index.ts
  5. 0 1
      tsconfig.json
  6. 40 0
      yarn.lock

+ 4 - 0
package.json

@@ -37,6 +37,10 @@
   },
   },
   "devDependencies": {
   "devDependencies": {
     "@types/electron-devtools-installer": "^2.2.0",
     "@types/electron-devtools-installer": "^2.2.0",
+    "@types/gm": "^1.18.10",
+    "@types/image-size": "^0.8.0",
+    "@types/mkdirp": "^1.0.2",
+    "@types/mustache": "^4.1.2",
     "@types/mysql": "^2.15.19",
     "@types/mysql": "^2.15.19",
     "@typescript-eslint/eslint-plugin": "^4.18.0",
     "@typescript-eslint/eslint-plugin": "^4.18.0",
     "@typescript-eslint/parser": "^4.18.0",
     "@typescript-eslint/parser": "^4.18.0",

+ 2 - 2
src/features/ImageDownload/ImageDownload.vue

@@ -157,14 +157,14 @@ onMounted(async () => {
       }
       }
     }
     }
 
 
-    const modal = Modal.success();
+    const modal = Modal.success({});
     modal.update({
     modal.update({
       title: "图片下载完成",
       title: "图片下载完成",
       content: "完成",
       content: "完成",
       onOk: () => router.back(),
       onOk: () => router.back(),
     });
     });
   } catch (error) {
   } catch (error) {
-    const modal = Modal.error();
+    const modal = Modal.error({});
     console.log(error);
     console.log(error);
     modal.update({
     modal.update({
       title: "图片下载出错",
       title: "图片下载出错",

+ 20 - 21
src/lib/watermark.ts

@@ -1,30 +1,29 @@
 import fs from "fs";
 import fs from "fs";
 import path from "path";
 import path from "path";
-import readline from "readline";
-import request_util from "requestretry";
-import sizeOf from "image-size";
-import mustache from "mustache";
+// import sizeOf from "image-size";
 import mkdirp from "mkdirp";
 import mkdirp from "mkdirp";
+import { Store, Student } from "@/types";
+import gmType from "gm";
 
 
-let gm;
+let gm = null as unknown as typeof gmType;
 
 
 export async function addWatermark(
 export async function addWatermark(
-  store,
-  image,
-  imageWidth,
-  imageHeight,
-  file,
-  student,
-  index,
-  trackMode
-) {
+  store: Store,
+  imageData: ArrayBuffer,
+  imageWidth: number,
+  imageHeight: number,
+  file: Array<string> | string,
+  student: Student,
+  index: number,
+  trackMode: string
+): Promise<boolean> {
   // console.log(
   // console.log(
   //   "enter addWatermark2",
   //   "enter addWatermark2",
   //   store.config.watermark.fontFile,
   //   store.config.watermark.fontFile,
   //   store.config.watermark.color,
   //   store.config.watermark.color,
   //   student.objectiveScore
   //   student.objectiveScore
   // );
   // );
-  file = path.join(...file);
+  file = Array.isArray(file) ? path.join(...file) : file;
   if (!gm) {
   if (!gm) {
     gm =
     gm =
       store.config.imagemagick != undefined
       store.config.imagemagick != undefined
@@ -40,9 +39,9 @@ export async function addWatermark(
   }
   }
   const fontFile = store.config.watermark.fontFile;
   const fontFile = store.config.watermark.fontFile;
   const color = store.config.watermark.color;
   const color = store.config.watermark.color;
-  image = Buffer.from(image, "binary");
-  const size = sizeOf(image);
-  console.log(size);
+  const image = Buffer.from(imageData);
+  // const size = sizeOf(image);
+  // console.log(size);
   const imgData = gm(image);
   const imgData = gm(image);
   //添加第一页的得分明细
   //添加第一页的得分明细
   if (index == 1) {
   if (index == 1) {
@@ -235,14 +234,14 @@ export async function addWatermark(
   }
   }
 
 
   return new Promise((resolve, reject) => {
   return new Promise((resolve, reject) => {
-    mkdirp.sync(path.dirname(file));
-    imgData.write(file, (error) => {
+    mkdirp.sync(path.dirname(file as string));
+    imgData.write(file as string, (error) => {
       if (error) {
       if (error) {
         // logger.error("add watermark error: " + file);
         // logger.error("add watermark error: " + file);
         // logger.error(error);
         // logger.error(error);
         reject(error);
         reject(error);
       } else {
       } else {
-        resolve();
+        resolve(true);
       }
       }
     });
     });
   });
   });

+ 47 - 0
src/types/index.ts

@@ -27,6 +27,7 @@ export interface Store {
     logger: Logger;
     logger: Logger;
     openDevTools: boolean;
     openDevTools: boolean;
     servers: Server[];
     servers: Server[];
+    imagemagick?: string;
   };
   };
 
 
   pageInputs: {
   pageInputs: {
@@ -71,3 +72,49 @@ export interface Watermark {
   fontSize: number;
   fontSize: number;
   color: string;
   color: string;
 }
 }
+
+export interface Student {
+  id: number;
+  schoolId: number;
+  examNumber: string;
+  campusCode: string;
+  campusName: string;
+  subjectCode: string;
+  subjectName: string;
+  name: string;
+  studentCode: string;
+  packageCode: string;
+  batchCode: string;
+  sheetCount: number;
+  sliceCount: number;
+  answers: string;
+  upload: boolean;
+  absent: boolean;
+  manualAbsent: boolean;
+  breach: boolean;
+  objectiveScore: string;
+  subjectiveScore: string;
+  examRoom: string;
+  remark: string;
+  college: string;
+  className: string;
+  teacher: string;
+  inspector?: Inspector;
+  objectiveScoreDetail: SubjectiveScoreDetail[];
+  subjectiveScoreDetail: SubjectiveScoreDetail[];
+  sheetUrls: string[];
+}
+
+export interface Inspector {
+  loginName: string;
+  name: string;
+}
+
+export interface SubjectiveScoreDetail {
+  mainNumber: number;
+  subNumber: string;
+  score: number;
+  marker: string;
+  groupNumber: number;
+  mainTitle: string;
+}

+ 0 - 1
tsconfig.json

@@ -13,7 +13,6 @@
     "baseUrl": ".",
     "baseUrl": ".",
     "types": [
     "types": [
       "webpack-env",
       "webpack-env",
-      "node_modules/@types"
     ],
     ],
     "paths": {
     "paths": {
       "@/*": [
       "@/*": [

+ 40 - 0
yarn.lock

@@ -1179,6 +1179,13 @@
     "@types/minimatch" "*"
     "@types/minimatch" "*"
     "@types/node" "*"
     "@types/node" "*"
 
 
+"@types/gm@^1.18.10":
+  version "1.18.10"
+  resolved "https://registry.nlark.com/@types/gm/download/@types/gm-1.18.10.tgz#9b45819651f8e71c0b5f79ec9872ea52ce8ee2d0"
+  integrity sha1-m0WBllH45xwLX3nsmHLqUs6O4tA=
+  dependencies:
+    "@types/node" "*"
+
 "@types/http-proxy@^1.17.5":
 "@types/http-proxy@^1.17.5":
   version "1.17.7"
   version "1.17.7"
   resolved "https://registry.nlark.com/@types/http-proxy/download/@types/http-proxy-1.17.7.tgz"
   resolved "https://registry.nlark.com/@types/http-proxy/download/@types/http-proxy-1.17.7.tgz"
@@ -1186,6 +1193,13 @@
   dependencies:
   dependencies:
     "@types/node" "*"
     "@types/node" "*"
 
 
+"@types/image-size@^0.8.0":
+  version "0.8.0"
+  resolved "https://registry.nlark.com/@types/image-size/download/@types/image-size-0.8.0.tgz#736342ea51e076fa5fffd6ff219e9b412d4093f1"
+  integrity sha1-c2NC6lHgdvpf/9b/IZ6bQS1Ak/E=
+  dependencies:
+    image-size "*"
+
 "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7":
 "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7":
   version "7.0.9"
   version "7.0.9"
   resolved "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.9.tgz"
   resolved "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.9.tgz"
@@ -1211,11 +1225,23 @@
   resolved "https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.2.tgz"
   resolved "https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.2.tgz"
   integrity sha1-7nceK6Sz3Fs3KTXVSf2WF780W4w=
   integrity sha1-7nceK6Sz3Fs3KTXVSf2WF780W4w=
 
 
+"@types/mkdirp@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.nlark.com/@types/mkdirp/download/@types/mkdirp-1.0.2.tgz#8d0bad7aa793abe551860be1f7ae7f3198c16666"
+  integrity sha1-jQuteqeTq+VRhgvh965/MZjBZmY=
+  dependencies:
+    "@types/node" "*"
+
 "@types/ms@*":
 "@types/ms@*":
   version "0.7.31"
   version "0.7.31"
   resolved "https://registry.nlark.com/@types/ms/download/@types/ms-0.7.31.tgz"
   resolved "https://registry.nlark.com/@types/ms/download/@types/ms-0.7.31.tgz"
   integrity sha1-MbfKZAcSij0rvCf+LSGzRTl/YZc=
   integrity sha1-MbfKZAcSij0rvCf+LSGzRTl/YZc=
 
 
+"@types/mustache@^4.1.2":
+  version "4.1.2"
+  resolved "https://registry.nlark.com/@types/mustache/download/@types/mustache-4.1.2.tgz#d0e158013c81674a5b6d8780bc3fe234e1804eaf"
+  integrity sha1-0OFYATyBZ0pbbYeAvD/iNOGATq8=
+
 "@types/mysql@^2.15.19":
 "@types/mysql@^2.15.19":
   version "2.15.19"
   version "2.15.19"
   resolved "https://registry.nlark.com/@types/mysql/download/@types/mysql-2.15.19.tgz?cache=0&sync_timestamp=1625616884899&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fmysql%2Fdownload%2F%40types%2Fmysql-2.15.19.tgz#d158927bb7c1a78f77e56de861a3b15cae0e7aed"
   resolved "https://registry.nlark.com/@types/mysql/download/@types/mysql-2.15.19.tgz?cache=0&sync_timestamp=1625616884899&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fmysql%2Fdownload%2F%40types%2Fmysql-2.15.19.tgz#d158927bb7c1a78f77e56de861a3b15cae0e7aed"
@@ -5828,6 +5854,13 @@ ignore@^5.1.4:
   resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz"
   resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz"
   integrity sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=
   integrity sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=
 
 
+image-size@*:
+  version "1.0.0"
+  resolved "https://registry.npm.taobao.org/image-size/download/image-size-1.0.0.tgz?cache=0&sync_timestamp=1618422657851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750"
+  integrity sha1-WLMf5HQ7HOwKCsJvXJFNPFsvB1A=
+  dependencies:
+    queue "6.0.2"
+
 image-size@^0.6.3:
 image-size@^0.6.3:
   version "0.6.3"
   version "0.6.3"
   resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.6.3.tgz"
   resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.6.3.tgz"
@@ -8506,6 +8539,13 @@ queue-microtask@^1.2.2:
   resolved "https://registry.nlark.com/queue-microtask/download/queue-microtask-1.2.3.tgz"
   resolved "https://registry.nlark.com/queue-microtask/download/queue-microtask-1.2.3.tgz"
   integrity sha1-SSkii7xyTfrEPg77BYyve2z7YkM=
   integrity sha1-SSkii7xyTfrEPg77BYyve2z7YkM=
 
 
+queue@6.0.2:
+  version "6.0.2"
+  resolved "https://registry.npm.taobao.org/queue/download/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
+  integrity sha1-uRUlKD4jFcdVPS76GNg+dkMv7WU=
+  dependencies:
+    inherits "~2.0.3"
+
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
   version "2.1.0"
   version "2.1.0"
   resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz"
   resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz"