Browse Source

答案上传与单点登录

zhangjie 3 years ago
parent
commit
2d8d155630

BIN
public/temps/objectiveQuestionTemplate.xlsx


BIN
public/temps/subjectiveQuestionTemplate.xlsx


+ 10 - 0
src/constants/enumerate.js

@@ -176,3 +176,13 @@ export const PRINT_TASK_STATUS = {
   PRINTING: "印刷中",
   FINISH: "已完成"
 };
+export const MARK_TASK_SYNC_STATUS = {
+  INIT: "未同步",
+  UPLOAD_FINISH: "同步中", // 开始同步
+  START_SYNC: "同步中", // 开始同步
+  PAPER_FINISH: "同步中", // 试卷同步成功
+  ANSWER_FINISH: "同步中", // 标答同步成功
+  OBJECTIVE_FINISH: "同步中", // 客观题结构同步成功
+  SUBJECTIVE_FINISH: "同步中", // 主观题结构同步成功
+  FINISH: "已同步"
+};

+ 5 - 1
src/modules/stmms/api.js

@@ -1,7 +1,7 @@
 import { $postParam, $post } from "@/plugins/axios";
 
 export const markTaskListPage = datas => {
-  return $postParam("/api/admin/sys/user/user_list", datas);
+  return $postParam("/api/admin/exam/structure/list", datas);
 };
 export const uploadPaperAndAnswer = datas => {
   return $post("/api/admin/exam/structure/upload", datas);
@@ -13,3 +13,7 @@ export const scoreListPage = datas => {
 export const scorePaperDetail = datas => {
   return $postParam("/api/admin/sys/user/user_list", datas);
 };
+// 第三方登录ypt
+export const yptAuth = datas => {
+  return $post("/api/admin/exam/sso/marker_login", datas);
+};

+ 9 - 9
src/modules/stmms/components/UploadPaperAnswerDialog.vue

@@ -4,13 +4,13 @@
     :visible.sync="modalIsShow"
     title="上传试卷结构文档/标答PDF文档"
     top="10vh"
-    width="700px"
+    width="740px"
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     append-to-body
     @open="visibleChange"
   >
-    <el-form ref="modalFormComp" :model="infos" label-width="120px">
+    <el-form ref="modalFormComp" :model="infos" label-width="130px">
       <div v-for="paperType in paperTypes" :key="paperType" class="part-box">
         <h3 class="part-box-title">卷型{{ paperType }}</h3>
         <el-form-item
@@ -84,16 +84,16 @@ export default {
       infos: {},
       paperTypes: [],
       fileTypes: {
-        subjectiveQuestion: {
+        objectiveQuestion: {
           name: "客观题试卷结构",
-          downloadUrl: "111",
-          downloadName: "客观题结构.xlsx",
+          downloadUrl: "/temps/objectiveQuestionTemplate.xlsx",
+          downloadName: "客观题导入模板.xlsx",
           format: ["xlsx", "xls"]
         },
-        objectiveQuestion: {
+        subjectiveQuestion: {
           name: "主观题试卷结构",
-          downloadUrl: "111",
-          downloadName: "主观题答案.xlsx",
+          downloadUrl: "/temps/subjectiveQuestionTemplate.xlsx",
+          downloadName: "主观题导入模板.xlsx",
           format: ["xlsx", "xls"]
         },
         standardAnswer: {
@@ -102,8 +102,8 @@ export default {
         }
       },
       fileTypeSerial: [
-        "subjectiveQuestion",
         "objectiveQuestion",
+        "subjectiveQuestion",
         "standardAnswer"
       ]
     };

+ 20 - 9
src/modules/stmms/views/MarkTaskManage.vue

@@ -14,24 +14,25 @@
     <div class="part-box part-box-pad">
       <el-table ref="TableList" :data="taskList">
         <el-table-column prop="examId" label="考试ID"></el-table-column>
-        <el-table-column prop="examName" label="考试姓名"></el-table-column>
-        <el-table-column prop="enable" label="状态" width="100">
+        <el-table-column prop="paperNumber" label="试卷ID"></el-table-column>
+        <el-table-column prop="paperType" label="试卷类型"></el-table-column>
+        <el-table-column prop="status" label="状态" width="100">
           <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
+            {{ scope.row.status | markTaskSyncStatusFilter }}
           </template>
         </el-table-column>
         <el-table-column class-name="action-column" label="操作" width="220px">
           <template slot-scope="scope">
             <el-button
-              v-if="!checkPrivilege('link', 'edit')"
+              v-if="checkPrivilege('link', 'UploadStructure')"
               class="btn-primary"
               type="text"
               @click="toUpload(scope.row)"
               >上传试卷结构/标答</el-button
             >
             <el-button
-              v-if="!checkPrivilege('link', 'reset')"
-              class="btn-danger"
+              v-if="checkPrivilege('link', 'markerLogin')"
+              class="btn-primary"
               type="text"
               @click="toMark(scope.row)"
               >开始阅卷</el-button
@@ -61,8 +62,9 @@
 </template>
 
 <script>
-import { markTaskListPage } from "../api";
+import { markTaskListPage, yptAuth } from "../api";
 import UploadPaperAnswerDialog from "../components/UploadPaperAnswerDialog";
+import { autoSubmitForm } from "@/plugins/utils";
 
 export default {
   name: "mark-task-manage",
@@ -77,7 +79,7 @@ export default {
         {
           id: "111",
           examId: "111",
-          examName: "232323",
+          paperNumber: "232323",
           paperType: "A,B",
           enable: false
         }
@@ -90,7 +92,7 @@ export default {
   },
   methods: {
     async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
+      // if (!this.checkPrivilege("list", "list")) return;
       const datas = {
         ...this.filter,
         pageNumber: this.current,
@@ -111,6 +113,15 @@ export default {
     },
     toMark(row) {
       console.log(row);
+      this.toAuth();
+    },
+    async toAuth() {
+      const data = await yptAuth({});
+      console.log(data);
+      const url = data.redirectUrl;
+      const params = { ...data, returnUrl: window.location.href };
+      delete params.redirectUrl;
+      autoSubmitForm(url, params);
     }
   }
 };

+ 5 - 1
src/plugins/filters.js

@@ -10,7 +10,8 @@ import {
   DATA_TASK_TYPE,
   DATA_TASK_RESULT,
   ORG_TYPE,
-  CARD_SOURCE_TYPE
+  CARD_SOURCE_TYPE,
+  MARK_TASK_SYNC_STATUS
 } from "../constants/enumerate";
 import { formatDate } from "../plugins/utils";
 
@@ -72,3 +73,6 @@ Vue.filter("timestampFilter", function(val) {
 Vue.filter("flowTaskNameFilter", function(val) {
   return val ? val.replace(/\(.+?\)/g, "") : DEFAULT_FIELD;
 });
+Vue.filter("markTaskSyncStatusFilter", function(val) {
+  return MARK_TASK_SYNC_STATUS[val] || DEFAULT_FIELD;
+});

+ 16 - 0
src/plugins/utils.js

@@ -402,3 +402,19 @@ export function pickByNotNull(params) {
   });
   return nData;
 }
+
+export function autoSubmitForm(url, params) {
+  const form = document.createElement("form");
+  form.action = url;
+  form.method = "post";
+
+  Object.entries(params).forEach(([key, val]) => {
+    const input = document.createElement("input");
+    input.type = "hidden";
+    input.name = key;
+    input.value = val;
+    form.appendChild(input);
+  });
+  document.body.appendChild(form);
+  form.submit();
+}

+ 1 - 1
src/views/Home.vue

@@ -216,7 +216,7 @@ export default {
     ...mapState("exam", ["waitTaskCount"])
   },
   created() {
-    this.getMenus1();
+    this.getMenus();
   },
   methods: {
     ...mapActions("exam", ["updateWaitTaskCount"]),