zhangjie 2 years ago
parent
commit
c9878d5586
2 changed files with 262 additions and 267 deletions
  1. 81 81
      src/modules/stmms/api.js
  2. 181 186
      src/modules/stmms/views/ScoreSync.vue

+ 81 - 81
src/modules/stmms/api.js

@@ -1,81 +1,81 @@
-import { $postParam, $post } from "@/plugins/axios";
-
-export const examStructureListPage = datas => {
-  return $postParam("/api/admin/exam/structure/list", datas);
-};
-export const examStructureUpload = datas => {
-  return $post("/api/admin/exam/structure/upload", datas);
-};
-export const examStructureUploadAnswer = datas => {
-  return $post("/api/admin/exam/structure/upload_answer", datas);
-};
-export const examStructurePreviewStructure = id => {
-  return $postParam("/api/admin/exam/structure/preview_structure", { id });
-};
-export const examStructureFindJpg = datas => {
-  return $postParam("/api/admin/exam/structure/find_jpg_file", datas);
-};
-export const examStructureSubmit = datas => {
-  return $post("/api/admin/exam/structure/submit", datas);
-};
-export const updateObjectiveAnswer = datas => {
-  return $post("/api/admin/exam/structure/update_objective_answer", datas);
-};
-export const examBindMarkLeader = datas => {
-  return $post("/api/admin/exam/structure/bind_mark_leader", datas);
-};
-
-// score-archive
-export const scoreListPage = datas => {
-  return $postParam("/api/admin/sync/score/list", datas);
-};
-export const scoreExport = datas => {
-  return $postParam("/api/admin/sync/score/export", datas);
-};
-export const scoreSync = datas => {
-  return $postParam("/api/admin/sync/score/sync", datas);
-};
-export const scorePreview = id => {
-  return $postParam("/api/admin/sync/score/preview", { id });
-};
-export const scoreDownload = id => {
-  return $postParam(
-    "/api/admin/sync/score/download",
-    { id },
-    {
-      responseType: "blob"
-    }
-  );
-};
-export const scoreBatchDownload = datas => {
-  return $postParam("/api/admin/sync/score/batch_download", datas);
-};
-// score-sync
-export const scoreLogListPage = datas => {
-  return $postParam("/api/admin/sync/log/list", datas);
-};
-export const scoreLogSync = datas => {
-  return $postParam("/api/admin/sync/log/sync", datas);
-};
-// 第三方登录ypt
-export const userSysRoles = () => {
-  return $post("/api/admin/common/get_open_role", {});
-};
-export const yptAuth = roleType => {
-  if (roleType === "MARKER") {
-    return $post("/api/admin/exam/sso/marker_login", {});
-  } else {
-    return $post("/api/admin/exam/sso/marker_leader_login", {});
-  }
-};
-// sync-result-manage
-export const syncResultListPage = datas => {
-  return $postParam("/api/admin/data/sync/query", datas);
-};
-export const syncResync = id => {
-  return $postParam("/api/admin/data/sync/resync", { id });
-};
-// question-library-manage
-export const tikuAuth = datas => {
-  return $postParam("/api/admin/exam/sso/question_library_login", datas);
-};
+import { $postParam, $post } from "@/plugins/axios";
+
+export const examStructureListPage = datas => {
+  return $postParam("/api/admin/exam/structure/list", datas);
+};
+export const examStructureUpload = datas => {
+  return $post("/api/admin/exam/structure/upload", datas);
+};
+export const examStructureUploadAnswer = datas => {
+  return $post("/api/admin/exam/structure/upload_answer", datas);
+};
+export const examStructurePreviewStructure = id => {
+  return $postParam("/api/admin/exam/structure/preview_structure", { id });
+};
+export const examStructureFindJpg = datas => {
+  return $postParam("/api/admin/exam/structure/find_jpg_file", datas);
+};
+export const examStructureSubmit = datas => {
+  return $post("/api/admin/exam/structure/submit", datas);
+};
+export const updateObjectiveAnswer = datas => {
+  return $post("/api/admin/exam/structure/update_objective_answer", datas);
+};
+export const examBindMarkLeader = datas => {
+  return $post("/api/admin/exam/structure/bind_mark_leader", datas);
+};
+
+// score-archive
+export const scoreListPage = datas => {
+  return $postParam("/api/admin/sync/score/list", datas);
+};
+export const scoreExport = datas => {
+  return $postParam("/api/admin/sync/score/export", datas);
+};
+export const scoreSync = datas => {
+  return $postParam("/api/admin/sync/score/sync", datas);
+};
+export const scorePreview = id => {
+  return $postParam("/api/admin/sync/score/preview", { id });
+};
+export const scoreDownload = id => {
+  return $postParam(
+    "/api/admin/sync/score/download",
+    { id },
+    {
+      responseType: "blob"
+    }
+  );
+};
+export const scoreBatchDownload = datas => {
+  return $postParam("/api/admin/sync/score/batch_download", datas);
+};
+// score-sync
+export const scoreLogListPage = datas => {
+  return $postParam("/api/admin/sync/log/list", datas);
+};
+export const scoreLogSync = datas => {
+  return $postParam("/api/admin/sync/log/sync", datas);
+};
+// 第三方登录ypt
+export const userSysRoles = () => {
+  return $post("/api/admin/common/get_open_role", {});
+};
+export const yptAuth = roleType => {
+  if (roleType === "MARKER") {
+    return $post("/api/admin/exam/sso/marker_login", {});
+  } else {
+    return $post("/api/admin/exam/sso/marker_leader_login", {});
+  }
+};
+// sync-result-manage
+export const syncResultListPage = datas => {
+  return $postParam("/api/admin/data/sync/query", datas);
+};
+export const syncResync = id => {
+  return $postParam("/api/admin/data/sync/resync", { id });
+};
+// question-library-manage
+export const tikuAuth = datas => {
+  return $postParam("/api/admin/exam/sso/question_library_login", datas);
+};

