Commit f3d1c4cebd62666118ef0777a88e3eb020a2c9a8
1 parent
7f592639
feat: 查看解析
Showing
2 changed files
with
102 additions
and
1 deletions
src/views/basic/askTestQuestion/components/analysisDialog.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <el-dialog | |
| 3 | + :visible.sync="visible" | |
| 4 | + width="50%" | |
| 5 | + :before-close="handleClose" | |
| 6 | + :modal-append-to-body="false" | |
| 7 | + > | |
| 8 | + <div class="test-box" v-if="analysisUrl"> | |
| 9 | + <iframe | |
| 10 | + :src="analysisUrl" | |
| 11 | + ref="iframe" | |
| 12 | + @load="onIFrameLoad()" | |
| 13 | + style="width: 100%; border: none; /* 启用点击穿透 */" | |
| 14 | + ></iframe> | |
| 15 | + </div> | |
| 16 | + | |
| 17 | + <span slot="title" class="title"> 题目解析 </span> | |
| 18 | + </el-dialog> | |
| 19 | +</template> | |
| 20 | + <script> | |
| 21 | +export default { | |
| 22 | + name: "analysisDialog", | |
| 23 | + props: { | |
| 24 | + visible: { | |
| 25 | + type: Boolean, | |
| 26 | + default() { | |
| 27 | + return false; | |
| 28 | + }, | |
| 29 | + }, | |
| 30 | + analysisUrl: { | |
| 31 | + // 科目 | |
| 32 | + type: String, | |
| 33 | + default() { | |
| 34 | + return null; | |
| 35 | + }, | |
| 36 | + }, | |
| 37 | + }, | |
| 38 | + data() { | |
| 39 | + return {}; | |
| 40 | + }, | |
| 41 | + | |
| 42 | + watch: { | |
| 43 | + visible(val) { | |
| 44 | + if (val) { | |
| 45 | + console.log(val); | |
| 46 | + } else { | |
| 47 | + this.handleClose(); | |
| 48 | + } | |
| 49 | + }, | |
| 50 | + }, | |
| 51 | + methods: { | |
| 52 | + /** 按钮 - 取消 */ | |
| 53 | + handleClose() { | |
| 54 | + this.$emit("update:visible", false); | |
| 55 | + }, | |
| 56 | + | |
| 57 | + onIFrameLoad() { | |
| 58 | + const iframeRef = this.$refs.iframe; // 获取对应的 iframe | |
| 59 | + const doc = iframeRef.contentDocument || iframeRef.contentWindow.document; | |
| 60 | + const body = iframeRef.contentWindow.document.body; | |
| 61 | + body.style.overflowX = "hidden"; // 不允许出现横向滚动条 | |
| 62 | + const height = body.scrollHeight; // 获取内容的高度 | |
| 63 | + iframeRef.style.height = `${height + 20}px`; // 设置 iframe 的高度 | |
| 64 | + // 获取第一个P标签 | |
| 65 | + const firstP = doc.getElementsByTagName("p")[0]; | |
| 66 | + // 或者修改第一个 < p > 标签的内容; | |
| 67 | + if (firstP) { | |
| 68 | + let a = this.processString(firstP.innerHTML); | |
| 69 | + firstP.innerHTML = a; | |
| 70 | + } | |
| 71 | + }, | |
| 72 | + }, | |
| 73 | +}; | |
| 74 | +</script> | |
| 75 | + <style lang="scss" scoped> | |
| 76 | +.title { | |
| 77 | + font-weight: 600; | |
| 78 | +} | |
| 79 | +.test-box { | |
| 80 | + width: 100%; | |
| 81 | + box-sizing: border-box; | |
| 82 | + padding: 20px; | |
| 83 | +} | |
| 84 | +</style> | |
| 0 | 85 | \ No newline at end of file | ... | ... |
src/views/basic/askTestQuestion/wrongQuestion.vue
| ... | ... | @@ -168,7 +168,10 @@ |
| 168 | 168 | <!-- <div class="topic-info" v-html="item.modifiedHtml"></div> --> |
| 169 | 169 | <div class="topic-bottom"> |
| 170 | 170 | <div> |
| 171 | - <span v-if="item.answerScreenshot" class="knowledge size" | |
| 171 | + <span | |
| 172 | + v-if="item.answerScreenshot" | |
| 173 | + class="knowledge size" | |
| 174 | + @click="handleAnalysis(item.answerScreenshot)" | |
| 172 | 175 | ><i class="el-icon-key"></i>查看解析</span |
| 173 | 176 | > |
| 174 | 177 | <span class="color size">知识点:</span> |
| ... | ... | @@ -242,15 +245,21 @@ |
| 242 | 245 | :gradeId="formData.grade" |
| 243 | 246 | @setQuestions="setQuestions" |
| 244 | 247 | /> |
| 248 | + <analysisDialog | |
| 249 | + :visible.sync="analysisVisible" | |
| 250 | + :analysisUrl="analysisUrl" | |
| 251 | + /> | |
| 245 | 252 | </div> |
| 246 | 253 | </template> |
| 247 | 254 | |
| 248 | 255 | <script> |
| 249 | 256 | import { setDateRules } from "@/utils"; |
| 250 | 257 | import wrongQuestionDialog from "./components/wrongQuestionDialog.vue"; |
| 258 | +import analysisDialog from "./components/analysisDialog.vue"; | |
| 251 | 259 | export default { |
| 252 | 260 | components: { |
| 253 | 261 | wrongQuestionDialog, |
| 262 | + analysisDialog, | |
| 254 | 263 | }, |
| 255 | 264 | data() { |
| 256 | 265 | return { |
| ... | ... | @@ -259,6 +268,8 @@ export default { |
| 259 | 268 | maxValue: 100, // 最大值 |
| 260 | 269 | visible: false, // 购物车弹框控制 |
| 261 | 270 | queryLoading: false, //loading |
| 271 | + analysisUrl: null, // 解析url | |
| 272 | + analysisVisible: false, // 解析弹框 | |
| 262 | 273 | // 分页 |
| 263 | 274 | listPage: { |
| 264 | 275 | page: 1, |
| ... | ... | @@ -597,6 +608,12 @@ export default { |
| 597 | 608 | setQuestions() { |
| 598 | 609 | this.questions = JSON.parse(localStorage.getItem("testlist")) || []; |
| 599 | 610 | }, |
| 611 | + | |
| 612 | + // 查看解析 | |
| 613 | + handleAnalysis(url) { | |
| 614 | + this.analysisUrl = url; | |
| 615 | + this.analysisVisible = true; | |
| 616 | + }, | |
| 600 | 617 | }, |
| 601 | 618 | }; |
| 602 | 619 | </script> | ... | ... |