瀏覽代碼

推送接口

zhangjie 2 年之前
父節點
當前提交
506e7793ca

+ 7 - 0
src/constants/enumerate.js

@@ -265,6 +265,13 @@ export const STMMS_SYNC_TYPE = {
   SCORE_PUSH: "成绩推送"
 };
 
+export const PUSH_TYPE = {
+  INIT: "未开始",
+  STARTING: "同步中",
+  FAIL: "同步失败",
+  FINISH: "同步成功"
+};
+
 // analysis
 export const ANALYSIS_BATCH_STATUS = {
   SETTING_GRADE_PAPER: "数据准备中",

+ 4 - 128
src/modules/base/components/PrintPlanBatchPushDialog.vue

@@ -2,7 +2,7 @@
   <el-dialog
     class="print-plan-batch-push-dialog page-dialog"
     :visible.sync="modalIsShow"
-    title="批量推送"
+    title="推送课程"
     top="0"
     width="1100px"
     :close-on-click-modal="false"
@@ -10,95 +10,6 @@
     append-to-body
     @open="visibleChange"
   >
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <el-form-item label="题卡:">
-          <el-select
-            v-model.trim="filter.cardType"
-            placeholder="题卡类型"
-            clearable
-            filterable
-          >
-            <el-option
-              v-for="item in cardTypes"
-              :key="item.code"
-              :value="item.code"
-              :label="item.name"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="课程名称:">
-          <el-input
-            v-model="filter.courseName"
-            placeholder="课程名称"
-            clearable
-          ></el-input>
-        </el-form-item>
-
-        <el-form-item label-width="0px">
-          <el-button type="primary" @click="search">查询</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table
-        ref="TableList"
-        :data="dataList"
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column
-          type="selection"
-          width="55"
-          align="center"
-        ></el-table-column>
-        <el-table-column prop="name" label="课程名称(代码)" min-width="140">
-          <span slot-scope="scope"
-            >{{ scope.row.courseName }}({{ scope.row.courseCode }})</span
-          >
-        </el-table-column>
-        <el-table-column
-          prop="sequence"
-          label="序号"
-          width="60"
-        ></el-table-column>
-        <el-table-column
-          prop="paperNumber"
-          label="试卷编号"
-          min-width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="paperType"
-          label="卷型"
-          width="60"
-        ></el-table-column>
-        <el-table-column
-          prop="syncCardType"
-          label="题卡类型"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="totalSubjects"
-          label="科次"
-          width="60"
-        ></el-table-column>
-        <el-table-column
-          prop="syncStatus"
-          label="推送状态"
-          width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="syncUserName"
-          label="推送人"
-          min-width="100"
-        ></el-table-column>
-        <el-table-column
-          prop="thirdRelateId"
-          label="关联ID"
-          width="100"
-        ></el-table-column>
-      </el-table>
-    </div>
-
     <div class="part-box part-box-filter part-box-flex">
       <el-form ref="modalFormComp" :model="modalForm" :rules="rules" inline>
         <el-form-item label="选择考试:">
@@ -164,7 +75,6 @@
 <script>
 import {
   printPlanSyncStmms,
-  printPlanCourseRelateList,
   printPlanSyncRelateExamList,
   printPlanRelateExamList
 } from "../api";
@@ -179,7 +89,7 @@ const initModalForm = {
 export default {
   name: "print-plan-batch-push-dialog",
   props: {
-    ids: {
+    courses: {
       type: Array,
       default() {
         return [];
@@ -190,23 +100,12 @@ export default {
     return {
       modalIsShow: false,
       isSubmit: false,
-      filter: {
-        cardType: "",
-        courseName: ""
-      },
-      dataList: [],
-      colleges: [],
       modalForm: { ...initModalForm },
       examTypes: [
         { code: "create", name: "云阅卷创建新的考试" },
         { code: "list", name: "选择云阅卷存在考试" }
       ],
       examType: "list",
-      cardTypes: [
-        { code: null, name: "全部题卡" },
-        { code: "GENERIC", name: "通用题卡" },
-        { code: "CUSTOM", name: "电子题卡" }
-      ],
       thirdRelateExams: [],
       rules: {
         thirdRelateId: [
@@ -241,20 +140,14 @@ export default {
   },
   methods: {
     initData() {
-      this.filter = {
-        collegeId: "",
-        cardType: "",
-        courseName: ""
-      };
       this.modalForm = { ...initModalForm };
-      this.modalForm.list = [];
+      this.modalForm.list = this.courses;
       this.$nextTick(() => {
         this.$refs.modalFormComp.clearValidate();
       });
     },
     visibleChange() {
       this.initData(this.instance);
-      this.search();
       this.getExams();
     },
     async getExams() {
@@ -265,27 +158,12 @@ export default {
       const data = await printPlanSyncRelateExamList();
       this.thirdRelateExams = data || [];
     },
-    async search() {
-      const data = await printPlanCourseRelateList({
-        printPlanIds: this.ids,
-        ...this.filter
-      });
-      this.dataList = data || [];
-    },
     cancel() {
       this.modalIsShow = false;
     },
     open() {
       this.modalIsShow = true;
     },
-    handleSelectionChange(val) {
-      this.modalForm.list = val.map(item => {
-        return {
-          id: item.id,
-          printPlanIds: item.printPlanIds
-        };
-      });
-    },
     examTypeChange() {
       this.$nextTick(() => {
         this.$refs.modalFormComp.clearValidate();
@@ -297,9 +175,7 @@ export default {
 
       if (this.loading) return;
       this.loading = true;
-      const data = await printPlanSyncStmms({
-        ...this.modalForm
-      }).catch(() => {});
+      const data = await printPlanSyncStmms(this.modalForm).catch(() => {});
       this.loading = false;
 
       if (!data) return;

+ 98 - 29
src/modules/base/views/PrintPlanPushManage.vue

@@ -23,13 +23,48 @@
             :semester-id="filter.semesterId"
           ></exam-select>
         </el-form-item>
-        <el-form-item label="印刷计划:">
-          <print-plan-select
-            v-model.trim="filter.printPlanId"
-            placeholder="印刷计划"
+        <el-form-item label="学院:">
+          <college-select
+            v-model="filter.orgId"
+            placeholder="学院"
+          ></college-select>
+        </el-form-item>
+        <el-form-item label="推送状态:">
+          <el-select
+            v-model="filter.syncStatus"
+            style="width: 120px;"
+            placeholder="推送状态"
             clearable
-          ></print-plan-select>
+          >
+            <el-option
+              v-for="(val, key) in PUSH_TYPE"
+              :key="key"
+              :value="key"
+              :label="val"
+            ></el-option>
+          </el-select>
         </el-form-item>
+        <el-form-item label="课程名称:">
+          <el-input
+            v-model="filter.courseName"
+            placeholder="课程名称"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker
+            v-model="createTime"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="考试开始时间"
+            end-placeholder="考试结束时间"
+            value-format="timestamp"
+            align="right"
+            unlink-panels
+          >
+          </el-date-picker>
+        </el-form-item>
+
         <el-form-item label-width="0px">
           <el-button type="primary" @click="search">查询</el-button>
         </el-form-item>
@@ -54,32 +89,55 @@
           type="selection"
           width="55"
           align="center"
-          :selectable="row => row.canPush"
+        ></el-table-column>
+        <el-table-column prop="name" label="课程名称(代码)" min-width="140">
+          <span slot-scope="scope"
+            >{{ scope.row.courseName }}({{ scope.row.courseCode }})</span
+          >
+        </el-table-column>
+        <el-table-column
+          prop="sequence"
+          label="序号"
+          width="60"
         ></el-table-column>
         <el-table-column
-          prop="name"
-          label="印刷计划"
-          min-width="180"
+          prop="paperNumber"
+          label="试卷编号"
+          min-width="100"
         ></el-table-column>
         <el-table-column
-          prop="totalSubjects"
-          label="课程数"
+          prop="paperType"
+          label="卷型"
+          width="60"
+        ></el-table-column>
+        <el-table-column
+          prop="syncCardType"
+          label="题卡类型"
           width="100"
         ></el-table-column>
+        <el-table-column prop="examDate" label="考试日期" width="160">
+        </el-table-column>
+        <el-table-column prop="examTime" label="考试时间" width="120">
+        </el-table-column>
         <el-table-column
-          prop="syncSuccessCount"
-          label="推送成功课程数"
-          width="140"
+          prop="totalSubjects"
+          label="科次"
+          width="60"
+        ></el-table-column>
+        <el-table-column
+          prop="syncStatusDisplay"
+          label="推送状态"
+          width="100"
         ></el-table-column>
         <el-table-column
-          prop="syncFailCount"
-          label="推送失败课程数"
-          width="140"
+          prop="syncUserName"
+          label="推送"
+          width="120"
         ></el-table-column>
         <el-table-column
-          prop="syncInitCount"
-          label="未推送课程数"
-          width="140"
+          prop="thirdRelateId"
+          label="考试ID"
+          width="100"
         ></el-table-column>
         <el-table-column
           class-name="action-column"
@@ -126,7 +184,7 @@
     <!-- PrintPlanBatchPushDialog -->
     <print-plan-batch-push-dialog
       ref="PrintPlanBatchPushDialog"
-      :ids="curSelectedPlanIds"
+      :courses="curSelectedCourses"
       @modified="mergePushed"
     ></print-plan-batch-push-dialog>
     <!-- DataSyncDialog -->
@@ -138,6 +196,7 @@
 </template>
 
 <script>
+import { PUSH_TYPE } from "@/constants/enumerate";
 import { printPlanPushListQuery } from "../api";
 import { examSemesterList } from "../../base/api";
 import PrintPlanBatchPushDialog from "../components/PrintPlanBatchPushDialog.vue";
@@ -150,9 +209,14 @@ export default {
     return {
       filter: {
         semesterId: "",
-        printPlanId: "",
-        examId: ""
+        examId: "",
+        orgId: "",
+        syncStatus: "",
+        courseName: "",
+        startTime: "",
+        endTime: ""
       },
+      PUSH_TYPE,
       current: 1,
       size: this.GLOBAL.pageSize,
       total: 0,
@@ -161,7 +225,8 @@ export default {
       dataList: [],
       curPrintPlan: {},
       multipleSelection: [],
-      curSelectedPlanIds: []
+      curSelectedCourses: [],
+      createTime: []
     };
   },
   mounted() {
@@ -173,11 +238,15 @@ export default {
       await this.getList();
     },
     async getList() {
-      const datas = {
+      let datas = {
         ...this.filter,
         pageNumber: this.current,
         pageSize: this.size
       };
+      if (this.createTime) {
+        datas.startTime = this.createTime[0];
+        datas.endTime = this.createTime[1];
+      }
       const data = await printPlanPushListQuery(datas);
       this.dataList = data.records;
       this.total = data.total;
@@ -204,18 +273,18 @@ export default {
       this.filter.semesterId = curSemester.id;
     },
     handleSelectionChange(val) {
-      this.multipleSelection = val.map(item => item.id);
+      this.multipleSelection = val;
     },
     toBatchPush() {
       if (!this.multipleSelection.length) {
-        this.$message.error("请选择要批量推送的印刷计划");
+        this.$message.error("请选择要批量推送的数据");
         return;
       }
-      this.curSelectedPlanIds = [...this.multipleSelection];
+      this.curSelectedCourses = this.multipleSelection;
       this.$refs.PrintPlanBatchPushDialog.open();
     },
     toPush(row) {
-      this.curSelectedPlanIds = [row.id];
+      this.curSelectedCourses = [row];
       this.$refs.PrintPlanBatchPushDialog.open();
     },
     mergePushed() {