Bläddra i källkod

fix error / succes logic

Michael Wang 3 år sedan
förälder
incheckning
a657c0af9c

+ 2 - 1
src/views/features/ExamList/ExamList.vue

@@ -47,7 +47,8 @@
 import { store } from "@/store";
 import { onMounted, ref } from "vue";
 import { getExams } from "@/api/api";
-import router from "@/router";
+import { useRouter } from "vue-router";
+const router = useRouter();
 
 let examList = ref([]);
 // TODO: add pager

+ 2 - 1
src/views/features/Image/Image.vue

@@ -144,7 +144,8 @@
 <script setup lang="ts">
 import { store } from "@/store";
 import { computed, onMounted, ref } from "vue";
-import router from "@/router";
+import { useRouter } from "vue-router";
+const router = useRouter();
 
 let type = ref("");
 let template = ref("");

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

@@ -55,7 +55,8 @@
 <script setup lang="ts">
 import { store } from "@/store";
 import { computed, onMounted, ref } from "vue";
-import router from "@/router";
+import { useRouter } from "vue-router";
+const router = useRouter();
 import { getStudents, countStudents } from "@/api/api";
 import { httpApp } from "@/plugins/axiosApp";
 

+ 2 - 1
src/views/features/Login/Login.vue

@@ -42,7 +42,8 @@
 import { onMounted, ref } from "vue";
 import { store } from "@/store";
 import { login } from "@/api/api";
-import router from "@/router";
+import { useRouter } from "vue-router";
+const router = useRouter();
 
 // Object.assign(
 //   window.electron.env,

+ 103 - 93
src/views/features/SyncRun/SyncRun.vue

@@ -13,7 +13,7 @@
           <h2>数据同步中 …</h2>
         </div>
         <div class="progress-box">
-          <h3 id="message">正在下载考生...</h3>
+          <h3 id="message">{{ status }}</h3>
           <div class="progress">
             <!-- <div class="progress-outer">
               <div id="progress" class="progress-inner" style="width: 0%">
@@ -34,117 +34,127 @@
         Copyright © 2011-2020 www.qmth.com.cn, All Rights Reserved
       </div>
     </div>
-    <div class="xcConfirm" id="popup" style="display: none">
-      <div class="xc_layer"></div>
-      <div class="popbox">
-        <a href="##" id="popup-close"><span class="close"></span></a>
-        <div class="txtbox">
-          <div id="popup-error" class="icon error" style="display: none"></div>
-          <div
-            id="popup-success"
-            class="icon success"
-            style="display: none"
-          ></div>
-          <div id="popup-text" class="text"></div>
-        </div>
-      </div>
-    </div>
   </div>
 </template>
 
 <script setup lang="ts">
 import { store } from "@/store";
 import { onMounted, ref } from "vue";
-import router from "@/router";
+import { Modal } from "ant-design-vue";
+import { useRouter } from "vue-router";
 import { getStudents, countStudents, getPackages } from "@/api/api";
 
