ExamStudentManagementDialog.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <el-dialog
  3. ref="dialog"
  4. :title="(isEdit ? '编辑' : '新增') + '考生'"
  5. width="450px"
  6. :visible.sync="visible"
  7. @close="closeDialog"
  8. >
  9. <el-form
  10. :model="form"
  11. ref="form"
  12. :rules="rules"
  13. label-position="right"
  14. label-width="120px"
  15. >
  16. <el-row>
  17. <el-form-item label="批次名称" prop="examId">
  18. <ExamSelect v-model="form.examId" styles="width: 100%" />
  19. </el-form-item>
  20. </el-row>
  21. <el-row>
  22. <el-form-item label="场次代码" prop="examActivityId">
  23. <ActivitySelect
  24. :examId="form.examId"
  25. v-model="form.examActivityId"
  26. styles="width: 100%"
  27. />
  28. </el-form-item>
  29. </el-row>
  30. <el-row>
  31. <el-form-item label="考场名称" prop="roomCode">
  32. <ExamRoomSelect
  33. :examId="form.examId"
  34. v-model="form.roomCode"
  35. styles="width: 100%"
  36. @change="roomCodeChange"
  37. />
  38. </el-form-item>
  39. </el-row>
  40. <el-row>
  41. <el-form-item label="科目" prop="courseCode">
  42. <CourseSelect
  43. :examId="form.examId"
  44. v-model="form.courseCode"
  45. styles="width: 100%"
  46. />
  47. </el-form-item>
  48. </el-row>
  49. <el-row>
  50. <el-form-item label="姓名" prop="name">
  51. <el-input v-model.trim="form.name" maxlength="30"></el-input>
  52. </el-form-item>
  53. </el-row>
  54. <el-row>
  55. <el-form-item label="证件号" prop="identity">
  56. <el-input
  57. :disabled="isEdit"
  58. v-model.trim="form.identity"
  59. maxlength="30"
  60. ></el-input>
  61. </el-form-item>
  62. </el-row>
  63. <el-row>
  64. <el-form-item label="年级">
  65. <el-input v-model.trim="form.grade" maxlength="30"></el-input>
  66. </el-form-item>
  67. </el-row>
  68. <el-row>
  69. <el-form-item label="教学班级">
  70. <el-input v-model.trim="form.classNo" maxlength="30"></el-input>
  71. </el-form-item>
  72. </el-row>
  73. <el-row>
  74. <el-form-item label="状态" prop="enable">
  75. <el-radio-group class="pull_right_sm" v-model="form.enable">
  76. <el-radio :label="1">启用</el-radio>
  77. <el-radio :label="0">禁用</el-radio>
  78. </el-radio-group>
  79. </el-form-item>
  80. </el-row>
  81. <el-row class="d-flex justify-content-center">
  82. <el-button type="primary" @click="submitForm" :loading="loading"
  83. >保 存</el-button
  84. >
  85. <el-button @click="closeDialog">取 消</el-button>
  86. </el-row>
  87. </el-form>
  88. </el-dialog>
  89. </template>
  90. <script>
  91. import { saveExamStudent } from "@/api/examwork-examstudent";
  92. export default {
  93. name: "ExamStudentManagementDialog",
  94. props: {
  95. examId: String,
  96. examStudent: Object,
  97. },
  98. computed: {
  99. isEdit() {
  100. return !!this.examStudent.id;
  101. },
  102. },
  103. data() {
  104. return {
  105. visible: false,
  106. form: {
  107. id: "",
  108. examId: "",
  109. examActivityId: "",
  110. roomCode: "",
  111. roomName: "",
  112. courseCode: "",
  113. name: "",
  114. identity: "",
  115. grade: "",
  116. classNo: "",
  117. },
  118. rules: {
  119. examId: { required: true, message: "必填" },
  120. examActivityId: { required: true, message: "必填" },
  121. roomCode: { required: true, message: "必填" },
  122. courseCode: { required: true, message: "必填" },
  123. name: { required: true, message: "必填" },
  124. identity: { required: true, message: "必填" },
  125. },
  126. loading: false,
  127. };
  128. },
  129. watch: {
  130. examStudent(val) {
  131. let tmp = { ...val };
  132. if (!tmp.id) {
  133. tmp = {
  134. id: "",
  135. examId: "",
  136. examActivityId: "",
  137. roomCode: "",
  138. roomName: "",
  139. courseCode: "",
  140. name: "",
  141. identity: "",
  142. grade: "",
  143. classNo: "",
  144. };
  145. }
  146. this.form = tmp;
  147. },
  148. },
  149. methods: {
  150. openDialog() {
  151. this.visible = true;
  152. },
  153. closeDialog() {
  154. this.visible = false;
  155. },
  156. roomCodeChange(val) {
  157. this.form.roomName = val ? val.roomName : "";
  158. },
  159. async submitForm() {
  160. try {
  161. const valid = await this.$refs.form.validate();
  162. if (!valid) return;
  163. } catch (error) {
  164. console.log("校验失败", error);
  165. return;
  166. }
  167. let data = this.form;
  168. if (this.isEdit) {
  169. data = { ...data, id: this.examStudent.id };
  170. }
  171. try {
  172. this.loading = true;
  173. await saveExamStudent(data);
  174. this.$emit("reload");
  175. this.$notify({ title: "保存成功", type: "success" });
  176. this.closeDialog();
  177. } finally {
  178. this.loading = false;
  179. }
  180. },
  181. },
  182. };
  183. </script>
  184. <style></style>