zhangjie vor 2 Jahren
Ursprung
Commit
51a12ca860

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "eds-web",
-  "version": "1.0.0",
+  "version": "1.0.2",
   "scripts": {
     "start": "npm run serve",
     "serve": "vue-cli-service serve",

+ 65 - 0
src/components/base/CollegeSelect.vue

@@ -0,0 +1,65 @@
+<template>
+  <el-select
+    v-model="selected"
+    class="exam-select"
+    :placeholder="placeholder"
+    filterable
+    :clearable="clearable"
+    :disabled="disabled"
+    @change="select"
+  >
+    <el-option
+      v-for="item in optionList"
+      :key="item.id"
+      :value="item.id"
+      :label="item.name"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { collegeQuery } from "../../modules/base/api";
+
+export default {
+  name: "college-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择学院" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true }
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: ""
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      }
+    }
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    async search() {
+      this.optionList = [];
+
+      const res = await collegeQuery({});
+      this.optionList = res;
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find(item => item.id === this.selected)
+      );
+    }
+  }
+};
+</script>

+ 17 - 3
src/components/base/EcsExamSelect.vue

@@ -35,7 +35,8 @@ export default {
     disabled: { type: Boolean, default: false },
     placeholder: { type: String, default: "请选择考试" },
     value: { type: [Number, String], default: "" },
-    clearable: { type: Boolean, default: true }
+    clearable: { type: Boolean, default: true },
+    collegeId: { type: [Number, String], default: "" }
   },
   data() {
     return {
@@ -50,6 +51,13 @@ export default {
       handler(val) {
         this.selected = val;
       }
+    },
+    collegeId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
     }
   },
   created() {
@@ -58,15 +66,21 @@ export default {
   methods: {
     async search() {
       this.optionList = [];
+      if (!this.collegeId) return;
 
-      const res = await ecsExamQuery();
+      const res = await ecsExamQuery(this.collegeId);
       this.optionList = res;
     },
     async toSync() {
+      if (!this.collegeId) {
+        this.$message.error("请先选择学院!");
+        return;
+      }
+
       if (this.loading) return;
       this.loading = true;
 
-      const res = await ecsExamSync().catch(() => {});
+      const res = await ecsExamSync(this.collegeId).catch(() => {});
       this.loading = false;
       if (res) this.optionList = res;
     },

+ 7 - 4
src/modules/base/api.js

@@ -3,15 +3,18 @@ import { $postParam, $post } from "@/plugins/axios";
 export const semesterQuery = datas => {
   return $postParam("/api/exam_semester/list", datas);
 };
-export const ecsExamQuery = () => {
-  return $postParam("/api/cloud_marking_exam/list", {});
+export const ecsExamQuery = (collegeId = "") => {
+  return $postParam("/api/cloud_marking_exam/list", { collegeId });
 };
-export const ecsExamSync = () => {
-  return $postParam("/api/cloud_marking_exam/sync", {});
+export const ecsExamSync = (collegeId = "") => {
+  return $postParam("/api/cloud_marking_exam/sync", { collegeId });
 };
 export const examTypeQuery = datas => {
   return $postParam("/api/exam_type/list", datas);
 };
+export const collegeQuery = datas => {
+  return $postParam("/api/sys_college/list", datas);
+};
 // user --------------------------------->
 // user-manage
 export const userListPage = datas => {

+ 13 - 2
src/modules/base/views/EcsDataManage.vue

@@ -14,8 +14,14 @@
         <el-form-item prop="examTypeId" label="考试类型:">
           <exam-type-select v-model="filter.examTypeId"></exam-type-select>
         </el-form-item>
+        <el-form-item label="学院:">
+          <college-select v-model="filter.collegeId"></college-select>
+        </el-form-item>
         <el-form-item label="考试:">
-          <ecs-exam-select v-model="filter.examId"></ecs-exam-select>
+          <ecs-exam-select
+            v-model="filter.examId"
+            :college-id="filter.collegeId"
+          ></ecs-exam-select>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="toPage(1)">查询</el-button>
@@ -84,6 +90,7 @@ export default {
       filter: {
         semesterId: "",
         examTypeId: "",
+        collegeId: "",
         examId: ""
       },
       current: 1,
@@ -113,9 +120,13 @@ export default {
       this.getList();
     },
     async toSync() {
+      if (!this.filter.collegeId) {
+        this.$message.error("请选选择学院");
+        return;
+      }
       const result = await this.$confirm(`确定要同步吗?`, "提示", {
         type: "warning"
-      });
+      }).catch(() => {});
       if (result !== "confirm") return;
 
       await syncEcsData({

+ 3 - 1
src/plugins/globalVuePlugins.js

@@ -8,6 +8,7 @@ import SchoolSelect from "@/components/base/SchoolSelect.vue";
 import SemesterSelect from "@/components/base/SemesterSelect.vue";
 import EcsExamSelect from "@/components/base/EcsExamSelect.vue";
 import ExamTypeSelect from "@/components/base/ExamTypeSelect.vue";
+import CollegeSelect from "@/components/base/CollegeSelect.vue";
 
 const components = {
   ViewFooter,
@@ -15,7 +16,8 @@ const components = {
   SchoolSelect,
   SemesterSelect,
   EcsExamSelect,
-  ExamTypeSelect
+  ExamTypeSelect,
+  CollegeSelect
 };
 
 export default {

+ 7 - 0
yarn.lock

@@ -7238,6 +7238,13 @@ qs@6.9.7:
   resolved "https://registry.npmmirror.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
   integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
 
+qs@^6.11.0:
+  version "6.11.0"
+  resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+  integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+  dependencies:
+    side-channel "^1.0.4"
+
 qs@~6.5.2:
   version "6.5.3"
   resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"