PaperImportDialog.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <el-dialog
  3. ref="dialog"
  4. title="导入试卷"
  5. width="560px"
  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="选择文件">
  18. <input @change="selectFile" type="file" /> *系统支持数据包
  19. </el-form-item>
  20. </el-row>
  21. <el-row>
  22. <el-form-item label="试卷包解析内容">
  23. <el-checkbox v-model="form.processPaper">试卷</el-checkbox>
  24. <el-checkbox v-model="form.processAnswer">答案</el-checkbox>
  25. </el-form-item>
  26. </el-row>
  27. <el-row>
  28. <el-form-item label="音频播放次数">
  29. <el-input-number
  30. :min="1"
  31. :max="1000"
  32. v-model.trim="form.audioPlayCount"
  33. ></el-input-number>
  34. </el-form-item>
  35. </el-row>
  36. <el-row>
  37. <el-form-item label="客观题小题乱序" prop="objectiveShuffle">
  38. <el-radio-group class="pull_right_sm" v-model="form.objectiveShuffle">
  39. <el-radio :label="true">启用</el-radio>
  40. <el-radio :label="false">禁用</el-radio>
  41. </el-radio-group>
  42. </el-form-item>
  43. </el-row>
  44. <el-row>
  45. <el-form-item label="客观题选项乱序" prop="optionShuffle">
  46. <el-radio-group class="pull_right_sm" v-model="form.optionShuffle">
  47. <el-radio :label="true">启用</el-radio>
  48. <el-radio :label="false">禁用</el-radio>
  49. </el-radio-group>
  50. </el-form-item>
  51. </el-row>
  52. <el-row class="d-flex justify-content-center">
  53. <el-button type="primary" @click="submitForm" :loading="loading"
  54. >保 存</el-button
  55. >
  56. <el-button @click="closeDialog">取 消</el-button>
  57. </el-row>
  58. </el-form>
  59. </el-dialog>
  60. </template>
  61. <script>
  62. import { importPaper } from "@/api/examwork-task";
  63. export default {
  64. name: "PaperImportDialog",
  65. props: {
  66. examId: String,
  67. },
  68. data() {
  69. return {
  70. visible: false,
  71. form: {},
  72. rules: {},
  73. loading: false,
  74. };
  75. },
  76. watch: {
  77. examId: {
  78. immediate: true,
  79. handler() {
  80. this.form = {
  81. processPaper: false,
  82. processAnswer: false,
  83. objectiveShuffle: false,
  84. optionShuffle: false,
  85. audioPlayCount: 0,
  86. file: "",
  87. fileName: "",
  88. };
  89. },
  90. },
  91. },
  92. methods: {
  93. openDialog() {
  94. this.visible = true;
  95. },
  96. closeDialog() {
  97. this.visible = false;
  98. },
  99. selectFile(e) {
  100. this.form.file = e.target.files[0];
  101. this.form.fileName = this.form.file?.name;
  102. },
  103. async submitForm() {
  104. let data = this.form;
  105. try {
  106. this.loading = true;
  107. await importPaper({ ...data, examId: this.examId });
  108. this.$emit("reload");
  109. this.$notify({ title: "导入任务已成功启动", type: "success" });
  110. this.closeDialog();
  111. } finally {
  112. this.loading = false;
  113. }
  114. },
  115. },
  116. };
  117. </script>
  118. <style></style>