zhangjie 2 vuotta sitten
vanhempi
commit
49d2199e6a

+ 25 - 13
src/components/base/CourseSelect.vue

@@ -20,7 +20,9 @@
 </template>
 
 <script>
-import { courseQuery } from "../../modules/base/api";
+import { conditionListCourse } from "../../modules/base/api";
+import { objFilterNull } from "../../plugins/utils";
+// import { courseQuery } from "../../modules/base/api";
 
 export default {
   name: "course-select",
@@ -29,8 +31,9 @@ export default {
     placeholder: { type: String, default: "请选择" },
     value: { type: [Number, String], default: "" },
     clearable: { type: Boolean, default: true },
-    printPlanId: { type: [String, Array], default: "" },
-    teachingRoomId: { type: [String, Array], default: "" }
+    semesterId: { type: String, default: "" },
+    examId: { type: String, default: "" },
+    printPlanId: { type: [String, Array], default: "" }
   },
   data() {
     return {
@@ -45,16 +48,23 @@ export default {
         this.selected = val;
       }
     },
-    printPlanId(val, oldval) {
+    semesterId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    examId(val, oldval) {
       if (val !== oldval) {
-        this.search("");
+        this.search();
         this.$emit("input", "");
         this.$emit("change", {});
       }
     },
-    teachingRoomId(val, oldval) {
+    printPlanId(val, oldval) {
       if (val !== oldval) {
-        this.search("");
+        this.search();
         this.$emit("input", "");
         this.$emit("change", {});
       }
@@ -64,12 +74,14 @@ export default {
     this.search();
   },
   methods: {
-    async search(query) {
-      const res = await courseQuery({
-        param: query,
-        printPlanId: this.printPlanId,
-        teachingRoomId: this.teachingRoomId
-      });
+    async search() {
+      let data = {
+        semesterId: this.semesterId,
+        examId: this.examId,
+        printPlanId: this.printPlanId
+      };
+
+      const res = await conditionListCourse(objFilterNull(data));
       this.optionList = res;
     },
     select() {

+ 7 - 5
src/components/base/ExamSelect.vue

@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import { examQuery } from "../../modules/base/api";
+import { conditionListExam } from "../../modules/base/api";
 
 export default {
   name: "exam-select",
@@ -28,7 +28,8 @@ export default {
     placeholder: { type: String, default: "考试" },
     value: { type: [Number, String], default: "" },
     clearable: { type: Boolean, default: true },
-    semesterId: { type: String, default: "" }
+    semesterId: { type: String, default: "" },
+    enable: { type: Boolean, default: null }
   },
   data() {
     return {
@@ -57,10 +58,11 @@ export default {
   methods: {
     async search() {
       this.optionList = [];
+      if (!this.semesterId) return;
 
-      const res = await examQuery({
-        semesterId: this.semesterId
-      });
+      let data = { semesterId: this.semesterId };
+      if (this.enable !== null) data.enable = this.enable;
+      const res = await conditionListExam(data);
       this.optionList = res;
     },
     select() {

+ 35 - 7
src/components/base/PaperNumberSelect.vue

@@ -15,7 +15,8 @@
 </template>
 
 <script>
-import { pageNumberQuery } from "../../modules/exam/api";
+import { conditionListCourse } from "../../modules/base/api";
+import { objFilterNull } from "../../plugins/utils";
 
 export default {
   name: "paper-number-select",
@@ -24,6 +25,9 @@ export default {
     placeholder: { type: String, default: "请选择" },
     value: { type: [Number, String], default: "" },
     clearable: { type: Boolean, default: true },
+    semesterId: { type: String, default: "" },
+    examId: { type: String, default: "" },
+    courseCode: { type: String, default: "" },
     printPlanId: { type: [String, Array], default: "" }
   },
   data() {
@@ -39,9 +43,30 @@ export default {
         this.selected = val;
       }
     },
+    semesterId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    examId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
     printPlanId(val, oldval) {
       if (val !== oldval) {
-        this.search("");
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    courseCode(val, oldval) {
+      if (val !== oldval) {
+        this.search();
         this.$emit("input", "");
         this.$emit("change", {});
       }
@@ -51,11 +76,14 @@ export default {
     this.search();
   },
   methods: {
-    async search(query) {
-      const res = await pageNumberQuery({
-        param: query,
-        printPlanId: this.printPlanId
-      });
+    async search() {
+      let data = {
+        semesterId: this.semesterId,
+        examId: this.examId,
+        printPlanId: this.printPlanId,
+        courseCode: this.courseCode
+      };
+      const res = await conditionListCourse(objFilterNull(data));
       this.optionList = res;
     },
     select() {

+ 25 - 4
src/components/base/PrintPlanSelect.vue

@@ -20,7 +20,8 @@
 </template>
 
 <script>
-import { printPlanQuery } from "../../modules/print/api";
+import { conditionListPrintPlan } from "../../modules/base/api";
+import { objFilterNull } from "../../plugins/utils";
 
 export default {
   name: "print-plan-select",
@@ -29,7 +30,9 @@ export default {
     placeholder: { type: String, default: "请选择" },
     value: { type: [Number, String, Array], default: "" },
     clearable: { type: Boolean, default: true },
-    multiple: { type: Boolean, default: false }
+    multiple: { type: Boolean, default: false },
+    semesterId: { type: String, default: "" },
+    examId: { type: String, default: "" }
   },
   data() {
     return {
@@ -43,14 +46,32 @@ export default {
       handler(val) {
         this.selected = val;
       }
+    },
+    semesterId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    examId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
     }
   },
   async created() {
     this.search();
   },
   methods: {
-    async search(query) {
-      const res = await printPlanQuery(query);
+    async search() {
+      let data = {
+        semesterId: this.semesterId,
+        examId: this.examId
+      };
+      const res = await conditionListPrintPlan(objFilterNull(data));
       this.optionList = res;
     },
     select() {

+ 6 - 3
src/components/base/SemesterSelect.vue

@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import { unitQueryByType } from "../../modules/base/api";
+import { conditionListSemester } from "../../modules/base/api";
 
 export default {
   name: "semester-select",
@@ -28,7 +28,8 @@ export default {
     placeholder: { type: String, default: "请选择学期" },
     value: { type: [Number, String], default: "" },
     clearable: { type: Boolean, default: true },
-    defaultSelect: { type: Boolean, default: false }
+    defaultSelect: { type: Boolean, default: false },
+    enable: { type: Boolean, default: null }
   },
   data() {
     return {
@@ -51,7 +52,9 @@ export default {
     async search() {
       this.optionList = [];
 
-      const res = await unitQueryByType({}, "SEMESTER");
+      let data = {};
+      if (this.enable !== null) data.enable = this.enable;
+      const res = await conditionListSemester(data);
       this.optionList = res;
 
       if (this.defaultSelect && !this.value) this.selectDefault();

+ 2 - 0
src/modules/analysis/components/SelectAnalysisPaper.vue

@@ -45,6 +45,8 @@
           <course-select
             v-model="filter.courseCode"
             placeholder="课程"
+            :semester-id="filter.semesterId"
+            :exam-id="filter.examId"
           ></course-select>
         </el-form-item>
         <el-form-item>

+ 2 - 0
src/modules/analysis/views/DataInitManage.vue

@@ -20,6 +20,8 @@
             <course-select
               v-model="filter.courseCode"
               placeholder="课程"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
             ></course-select>
           </el-form-item>
         </template>

+ 42 - 0
src/modules/base/api.js

@@ -16,6 +16,48 @@ export const enumsByType = type => {
     type
   });
 };
+// semester
+export const conditionListSemester = datas => {
+  // enable
+  return $postParam("/api/admin/basic/condition/list_semester", datas);
+};
+// exam
+export const conditionListExam = ({ semesterId, enable }) => {
+  return $postParam("/api/admin/basic/condition/list_exam", {
+    semesterId,
+    enable
+  });
+};
+// print_plan
+export const conditionListPrintPlan = ({ semesterId, examId }) => {
+  return $postParam("/api/admin/basic/condition/list_print_plan", {
+    semesterId,
+    examId
+  });
+};
+// course
+export const conditionListCourse = ({ semesterId, examId, printPlanId }) => {
+  return $postParam("/api/admin/basic/condition/list_course", {
+    semesterId,
+    examId,
+    printPlanId
+  });
+};
+// paper_number
+export const conditionPaperNumber = ({
+  semesterId,
+  examId,
+  courseCode,
+  printPlanId
+}) => {
+  return $postParam("/api/admin/basic/condition/list_paper_number", {
+    semesterId,
+    examId,
+    courseCode,
+    printPlanId
+  });
+};
+
 // user --------------------------------->
 // user-manage
 export const userListPage = datas => {

+ 2 - 0
src/modules/exam/components/ModifyExamTask.vue

@@ -45,6 +45,8 @@
           placeholder="请选择"
           clearable
           class="width-full"
+          :semester-id="filter.semesterId"
+          :exam-id="filter.examId"
           @change="courseChange"
         ></course-select>
         <span v-else

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

@@ -16,6 +16,27 @@
               :semester-id="filter.semesterId"
             ></exam-select>
           </el-form-item>
+          <el-form-item label="课程(代码):" label-width="110px">
+            <course-select
+              ref="CourseSelect"
+              v-model="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              placeholder="课程(代码)"
+              clearable
+            ></course-select>
+          </el-form-item>
+          <el-form-item label="试卷编号:">
+            <paper-number-select
+              ref="PaperNumberSelect"
+              v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :course-code="filter.courseCode"
+              placeholder="试卷编号"
+              clearable
+            ></paper-number-select>
+          </el-form-item>
           <el-form-item label="命题状态:">
             <el-select
               v-model="filter.status"
@@ -31,14 +52,6 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="课程(代码):" label-width="110px">
-            <course-select
-              ref="CourseSelect"
-              v-model.trim="filter.courseCode"
-              placeholder="课程(代码)"
-              clearable
-            ></course-select>
-          </el-form-item>
           <el-form-item label="命题老师:">
             <el-input
               v-model="filter.userName"
@@ -46,14 +59,7 @@
               clearable
             ></el-input>
           </el-form-item>
-          <el-form-item label="试卷编号:">
-            <paper-number-select
-              ref="PaperNumberSelect"
-              v-model="filter.paperNumber"
-              placeholder="试卷编号"
-              clearable
-            ></paper-number-select>
-          </el-form-item>
+
           <el-form-item label="命题时间:">
             <el-date-picker
               v-model="createTime"

+ 21 - 16
src/modules/exam/views/TaskApplyManage.vue

@@ -16,6 +16,27 @@
               :semester-id="filter.semesterId"
             ></exam-select>
           </el-form-item>
+          <el-form-item label="课程(代码):" label-width="110px">
+            <course-select
+              ref="CourseSelect"
+              v-model="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              placeholder="课程(代码)"
+              clearable
+            ></course-select>
+          </el-form-item>
+          <el-form-item label="试卷编号:">
+            <paper-number-select
+              ref="PaperNumberSelect"
+              v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :course-code="filter.courseCode"
+              placeholder="试卷编号"
+              clearable
+            ></paper-number-select>
+          </el-form-item>
           <el-form-item label="审核状态:">
             <el-select
               v-model="filter.auditStatus"
@@ -31,14 +52,6 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="课程(代码):" label-width="110px">
-            <course-select
-              ref="CourseSelect"
-              v-model.trim="filter.courseCode"
-              placeholder="课程(代码)"
-              clearable
-            ></course-select>
-          </el-form-item>
           <el-form-item label="命题老师:">
             <el-input
               v-model="filter.userName"
@@ -46,14 +59,6 @@
               clearable
             ></el-input>
           </el-form-item>
-          <el-form-item label="试卷编号:">
-            <paper-number-select
-              ref="PaperNumberSelect"
-              v-model="filter.paperNumber"
-              placeholder="试卷编号"
-              clearable
-            ></paper-number-select>
-          </el-form-item>
           <el-form-item label="命题时间:">
             <el-date-picker
               v-model="createTime"

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

@@ -19,7 +19,9 @@
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               ref="CourseSelect"
-              v-model.trim="filter.courseCode"
+              v-model="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               placeholder="课程(代码)"
               clearable
             ></course-select>
@@ -28,6 +30,9 @@
             <paper-number-select
               ref="PaperNumberSelect"
               v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :course-code="filter.courseCode"
               placeholder="试卷编号"
               clearable
             ></paper-number-select>

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

@@ -34,7 +34,9 @@
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               ref="CourseSelect"
-              v-model.trim="filter.courseCode"
+              v-model="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               placeholder="课程(代码)"
               clearable
             ></course-select>
@@ -43,6 +45,9 @@
             <paper-number-select
               ref="PaperNumberSelect"
               v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :course-code="filter.courseCode"
               placeholder="试卷编号"
               clearable
             ></paper-number-select>

+ 2 - 0
src/modules/print/components/PrintPlanDetail.vue

@@ -33,6 +33,8 @@
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               v-model.trim="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
               placeholder="课程(代码)"
               clearable

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

@@ -22,12 +22,16 @@
               placeholder="印刷计划"
               clearable
               multiple
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               @change="printPlanChange"
             ></print-plan-select>
           </el-form-item>
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               v-model.trim="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
               placeholder="课程(代码)"
               clearable
@@ -37,7 +41,10 @@
             <paper-number-select
               ref="PaperNumberSelect"
               v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
+              :course-code="filter.courseCode"
               placeholder="试卷编号"
               clearable
             ></paper-number-select>
@@ -236,8 +243,6 @@ export default {
       this.toPage(1);
     },
     printPlanChange() {
-      this.filter.paperNumber = "";
-      this.filter.courseCode = "";
       this.filter.examRoom = "";
       this.filter.examPlace = "";
     },

+ 9 - 12
src/modules/print/views/BusinessDataExport.vue

@@ -18,25 +18,21 @@
             ></exam-select>
           </el-form-item>
           <el-form-item label="印刷计划:">
-            <el-select
+            <print-plan-select
               v-model.trim="filter.printPlanIdList"
               placeholder="印刷计划"
               clearable
               multiple
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               @change="printPlanChange"
-            >
-              <el-option
-                v-for="item in plans"
-                :key="item.id"
-                :value="item.id"
-                :label="item.name"
-              >
-              </el-option>
-            </el-select>
+            ></print-plan-select>
           </el-form-item>
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               v-model.trim="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
               placeholder="课程(代码)"
               clearable
@@ -46,7 +42,10 @@
             <paper-number-select
               ref="PaperNumberSelect"
               v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
+              :course-code="filter.courseCode"
               placeholder="试卷编号"
               clearable
             ></paper-number-select>
@@ -404,8 +403,6 @@ export default {
       this.getTotalData();
     },
     printPlanChange() {
-      this.filter.paperNumber = "";
-      this.filter.courseCode = "";
       this.filter.examRoom = "";
       this.filter.examPlace = "";
     },

+ 2 - 0
src/modules/print/views/PlanLinkPaper.vue

@@ -43,6 +43,8 @@
           <el-form-item label="课程(代码):" label-width="110px">
             <course-select
               v-model.trim="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               :print-plan-id="filter.printPlanIdList"
               placeholder="课程(代码)"
               clearable

+ 2 - 0
src/modules/print/views/PrintPlanManage.vue

@@ -22,6 +22,8 @@
               placeholder="印刷计划"
               multiple
               clearable
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               style="width:300px"
             ></print-plan-select>
           </el-form-item>

+ 24 - 17
src/modules/print/views/PrintTaskManage.vue

@@ -22,9 +22,33 @@
               v-model.trim="filter.printPlanId"
               placeholder="印刷计划"
               clearable
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
               @change="printPlanChange"
             ></print-plan-select>
           </el-form-item>
+          <el-form-item label="课程(代码):" label-width="110px">
+            <course-select
+              v-model.trim="filter.courseCode"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :print-plan-id="filter.printPlanId"
+              placeholder="课程(代码)"
+              clearable
+            ></course-select>
+          </el-form-item>
+          <el-form-item label="试卷编号:">
+            <paper-number-select
+              ref="PaperNumberSelect"
+              v-model="filter.paperNumber"
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
+              :print-plan-id="filter.printPlanId"
+              :course-code="filter.courseCode"
+              placeholder="试卷编号"
+              clearable
+            ></paper-number-select>
+          </el-form-item>
           <el-form-item label="印刷室:">
             <print-room-select
               v-model.trim="filter.printHouseId"
@@ -48,23 +72,6 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="课程(代码):" label-width="110px">
-            <course-select
-              v-model.trim="filter.courseCode"
-              :print-plan-id="filter.printPlanId"
-              placeholder="课程(代码)"
-              clearable
-            ></course-select>
-          </el-form-item>
-          <el-form-item label="试卷编号:">
-            <paper-number-select
-              ref="PaperNumberSelect"
-              v-model="filter.paperNumber"
-              :print-plan-id="filter.printPlanId"
-              placeholder="试卷编号"
-              clearable
-            ></paper-number-select>
-          </el-form-item>
           <el-form-item label="考点:" label-width="55px">
             <place-select
               v-model.trim="filter.examPlace"

+ 9 - 7
src/modules/stmms/views/ScoreArchive.vue

@@ -12,21 +12,23 @@
               :semester-id="filter.semesterId"
             ></exam-select>
           </el-form-item>
-          <el-form-item label="班级:">
-            <class-select
-              v-model="filter.clazzId"
-              type="ALL_CLAZZ"
-              placeholder="班级"
-            ></class-select>
-          </el-form-item>
           <el-form-item label="课程:">
             <course-select
               v-model="filter.courseCode"
               placeholder="课程"
               filterable
               clearable
+              :semester-id="filter.semesterId"
+              :exam-id="filter.examId"
             ></course-select>
           </el-form-item>
+          <el-form-item label="班级:">
+            <class-select
+              v-model="filter.clazzId"
+              type="ALL_CLAZZ"
+              placeholder="班级"
+            ></class-select>
+          </el-form-item>
         </template>
         <el-form-item label-width="0px">
           <el-button

+ 9 - 0
src/plugins/utils.js

@@ -411,3 +411,12 @@ export function parseHrefParam(href, paramName = null) {
 
   return paramName ? params[paramName] : params;
 }
+
+export function objFilterNull(obj) {
+  let nobj = {};
+  Object.entries(obj).forEach(([key, val]) => {
+    if (val === null || val === "null" || val === "") return;
+    nobj[key] = val;
+  });
+  return nobj;
+}