zhangjie %!s(int64=2) %!d(string=hai) anos
pai
achega
9f004092e8

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

@@ -1093,15 +1093,22 @@
     margin-bottom: 20px;
   }
   .ass-summary {
+    &-tags {
+      margin-bottom: 20px;
+    }
     &-tag {
       padding: 15px 30px 15px 50px;
       border-radius: 5px;
       border: 1px solid $--color-border;
       min-width: 160px;
+      display: inline-block;
+      vertical-align: top;
+      margin-left: 10px;
 
       &:first-child {
         background-color: $--color-cyan;
         color: #fff;
+        margin-left: 0;
       }
       > h6 {
         font-weight: normal;

+ 84 - 0
src/components/base/ClazzSelect.vue

@@ -0,0 +1,84 @@
+<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 { examClazzQuery } from "../../modules/base/api";
+
+export default {
+  name: "clazz-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择班级" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true },
+    filterData: {
+      type: Object,
+      default() {
+        return {
+          semesterId: "",
+          examTypeId: "",
+          courseCode: "",
+          kkCollegeName: "",
+          kcCollegeName: "",
+        };
+      },
+    },
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: "",
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      },
+    },
+    filterData: {
+      deep: true,
+      handler() {
+        this.search();
+      },
+    },
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    async search() {
+      this.optionList = [];
+      if (Object.values(this.filterData).some((item) => !item)) return;
+
+      const res = await examClazzQuery(this.filterData);
+      this.optionList = res;
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find((item) => item.id === this.selected)
+      );
+    },
+  },
+};
+</script>

+ 1 - 1
src/components/base/CollegeSelect.vue

@@ -50,7 +50,7 @@ export default {
     async search() {
       this.optionList = [];
 
-      const res = await collegeQuery({});
+      const res = await collegeQuery();
       this.optionList = res;
     },
     select() {

+ 92 - 0
src/components/base/CourseSelect.vue

@@ -0,0 +1,92 @@
+<template>
+  <el-select
+    v-model="selected"
+    class="course-select"
+    :placeholder="placeholder"
+    filterable
+    :clearable="clearable"
+    :disabled="disabled"
+    @change="select"
+  >
+    <el-option
+      v-for="item in optionList"
+      :key="item.code"
+      :value="item.code"
+      :label="`${item.name}(${item.code})`"
+    >
+      <span>{{ `${item.name}(${item.code})` }}</span>
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { courseQuery } from "../../modules/base/api";
+
+export default {
+  name: "course-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true },
+    semesterId: { type: String, default: "" },
+    examTypeId: { type: String, default: "" },
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: "",
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      },
+    },
+    semesterId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    examTypeId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+  },
+  async created() {
+    this.search();
+  },
+  methods: {
+    async search() {
+      if (!this.semesterId || !this.examTypeId) return;
+
+      let data = {
+        semesterId: this.semesterId,
+        examTypeId: this.examTypeId,
+      };
+
+      const res = await courseQuery(data);
+      this.optionList = res.map((item) => {
+        return {
+          code: item.courseCode,
+          name: item.courseName,
+        };
+      });
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find((item) => item.code === this.selected)
+      );
+    },
+  },
+};
+</script>

+ 83 - 0
src/components/base/KcCollegeSelect.vue

@@ -0,0 +1,83 @@
+<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.code"
+      :value="item.code"
+      :label="item.name"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { kcCollegeQuery } from "../../modules/base/api";
+
+export default {
+  name: "kc-college-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择考查学院" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true },
+    filterData: {
+      type: Object,
+      default() {
+        return {
+          semesterId: "",
+          examTypeId: "",
+          courseCode: "",
+          kkCollegeName: "",
+        };
+      },
+    },
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: "",
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      },
+    },
+    filterData: {
+      deep: true,
+      handler() {
+        this.search();
+      },
+    },
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    async search() {
+      this.optionList = [];
+      if (Object.values(this.filterData).some((item) => !item)) return;
+
+      const res = await kcCollegeQuery(this.filterData);
+      this.optionList = res;
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find((item) => item.name === this.selected)
+      );
+    },
+  },
+};
+</script>

