Browse Source

监考考场管理

Michael Wang 4 years ago
parent
commit
33603e89f4

+ 2 - 2
src/api/system-user.js

@@ -4,7 +4,7 @@ import { object2QueryString, AESString } from "@/utils/utils";
 
 export function searchUsers({
   orgId = "",
-  role,
+  roleCode,
   loginName = "",
   name = "",
   enable = "",
@@ -12,7 +12,7 @@ export function searchUsers({
   pageSize = 10,
 }) {
   const data = pickBy(
-    { orgId, role, loginName, name, enable, pageNumber, pageSize },
+    { orgId, roleCode, loginName, name, enable, pageNumber, pageSize },
     (v) => v !== ""
   );
   return httpApp.post("/api/admin/user/query?" + object2QueryString(data));

+ 59 - 0
src/components/InvigilatorSelect.vue

@@ -0,0 +1,59 @@
+<template>
+  <el-select
+    v-model="selected"
+    class="size-select"
+    placeholder="请选择"
+    @change="select"
+    :style="styles"
+    :multiple="multiple"
+    clearable
+  >
+    <el-option
+      v-for="item in optionList"
+      :key="item.id"
+      :label="item.name"
+      :value="item.id"
+    >
+      <span>{{ item.name }}</span>
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { searchUsers } from "@/api/system-user";
+export default {
+  name: "InvigilatorSelect",
+  props: {
+    value: [String, Array],
+    multiple: Boolean,
+    styles: { type: String, default: "width: 100px;" },
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: "",
+    };
+  },
+  async created() {
+    const res = await searchUsers({ roleCode: "INVIGILATE", pageSize: 1000 });
+    // console.log(res.data);
+    this.optionList = res.data.data.records.records;
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      },
+    },
+  },
+  methods: {
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit("change", this.selected);
+    },
+  },
+};
+</script>
+
+<style></style>

+ 3 - 5
src/features/examwork/InvigilateManagement/InvigilateManagement.vue

@@ -5,13 +5,13 @@
         <OrgSelect v-model="form.orgId"></OrgSelect>
       </el-form-item> -->
       <el-form-item label="考场">
-        <RoleSelect v-model="form.roomCode"></RoleSelect>
+        <ExamRoomSelect v-model="form.roomCode"></ExamRoomSelect>
       </el-form-item>
       <el-form-item label="监考老师">
-        <el-input v-model.trim="form.userId"></el-input>
+        <InvigilatorSelect v-model="form.userId"></InvigilatorSelect>
       </el-form-item>
       <el-button @click="searchForm">查询</el-button>
-      <el-button @click="add">新增</el-button>
+      <el-button @click="add">导入</el-button>
       <!-- <el-button>导入</el-button> -->
     </el-form>
 
@@ -58,14 +58,12 @@
 </template>
 
 <script>
-import RoleSelect from "@/components/RoleSelect.vue";
 import InvigilateManagementDialog from "./InvigilateManagementDialog";
 import { searchInvigilators } from "@/api/examwork-invigilate";
 
 export default {
   name: "InvigilateManagement",
   components: {
-    RoleSelect,
     InvigilateManagementDialog,
   },
   data() {

+ 26 - 17
src/features/examwork/InvigilateManagement/InvigilateManagementDialog.vue

@@ -1,7 +1,7 @@
 <template>
   <el-dialog
     ref="dialog"
-    title="考场管理"
+    title="考场监考管理"
     width="450px"
     :visible.sync="visible"
     @close="closeDialog"
@@ -14,18 +14,17 @@
       label-width="120px"
     >
       <el-row>
-        <el-form-item label="考场编码">
-          <el-input
-            class="pull_length"
+        <el-form-item label="考场">
+          <ExamRoomSelect
             v-model="form.roomCode"
-            placeholder="考场编码"
-          />
+            style="width: 100%;"
+          ></ExamRoomSelect>
         </el-form-item>
-        <el-form-item label="考场名称">
-          <el-input
-            class="pull_length"
-            v-model="form.roomName"
-            placeholder="考场名称"
+        <el-form-item label="考场">
+          <InvigilatorSelect
+            v-model="form.userIds"
+            style="width: 100%;"
+            multiple
           />
         </el-form-item>
       </el-row>
@@ -39,16 +38,29 @@
 </template>
 
 <script>
-import { saveUser } from "@/api/system-user";
+import { saveInvigilator } from "@/api/examwork-invigilate";
 export default {
   name: "InvigilateManagementDialog",
   props: {
     user: Object,
   },
+  watch: {
+    user: {
+      immediate: true,
+      handler(val) {
+        this.form.roomCode = val.roomCode;
+        const u = val.userId || "";
+        this.form.userIds = u.split(",");
+      },
+    },
+  },
   data() {
     return {
       visible: false,
-      form: {},
+      form: {
+        roomCode: "",
+        userIds: [],
+      },
       rules: {},
     };
   },
@@ -61,10 +73,7 @@ export default {
     },
     async submitForm() {
       let data = this.form;
-      if (this.isEdit) {
-        data = { ...data, id: this.user.id };
-      }
-      await saveUser(data);
+      await saveInvigilator(data);
       this.$emit("reload");
       this.closeDialog();
     },

+ 1 - 1
src/features/system/UserManagement/UserManagement.vue

@@ -139,7 +139,7 @@ export default {
     async searchForm() {
       const res = await searchUsers({
         orgId: this.form.orgId,
-        role: this.form.roleCode,
+        roleCode: this.form.roleCode,
         enable: this.form.enableState,
         loginName: this.form.loginName,
         name: this.form.name,