zhangjie 1 år sedan
förälder
incheckning
5ca1c9c780

+ 29 - 10
src/modules/mark/components/ScoreCheckDetail.vue

@@ -22,17 +22,24 @@
     <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="学院">
-          <college-select
-            v-model="collegeId"
-            placeholder="学院"
-            @change="collegeChange"
-          ></college-select>
+          <el-input v-model.trim="filter.college" placeholder="学院" clearable>
+          </el-input>
+        </el-form-item>
+        <el-form-item label="专业">
+          <el-input
+            v-model.trim="filter.majorName"
+            placeholder="专业"
+            clearable
+          >
+          </el-input>
         </el-form-item>
         <el-form-item label="班级">
-          <major-class-select
-            v-model="filter.className"
+          <el-input
+            v-model.trim="filter.className"
             placeholder="班级"
-          ></major-class-select>
+            clearable
+          >
+          </el-input>
         </el-form-item>
         <el-form-item label="任课老师">
           <el-input v-model="filter.teacher" placeholder="任课老师" clearable>
@@ -71,7 +78,7 @@
             clearable
           >
           </el-input-number>
-          <span>-</span>
+          <span class="mlr-1">-</span>
           <el-input-number
             v-model="filter.endScore"
             placeholder="试卷总分"
@@ -178,6 +185,18 @@
           label="密号"
           width="120"
         ></el-table-column>
+        <el-table-column
+          prop="college"
+          label="学院"
+          min-width="160"
+          sortable
+        ></el-table-column>
+        <el-table-column
+          prop="majorName"
+          label="专业"
+          min-width="160"
+          sortable
+        ></el-table-column>
         <el-table-column
           prop="className"
           label="班级"
@@ -307,9 +326,9 @@ export default {
   data() {
     return {
       modalIsShow: false,
-      collegeId: "",
       filter: {
         college: "",
+        majorName: "",
         className: "",
         teacher: "",
         filter: 0,

+ 81 - 31
src/modules/mark/components/ScoreClassDetail.vue

@@ -11,38 +11,31 @@
     @open="search"
   >
     <div slot="title">
-      <h2 class="el-dialog__title">成绩详情</h2>
+      <h2 class="el-dialog__title">班级详情</h2>
       <button class="el-dialog__headerbtn" @click="cancel"></button>
     </div>
 
     <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="学院">
-          <college-select
-            v-model="filter.collegeId"
-            placeholder="学院"
-            @change="collegeChange"
-          ></college-select>
+          <el-input v-model.trim="filter.college" placeholder="学院" clearable>
+          </el-input>
         </el-form-item>
         <el-form-item label="专业">
-          <major-select
-            v-model="filter.majorId"
-            :college-id="filter.collegeId"
-            cascader
+          <el-input
+            v-model.trim="filter.majorName"
             placeholder="专业"
             clearable
-            @change="majorChange"
           >
-          </major-select>
+          </el-input>
         </el-form-item>
         <el-form-item label="班级">
-          <major-class-select
-            v-model="filter.classId"
-            :major-id="filter.majorId"
-            cascader
+          <el-input
+            v-model.trim="filter.className"
             placeholder="班级"
-            @change="classChange"
-          ></major-class-select>
+            clearable
+          >
+          </el-input>
         </el-form-item>
         <el-form-item label="姓名">
           <el-input
@@ -60,6 +53,48 @@
           >
           </el-input>
         </el-form-item>
+        <el-form-item label="学号区间">
+          <el-input
+            v-model.trim="filter.startStudentCode"
+            placeholder="起始学号"
+            clearable
+            class="width-200"
+          >
+          </el-input>
+          <span class="mlr-1">-</span>
+          <el-input
+            v-model.trim="filter.endStudentCode"
+            placeholder="终止学号"
+            clearable
+            class="width-200"
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item label="成绩区间">
+          <el-input-number
+            v-model.trim="filter.startScore"
+            placeholder="成绩最低分"
+            :min="0"
+            :max="9999"
+            :step="0.01"
+            step-strictly
+            :controls="false"
+            clearable
+          >
+          </el-input-number>
+          <span class="mlr-1">-</span>
+          <el-input-number
+            v-model="filter.endScore"
+            placeholder="成绩最高分"
+            :min="0"
+            :max="9999"
+            :step="0.01"
+            step-strictly
+            :controls="false"
+            clearable
+          >
+          </el-input-number>
+        </el-form-item>
         <el-form-item label-width="0px">
           <el-button type="primary" @click="search">查询</el-button>
         </el-form-item>
@@ -76,7 +111,7 @@
     </div>
 
     <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
+      <el-table ref="TableList" :data="dataList" @sort-change="sortChange">
         <el-table-column
           type="index"
           label="序号"
@@ -89,6 +124,7 @@
           prop="studentCode"
           label="学号"
           width="180"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="college"
@@ -116,6 +152,7 @@
           prop="totalScore"
           label="成绩"
           width="80"
+          sortable
         ></el-table-column>
         <el-table-column
           class-name="action-column"
@@ -189,14 +226,17 @@ export default {
     return {
       modalIsShow: false,
       filter: {
-        collegeId: "",
-        majorId: "",
-        classId: "",
-        collegeName: "",
+        college: "",
         majorName: "",
         className: "",
         studentName: "",
         studentCode: "",
+        startStudentCode: "",
+        endStudentCode: "",
+        startScore: undefined,
+        endScore: undefined,
+        orderType: undefined,
+        orderField: undefined,
       },
       current: 1,
       size: this.GLOBAL.pageSize,
@@ -229,6 +269,15 @@ export default {
       if (datas.breach !== null && datas.breach !== "")
         datas.breach = !!datas.breach;
 
+      if (
+        (datas.startScore || datas.startScore === 0) &&
+        (datas.endScore || datas.endScore === 0) &&
+        datas.startScore > datas.endScore
+      ) {
+        this.$message.error("成绩最低分大于成绩最高分");
+        return;
+      }
+
       const data = await scoreClassDetailListPage(datas);
       this.dataList = data.records.map((item) => {
         const { date, time } = parseTimeRangeDateAndTime(
@@ -247,14 +296,15 @@ export default {
     search() {
       this.toPage(1);
     },
-    collegeChange(val) {
-      this.filter.collegeName = val ? val.name : "";
-    },
-    majorChange(val) {
-      this.filter.majorName = val ? val.name : "";
-    },
-    classChange(val) {
-      this.filter.className = val ? val.name : "";
+    sortChange({ prop, order }) {
+      if (!order) {
+        this.filter.orderField = undefined;
+        this.filter.orderType = undefined;
+      } else {
+        this.filter.orderField = prop;
+        this.filter.orderType = order === "ascending" ? "ASC" : "DESC";
+      }
+      this.getList();
     },
     async toExportScore() {
       if (this.downloading) return;

+ 8 - 0
src/modules/print/components/ModifyBusinessStudent.vue

@@ -162,6 +162,14 @@ export default {
             trigger: "change",
           },
         ],
+        majorName: [
+          {
+            required: true,
+            message: "专业不能超过30个字",
+            max: 30,
+            trigger: "change",
+          },
+        ],
         className: [
           {
             required: true,