ChineseQuestion.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <!-- 选择题 -->
  2. <template>
  3. <QuestionBase>
  4. <template #content>
  5. <div class="stem">
  6. <el-input
  7. v-if="data.property.stem_type === stemTypeList[0].value"
  8. v-model="data.stem"
  9. rows="3"
  10. resize="none"
  11. type="textarea"
  12. placeholder="输入题干"
  13. />
  14. <RichText v-if="data.property.stem_type === stemTypeList[1].value" v-model="data.stem" placeholder="输入题干" />
  15. <el-input
  16. v-show="data.property.is_enable_description"
  17. v-model="data.description"
  18. rows="3"
  19. resize="none"
  20. type="textarea"
  21. placeholder="输入描述"
  22. />
  23. </div>
  24. <div class="content">
  25. <label class="title-little">题目:</label>
  26. <el-input v-model="data.content" rows="3" resize="none" type="textarea" placeholder="输入汉字,用空格分开" />
  27. </div>
  28. </template>
  29. <template #property>
  30. <el-form :model="data.property">
  31. <el-form-item label="题干">
  32. <el-radio
  33. v-for="{ value, label } in stemTypeList"
  34. :key="value"
  35. v-model="data.property.stem_type"
  36. :label="value"
  37. >
  38. {{ label }}
  39. </el-radio>
  40. </el-form-item>
  41. <el-form-item label="题号">
  42. <el-input v-model="data.property.question_number" />
  43. </el-form-item>
  44. <el-form-item label-width="45px">
  45. <el-radio
  46. v-for="{ value, label } in questionNumberTypeList"
  47. :key="value"
  48. v-model="data.other.question_number_type"
  49. :label="value"
  50. >
  51. {{ label }}
  52. </el-radio>
  53. </el-form-item>
  54. <el-form-item label="描述">
  55. <el-radio
  56. v-for="{ value, label } in switchOption"
  57. :key="value"
  58. v-model="data.property.is_enable_description"
  59. :label="value"
  60. >
  61. {{ label }}
  62. </el-radio>
  63. </el-form-item>
  64. <el-form-item label="分值">
  65. <el-radio
  66. v-for="{ value, label } in scoreTypeList"
  67. :key="value"
  68. v-model="data.property.score_type"
  69. :label="value"
  70. >
  71. {{ label }}
  72. </el-radio>
  73. </el-form-item>
  74. <el-form-item label-width="45px">
  75. <el-input v-model="data.property.score" type="number" />
  76. </el-form-item>
  77. <el-form-item label="类型">
  78. <el-radio
  79. v-for="{ value, label } in learnTypeList"
  80. :key="value"
  81. v-model="data.property.learn_type"
  82. :label="value"
  83. >
  84. {{ label }}
  85. </el-radio>
  86. </el-form-item>
  87. </el-form>
  88. </template>
  89. </QuestionBase>
  90. </template>
  91. <script>
  92. import UploadAudio from '../common/UploadAudio.vue';
  93. import QuestionMixin from '../common/QuestionMixin.js';
  94. import { scoreTypeList, changeOptionType } from '@/views/exercise_questions/data/common';
  95. import { chineseData, getOption, learnTypeList } from '@/views/exercise_questions/data/chinese';
  96. export default {
  97. name: 'ChineseQuestion',
  98. components: {
  99. UploadAudio,
  100. },
  101. mixins: [QuestionMixin],
  102. data() {
  103. return {
  104. learnTypeList,
  105. changeOptionType,
  106. data: JSON.parse(JSON.stringify(chineseData)),
  107. };
  108. },
  109. methods: {
  110. /**
  111. * 智能识别
  112. * @param {String} text 识别数据
  113. */
  114. recognition(text) {
  115. let arr = text
  116. .split(/[\r\n]/)
  117. .map((item) => item.trim())
  118. .filter((item) => item);
  119. if (arr.length > 0) {
  120. this.data.stem = arr[0];
  121. this.data.option_list = arr.slice(1).map((content) => getOption(content));
  122. }
  123. },
  124. },
  125. };
  126. </script>
  127. <style lang="scss" scoped></style>