-const lastTime =
-  store.config["syncTime"][store.env.server.host + store.env.exam.id];
+const router = useRouter();
+console.log(router);
+let status = ref("");
 
 let finishCount = ref(0);
 let totalCount = ref(0);
 let finished = ref(false);
 onMounted(async () => {
-  const res = await countStudents(store.env.examId);
-  totalCount.value = res.data;
+  try {
+    status.value = "正在计算总数...";
+    const res = await countStudents(store.env.examId);
+    totalCount.value = res.data;
 
-  let pageNumber = 0;
+    let pageNumber = 0;
 
-  while (true) {
-    pageNumber++;
-    const array = (
-      await getStudents(store.env.examId, pageNumber, 100, {
-        withScoreDetail: true,
-      })
-    ).data;
-    if (array == undefined || array.length == 0) {
-      break;
-    }
-    const datas = [];
-    for (let i = 0; i < array.length; i++) {
-      const obj = array[i];
-      var objList = [];
-      var subList = [];
-      if (obj.objectiveScoreDetail) {
-        obj.objectiveScoreDetail.forEach((detail) => {
-          const score = Math.round((detail.score * 10) / 10);
-          objList.push(detail.answer + ":" + score);
-        });
+    status.value = "正在下载考生...";
+    while (true) {
+      pageNumber++;
+      const array = (
+        await getStudents(store.env.examId, pageNumber, 100, {
+          withScoreDetail: true,
+        })
+      ).data;
+      if (array == undefined || array.length == 0) {
+        break;
       }
-      if (obj.subjectiveScoreDetail) {
-        obj.subjectiveScoreDetail.forEach((detail) => {
-          const score = Math.round((detail.score * 10) / 10);
-          subList.push(score);
-        });
+      const datas = [];
+      for (let i = 0; i < array.length; i++) {
+        const obj = array[i];
+        var objList = [];
+        var subList = [];
+        if (obj.objectiveScoreDetail) {
+          obj.objectiveScoreDetail.forEach((detail) => {
+            const score = Math.round((detail.score * 10) / 10);
+            objList.push(detail.answer + ":" + score);
+          });
+        }
+        if (obj.subjectiveScoreDetail) {
+          obj.subjectiveScoreDetail.forEach((detail) => {
+            const score = Math.round((detail.score * 10) / 10);
+            subList.push(score);
+          });
+        }
+        datas.push([
+          obj["id"],
+          store.env.examId,
+          obj["schoolId"],
+          obj["examNumber"],
+          obj["examNumber"],
+          obj["name"],
+          obj["studentCode"],
+          obj["subjectCode"],
+          obj["subjectName"],
+          obj["campusName"],
+          obj["packageCode"],
+          obj["batchCode"],
+          obj["sheetCount"],
+          obj["sliceCount"],
+          obj["answers"],
+          obj["upload"] ? 1 : 0,
+          obj["absent"] ? 1 : 0,
+          obj["breach"] ? 1 : 0,
+          obj["manualAbsent"] ? 1 : 0,
+          obj["objectiveScore"].length > 0 ? obj["objectiveScore"] : 0,
+          obj["subjectiveScore"].length > 0 ? obj["subjectiveScore"] : 0,
+          objList.join(";"),
+          subList.join(";"),
+          obj["subjectiveStatus"] || "UNMARK",
+          obj["examSite"],
+          obj["examRoom"],
+          obj["remark"],
+          obj["college"] || "",
+          obj["className"] || "",
+          obj["teacher"] || "",
+          obj["paperType"] || "",
+        ]);
       }
-      datas.push([
-        obj["id"],
-        store.env.examId,
-        obj["schoolId"],
-        obj["examNumber"],
-        obj["examNumber"],
-        obj["name"],
-        obj["studentCode"],
-        obj["subjectCode"],
-        obj["subjectName"],
-        obj["campusName"],
-        obj["packageCode"],
-        obj["batchCode"],
-        obj["sheetCount"],
-        obj["sliceCount"],
-        obj["answers"],
-        obj["upload"] ? 1 : 0,
-        obj["absent"] ? 1 : 0,
-        obj["breach"] ? 1 : 0,
-        obj["manualAbsent"] ? 1 : 0,
-        obj["objectiveScore"].length > 0 ? obj["objectiveScore"] : 0,
-        obj["subjectiveScore"].length > 0 ? obj["subjectiveScore"] : 0,
-        objList.join(";"),
-        subList.join(";"),
-        obj["subjectiveStatus"] || "UNMARK",
-        obj["examSite"],
-        obj["examRoom"],
-        obj["remark"],
-        obj["college"] || "",
-        obj["className"] || "",
-        obj["teacher"] || "",
-        obj["paperType"] || "",
-      ]);
+      console.log("get:" + array.length);
+      await window.electron.replaceStudents(datas);
+      finishCount.value += array.length;
     }
-    console.log("get:" + array.length);
-    await window.electron.replaceStudents(datas);
-    finishCount.value += array.length;
-  }
 
-  //get and save package
-  const packages = (await getPackages(store.env.examId)).data;
-  const packageData = [];
-  for (let i = 0; i < packages.length; i++) {
-    const obj = packages[i];
-    packageData.push([store.env.examId, obj["code"], obj["picCount"]]);
-  }
-  await window.electron.replacePackage(packageData);
+    status.value = "正在下载签到表...";
+    //get and save package
+    const packages = (await getPackages(store.env.examId)).data;
+    const packageData = [];
+    for (let i = 0; i < packages.length; i++) {
+      const obj = packages[i];
+      packageData.push([store.env.examId, obj["code"], obj["picCount"]]);
+    }
+    await window.electron.replacePackage(packageData);
+
+    finished.value = true;
+    status.value = "数据同步完成";
 
-  finished.value = true;
+    // config.updateSyncTime()
+
+    const modal = Modal.success();
+    modal.update({
+      title: "数据同步完成",
+      content: "完成",
+      onOk: () => router.back(),
+    });
+  } catch (error) {
+    const modal = Modal.error();
+    console.log(error);
+    modal.update({
+      title: "数据同步出错",
+      content: error.message || error,
+      onOk: () => router.back(),
+    });
+  }
 });
 </script>