刘洋 7 달 전
부모
커밋
3deb3db0bf
3개의 변경된 파일34개의 추가작업 그리고 10개의 파일을 삭제
  1. 8 1
      src/render/ap/baseDataConfig.ts
  2. 13 2
      src/render/views/BaseDataConfig/ScanParams.vue
  3. 13 7
      src/render/views/BaseDataConfig/StuImportFileDialog.vue

+ 8 - 1
src/render/ap/baseDataConfig.ts

@@ -130,7 +130,14 @@ export const importStu = async (params: {
   file: File | null;
   subjectCode: string;
 }) => {
-  const md5 = await getFileMD5(params.file as File);
+  let md5 = "";
+  try {
+    md5 = await getFileMD5(params.file as File);
+  } catch (err) {
+    let msg = "文件md5获取失败,疑似本地文件被修改过,请删除文件并重新上传";
+    window.$message.error(msg);
+    return Promise.reject(new Error(msg));
+  }
   const formData = obj2formData(params);
   return request({
     url: "/api/admin/student/import",

+ 13 - 2
src/render/views/BaseDataConfig/ScanParams.vue

@@ -128,7 +128,7 @@ const getData = () => {
     if (res.paperTypeBarcodeContent?.length) {
       params.paperTypeBarcodeContent = res.paperTypeBarcodeContent;
     }
-    params.imageCheckRatio = res.imageCheckRatio * 100;
+    params.imageCheckRatio = (res.imageCheckRatio * 100).toFixed(2);
     params.imageCheckOrder = res.imageCheckOrder;
     params.enableSyncVerify = res.enableSyncVerify;
     params.scannerAssignedMaxCount = res.scannerAssignedMaxCount;
@@ -333,8 +333,19 @@ const rules = {
 };
 const save = () => {
   form.value.formRef.validate().then(() => {
-    let p: any = { ...params, examId: userStore.curExam?.id };
+    let p: any = JSON.parse(
+      JSON.stringify({ ...params, examId: userStore.curExam?.id })
+    );
     p.imageCheckRatio = p.imageCheckRatio / 100;
+    for (let i = 0; i < subjectOptions.value.length; i++) {
+      let code = subjectOptions.value[i].value;
+      if (!p.paperTypeBarcodeContent.find((item: any) => item.code == code)) {
+        p.paperTypeBarcodeContent.push({
+          code: code,
+          paperTypeBarcodeContent: [],
+        });
+      }
+    }
     delete p.paperTypeBarcodeContentItem;
     saveBaseDataConfig(p).then((res: any) => {
       window.$message.success("保存成功");

+ 13 - 7
src/render/views/BaseDataConfig/StuImportFileDialog.vue

@@ -17,6 +17,7 @@
           @fileChange="getFile"
           :maxSize="200 * 1024 * 1024"
           accept=".txt"
+          :key="uploadBtnKey"
         />
       </template>
       <template #download>
@@ -34,9 +35,7 @@
       <a-progress :percent="progress" :status="progressStatus" />
       <p class="color-warning">{{ errMsg }}</p>
       <template #footer>
-        <qm-button type="primary" @click="showProgressDialog = false"
-          >关闭</qm-button
-        >
+        <qm-button type="primary" @click="closeSubModal">关闭</qm-button>
       </template>
     </my-modal>
   </my-modal>
@@ -72,10 +71,10 @@ const rules = {
   file: [{ required: true, message: "请上传文件" }],
 };
 const getFile = (file: any) => {
-  console.log("file", file);
   params.file = file;
   curFileName.value = file?.name || "";
 };
+const uploadBtnKey = ref(Date.now() + "");
 function openProcessDialog() {
   progress.value = 0;
   progressStatus.value = "active";
@@ -125,9 +124,16 @@ const downloadTpl = () => {
   exportStu({ examId: userStore.curExam?.id });
 };
 const closeSubModal = () => {
-  // if (progressStatus.value === "success") {
-  visible.value = false;
-  // }
+  if (progressStatus.value === "success") {
+    visible.value = false;
+  } else if (progressStatus.value === "exception") {
+    uploadBtnKey.value = Date.now() + "";
+    params.file = null;
+    curFileName.value = "";
+    showProgressDialog.value = false;
+  } else {
+    showProgressDialog.value = false;
+  }
 };
 </script>
 <style lang="less" scoped></style>