+ 84 - 0
src/components/base/TeacherSelect.vue

@@ -0,0 +1,84 @@
+<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.code"
+      :value="item.code"
+      :label="item.name"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { examTeacherQuery } from "../../modules/base/api";
+
+export default {
+  name: "teacher-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择任课老师" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true },
+    filterData: {
+      type: Object,
+      default() {
+        return {
+          semesterId: "",
+          examTypeId: "",
+          courseCode: "",
+          kkCollegeName: "",
+          kcCollegeName: "",
+        };
+      },
+    },
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: "",
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      },
+    },
+    filterData: {
+      deep: true,
+      handler() {
+        this.search();
+      },
+    },
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    async search() {
+      this.optionList = [];
+      if (Object.values(this.filterData).some((item) => !item)) return;
+
+      const res = await examTeacherQuery(this.filterData);
+      this.optionList = res;
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find((item) => item.code === this.selected)
+      );
+    },
+  },
+};
+</script>

+ 8 - 7
src/constants/menus-data.js

@@ -90,13 +90,6 @@ export default [
     type: "MENU",
     url: "CourseLinkManage",
   },
-  {
-    id: "10305",
-    parentId: "103",
-    name: "赋分试算",
-    type: "MENU",
-    url: "AssignmentCalculate",
-  },
   {
     id: "104",
     parentId: "1",
@@ -118,4 +111,12 @@ export default [
     type: "MENU",
     url: "DataReturnManage",
   },
+  { id: "105", parentId: "1", name: "赋分管理", type: "MENU", url: "assign" },
+  {
+    id: "10501",
+    parentId: "105",
+    name: "赋分试算",
+    type: "MENU",
+    url: "AssignmentCalculate",
+  },
 ];

+ 8 - 1
src/constants/privilege.js

@@ -14,7 +14,9 @@ export const rolePrivilege = {
     "DataReturnManage",
     "CourseLinkManage",
     "SystemSetting",
+    "assign",
     "AssignmentCalculate",
+    "AssignmentCalculateDetail",
   ],
   IMPLEMENT: [
     "data",
@@ -27,7 +29,12 @@ export const rolePrivilege = {
     "DataReturnManage",
     "CourseLinkManage",
   ],
-  SS: ["data", "score", "AssignmentCalculate", "AssignmentCalculateDetail"],
+  ASSIGN: [
+    "data",
+    "assign",
+    "AssignmentCalculate",
+    "AssignmentCalculateDetail",
+  ],
 };
 
 export const adminPrivilege = ["data", "super", "AuthSet"];

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

