ModifyStudent.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <template>
  2. <el-dialog
  3. class="modify-student"
  4. :visible.sync="modalIsShow"
  5. :title="title"
  6. top="10vh"
  7. width="500px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. append-to-body
  11. destroy-on-close
  12. @open="visibleChange"
  13. >
  14. <el-form
  15. ref="modalFormComp"
  16. :model="modalForm"
  17. :rules="rules"
  18. :key="modalForm.id"
  19. label-width="100px"
  20. >
  21. <el-form-item prop="studentName" label="姓名:">
  22. <el-input
  23. v-model.trim="modalForm.studentName"
  24. placeholder="请输入姓名"
  25. clearable
  26. ></el-input>
  27. </el-form-item>
  28. <el-form-item prop="studentCode" label="学号:">
  29. <el-input
  30. v-model.trim="modalForm.studentCode"
  31. placeholder="请输入学号"
  32. clearable
  33. :disabled="isEdit"
  34. ></el-input>
  35. </el-form-item>
  36. <el-form-item prop="collegeName" label="学院:">
  37. <el-input
  38. v-model.trim="modalForm.collegeName"
  39. placeholder="请输入学院"
  40. clearable
  41. ></el-input>
  42. </el-form-item>
  43. <el-form-item prop="majorName" label="专业:">
  44. <el-input
  45. v-model.trim="modalForm.majorName"
  46. placeholder="请输入专业"
  47. clearable
  48. ></el-input>
  49. </el-form-item>
  50. <el-form-item prop="className" label="班级:">
  51. <el-input
  52. v-model.trim="modalForm.className"
  53. placeholder="请输入班级"
  54. clearable
  55. ></el-input>
  56. </el-form-item>
  57. <el-form-item prop="courseName" label="课程名称:">
  58. <el-input
  59. v-model.trim="modalForm.courseName"
  60. placeholder="请输入课程名称"
  61. clearable
  62. ></el-input>
  63. </el-form-item>
  64. <el-form-item prop="courseCode" label="课程代码:">
  65. <el-input
  66. v-model.trim="modalForm.courseCode"
  67. placeholder="请输入课程代码"
  68. clearable
  69. ></el-input>
  70. </el-form-item>
  71. <el-form-item prop="examRoom" label="考场:">
  72. <el-input
  73. v-model.trim="modalForm.examRoom"
  74. placeholder="请输入考场"
  75. clearable
  76. ></el-input>
  77. </el-form-item>
  78. <el-form-item prop="score" label="成绩:">
  79. <el-input-number
  80. v-model="modalForm.score"
  81. :min="0"
  82. :max="999"
  83. :step="1"
  84. step-strictly
  85. :controls="false"
  86. ></el-input-number>
  87. </el-form-item>
  88. <el-form-item prop="remark" label="备注:">
  89. <el-input
  90. v-model.trim="modalForm.remark"
  91. placeholder="请输入备注"
  92. clearable
  93. ></el-input>
  94. </el-form-item>
  95. </el-form>
  96. <div slot="footer">
  97. <el-button type="primary" :disabled="isSubmit" @click="submit"
  98. >确认</el-button
  99. >
  100. <el-button @click="cancel">取消</el-button>
  101. </div>
  102. </el-dialog>
  103. </template>
  104. <script>
  105. import { updateStudent } from "../api";
  106. const initModalForm = {
  107. id: null,
  108. semesterId: "",
  109. examId: "",
  110. courseName: "",
  111. courseCode: "",
  112. studentName: "",
  113. studentCode: "",
  114. phoneNumber: "",
  115. collegeName: "",
  116. majorName: "",
  117. className: "",
  118. teacher: "",
  119. teachClass: "",
  120. examRoom: "",
  121. score: "",
  122. remark: "",
  123. };
  124. export default {
  125. name: "modify-student",
  126. props: {
  127. instance: {
  128. type: Object,
  129. default() {
  130. return {};
  131. },
  132. },
  133. },
  134. computed: {
  135. isEdit() {
  136. return !!this.instance.id;
  137. },
  138. title() {
  139. return (this.isEdit ? "编辑" : "新增") + "考生";
  140. },
  141. },
  142. data() {
  143. return {
  144. modalIsShow: false,
  145. isSubmit: false,
  146. modalForm: { ...initModalForm },
  147. rules: {
  148. studentName: [
  149. {
  150. required: true,
  151. message: "请输入姓名",
  152. trigger: "change",
  153. },
  154. {
  155. message: "姓名不能超过50字符",
  156. max: 50,
  157. trigger: "change",
  158. },
  159. ],
  160. studentCode: [
  161. {
  162. required: true,
  163. message: "请输入学号",
  164. trigger: "change",
  165. },
  166. {
  167. message: "学号不能超过50字符",
  168. max: 50,
  169. trigger: "change",
  170. },
  171. ],
  172. collegeName: [
  173. {
  174. message: "学院不能超过50字符",
  175. max: 50,
  176. trigger: "change",
  177. },
  178. ],
  179. majorName: [
  180. {
  181. message: "专业不能超过50字符",
  182. max: 50,
  183. trigger: "change",
  184. },
  185. ],
  186. className: [
  187. {
  188. message: "班级不能超过50字符",
  189. max: 50,
  190. trigger: "change",
  191. },
  192. ],
  193. courseName: [
  194. {
  195. required: true,
  196. message: "请输入课程名称",
  197. trigger: "change",
  198. },
  199. {
  200. message: "课程名称不能超过50字符",
  201. max: 50,
  202. trigger: "change",
  203. },
  204. ],
  205. courseCode: [
  206. {
  207. required: true,
  208. message: "请输入课程代码",
  209. trigger: "change",
  210. },
  211. {
  212. message: "课程代码不能超过50字符",
  213. max: 50,
  214. trigger: "change",
  215. },
  216. ],
  217. examRoom: [
  218. {
  219. message: "考场不能超过50字符",
  220. max: 50,
  221. trigger: "change",
  222. },
  223. ],
  224. remark: [
  225. {
  226. message: "备注不能超过50字符",
  227. max: 50,
  228. trigger: "change",
  229. },
  230. ],
  231. },
  232. };
  233. },
  234. methods: {
  235. initData(val) {
  236. this.modalForm = this.$objAssign(initModalForm, val);
  237. },
  238. visibleChange() {
  239. this.initData(this.instance);
  240. },
  241. cancel() {
  242. this.modalIsShow = false;
  243. },
  244. open() {
  245. this.modalIsShow = true;
  246. },
  247. async submit() {
  248. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  249. if (!valid) return;
  250. if (this.isSubmit) return;
  251. this.isSubmit = true;
  252. const data = await updateStudent(this.modalForm).catch(() => {
  253. this.isSubmit = false;
  254. });
  255. if (!data) return;
  256. this.isSubmit = false;
  257. this.$message.success(this.title + "成功!");
  258. this.$emit("modified");
  259. this.cancel();
  260. },
  261. },
  262. };
  263. </script>