ExamStudentManagementDialog.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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="startTime">
  18. <el-date-picker
  19. v-model="form.startTime"
  20. type="datetime"
  21. placeholder="选择日期时间"
  22. >
  23. </el-date-picker>
  24. </el-form-item>
  25. </el-row>
  26. <el-row>
  27. <el-form-item label="交卷时间" prop="finishTime">
  28. <el-date-picker
  29. v-model="form.finishTime"
  30. type="datetime"
  31. placeholder="选择日期时间"
  32. >
  33. </el-date-picker>
  34. </el-form-item>
  35. </el-row>
  36. <el-row>
  37. <el-form-item label="考试时长" prop="prepareSeconds">
  38. <MinuteInput v-model="form.maxDurationSeconds" />
  39. </el-form-item>
  40. </el-row>
  41. <el-row>
  42. <el-form-item label="候考时间" prop="prepareSeconds">
  43. <MinuteInput v-model="form.prepareSeconds" />
  44. </el-form-item>
  45. </el-row>
  46. <el-row>
  47. <el-form-item label="迟到时长" prop="prepareSeconds">
  48. <MinuteInput v-model="form.openingSeconds" />
  49. </el-form-item>
  50. </el-row>
  51. <el-row>
  52. <el-form-item label="状态" prop="enable">
  53. <el-radio-group class="pull_right_sm" v-model="form.enable">
  54. <el-radio :label="1">启用</el-radio>
  55. <el-radio :label="0">禁用</el-radio>
  56. </el-radio-group>
  57. </el-form-item>
  58. </el-row>
  59. <el-row class="d-flex justify-content-center">
  60. <el-button type="primary" @click="submitForm">保 存</el-button>
  61. <el-button @click="closeDialog">取 消</el-button>
  62. </el-row>
  63. </el-form>
  64. </el-dialog>
  65. </template>
  66. <script>
  67. import MinuteInput from "@/components/MinuteInput";
  68. import { saveActivity } from "@/api/examwork-activity";
  69. export default {
  70. name: "ExamStudentManagementDialog",
  71. components: { MinuteInput },
  72. props: {
  73. examId: String,
  74. activity: Object,
  75. },
  76. computed: {
  77. isEdit() {
  78. return this.activity.id;
  79. },
  80. },
  81. data() {
  82. return {
  83. visible: false,
  84. form: {
  85. id: "",
  86. startTime: null,
  87. finishTime: null,
  88. prepareSeconds: 0,
  89. openingSeconds: 0,
  90. maxDurationSeconds: 0,
  91. },
  92. rules: {},
  93. };
  94. },
  95. watch: {
  96. user(val) {
  97. let tmp = { ...val };
  98. if (!tmp.id) {
  99. tmp = {
  100. id: "",
  101. startTime: null,
  102. finishTime: null,
  103. prepareSeconds: 0,
  104. openingSeconds: 0,
  105. maxDurationSeconds: 0,
  106. };
  107. }
  108. this.form = tmp;
  109. },
  110. },
  111. methods: {
  112. openDialog() {
  113. this.visible = true;
  114. },
  115. closeDialog() {
  116. this.visible = false;
  117. },
  118. async submitForm() {
  119. let data = this.form;
  120. if (this.isEdit) {
  121. data = { ...data, id: this.activity.id };
  122. }
  123. await saveActivity(data);
  124. this.$emit("reload");
  125. this.closeDialog();
  126. },
  127. },
  128. };
  129. </script>
  130. <style></style>