@@ -12,8 +12,23 @@ export const ecsExamSync = (collegeId = "") => {
 export const examTypeQuery = (datas) => {
   return $postParam("/api/exam_type/list", datas);
 };
-export const collegeQuery = (datas) => {
-  return $postParam("/api/sys_college/list", datas);
+export const collegeQuery = () => {
+  return $postParam("/api/sys_college/list", {});
+};
+export const courseQuery = (datas) => {
+  return $postParam("/api/common/course/list", datas);
+};
+export const kcCollegeQuery = (datas) => {
+  // semesterId,examTypeId,courseCode,kkCollegeName,
+  return $postParam("/api/common/examine/college/list", datas);
+};
+export const examClazzQuery = (datas) => {
+  // semesterId,examTypeId,courseCode,kkCollegeName,kcCollegeName
+  return $postParam("/api/common/clazz/list", datas);
+};
+export const examTeacherQuery = (datas) => {
+  // semesterId,examTypeId,courseCode,kkCollegeName,kcCollegeName,clazzId
+  return $postParam("/api/common/teacher/list", datas);
 };
 // user --------------------------------->
 // user-manage
@@ -76,6 +91,9 @@ export const businessDataList = (datas) => {
 export const manualSync = () => {
   return $postParam("/api/exam_sync_total/manual_sync", {});
 };
+export const manualUse = (id) => {
+  return $postParam("/api/exam_sync_total/used", { id });
+};
 export const downloadBusinessData = (id, writeLog) => {
   return $postParam(
     "/api/exam_sync_total/download",
@@ -143,15 +161,20 @@ export const flushCache = (type) => {
 export const assignmentDataList = (datas) => {
   return $postParam("/api/assign/page", datas);
 };
-export const assignmentDetailInfo = (datas) => {
-  return $postParam("/api/assign/to_calc", datas);
+export const assignmentDetailInfo = (datas, silence = false) => {
+  return $postParam("/api/assign/to_calc", datas, {
+    silence,
+  });
 };
 export const assignmentCalculate = (datas) => {
-  return $postParam("/api/assign/calc", datas);
+  return $post("/api/assign/calc", datas);
 };
 export const assignmentCalcResult = (datas) => {
-  return $postParam("/api/exam_course_mapping/page", datas);
+  // required: semesterId,examTypeId,courseCode,kkCollegeName,
+  // kcCollegeName,clazzId,teacherCode
+  return $postParam("/api/assign/result", datas);
 };
 export const assignmentCompareResult = (datas) => {
-  return $postParam("/api/exam_course_mapping/page", datas);
+  // semesterId,examTypeId,courseCode,kkCollegeName,passScore
+  return $postParam("/api/assign/contrast", datas);
 };

+ 40 - 1
src/modules/base/components/ModifyUser.vue

@@ -42,6 +42,7 @@
           style="width: 100%"
           v-model="modalForm.roleId"
           placeholder="请选择角色"
+          @change="roleChagne"
         >
           <el-option
             v-for="item in roles"
@@ -52,6 +53,26 @@
           </el-option>
         </el-select>
       </el-form-item>
+      <el-form-item
+        v-if="curRole.type === 'ASSIGN'"
+        label="学院:"
+        prop="orgId"
+      >
+        <el-select
+          style="width: 100%"
+          v-model="modalForm.orgId"
+          placeholder="请选择学院"
+          filterable
+        >
+          <el-option
+            v-for="item in orgs"
+            :key="item.id"
+            :value="item.id"
+            :label="item.name"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="状态:" prop="enable" required>
         <el-radio-group v-model="modalForm.enable">
           <el-radio
@@ -84,6 +105,7 @@ const initModalForm = {
   password: "",
   mobileNumber: "",
   roleId: "",
+  orgId: null,
   enable: 1,
 };
 
@@ -102,6 +124,12 @@ export default {
         return [];
       },
     },
+    orgs: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
   },
   computed: {
     isEdit() {
@@ -152,10 +180,17 @@ export default {
             trigger: "change",
           },
         ],
+        orgId: [
+          {
+            required: true,
+            message: "请选择学院",
+            trigger: "change",
+          },
+        ],
         password,
       },
       user: {},
-      roleList: [],
+      curRole: {},
     };
   },
   methods: {
@@ -163,6 +198,7 @@ export default {
       if (val.id) {
         this.modalForm = this.$objAssign(initModalForm, val);
         this.modalForm.enable = val.enable ? 1 : 0;
+        this.roleChagne(this.modalForm.roleId);
       } else {
         this.modalForm = { ...initModalForm };
         const defRole = this.roles.find((item) => item.type === "IMPLEMENT");
@@ -182,6 +218,9 @@ export default {
     open() {
       this.modalIsShow = true;
     },
+    roleChagne(val) {
+      this.curRole = this.roles.find((item) => item.id === val);
+    },
     async submit() {
       const valid = await this.$refs.modalFormComp.validate().catch(() => {});
       if (!valid) return;

+ 8 - 0
src/modules/base/components/assignment/AssignCompare.vue

@@ -59,6 +59,14 @@ import { assignmentCompareResult } from "../../api";
 
 export default {
   name: "assign-compare",
+  props: {
+    assignInfo: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
   data() {
     return {
       filter: {

+ 18 - 4
src/modules/base/components/assignment/AssignConfig.vue

@@ -90,6 +90,9 @@
         <el-button type="primary" :loading="loading" @click="toCalc">{{
           loading ? "正在计算中" : "开始试算"
         }}</el-button>
+        <p v-if="calcErrorMsg" class="tips-info tips-error">
+          错误信息:{{ calcErrorMsg }}
+        </p>
       </el-form-item>
     </el-form>
   </div>
@@ -119,6 +122,7 @@ export default {
   data() {
     return {
       modalForm: {
+        id: null,
         formula: "",
         all: true,
         value: undefined,
@@ -149,15 +153,21 @@ export default {
           },
         ],
       },
+      calcErrorMsg: "",
       loading: false,
       statusPeriod: 5000,
     };
   },
   mounted() {
+    this.modalForm.id = this.detailInfo.id;
     this.modalForm.formula = this.detailInfo.formula;
-    this.modalForm.all = this.detailInfo.coefficient.all;
-    this.modalForm.value = this.detailInfo.coefficient.value;
-    this.modalForm.detail = this.detailInfo.coefficient.detail || [];
+    if (this.detailInfo.coefficient) {
+      const coefficient = JSON.parse(this.detailInfo.coefficient);
+      this.modalForm.all = coefficient.all;
+      this.modalForm.value = coefficient.value;
+      this.modalForm.detail = coefficient.detail || [];
+    }
+    this.calcErrorMsg = this.detailInfo.errorMsg;
     if (!this.modalForm.detail.length) {
       this.modalForm.detail = this.detailInfo.inspectCollege.map((item) => {
         return {
@@ -178,10 +188,12 @@ export default {
   methods: {
     async getData() {
       this.clearSetTs();
-      const res = await assignmentDetailInfo(this.assignInfo);
+      const res = await assignmentDetailInfo(this.assignInfo, true);
       this.loading = res.status === "RUNNING";
+      this.modalForm.id = res.id;
 
       if (!this.loading) {
+        this.calcErrorMsg = res.errorMsg;
         this.$message.success("计算完成!");
         return;
       }
@@ -211,9 +223,11 @@ export default {
 
       const datas = {
         ...this.assignInfo,
+        id: this.modalForm.id,
         formula: this.modalForm.formula,
         coefficient: this.modalForm,
       };
+      this.calcErrorMsg = "";
       const data = await assignmentCalculate(datas).catch(() => {});
       if (!data) {
         this.loading = false;

+ 15 - 7
src/modules/base/components/assignment/AssignResult.vue

@@ -1,7 +1,9 @@
 <template>
   <div class="assign-result">
     <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-      <el-form-item label="考查学院:"> </el-form-item>
+      <el-form-item label="考查学院:">
+        <kc-college-select v-model="filter.kcCollegeName"></kc-college-select>
+      </el-form-item>
       <el-form-item label="班级:"> </el-form-item>
       <el-form-item label="任课老师:"> </el-form-item>
       <el-form-item>
@@ -55,13 +57,20 @@ import { assignmentCalcResult } from "../../api";
 
 export default {
   name: "assign-result",
+  props: {
+    assignInfo: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
   data() {
     return {
       filter: {
-        semesterId: "",
-        examTypeId: "",
-        collegeId: "",
-        examId: "",
+        kcCollegeName: "",
+        clazzId: "",
+        teacherCode: "",
       },
       current: 1,
       size: this.GLOBAL.pageSize,
@@ -73,8 +82,7 @@ export default {
     async getList() {
       const datas = {
         ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size,
+        ...this.assignInfo,
       };
 
       const data = await assignmentCalcResult(datas);

+ 28 - 3
src/modules/base/views/AssignmentCalculate.vue

@@ -15,10 +15,20 @@
           <exam-type-select v-model="filter.examTypeId"></exam-type-select>
         </el-form-item>
         <el-form-item label="课程代码:">
-          <college-select v-model="filter.courseCode"></college-select>
+          <course-select
+            v-model="filter.courseCode"
+            style="width: 300px"
+            :semester-id="filter.semesterId"
+            :exam-type-id="filter.examTypeId"
+          ></course-select>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" @click="toPage(1)">查询</el-button>
+          <el-button
+            type="primary"
+            :disabled="!filter.semesterId || !filter.examTypeId"
+            @click="toPage(1)"
+            >查询</el-button
+          >
         </el-form-item>
       </el-form>
     </div>
@@ -97,7 +107,22 @@ export default {
       this.getList();
     },
     toCalc(row) {
-      console.log(row);
+      this.$ls.set(
+        "curAssignInfo",
+        this.$objAssign(
+          {
+            semesterId: "",
+            examTypeId: "",
+            courseCode: "",
+            courseName: "",
+            openCollege: "",
+          },
+          row
+        )
+      );
+      this.$router.push({
+        name: "AssignmentCalculateDetail",
+      });
     },
   },
 };

+ 4 - 4
src/modules/base/views/AssignmentCalculateDetail.vue

@@ -21,11 +21,11 @@
         </div>
         <div class="ass-summary-nouns">
           <div class="ass-summary-noun">
-            <div class="noun-label">开课学院</div>
+            <div class="noun-label">开课学院</div>
             <div class="noun-content">{{ detailInfo.openCollege }}</div>
           </div>
           <div class="ass-summary-noun">
-            <div class="noun-label">考查学院</div>
+            <div class="noun-label">考查学院</div>
             <div class="noun-content">
               {{ detailInfo.inspectCollege.join(",") }}
             </div>
@@ -54,7 +54,7 @@
       <assign-result
         ref="AssignResult"
         class="part-box part-box-pad"
-        :data="detailInfo"
+        :assign-info="curAssignInfo"
       ></assign-result>
     </div>
     <div class="ass-part">
@@ -64,7 +64,7 @@
       <assign-compare
         ref="AssignCompare"
         class="part-box part-box-pad"
-        :data="detailInfo"
+        :assign-info="curAssignInfo"
       ></assign-compare>
     </div>
   </div>

+ 19 - 2
src/modules/base/views/BusinessDataManage.vue

@@ -58,7 +58,7 @@
           label="考试科次"
           width="100"
         ></el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="80">
+        <el-table-column class-name="action-column" label="操作" width="160">
           <template slot-scope="scope">
             <el-button
               v-if="scope.row.downloadStatus"
@@ -67,6 +67,13 @@
               @click="toDownload(scope.row)"
               >下载</el-button
             >
+            <el-button
+              v-if="!scope.row.useFile"
+              class="btn-primary"
+              type="text"
+              @click="toUse(scope.row)"
+              >使用当前数据</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
@@ -87,7 +94,12 @@
 </template>
 
 <script>
-import { businessDataList, downloadBusinessData, manualSync } from "../api";
+import {
+  businessDataList,
+  downloadBusinessData,
+  manualSync,
+  manualUse,
+} from "../api";
 import { downloadByApi } from "@/plugins/download";
 
 export default {
@@ -149,6 +161,11 @@ export default {
       //   "已开始下载,下载需要时间,请稍后到【下载列表】模块中查看数据"
       // );
     },
+    async toUse(row) {
+      await manualUse(row.id);
+      this.$message.success("操作成功!");
+      this.getList();
+    },
   },
 };
 </script>

+ 36 - 4
src/modules/base/views/UserManage.vue

@@ -58,6 +58,8 @@
         ></el-table-column>
         <el-table-column prop="mobileNumber" label="手机号"></el-table-column>
         <el-table-column prop="realName" label="姓名"></el-table-column>
+        <el-table-column prop="roleName" label="角色"></el-table-column>
+        <el-table-column prop="orgName" label="学院"></el-table-column>
         <el-table-column prop="enable" label="状态" width="100">
           <template slot-scope="scope">
             {{ scope.row.enable | enableFilter }}
@@ -110,6 +112,7 @@
       ref="ModifyUser"
       :instance="curUser"
       :roles="roles"
+      :orgs="colleges"
       @modified="getList"
     ></modify-user>
   </div>
@@ -118,7 +121,13 @@
 <script>
 import ModifyUser from "../components/ModifyUser";
 import { ABLE_TYPE } from "@/constants/enumerate";
-import { userListPage, ableUser, resetPwd, userRoleListPage } from "../api";
+import {
+  userListPage,
+  ableUser,
+  resetPwd,
+  userRoleListPage,
+  collegeQuery,
+} from "../api";
 // import { logout } from "@/modules/login/api";
 
 export default {
@@ -137,13 +146,17 @@ export default {
       visible: false,
       ABLE_TYPE,
       roles: [],
+      roleMap: {},
+      colleges: [],
+      collegeMap: {},
       users: [],
       curUser: {},
       loading: false,
     };
   },
-  mounted() {
-    this.getRoleList();
+  async mounted() {
+    await this.getRoleList();
+    await this.getCollegeList();
     this.getList();
   },
   methods: {
@@ -151,6 +164,21 @@ export default {
       const data = await userRoleListPage();
       this.roles = data || [];
       // this.roles = this.roles.filter(item => item.type !== "ADMIN");
+      let roleMap = {};
+      this.roles.forEach((item) => {
+        roleMap[item.id] = item.name;
+      });
+      this.roleMap = roleMap;
+    },
+    async getCollegeList() {
+      const res = await collegeQuery();
+      this.colleges = res || [];
+
+      let collegeMap = {};
+      this.colleges.forEach((item) => {
+        collegeMap[item.id] = item.name;
+      });
+      this.collegeMap = collegeMap;
     },
     async getList() {
       const datas = {
@@ -161,7 +189,11 @@ export default {
       if (datas.enable !== null && datas.enable !== "")
         datas.enable = !!datas.enable;
       const data = await userListPage(datas);
-      this.users = data.records;
+      this.users = data.records.map((item) => {
+        item.roleName = this.roleMap[item.roleId];
+        item.orgName = this.collegeMap[item.orgId];
+        return item;
+      });
       this.total = data.total;
     },
     toPage(page) {

+ 1 - 1
src/plugins/axios.js

@@ -20,7 +20,7 @@ axios.defaults.timeout = GLOBAL.timeout;
 axios.interceptors.request.use(
   (config) => {
     // 显示loading提示
-    if (!queue.length) {
+    if (!queue.length && !config["silence"]) {
       load = Message({
         customClass: "el-message-loading",
         iconClass: "el-message__icon el-icon-loading",

+ 8 - 0
src/plugins/globalVuePlugins.js

@@ -9,6 +9,10 @@ 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";
+import CourseSelect from "@/components/base/CourseSelect.vue";
+import KcCollegeSelect from "@/components/base/KcCollegeSelect.vue";
+import ClazzSelect from "@/components/base/ClazzSelect.vue";
+import TeacherSelect from "@/components/base/TeacherSelect.vue";
 
 const components = {
   ViewFooter,
@@ -18,6 +22,10 @@ const components = {
   EcsExamSelect,
   ExamTypeSelect,
   CollegeSelect,
+  CourseSelect,
+  KcCollegeSelect,
+  ClazzSelect,
+  TeacherSelect,
 };
 
 export default {