zhangjie 4 anni fa
parent
commit
92488428d9

+ 43 - 48
card/assets/styles/card-preview.scss

@@ -140,18 +140,14 @@
       color: #333;
       padding: 20px;
       position: absolute;
-      width: 260px;
-      height: 82px;
       top: 50%;
       left: 50%;
-      margin-top: -41px;
-      margin-left: -130px;
       z-index: 9;
+      transform: translate(-50%, -50%);
       font-weight: bold;
       font-size: 30px;
       color: #999;
       background-color: #fff;
-      text-align: center;
     }
   }
   &-main {
@@ -434,7 +430,7 @@
         &:last-child {
           margin-left: 80px;
           height: 100%;
-          // overflow: hidden;
+          overflow: hidden;
         }
       }
     }
@@ -488,7 +484,7 @@
           top: 0;
           bottom: 0;
           padding-top: 51px;
-          // overflow: hidden;
+          overflow: hidden;
           display: table;
           width: 100%;
         }
@@ -650,47 +646,46 @@
               &:last-child {
                 margin-right: 0;
               }
-              // wkhtmltopdf 工具无法渲染如下样式:
-              // &:nth-of-type(1) {
-              //   position: relative;
-              //   &::before {
-              //     content: "";
-              //     display: block;
-              //     position: absolute;
-              //     left: 30%;
-              //     top: 1px;
-              //     height: 5px;
-              //     width: 11px;
-              //     transform: rotate(-45deg);
-              //     border-left: 1px solid #000;
-              //     border-bottom: 1px solid #000;
-              //   }
-              // }
-              // &:nth-of-type(2) {
-              //   position: relative;
-              //   &::before {
-              //     content: "";
-              //     display: block;
-              //     position: absolute;
-              //     left: 7px;
-              //     top: 5px;
-              //     width: 11px;
-              //     transform: rotate(-45deg);
-              //     transform-origin: center center;
-              //     border-bottom: 1px solid #000;
-              //   }
-              //   &::after {
-              //     content: "";
-              //     display: block;
-              //     position: absolute;
-              //     left: 8px;
-              //     top: 5px;
-              //     width: 11px;
-              //     transform: rotate(45deg);
-              //     transform-origin: center center;
-              //     border-bottom: 1px solid #000;
-              //   }
-              // }
+              &:nth-of-type(1) {
+                position: relative;
+                &::before {
+                  content: "";
+                  display: block;
+                  position: absolute;
+                  left: 30%;
+                  top: 1px;
+                  height: 5px;
+                  width: 11px;
+                  transform: rotate(-45deg);
+                  border-left: 1px solid #000;
+                  border-bottom: 1px solid #000;
+                }
+              }
+              &:nth-of-type(2) {
+                position: relative;
+                &::before {
+                  content: "";
+                  display: block;
+                  position: absolute;
+                  left: 7px;
+                  top: 5px;
+                  width: 11px;
+                  transform: rotate(-45deg);
+                  transform-origin: center center;
+                  border-bottom: 1px solid #000;
+                }
+                &::after {
+                  content: "";
+                  display: block;
+                  position: absolute;
+                  left: 8px;
+                  top: 5px;
+                  width: 11px;
+                  transform: rotate(45deg);
+                  transform-origin: center center;
+                  border-bottom: 1px solid #000;
+                }
+              }
 
               &:nth-of-type(3) {
                 &::before {

+ 2 - 2
card/elements/card-head/cardHeadSpin/HeadDynamic.vue

@@ -29,8 +29,8 @@
           <p><span>正确填涂:</span><i></i></p>
           <p>
             <span>错误填涂:</span>
-            <i></i>
-            <i>×</i>
+            <i></i>
+            <i></i>
             <i></i>
             <i></i>
           </p>

+ 6 - 6
card/elements/card-head/cardHeadSpin/HeadStdinfo.vue

@@ -22,12 +22,12 @@ export default {
       fields: [],
       paramStyle: {},
       lenWidths: {
-        3: 44,
-        4: 62,
-        5: 72,
-        6: 86,
-        7: 100,
-        8: 114
+        3: 42,
+        4: 60,
+        5: 70,
+        6: 84,
+        7: 98,
+        8: 112
       }
     };
   },

File diff suppressed because it is too large
+ 0 - 0
card/previewTemp.js


+ 2 - 3
src/modules/base/components/ModifyRole.vue

@@ -139,10 +139,9 @@ export default {
   methods: {
     async getMenus() {
       const data = await menuAuthList();
+      const needHideModules = ["common", "customer"];
       if (data)
-        this.menus = data.filter(
-          item => item.url !== "common" && item.url !== "customer"
-        );
+        this.menus = data.filter(item => !needHideModules.includes(item.url));
       this.defaultExpandedKeys = [];
       this.getDefaultExpandedKeys(this.menus);
     },

+ 3 - 0
src/modules/base/components/RuleExam.vue

@@ -53,6 +53,9 @@
           inactive-color="#dcdfe6"
         >
         </el-switch>
+        <p class="tips-info">
+          注意:若入库时非强制包含试卷,适用于同时有课程要求打印试卷,有的课程不打印试卷的场景。因此,印刷计划里即使勾选了“试卷”,有试卷则打印,否则不打印。
+        </p>
       </el-form-item>
       <el-form-item label="是否启用客服制卡:" required>
         <el-switch

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

@@ -42,7 +42,7 @@
             <span
               v-else
               @click="downloadPaper(attachment)"
-              title="点击下载试卷"
+              title="点击查看试卷"
             >
               <i class="icon icon-download-act"></i>
               <i>{{ attachment.filename }}</i>

+ 2 - 2
src/modules/exam/views/TaskApplyManage.vue

@@ -196,7 +196,7 @@
 
 <script>
 import ModifyTaskApply from "../components/ModifyTaskApply";
-import { AUDITING_STATUS, AUDITING_RESULT } from "@/constants/enumerate";
+import { AUDITING_STATUS } from "@/constants/enumerate";
 import pickerOptions from "@/constants/datePickerOptions";
 import { taskApplyListPage, cancelOrRestartTaskApply } from "../api";
 import { mapActions } from "vuex";
@@ -222,7 +222,7 @@ export default {
       total: 0,
       editType: "APPLY",
       AUDITING_STATUS,
-      AUDITING_RESULT,
+      AUDITING_RESULT: { NOT_PASS: "未通过" },
       examTasks: [],
       curExamTask: {},
       curUserId: this.$ls.get("user", { id: "" }).id,

+ 5 - 5
src/modules/exam/views/TaskReviewManage.vue

@@ -117,6 +117,7 @@
           v-if="!AUDITED"
           type="selection"
           width="55"
+          :selectable="checkAbleSelected"
         ></el-table-column>
         <el-table-column
           type="index"
@@ -125,11 +126,7 @@
           align="center"
           :index="indexMethod"
         ></el-table-column>
-        <el-table-column
-          prop="paperNumber"
-          label="试卷编号"
-          width="120"
-        ></el-table-column>
+        <el-table-column prop="paperNumber" label="试卷编号"></el-table-column>
         <el-table-column prop="courseName" label="课程(代码)">
           <template slot-scope="scope">
             {{ scope.row.courseName }}({{ scope.row.courseCode }})
@@ -334,6 +331,9 @@ export default {
       this.multipleSelection = val.map(item => item.id);
       console.log(this.multipleSelection);
     },
+    checkAbleSelected(row) {
+      return row.createId === this.curUserId;
+    },
     selectMenu(val) {
       if (this.auditStatus === val) return;
 

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

@@ -53,6 +53,9 @@ export const businessDataDetailListPage = datas => {
 export const businessDataDetailListPageById = datas => {
   return $postParam("/api/admin/exam/print/data_detail_list", datas);
 };
+export const businessStudentDetail = id => {
+  return $postParam("/api/admin/exam/print/get_student_detail", { id });
+};
 
 // plan-link-paper
 export const planLinkPaperListPage = datas => {

+ 130 - 97
src/modules/print/components/PreviewBusinessDetail.vue

@@ -1,107 +1,134 @@
 <template>
-  <el-dialog
-    class="preview-business-detail"
-    :visible.sync="modalIsShow"
-    title="详情数据"
-    top="10vh"
-    width="900px"
-    :close-on-click-modal="false"
-    :close-on-press-escape="false"
-    append-to-body
-    @open="visibleChange"
-  >
-    <div class="part-box part-box-pad part-box-border">
-      <el-form ref="modalFormComp" class="form-info" label-width="100px">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="印刷计划:">
-              <span>{{ modalForm.printPlanName }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="卷袋号:">
-              <span>{{ modalForm.packageCode }}</span>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="考试日期:">
-              <span>{{ modalForm.examDate }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="考试时间:">
-              <span>{{ modalForm.examTime }}</span>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="考点:">
-              <span>{{ modalForm.examPlace }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="考场:">
-              <span>{{ modalForm.examRoom }}</span>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="课程(代码):">
-              <span>{{ modalForm.courseNameCode }}</span>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="试卷编号:">
-              <span>{{ modalForm.paperNumber }}</span>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
+  <div class="preview-business-detail">
+    <el-dialog
+      :visible.sync="modalIsShow"
+      title="详情数据"
+      top="10vh"
+      width="900px"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+      @open="visibleChange"
+    >
+      <div class="part-box part-box-pad part-box-border">
+        <el-form ref="modalFormComp" class="form-info" label-width="100px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="印刷计划:">
+                <span>{{ modalForm.printPlanName }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="卷袋号:">
+                <span>{{ modalForm.packageCode }}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="考试日期:">
+                <span>{{ modalForm.examDate }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="考试时间:">
+                <span>{{ modalForm.examTime }}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="考点:">
+                <span>{{ modalForm.examPlace }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="考场:">
+                <span>{{ modalForm.examRoom }}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="课程(代码):">
+                <span>{{ modalForm.courseNameCode }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="试卷编号:">
+                <span>{{ modalForm.paperNumber }}</span>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </div>
 
-    <div class="part-box">
-      <el-table ref="TableList" :data="dataList" border stripe>
-        <el-table-column
-          type="index"
-          label="序号"
-          width="50"
-          align="center"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="courseNameCode" label="课程(代码)">
-        </el-table-column>
-        <!-- <el-table-column prop="specialty" label="适用专业(方向)">
+      <div class="part-box">
+        <el-table ref="TableList" :data="dataList" border stripe>
+          <el-table-column
+            type="index"
+            label="序号"
+            width="50"
+            align="center"
+            :index="indexMethod"
+          ></el-table-column>
+          <el-table-column prop="courseNameCode" label="课程(代码)">
+          </el-table-column>
+          <!-- <el-table-column prop="specialty" label="适用专业(方向)">
         </el-table-column> -->
-        <el-table-column prop="paperNumber" label="试卷编码"></el-table-column>
-        <el-table-column prop="examPlace" label="考点"> </el-table-column>
-        <el-table-column prop="examRoom" label="考场"> </el-table-column>
-        <el-table-column prop="ticketNumber" label="考号"> </el-table-column>
-        <el-table-column prop="studentCode" label="学号"> </el-table-column>
-        <el-table-column prop="studentName" label="姓名"> </el-table-column>
-      </el-table>
-    </div>
-    <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>
+          <el-table-column
+            prop="paperNumber"
+            label="试卷编码"
+          ></el-table-column>
+          <el-table-column prop="examPlace" label="考点"> </el-table-column>
+          <el-table-column prop="examRoom" label="考场"> </el-table-column>
+          <el-table-column prop="ticketNumber" label="考号"> </el-table-column>
+          <el-table-column prop="studentCode" label="学号"> </el-table-column>
+          <el-table-column prop="studentName" label="姓名"> </el-table-column>
+          <el-table-column
+            class-name="action-column"
+            label="操作"
+            align="center"
+            width="70"
+          >
+            <template slot-scope="scope">
+              <el-button
+                class="btn-table-icon"
+                type="text"
+                icon="icon icon-circle-right"
+                @click="toPreview(scope.row)"
+                title="查看详情"
+              ></el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <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 slot="footer"></div>
-  </el-dialog>
+      <div slot="footer"></div>
+    </el-dialog>
+
+    <!-- PreviewBusinessStudentDetail -->
+    <preview-business-student-detail
+      :instance="curRow"
+      ref="PreviewBusinessStudentDetail"
+    ></preview-business-student-detail>
+  </div>
 </template>
 
 <script>
 import { businessDataDetailListPageById } from "../api";
+import PreviewBusinessStudentDetail from "./PreviewBusinessStudentDetail";
 
 const initModalForm = {
   id: "",
@@ -122,6 +149,7 @@ const initModalForm = {
 
 export default {
   name: "preview-business-detail",
+  components: { PreviewBusinessStudentDetail },
   props: {
     instance: {
       type: Object,
@@ -138,7 +166,8 @@ export default {
       current: 1,
       size: this.GLOBAL.pageSize,
       total: 0,
-      dataList: []
+      dataList: [],
+      curRow: {}
     };
   },
   methods: {
@@ -166,6 +195,10 @@ export default {
     },
     open() {
       this.modalIsShow = true;
+    },
+    toPreview(row) {
+      this.curRow = row;
+      this.$refs.PreviewBusinessStudentDetail.open();
     }
   }
 };

+ 94 - 0
src/modules/print/components/PreviewBusinessStudentDetail.vue

@@ -0,0 +1,94 @@
+<template>
+  <el-dialog
+    close="preview-business-student-detail"
+    :visible.sync="dialogIsShow"
+    title="查看考生数据"
+    width="500px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @open="initData"
+  >
+    <div class="part-box part-box-pad part-box-border">
+      <el-form label-width="130px" class="form-info">
+        <el-form-item label="姓名:">
+          <span>{{ student.studentName }}</span>
+        </el-form-item>
+        <el-form-item label="学号:">
+          <span>{{ student.studentCode }}</span>
+        </el-form-item>
+        <el-form-item label="考号:">
+          <span>{{ student.ticketNumber }}</span>
+        </el-form-item>
+        <el-form-item label="课程(代码):">
+          <span>{{ student.courseName }}({{ student.courseCode }})</span>
+        </el-form-item>
+        <el-form-item label="试卷编号:">
+          <span>{{ student.paperNumber }}</span>
+        </el-form-item>
+        <el-form-item label="考试日期:">
+          <span>{{ student.examDate }}</span>
+        </el-form-item>
+        <el-form-item label="考试时间:">
+          <span>{{ student.examTime }}</span>
+        </el-form-item>
+        <el-form-item label="考点:">
+          <span>{{ student.examPlace }}</span>
+        </el-form-item>
+        <el-form-item label="考场:">
+          <span>{{ student.examRoom }}</span>
+        </el-form-item>
+        <el-form-item
+          v-for="info in student.extendFields"
+          :key="info.code"
+          :label="`${info.name}:`"
+        >
+          <span>{{ info.value }}</span>
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div slot="footer"></div>
+  </el-dialog>
+</template>
+
+<script>
+import { businessStudentDetail } from "../api";
+import { parseTimeRangeDateAndTime } from "@/plugins/utils";
+
+export default {
+  name: "preview-business-student-detail",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      dialogIsShow: false,
+      student: { extendFields: [] }
+    };
+  },
+  methods: {
+    async initData() {
+      this.student = {};
+      const data = await businessStudentDetail(this.instance.id);
+      this.student = data || {};
+      if (!this.student.extendFields) this.student.extendFields = [];
+
+      const { date, time } = parseTimeRangeDateAndTime(
+        this.student.examStartTime,
+        this.student.examEndTime
+      );
+      this.student.examDate = date;
+      this.student.examTime = time;
+    },
+    open() {
+      this.dialogIsShow = true;
+    }
+  }
+};
+</script>

+ 29 - 4
src/modules/print/views/BusinessDataDetail.vue

@@ -81,6 +81,22 @@
         </el-table-column>
         <el-table-column prop="studentName" label="姓名" width="120">
         </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          align="center"
+          width="70"
+        >
+          <template slot-scope="scope">
+            <el-button
+              class="btn-table-icon"
+              type="text"
+              icon="icon icon-circle-right"
+              @click="toPreview(scope.row)"
+              title="查看详情"
+            ></el-button>
+          </template>
+        </el-table-column>
       </el-table>
       <div class="part-page">
         <el-pagination
@@ -94,15 +110,23 @@
         </el-pagination>
       </div>
     </div>
+
+    <!-- PreviewBusinessStudentDetail -->
+    <preview-business-student-detail
+      :instance="curRow"
+      ref="PreviewBusinessStudentDetail"
+    ></preview-business-student-detail>
   </div>
 </template>
 
 <script>
 import { businessDataDetailListPage } from "../api";
 import { parseTimeRangeDateAndTime } from "@/plugins/utils";
+import PreviewBusinessStudentDetail from "../components/PreviewBusinessStudentDetail";
 
 export default {
   name: "business-data-detail",
+  components: { PreviewBusinessStudentDetail },
   data() {
     return {
       filter: {
@@ -117,7 +141,7 @@ export default {
       size: this.GLOBAL.pageSize,
       total: 0,
       dataList: [],
-      curBusiness: null
+      curRow: {}
     };
   },
   created() {
@@ -148,10 +172,11 @@ export default {
     },
     search() {
       this.toPage(1);
+    },
+    toPreview(row) {
+      this.curRow = row;
+      this.$refs.PreviewBusinessStudentDetail.open();
     }
-  },
-  beforeDestroy() {
-    this.$ls.remove("curBusiness");
   }
 };
 </script>

+ 4 - 0
src/modules/print/views/PrintTaskManage.vue

@@ -90,6 +90,10 @@
           >科次总计:<i class="color-primary">{{ totalInfo.totalSubjects }}</i>
           科次</span
         >
+        <span class="mr-4"
+          >试卷总计:<i class="color-primary">{{ totalInfo.paperCount }}</i>
+          个</span
+        >
         <span class="mr-4"
           >卷袋数量总计:<i class="color-primary">{{
             totalInfo.packageCount

Some files were not shown because too many files changed in this diff