zhangjie пре 2 година
родитељ
комит
aa4edf1ac9

+ 23 - 0
src/modules/admin/components/ModifySystemRole.vue

@@ -23,6 +23,21 @@
           clearable
         ></el-input>
       </el-form-item>
+      <el-form-item prop="dataPermissionType" label="数据权限:">
+        <el-select
+          v-model="modalForm.dataPermissionType"
+          placeholder="请选择"
+          style="width:282px;"
+          @change="dataPermissionTypeChange"
+        >
+          <el-option
+            v-for="(val, key) in DATA_PRIVILEGE_TYPE"
+            :key="key"
+            :value="key"
+            :label="val"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="角色权限:" required></el-form-item>
     </el-form>
     <privilege-set
@@ -40,6 +55,7 @@
 </template>
 
 <script>
+import { DATA_PRIVILEGE_TYPE } from "../../../constants/enumerate";
 import { updateRole, roleBoundPrivileges } from "../../base/api";
 import { sysCustomMenuList } from "../api";
 import PrivilegeSet from "../../base/components/PrivilegeSet";
@@ -47,6 +63,7 @@ import PrivilegeSet from "../../base/components/PrivilegeSet";
 const initModalForm = {
   id: null,
   name: "",
+  dataPermissionType: null,
   privilegeIds: []
 };
 
@@ -75,6 +92,7 @@ export default {
       isSubmit: false,
       menus: [],
       modalForm: {},
+      DATA_PRIVILEGE_TYPE,
       rules: {
         name: [
           {
@@ -130,6 +148,11 @@ export default {
     open() {
       this.modalIsShow = true;
     },
+    dataPermissionTypeChange() {
+      this.$refs.PrivilegeSet.resetdataPermissionType(
+        this.modalForm.dataPermissionType
+      );
+    },
     async submit() {
       const valid = await this.$refs.modalFormComp.validate().catch(() => {});
       if (!valid) return;

+ 1 - 3
src/modules/exam/components/DownloadSetDialog.vue

@@ -215,9 +215,7 @@ export default {
       if (!data) return;
 
       this.isSubmit = false;
-      this.$message.success(
-        "下载任务已提交,请在系统设置-任务管理中下载文件!"
-      );
+      this.$message.success("下载任务已提交!");
       this.cancel();
     }
   }

+ 0 - 16
src/modules/exam/views/ExamTaskManage.vue

@@ -100,13 +100,6 @@
           >
             批量新建命题任务
           </el-button>
-          <el-button
-            v-if="checkPrivilege('button', 'BatchAdd')"
-            type="primary"
-            icon="el-icon-s-order"
-            @click="toDataTask"
-            >批量新建结果查询</el-button
-          >
         </div>
         <div>
           <el-button
@@ -252,12 +245,6 @@
       ref="BatchAddExamTask"
       @modified="taskModified"
     ></batch-add-exam-task>
-    <!-- data-task-dialog -->
-    <data-task-dialog
-      v-if="checkPrivilege('button', 'BatchAdd')"
-      ref="DataTaskDialog"
-      task-type="QUESTION_MISSION_BATCH_CREATE"
-    ></data-task-dialog>
   </div>
 </template>
 
@@ -392,9 +379,6 @@ export default {
       this.getList();
       this.updateWaitTaskCount();
     },
-    toDataTask() {
-      this.$refs.DataTaskDialog.open();
-    },
     async toDelete(row) {
       const result = await this.$confirm(`确定要删除命题任务吗?`, "提示", {
         type: "warning"

+ 1 - 3
src/modules/exam/views/TaskPaperManage.vue

@@ -378,9 +378,7 @@ export default {
       this.loading = false;
 
       if (res) {
-        this.$message.success(
-          "导出任务已提交,请在系统设置-任务管理中下载文件!"
-        );
+        this.$message.success("导出任务已提交!");
       } else {
         this.$message.error("导出任务提交失败,请重新尝试!");
       }

+ 1 - 3
src/modules/exam/views/TaskReviewManage.vue

@@ -443,9 +443,7 @@ export default {
       this.loading = false;
 
       if (res) {
-        this.$message.success(
-          "导出任务已提交,请在系统设置-任务管理中下载文件!"
-        );
+        this.$message.success("导出任务已提交!");
       } else {
         this.$message.error("导出任务提交失败,请重新尝试!");
       }

+ 1 - 3
src/modules/print/views/BusinessDataExport.vue

@@ -422,9 +422,7 @@ export default {
       this.loading = false;
 
       if (res) {
-        this.$message.success(
-          "导出任务已提交,请在系统设置-任务管理中下载文件!"
-        );
+        this.$message.success("导出任务已提交!");
       } else {
         this.$message.error("导出任务提交失败,请重新尝试!");
       }

+ 7 - 0
src/modules/stmms/api.js

@@ -50,6 +50,13 @@ export const scoreDownload = id => {
 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", {});

+ 6 - 0
src/modules/stmms/router.js

@@ -1,5 +1,6 @@
 import MarkerLogin from "./views/MarkerLogin.vue";
 import ScoreArchive from "./views/ScoreArchive.vue";
+import ScoreSync from "./views/ScoreSync.vue";
 import UploadStructure from "./views/UploadStructure.vue";
 import SyncManage from "./views/SyncManage.vue";
 import QuestionLibraryManage from "./views/QuestionLibraryManage.vue";
@@ -15,6 +16,11 @@ export default [
     name: "ScoreArchive",
     component: ScoreArchive
   },
+  {
+    path: "/stmms/score-sync",
+    name: "ScoreSync",
+    component: ScoreSync
+  },
   {
     path: "/stmms/upload-structure",
     name: "UploadStructure",

+ 0 - 23
src/modules/stmms/views/ScoreArchive.vue

@@ -42,15 +42,6 @@
       </el-form>
       <div class="box-justify">
         <div>
-          <el-button
-            v-if="checkPrivilege('button', 'sync')"
-            type="success"
-            icon="el-icon-refresh"
-            :loading="syncLoading"
-            :disabled="!filter.semesterId || !filter.examId"
-            @click="toSync"
-            >同步</el-button
-          >
           <el-button
             v-if="checkPrivilege('button', 'BatchDownload')"
             type="primary"
@@ -213,10 +204,8 @@ import {
   scoreExport,
   scoreBatchDownload,
   scoreDownload,
-  scoreSync,
   scorePreview
 } from "../api";
-// import { downloadPaper } from "../components/downloadPaper";
 import { downloadByApi } from "@/plugins/download";
 import SimpleImagePreview from "@/components/SimpleImagePreview";
 
@@ -267,18 +256,6 @@ export default {
       this.current = page;
       this.getList();
     },
-    async toSync() {
-      if (this.syncLoading) return;
-      this.syncLoading = true;
-      const res = await scoreSync({
-        semesterId: this.filter.semesterId,
-        courseCode: this.filter.courseCode,
-        examId: this.filter.examId
-      }).catch(() => {});
-      this.syncLoading = false;
-      if (!res) return;
-      this.$message.success("同步任务已经提交");
-    },
     async toDownloadAll() {
       if (this.loading) return;
       this.loading = true;

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

@@ -0,0 +1,186 @@
+<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>