+ 181 - 186
src/modules/stmms/views/ScoreSync.vue

@@ -1,186 +1,181 @@
-<template>
-  <div class="score-sync">
-    <div class="part-box part-box-filter">
-      <el-form ref="FilterForm" label-position="left" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="学期:">
-            <semester-select v-model="filter.semesterId"></semester-select>
-          </el-form-item>
-          <el-form-item label="考试:">
-            <exam-select
-              v-model="filter.examId"
-              :semester-id="filter.semesterId"
-            ></exam-select>
-          </el-form-item>
-        </template>
-        <el-form-item label-width="0px">
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            :disabled="!filter.semesterId || !filter.examId"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-    </div>
-
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column
-          prop="examId"
-          label="考试ID"
-          min-width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="examName"
-          label="考试名称"
-          min-width="200"
-        ></el-table-column>
-        <el-table-column
-          prop="startTime"
-          label="开始时间"
-          width="170"
-        ></el-table-column>
-        <el-table-column
-          prop="endTime"
-          label="结束时间"
-          width="170"
-        ></el-table-column>
-        <el-table-column
-          prop="status"
-          label="状态"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="totalCourses"
-          label="总课程数"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="totalStudents"
-          label="总考生数"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="resule"
-          label="结果"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="totalScore"
-          label="成绩"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          class-name="action-column"
-          label="操作"
-          width="140"
-          fixed="right"
-        >
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'sync')"
-              class="btn-primary"
-              type="text"
-              @click="toSync(scope.row)"
-              >同步</el-button
-            >
-            <el-button
-              v-if="
-                checkPrivilege('link', 'sync') &&
-                  scope.row.status === 'FINISH' &&
-                  scope.row.result === 'ERROR'
-              "
-              class="btn-primary"
-              type="text"
-              @click="toExporLog(scope.row)"
-              >导出日志</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { scoreLogListPage, scoreLogSync } from "../api";
-
-export default {
-  name: "score-archive",
-  data() {
-    return {
-      filter: {
-        semesterId: "",
-        examId: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      curImage: {},
-      curRow: {},
-      curPapers: [],
-      downloading: false,
-      syncLoading: false,
-      exportLoading: false,
-      loading: false,
-      taskType: ""
-    };
-  },
-  mounted() {
-    // this.toPage(1);
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await scoreLogListPage(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    async toSync() {
-      if (this.syncLoading) return;
-      this.syncLoading = true;
-      const res = await scoreLogSync({
-        semesterId: this.filter.semesterId,
-        courseCode: this.filter.courseCode,
-        examId: this.filter.examId
-      }).catch(() => {});
-      this.syncLoading = false;
-      if (!res) return;
-      this.$message.success("同步任务已经提交");
-    },
-    toExporLog(row) {
-      if (!row.errorFileUrl) return;
-      window.open(row.errorFileUrl);
-    }
-  }
-};
-</script>
+<template>
+  <div class="score-sync">
+    <div class="part-box part-box-filter">
+      <el-form ref="FilterForm" label-position="left" inline>
+        <template v-if="checkPrivilege('condition', 'condition')">
+          <el-form-item label="学期:">
+            <semester-select v-model="filter.semesterId"></semester-select>
+          </el-form-item>
+          <el-form-item label="考试:">
+            <exam-select
+              v-model="filter.examId"
+              :semester-id="filter.semesterId"
+            ></exam-select>
+          </el-form-item>
+        </template>
+        <el-form-item label-width="0px">
+          <el-button
+            v-if="checkPrivilege('button', 'select')"
+            type="primary"
+            :disabled="!filter.semesterId || !filter.examId"
+            @click="toPage(1)"
+            >查询</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div class="part-box part-box-pad">
+      <el-table ref="TableList" :data="dataList">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="70"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column
+          prop="examId"
+          label="考试ID"
+          min-width="100"
+        ></el-table-column>
+        <el-table-column prop="examName" label="考试名称" min-width="200">
+          <span slot-scope="scope">{{
+            scope.row.examName | defaultFieldFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="startTime" label="开始时间" width="170">
+          <span slot-scope="scope">{{
+            scope.row.startTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="endTime" label="结束时间" width="170">
+          <span slot-scope="scope">{{
+            scope.row.endTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="statusStr" label="状态" width="100">
+          <span slot-scope="scope">{{
+            scope.row.statusStr | defaultFieldFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="totalCourses" label="总课程数" width="100">
+          <span slot-scope="scope">{{
+            scope.row.totalCourses | defaultFieldFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="totalStudents" label="总考生数" width="100">
+          <span slot-scope="scope">{{
+            scope.row.totalStudents | defaultFieldFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="resultStr" label="结果" width="100">
+          <span slot-scope="scope">{{
+            scope.row.resultStr | defaultFieldFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="140"
+          fixed="right"
+        >
+          <template slot-scope="scope">
+            <el-button
+              v-if="checkPrivilege('link', 'sync')"
+              class="btn-primary"
+              type="text"
+              @click="toSync(scope.row)"
+              >同步</el-button
+            >
+            <el-button
+              v-if="
+                checkPrivilege('link', 'sync') &&
+                  scope.row.status === 'FINISH' &&
+                  scope.row.result === 'ERROR'
+              "
+              class="btn-primary"
+              type="text"
+              @click="toExporLog(scope.row)"
+              >导出日志</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="part-page">
+        <el-pagination
+          background
+          layout="total,prev, pager, next"
+          :current-page="current"
+          :total="total"
+          :page-size="size"
+          @current-change="toPage"
+        >
+        </el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { scoreLogListPage, scoreLogSync } from "../api";
+
+export default {
+  name: "score-archive",
+  data() {
+    return {
+      filter: {
+        semesterId: "",
+        examId: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      dataList: [],
+      curImage: {},
+      curRow: {},
+      curPapers: [],
+      downloading: false,
+      syncLoading: false,
+      exportLoading: false,
+      loading: false,
+      taskType: ""
+    };
+  },
+  mounted() {
+    // this.toPage(1);
+  },
+  methods: {
+    async getList() {
+      if (!this.checkPrivilege("list", "list")) return;
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await scoreLogListPage(datas);
+      this.dataList = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    async toSync(row) {
+      if (this.syncLoading) return;
+      this.syncLoading = true;
+      const res = await scoreLogSync({
+        semesterId: this.filter.semesterId,
+        examId: row.examId
+      }).catch(() => {});
+      this.syncLoading = false;
+      if (!res) return;
+      this.$message.success("同步任务已经提交");
+      this.getList();
+    },
+    toExporLog(row) {
+      if (!row.errorFileUrl) return;
+      window.open(row.errorFileUrl);
+    }
+  }
+};
+</script>