QuestionPreview.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <el-dialog
  3. class="question-preview"
  4. title="试题预览"
  5. :visible.sync="dialogVisible"
  6. :modal="false"
  7. width="800"
  8. append-to-body
  9. custom-class="side-dialog"
  10. >
  11. <el-form label-position="right" label-width="65px">
  12. <el-form-item label="题型">
  13. <span>{{ quesModel.questionType | questionType }}</span>
  14. </el-form-item>
  15. <el-form-item label="题干">
  16. <div class="paper-question-body" v-html="quesModel.quesBody"></div>
  17. </el-form-item>
  18. <template v-if="quesModel.quesOptions && quesModel.quesOptions.length">
  19. <el-form-item
  20. v-for="(quesOption, optIndex) in quesModel.quesOptions"
  21. :key="`option-${optIndex}`"
  22. >
  23. <div class="paper-question-option">
  24. <span>{{ optIndex | optionOrderWordFilter }}. </span>
  25. <span v-html="quesOption.optionBody"></span>
  26. </div>
  27. </el-form-item>
  28. </template>
  29. <template v-if="quesModel.subQuestions && quesModel.subQuestions.length">
  30. <div
  31. v-for="(subQuestionModel, qindex) in quesModel.subQuestions"
  32. :key="`subq-${qindex}`"
  33. class="sub-question"
  34. >
  35. <div class="sub-question-no">{{ qindex + 1 }}</div>
  36. <el-form-item label="题目">
  37. <div
  38. class="paper-question-body"
  39. v-html="subQuestionModel.quesBody"
  40. ></div>
  41. </el-form-item>
  42. <template
  43. v-if="
  44. subQuestionModel.quesOptions &&
  45. subQuestionModel.quesOptions.length
  46. "
  47. >
  48. <el-form-item
  49. v-for="(subQuesOption, subIndex) in subQuestionModel.quesOptions"
  50. :key="subIndex"
  51. >
  52. <div class="paper-question-option">
  53. <span>{{ subIndex | optionOrderWordFilter }}. </span>
  54. <span v-html="subQuesOption.optionBody"></span>
  55. </div>
  56. </el-form-item>
  57. </template>
  58. <el-form-item label="答案">
  59. <div
  60. class="paper-question-body"
  61. v-html="subQuestionModel.quesAnswer"
  62. ></div>
  63. </el-form-item>
  64. </div>
  65. </template>
  66. <el-form-item
  67. v-if="!quesModel.subQuestions || !quesModel.subQuestions.length"
  68. label="答案"
  69. >
  70. <div class="paper-question-body" v-html="quesModel.quesAnswer"></div>
  71. </el-form-item>
  72. </el-form>
  73. </el-dialog>
  74. </template>
  75. <script>
  76. export default {
  77. name: "QuestionPreview",
  78. props: {
  79. quesModel: {
  80. type: Object,
  81. default() {
  82. return {};
  83. },
  84. },
  85. },
  86. data() {
  87. return {
  88. dialogVisible: false,
  89. };
  90. },
  91. methods: {
  92. open() {
  93. this.dialogVisible = true;
  94. },
  95. close() {
  96. this.dialogVisible = false;
  97. },
  98. },
  99. };
  100. </script>