Browse Source

命题任务展示考试对象

zhangjie 3 years ago
parent
commit
510c1f809a

+ 4 - 0
src/assets/styles/base.scss

@@ -253,6 +253,10 @@ body {
   border-collapse: collapse;
   text-align: left;
 
+  &.table-white {
+    background-color: #fff;
+  }
+
   th {
     padding: 12px;
     line-height: 1.2;

+ 19 - 1
src/assets/styles/element-ui-costom.scss

@@ -11,6 +11,17 @@
 
   &.is-fullscreen {
     border-radius: 0;
+
+    .el-dialog__header {
+      width: 100%;
+      position: fixed;
+      z-index: 9;
+      background-color: #fff;
+      border-bottom: 1px solid $--color-border;
+    }
+    .el-dialog__body {
+      padding-top: 90px;
+    }
   }
 }
 .el-dialog__header {
@@ -311,9 +322,16 @@
     }
   }
   // action-column
-  .action-column {
+  td.action-column {
+    padding-left: 10px;
+    padding-right: 10px;
+    .cell {
+      padding: 0;
+      margin: 0 -5px;
+    }
     .el-button--text {
       padding: 0;
+      margin: 0 5px;
       &:hover {
         transform: scale(1.1);
       }

+ 5 - 0
src/assets/styles/pages.scss

@@ -7,6 +7,11 @@
     line-height: 30px;
   }
 }
+.task-exam-room {
+  background-color: #fff;
+  border-radius: $--border-radius;
+  margin-bottom: 10px;
+}
 // task-detail
 .task-detail {
   .table {

+ 3 - 0
src/modules/exam/api.js

@@ -52,6 +52,9 @@ export const batchAddExamTask = datas => {
 export const taskApplyAuditHistory = flowId => {
   return $postParam("/api/admin/exam/task/review_list", { flowId });
 };
+export const taskApplyExamObject = paperNumber => {
+  return $postParam("/api/admin/exam/task/find_exam_object", { paperNumber });
+};
 export const examTaskApproveForm = examTaskId => {
   return $postParam("/api/admin/exam/task/find_approve_form_json", {
     examTaskId

+ 62 - 32
src/modules/exam/components/ModifyTaskApply.vue

@@ -11,69 +11,77 @@
     @open="visibleChange"
   >
     <div class="part-box part-box-pad part-box-border part-box-gray">
-      <el-form class="form-info" label-width="130px">
+      <el-form class="form-info mb-4" label-width="120px">
         <el-row>
-          <el-col :span="10">
+          <el-col :span="12">
             <el-form-item label="课程(代码):">
               <span
                 >{{ modalForm.courseName }}({{ modalForm.courseCode }})</span
               >
             </el-form-item>
           </el-col>
-          <el-col :span="14">
+          <el-col :span="12">
             <el-form-item label="教研室:">
               <span>{{ modalForm.teachingRoomName | defaultFieldFilter }}</span>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="10">
-            <el-form-item label="试卷编号:">
-              <span>{{ modalForm.paperNumber }}</span>
+          <el-col :span="12">
+            <el-form-item label="试卷名称:">
+              <span>{{ modalForm.paperName || "--" }}</span>
             </el-form-item>
           </el-col>
-          <el-col :span="14">
-            <el-form-item label="命题时间:">
-              <span v-if="modalForm.startTime && modalForm.endTime">
-                {{ modalForm.startTime | timestampFilter }} 至
-                {{ modalForm.endTime | timestampFilter }}</span
-              >
+          <el-col :span="12">
+            <el-form-item label="考试时间:">
+              <span v-if="modalForm.examDate && modalForm.examTime">
+                {{ modalForm.examDate }} <i class="mr-1"></i>
+                {{ modalForm.examTime }}
+              </span>
               <span v-else>--</span>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="10">
-            <el-form-item label="题卡规则:">
-              <span>{{ modalForm.cardRuleName }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="14">
-            <el-form-item label="命题老师:">
-              <span>{{ modalForm.propositionName || modalForm.userName }}</span>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="10">
+          <el-col :span="12">
             <el-form-item label="拟卷教师:">
               <span>{{ modalForm.teacherName | defaultFieldFilter }}</span>
             </el-form-item>
           </el-col>
-          <el-col :span="14">
-            <el-form-item label="主讲教师:">
-              <span>{{ modalForm.lecturerName | defaultFieldFilter }}</span>
+          <el-col :span="12">
+            <el-form-item label="命题老师:">
+              <span>{{ modalForm.propositionName || modalForm.userName }}</span>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="10">
+          <el-col :span="12">
             <el-form-item label="审核状态:">
               <span>{{ modalForm.auditStatus | auditStatusFilter }}</span>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
+
+      <table class="table task-exam-room" v-if="examRoomInfoList.length">
+        <colgroup>
+          <col width="400" />
+          <col width="100" />
+          <col width="100" />
+        </colgroup>
+        <tr>
+          <th>使用班级</th>
+          <th>人数</th>
+          <th>总印份数</th>
+        </tr>
+        <tr v-for="(item, index) in examRoomInfoList" :key="index">
+          <td>{{ item.clazzNames }}</td>
+          <td>{{ item.studentCount }}</td>
+          <td v-if="index === 0" :rowspan="examRoomInfoList.length">
+            {{ printTotalCount }}
+          </td>
+        </tr>
+      </table>
     </div>
     <div class="task-apply-steps" v-if="flows.length">
       <el-steps align-center>
@@ -137,7 +145,8 @@
 import ApplyContent from "./ApplyContent";
 import ApplyAuditHistory from "./ApplyAuditHistory";
 import { examRuleDetail } from "../../base/api";
-import { cancelOrRestartTaskApply } from "../api";
+import { cancelOrRestartTaskApply, taskApplyExamObject } from "../api";
+import { parseTimeRangeDateAndTime } from "@/plugins/utils";
 
 const initModalForm = {
   id: null,
@@ -159,7 +168,10 @@ const initModalForm = {
   source: "",
   teachingRoomName: "",
   teacherName: "",
-  lecturerName: ""
+  lecturerName: "",
+  paperName: "",
+  examDate: "",
+  examTime: ""
 };
 
 export default {
@@ -209,7 +221,9 @@ export default {
         { id: "2", name: "审核意见", component: "apply-audit-history" }
       ],
       curMenu: {},
-      flows: []
+      flows: [],
+      examRoomInfoList: [],
+      printTotalCount: 0
     };
   },
   created() {
@@ -230,6 +244,22 @@ export default {
     visibleChange() {
       this.initData(this.instance);
       this.curMenu = this.menus[0];
+
+      this.getExamRoomInfo();
+    },
+    async getExamRoomInfo() {
+      const data = await taskApplyExamObject(this.instance.paperNumber);
+
+      this.examRoomInfoList = data.examRoomInfoList || [];
+      this.printTotalCount = data.printTotalCount;
+      this.modalForm.paperName = data.paperName || "";
+      const { date, time } = parseTimeRangeDateAndTime(
+        data.examStartTime,
+        data.examEndTime
+      );
+
+      this.modalForm.examDate = date;
+      this.modalForm.examTime = time;
     },
     cancel() {
       this.modalIsShow = false;

+ 1 - 1
src/modules/exam/components/PaperApproveTable.vue

@@ -199,7 +199,7 @@ export default {
         this.basicInfo.examEndTime
       );
 
-      this.basicInfo.examTime = `${date}  ${time}`;
+      this.basicInfo.examTime = date && time ? `${date}  ${time}` : "--";
       this.$nextTick(() => {
         this.rebuildPaper();
       });

+ 2 - 2
src/modules/print/components/PreviewBusinessStudentDetail.vue

@@ -26,10 +26,10 @@
         <span>{{ student.paperNumber }}</span>
       </el-form-item>
       <el-form-item label="考试日期:">
-        <span>{{ student.examDate }}</span>
+        <span>{{ student.examDate | defaultFieldFilter }}</span>
       </el-form-item>
       <el-form-item label="考试时间:">
-        <span>{{ student.examTime }}</span>
+        <span>{{ student.examTime | defaultFieldFilter }}</span>
       </el-form-item>
       <el-form-item label="考点:">
         <span>{{ student.examPlace }}</span>

+ 2 - 2
src/modules/print/views/BusinessDataDetail.vue

@@ -189,8 +189,8 @@ export default {
           item.examStartTime,
           item.examEndTime
         );
-        item.examDate = date;
-        item.examTime = time;
+        item.examDate = date || "--";
+        item.examTime = time || "--";
         return item;
       });
       this.total = data.total;

+ 2 - 2
src/modules/print/views/BusinessDataExport.vue

@@ -256,8 +256,8 @@ export default {
           item.examStartTime,
           item.examEndTime
         );
-        item.examDate = date;
-        item.examTime = time;
+        item.examDate = date || "--";
+        item.examTime = time || "--";
         return item;
       });
       this.total = data.total;

+ 2 - 2
src/modules/print/views/PrintTaskManage.vue

@@ -380,8 +380,8 @@ export default {
           item.examStartTime,
           item.examEndTime
         );
-        item.examDate = date;
-        item.examTime = time;
+        item.examDate = date || "--";
+        item.examTime = time || "--";
         return item;
       });
       this.total = data.total;

+ 2 - 2
src/plugins/utils.js

@@ -333,8 +333,8 @@ export function residueFloorTime(timeNumber, wainingTime = 0) {
 export function parseTimeRangeDateAndTime(startTime, endTime) {
   if (!startTime || !endTime)
     return {
-      date: "--",
-      time: "--"
+      date: "",
+      time: ""
     };
 
   const st = formatDate("YYYY-MM-DD HH:mm", new Date(startTime)).split(" ");