index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <template>
  2. <div id="bankMsg">
  3. <div class="dis_flex">
  4. <span class="span_sty">题目内容:</span>
  5. <div>
  6. <div class="divPy" v-html="imgExiz(bankMsg.content)"></div>
  7. <div v-if="bankMsg.type === 4">
  8. <div
  9. style="
  10. background: #eee;
  11. padding: 10px;
  12. border-bottom: 1px solid #a4a4a4;
  13. "
  14. v-for="(its, inds) in JSON.parse(bankMsg.jsonStr)"
  15. :key="inds"
  16. >
  17. <div class="dis_flex">
  18. <span class="span_sty">题目类型:</span>
  19. <div>
  20. <span>{{ getTypeName(its.type) }}</span>
  21. </div>
  22. </div>
  23. <div class="dis_flex">
  24. <span class="span_sty">题目内容:</span>
  25. <div>
  26. <div class="divPy" v-html="imgExiz(its.content)"></div>
  27. </div>
  28. </div>
  29. <div
  30. class="dis_flex"
  31. v-if="its.type !== 4 && its.type !== 5 && its.type !== 3"
  32. >
  33. <span class="span_sty">选项内容:</span>
  34. <div>
  35. <ul>
  36. <li
  37. v-for="(itemsxs, indexsxs) in its.optionsList"
  38. :key="indexsxs"
  39. style="margin-bottom: 10px"
  40. >
  41. {{ Gest(indexsxs + 1) }}:{{ itemsxs.content }}
  42. <div style="margin: 10px 0px">
  43. <el-image
  44. v-if="itemsxs.imgUrl"
  45. style="
  46. max-width: 100%;
  47. max-height: 100%;
  48. vertical-align: middle;
  49. "
  50. :src="$methodsTools.splitImgHost(itemsxs.imgUrl)"
  51. :preview-src-list="[
  52. $methodsTools.splitImgHost(itemsxs.imgUrl),
  53. ]"
  54. >
  55. </el-image>
  56. </div>
  57. </li>
  58. </ul>
  59. </div>
  60. </div>
  61. <div class="dis_flex" v-if="its.type !== 5">
  62. <span class="span_sty">正确答案:</span>
  63. <div>
  64. <span v-if="its.type === 3">
  65. {{ its.answerQuestion == 1 ? "正确" : "错误" }}
  66. </span>
  67. <span v-else>
  68. {{ getDictChanges(its.answerQuestion) }}
  69. </span>
  70. </div>
  71. </div>
  72. <div class="dis_flex">
  73. <span class="span_sty">答案解析:</span>
  74. <div>
  75. <div v-html="imgExiz(its.analysisContent)"></div>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. <div
  83. class="dis_flex"
  84. v-if="bankMsg.type !== 4 && bankMsg.type !== 5 && bankMsg.type !== 3"
  85. >
  86. <span class="span_sty">选项内容:</span>
  87. <div>
  88. <ul>
  89. <li
  90. v-for="(items, indexs) in JSON.parse(bankMsg.jsonStr)"
  91. :key="indexs"
  92. style="margin-bottom: 10px"
  93. >
  94. {{ Gest(indexs + 1) }}:{{ items.content }}
  95. <div style="margin: 10px 0px">
  96. <el-image
  97. v-if="items.imgUrl"
  98. style="
  99. max-width: 100%;
  100. max-height: 100%;
  101. vertical-align: middle;
  102. "
  103. :src="$methodsTools.splitImgHost(items.imgUrl)"
  104. :preview-src-list="[$methodsTools.splitImgHost(items.imgUrl)]"
  105. >
  106. </el-image>
  107. </div>
  108. </li>
  109. </ul>
  110. </div>
  111. </div>
  112. <div class="dis_flex" v-if="bankMsg.type !== 5 && bankMsg.type !== 4">
  113. <span class="span_sty">正确答案:</span>
  114. <div>
  115. <span v-if="bankMsg.type === 3">
  116. {{ bankMsg.answerQuestion == 1 ? "正确" : "错误" }}
  117. </span>
  118. <span v-else>
  119. {{ getDictChanges(bankMsg.answerQuestion) }}
  120. </span>
  121. </div>
  122. </div>
  123. <div class="dis_flex" v-if="bankMsg.type !== 4">
  124. <span class="span_sty">答案解析:</span>
  125. <div><div v-html="imgExiz(bankMsg.analysisContent)"></div></div>
  126. </div>
  127. </div>
  128. </template>
  129. <script>
  130. export default {
  131. props: ["bankMsg"],
  132. data() {
  133. return {};
  134. },
  135. computed: {
  136. /**
  137. * 题目类型转换名称
  138. */
  139. getTypeName: function () {
  140. return function (type) {
  141. let typeName = "";
  142. switch (type) {
  143. case 1:
  144. typeName = "单选题";
  145. break;
  146. case 2:
  147. typeName = "多选题";
  148. break;
  149. case 3:
  150. typeName = "判断题";
  151. break;
  152. case 4:
  153. typeName = "案例题";
  154. break;
  155. case 5:
  156. typeName = "简答题";
  157. break;
  158. default:
  159. break;
  160. }
  161. return typeName;
  162. };
  163. },
  164. imgExiz: function () {
  165. return function (vms) {
  166. if (!vms) {
  167. return vms;
  168. } else {
  169. var ast1 = vms.replace(/<p/gi, '<p style="margin:0px;"');
  170. var ast = ast1.replace(/<img/gi, '<img style="max-width:100%;"');
  171. return ast;
  172. }
  173. };
  174. },
  175. },
  176. methods: {
  177. /**
  178. * 选项转换
  179. */
  180. Gest(ints) {
  181. var int = parseInt(ints);
  182. var ast = "";
  183. switch (int) {
  184. case 1:
  185. ast = "A";
  186. break;
  187. case 2:
  188. ast = "B";
  189. break;
  190. case 3:
  191. ast = "C";
  192. break;
  193. case 4:
  194. ast = "D";
  195. break;
  196. case 5:
  197. ast = "E";
  198. break;
  199. case 6:
  200. ast = "F";
  201. break;
  202. case 7:
  203. ast = "G";
  204. break;
  205. case 8:
  206. ast = "H";
  207. break;
  208. default:
  209. ast = "X";
  210. break;
  211. }
  212. return ast;
  213. },
  214. getDictChanges(dan) {
  215. var arst = [];
  216. var arrays;
  217. if (dan instanceof Object) {
  218. arrays = dan;
  219. } else {
  220. if (dan) {
  221. arrays = dan.toString().split(",");
  222. } else {
  223. return "";
  224. }
  225. }
  226. for (let i = 0; i < arrays.length; i++) {
  227. arst.push(this.Gest(arrays[i]));
  228. }
  229. return arst.join(",");
  230. },
  231. },
  232. };
  233. </script>
  234. <style lang="less" scoped>
  235. #bankMsg {
  236. width: 100%;
  237. }
  238. .dis_flex {
  239. display: flex;
  240. margin-bottom: 6px;
  241. & > span {
  242. width: 90px;
  243. flex-shrink: 0;
  244. }
  245. & > div {
  246. flex: 1;
  247. white-space: initial;
  248. ul {
  249. margin: 0;
  250. }
  251. }
  252. }
  253. .span_sty {
  254. font-weight: bold;
  255. }
  256. </style>