([\\s\\S]*?)<\\/span>/g;\n const spanArr = readingFormatContent.match(spanReg);\n if (spanArr) {\n spanArr.forEach(item => {\n if (item.indexOf(\"\") > -1) {\n readingFormatContent = readingFormatContent.replace(\n item,\n item.replace(\"
\", \"
\")\n );\n }\n });\n }\n this.readingContent = JSON.parse(readingFormatContent);\n // 解决换行导致标签没有闭合的问题--end\n setTimeout(() => {\n const HighLightDom = document.getElementById(\"article\" + questionId);\n //判断HighLightDom是否在可视区域内\n if (HighLightDom) {\n const rect = HighLightDom.getBoundingClientRect();\n const top = rect.top;\n const bottom = rect.bottom;\n const viewHeight = document.documentElement.clientHeight;\n //把可是范围缩小一点\n if (top < 0 || bottom > viewHeight) {\n //不在可视区域内\n this.$nextTick(() => {\n jump(\"article\" + questionId);\n });\n } else {\n console.log(\"在可视区域内\");\n }\n } else {\n console.log(\"没有找到元素\");\n }\n }, 300);\n },\n showShade(val) {\n this.isShowShade = val;\n },\n marked,\n ...mapMutations([\"table_question_id\"]),\n ...mapActions([\"setAllAnalysic\", \"setRouteQuestionId\"])\n },\n components: {\n partNavigation,\n noteCompletion,\n multipleChoice,\n parts,\n TableQuestion,\n pie,\n analysisCart,\n match,\n addNote,\n matchChoose,\n dargToQuestion,\n MultipleAnswer,\n matchFillInBank,\n lock,\n mutipleBlanksImage,\n Pop\n }\n};\n","\n \n
\n\n
\n
\n
\n
\n
{{ readingContent }}\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n\n
\n
\n 正确率\n {{\n this.$route.query.type == 3\n ? Math.ceil(\n (RDetail &&\n RDetail.correct_question_count /\n RDetail.question_count) * 100\n )\n : Math.ceil(\n (readDetail &&\n readDetail.correct_question_count /\n readDetail.question_count) * 100\n )\n }}%\n 0%\n
\n
\n 正确数量\n {{\n this.$route.query.type == 3\n ? RDetail && RDetail.correct_question_count\n : readDetail.correct_question_count\n }}/{{\n this.$route.query.type == 3\n ? RDetail && RDetail.question_count\n : readDetail && readDetail.question_count\n }}\n 0/40\n
\n
\n 总耗时\n {{ formatTime(readingDataAll.spent_second) }}\n
\n
\n
\n
\n
\n 答题情况\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n {{ readingData.title }} {{ readingData.paraphrase_content }}\n
\n
\n \n
\n {{ group.note }}\n
\n \n
\n \n
\n
\n \n
\n \n
\n \n
\n
\n \n
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n 记录时间:\n {{ recordTime }}\n \n \n \n \n \n
\n 移除笔记\n
\n
\n {{ title }}\n
\n
\n\n \n \n
\n \n \n
\n
\n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./reading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./reading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./reading.vue?vue&type=template&id=0dc41a02&scoped=true&\"\nimport script from \"./reading.vue?vue&type=script&lang=js&\"\nexport * from \"./reading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./reading.vue?vue&type=style&index=0&id=0dc41a02&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0dc41a02\",\n null\n \n)\n\nexport default component.exports","import { IMG_DOMAIN_PREFIX } from \"@/utils/constant\";\nimport * as Api from \"@/api/center\";\n// import from '@/api/record'\nimport { QUESTION_TYPE } from \"@/utils/constant\";\nimport { mapActions, mapMutations, mapState } from \"vuex\";\nimport { Message } from \"element-ui\";\nimport parts from \"./components/common/parts/parts.vue\";\nimport player from \"./components/common/player/player.vue\";\nimport pie from \"./components/common/pie/pie.vue\";\nimport TableQuestion from \"./components/common/TableQuestion/TableQuestion.vue\";\nimport centerTopBar from \"@/components/common/centerTopBar/centerTopBar.vue\";\nimport listen from \"@/views/center/report/listen/listen.vue\";\nimport writing from \"@/views/center/report/writing/writing.vue\";\nimport reading from \"@/views/center/report/reading/reading.vue\";\nimport { dealMatch2, replaceHtml, isHashID } from \"@/utils/util\";\nimport marked from \"marked\";\nimport {MOCK_SECTION } from \"@/utils/constant\";\nimport { toLogin } from \"@/utils/authorization\";\n\nimport AES from \"@/utils/AES\";\nlet Base64 = require(\"js-base64\").Base64;\n\nexport default {\n name: \"report\",\n data() {\n return {\n ListenSite: null,\n allListenAnalysis: [],\n allReadAnalysis: [],\n deatils: null,\n // isListenShow: false, //是否显示听力\n partsAduio: null, //part的音频\n activeTab: \"listening\",\n overViewData: {}, //头部平均分数据\n listenData: [],\n readingData: [],\n writingData: [],\n buttonGroups: [],\n listeningAnswers: [],\n readingAnswers: [],\n writingAnswers: [],\n paperId: \"\",\n IMG_DOMAIN_PREFIX ,\n topBarData: {\n buttonText: \"关闭\",\n pageTitle: ``,\n activeTab: \"\",\n },\n part: [],\n rightHandel: [\n { key: 1, title: \"我的答案\" },\n { key: 2, title: \"答案解析\" },\n { key: 3, title: \"我的笔记\" },\n ],\n listenDetail: null,\n readDetail: null,\n is_get_wrong_reourd_status: false,\n recordDetail:undefined,\n hashids: '',\n };\n },\n created() { \n },\n computed: {\n ...mapState({\n recordId: (state) => state.tests.recordId,\n routeQuestionId: (state) => state.center.routeQuestionId,\n currentPart: (state) => state.tests.currentPart,\n }),\n routePath() {\n return this.$route.query.type == 3;\n },\n },\n\n mounted() {\n const { origin } = this.$route.query\n if (this.$route.query.type == 3) {\n this.getOverview();\n this.init()\n }else if(isHashID(this.$route.params.id)) {\n //如果是练习模式就要先通过接口获取到练习的详细信息\n Api.getSelectAnswer(this.$route.query.type, {\n recordId: this.$route.params.id,\n },{}, res=>{\n this.recordDetail = res\n this.setConfig(res.section, res.paper?.id )\n this.init()\n this.setReportHeader(()=>{\n this.topBarData = {\n buttonText: \"关闭\",\n pageTitle: `成绩报告:【${this.injudgeSection()}】Part${this.currentPart} ${this.recordDetail.paper.name}`,\n };\n })\n }, origin)\n }else {\n this.init()\n }\n\n \n },\n methods: {\n ...mapMutations([\n \"listen_Data\",\n \"type\",\n \"reading_Data\",\n \"wirting_Data\",\n \"listen_Answer\",\n \"read_Answer\",\n \"no_mock_answer_data\",\n \"permission\",\n ]),\n injudgeSection(){\n return this.recordDetail.section == 11\n ? \"听力\"\n : this.recordDetail.section == 13\n ? \"阅读\"\n : \"写作\";\n },\n setReportHeader(callback){\n if(!this.recordDetail.part_id && this.recordDetail.paper?.id){\n this.topBarData = {\n buttonText: \"关闭\",\n pageTitle: `成绩报告:【${this.injudgeSection()}】Paper ${this.recordDetail.paper.name}`,\n }\n }else {\n callback ? callback() : ''\n }\n },\n handle_is_get_wrong_reourd_status() {\n this.is_get_wrong_reourd_status = true;\n },\n init(){\n this.getRecordDetails();\n if ((this.$route.query && this.$route.query.section) == 11) {\n //听力\n this.activeTab = \"listening\";\n } else if ((this.$route.query && this.$route.query.section) == 13) {\n //阅读\n this.activeTab = \"reading\";\n } else if ((this.$route.query && this.$route.query.section) == 14) {\n //写作\n this.activeTab = \"writing\";\n } else {\n this.activeTab = \"listening\";\n }\n this.$store.commit(\"type\", this.activeTab);\n },\n getRecordDetails() \n {\n //获取报告详情\n if (this.$route.query.type == 3) {\n Api.recordDetails(\n \"get\",\n \"\",\n (res) => {\n this.setMockDetails(res);\n this.deatils = res;\n this.getSection(this.activeTab);\n },\n this.$route.query.recordId\n );\n } \n else {\n if (this.$route.query.type !== 3 && this.$route.query.section == 13) {\n this.getSection(\"reading\");\n } else if (\n this.$route.query.type !== 3 &&\n this.$route.query.section == 14\n ) {\n this.getSection(\"writing\");\n } else {\n this.getSection(this.activeTab);\n }\n\n }\n },\n //返回上一页\n handleclicktop() {\n if (!localStorage.authorization) {\n toLogin();\n return;\n }\n if (this.routePath) {\n //返回上一层\n this.$router.push(\n `/center/record/mock?source_id=${this.$route.query.source_id}`\n );\n } else {\n this.$router.push(\n `/center/record/practice?source_id=${this.$route.query.source_id}`\n );\n }\n },\n //点击part的数据\n changePart(part) {\n this.partsAduio = part.audio_url;\n },\n downloadPdf() {\n if (this.overViewData.paper.pdf_url) {\n window.open(this.overViewData.paper.pdf_url);\n } else {\n Message.error(\"这套题还没有解析哦~\");\n }\n },\n changeTab(tab) {\n this.$store.commit(\"type\", tab);\n this.activeTab = tab;\n if (tab == \"listening\") {\n this.getSection(tab);\n this.topBarData.activeTab = \"成绩报告:听力\";\n let sum = 1;\n this.listenData.forEach((item) => {\n item.title = `Part ${sum++}`;\n });\n this.listenData.forEach((part) => {\n part.groups.forEach((groups) => {\n groups.questions.forEach((question) => {\n question.part = part.part;\n });\n });\n });\n this.$store.commit(\"clear_Sum\", 1);\n this.part = this.listenData;\n this.rightHandel = [\n { key: 1, title: \"我的答案\" },\n { key: 2, title: \"答案解析\" },\n { key: 3, title: \"我的笔记\" },\n ];\n } else if (tab === \"reading\") {\n this.getSection(tab);\n this.topBarData.activeTab = \"成绩报告:阅读\";\n let sum = 1;\n this.readingData.forEach((item) => {\n item.title = `Part ${sum++}`;\n });\n this.readingData.forEach((item) => {\n item.groups.forEach((groups) => {\n groups.questions.forEach((question) => {\n question.part = item.part;\n question.is_correct = false;\n });\n });\n });\n // this.$store.commit('all_Analysis', arr)\n this.$store.commit(\"clear_Sum\", 1);\n this.part = this.readingData;\n this.rightHandel = [\n { key: 1, title: \"我的答案\" },\n { key: 2, title: \"答案解析\" },\n { key: 3, title: \"我的笔记\" },\n ];\n // return;\n } else if (tab == \"writing\") {\n this.getSection(tab);\n this.topBarData.activeTab = \"成绩报告:写作\";\n let sum = 1;\n this.writingData.forEach((item) => {\n item.title = `Task ${sum++}`;\n });\n this.part = this.writingData;\n this.rightHandel = [\n { key: 1, title: \"我的答案\" },\n { key: 2, title: \"高分范文\" },\n { key: 3, title: \"我的笔记\" },\n ];\n // return;\n }\n },\n setHashid(hashids) {\n //将hashids挂到路由的query上\n if (!this.$route.query.hashids) {\n const newQuery = {\n ...this.$route.query\n };\n \n if (\n this.$route.path === this.$route.path &&\n JSON.stringify(this.$route.query) === JSON.stringify(newQuery)\n ) {\n // 当前路径和目标路径相同,避免重复导航\n return;\n }\n this.$router.replace({\n name: 'report',\n query: {\n ...this.$route.query,\n },\n params:{\n id: hashids\n }\n })\n }\n },\n setConfig(section, paperId) {\n this.$router.replace({\n name: 'report',\n query: {\n ...this.$route.query,\n section,\n paperId\n },\n params:{\n id: this.$route.params.id\n }\n })\n },\n getOverview() {\n //获取平均分top\n Api.newRecord(\n \"get\",\n \"\",\n (res) => {\n this.overViewData = res;\n this.hashids = res.hashids\n if (this.$route.query.type == 3) {\n this.$store.commit(\"permission\", res.permission);\n } else {\n this.$store.commit(\"permission\", this.listeningAnswers.permission);\n }\n this.setHashid(res.hashids)\n\n this.filterDetail(this.overViewData);\n this.topBarData = {\n buttonText: \"关闭\",\n pageTitle: `${this.overViewData.paper.name}`,\n };\n this.setAnalysisMode(res.paper.analysis_mode);\n },\n this.$route.query.recordId\n );\n },\n filterDetail(overViewData) {\n const listenDetail = overViewData.details.filter(\n (item) => item.section == 11\n );\n const readDetail = overViewData.details.filter(\n (item) => item.section == 13\n );\n this.listenDetail = listenDetail[0];\n this.readDetail = readDetail[0];\n },\n getSection(section) {\n const { origin } = this.$route.query\n \n let record = {\n recordId: this.$route.query.recordId,\n section: 0\n }\n if(isHashID(this.$route.params.id)){\n record.recordId = this.$route.params.id\n }\n if (this.$route.query.type == 3) {\n if (section === \"listening\") {\n record.section = MOCK_SECTION.LISTENING;\n } else if (section === \"reading\") {\n record.section = MOCK_SECTION.READING\n } else {\n record.section = MOCK_SECTION.WRITING\n }\n }\n\n Api.getPaper(\n record,\n (res) => {\n const { iv, value } = JSON.parse(Base64.decode(res.encrypted))\n const decroptRes = JSON.parse(AES.decrypt(value, '', 'CBC', iv))\n let questions = this.formatData(decroptRes);\n if(this.$route.query.type == 3 || !this.recordDetail){\n Api.getSelectAnswer(this.$route.query.type, record,{}, (res) => {\n this.selecAnswerCallback(res, questions, section)\n res.hashids ? this.hashids = res.hashids : ''\n this.recordDetail = res\n if(!this.recordDetail) return\n this.setReportHeader(()=>{\n if (this.$route.query.type !== \"3\") {\n //此处逻辑是从上方迁移下来的,如果是 练习并且是非paper类型的,就通过partid查询扒part详情\n Api.ListenSite(\n \"get\",\n {},\n (res) => {\n this.ListenSite = res;\n this.topBarData = {\n buttonText: \"关闭\",\n pageTitle: `成绩报告:【${this.injudgeSection()}】Part${this.ListenSite.number} ${this.ListenSite.paper.name}`,\n };\n },\n this.$route.params.id,\n origin\n );\n }\n })\n }, origin);\n }else {\n this.selecAnswerCallback(this.recordDetail, questions, section)\n }\n \n },\n \"\",\n this.$route.query.type,\n origin\n );\n },\n selecAnswerCallback(res, questions, section){\n let hashids = ''\n if(this.$route.query.type == 3){\n hashids = this.overViewData?.hashids\n res.forEach(child=>{\n child.answer = child.content\n delete child.content\n })\n }else {\n hashids = res.hashids\n res.answers.forEach(child=>{\n child.answer = child.content\n delete child.content\n })\n }\n this.setHashid(hashids)\n if (section === \"listening\") {\n let spentSecond;\n if (this.$route.query.type == 3) {\n spentSecond = this.overViewData.details.filter((item) => {\n return item.section == 11;\n })[0].spent_second;\n } else {\n spentSecond = 0;\n }\n\n // ? (spentSecond = this.overViewData.details[0].spent_second)\n // : (spentSecond = 0);\n let lrcTimeArr = [];\n questions.forEach((item) => {\n // let lrc = ''\n if (\n typeof item.audio_lrc === \"object\" &&\n item.audio_lrc !== null\n ) {\n item.audio_lrc.forEach((ele) => {\n ele.time = this.parseTime(ele.time);\n lrcTimeArr.push(ele.time);\n });\n }\n item.lrcTimeArr = lrcTimeArr;\n });\n this.$store.commit(\n \"listen_Data\",\n this.formatQuestionAndAnswer(questions, res, spentSecond)\n );\n sessionStorage.setItem(\"listen_Answer\", JSON.stringify(res));\n this.$store.commit(\n \"listen_Answer\",\n this.$route.query.type == 3 ? res : res.answers\n );\n\n this.listeningAnswers = res;\n // if (this.$route.query.type !== 3) {\n // this.$store.commit(\n // \"permission\",\n // this.listeningAnswers.permission\n // );\n // }\n } else if (section === \"reading\") {\n let spentSecond;\n if (this.$route.query.type == 3) {\n spentSecond = this.overViewData.details.filter((item) => {\n return item.section == 13;\n })[0].spent_second;\n } else {\n spentSecond = 0;\n }\n\n this.$store.commit(\n \"reading_Data\",\n this.formatQuestionAndAnswer(questions, res, spentSecond)\n );\n sessionStorage.setItem(\"read_Answer\", JSON.stringify(res));\n this.$store.commit(\n \"read_Answer\",\n this.$route.query.type == 3 ? res : res.answers\n );\n this.readingAnswers = res;\n } else {\n this.writingAnswers = res;\n let spentSecond;\n if (this.$route.query.type == 3) {\n spentSecond = this.overViewData.details.filter((item) => {\n return item.section == 14;\n })[0].spent_second;\n } else {\n spentSecond = 0;\n }\n\n this.$store.commit(\n \"wirting_Data\",\n this.formatQuestionAndAnswer(questions, res, spentSecond)\n );\n sessionStorage.setItem(\"writingAnswers\", JSON.stringify(res));\n }\n },\n parseTime(time) {\n var tl = time.split(\":\");\n switch (tl.length) {\n case 1:\n return parseFloat(tl[0]);\n case 2:\n return parseFloat(tl[0]) * 60 + parseFloat(tl[1]);\n case 3:\n return (\n parseFloat(tl[0]) * 3600 +\n parseFloat(tl[1]) * 60 +\n parseFloat(tl[2])\n );\n }\n },\n formatData(data) {\n let questionNumber = 1;\n data.forEach((part, partIndex) => {\n part.part = partIndex + 1;\n part.content = replaceHtml(marked(part.content));\n part.groups.forEach((group, groupIndex) => {\n group.content = replaceHtml(marked(group.content));\n if (group.type === QUESTION_TYPE.MULTIPLEANSWER) {\n } else if (\n group.type === QUESTION_TYPE.MATCH ||\n group.type === QUESTION_TYPE.TITLE\n ) {\n group.questions.forEach((question) => {\n question.options = group.options;\n question.questionNumber = questionNumber++;\n question.content = replaceHtml(marked(question.content))\n .split(\"[d[=NO=]]\")\n .join(\"\");\n });\n if (group.content) {\n group.content = dealMatch2(group);\n }\n } else {\n if (group.type !== QUESTION_TYPE.NOTCOMPLETION) {\n group.questions.forEach((question) => {\n question.questionNumber = questionNumber++;\n question.content = replaceHtml(marked(question.content));\n });\n } else {\n questionNumber = questionNumber + questionLength;\n }\n }\n });\n });\n data.forEach((item) => {\n item.sentences.forEach((ele) => {\n //每一项的结束时间是下一项的开始时间\n let index = item.sentences.findIndex((child) => child.sequence === ele.sequence + 1)\n if (index >= 0) {\n this.$set(\n ele,\n \"end_millisecond\",\n item.sentences[index].millisecond\n );\n }\n });\n });\n return data;\n },\n\n goJudgeWriting() {\n window.open(\n \"https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-13284260798.47.73444236yEs0v2&id=526295928116&rn=3e0b8845eb4cfa9ca1b58bda2bca4a09&abbucket=15&sku_properties=14829532:8867565487\"\n );\n },\n formatQuestionAndAnswer(questions, answers, spentSecond) {\n let questionCount = 0;\n let correctCount = 0;\n let routeType = this.$route.query.type == 3; //是否是模考\n questions.forEach((part) => {\n part.title = \"Part \" + part.number;\n part.groups.forEach((group) => {\n questionCount += group.questions.length;\n group.questions.forEach((question) => {\n //如果type是12,就是多选题算两道题\n if (question.type == 12) {\n questionCount += question.answer.length - 1;\n }\n correctCount = 0;\n question.part = part.part;\n if (routeType) {\n //模考数据处理\n answers.forEach((answer) => {\n if (answer.is_correct) {\n correctCount++;\n }\n if (question.id === answer.question_id) {\n this.$set(\n question,\n \"word_count\",\n answer && answer.word_count\n );\n this.$set(question, \"is_correct\", answer.is_correct);\n this.$set(question, \"myAnswer\", answer.answer);\n this.$set(question, \"essayCorrectReportRecordId\", answer.essay_correct_report_record_id || null);\n }\n });\n } else {\n //非模考数据处理\n this.$store.commit(\"no_mock_answer_data\", answers);\n answers.answers.forEach((answer) => {\n if (answer.is_correct) {\n correctCount++;\n }\n if (question.id === answer.question_id) {\n this.$set(\n question,\n \"word_count\",\n answer && answer.word_count\n );\n this.$set(question, \"is_correct\", answer.is_correct);\n this.$set(question, \"myAnswer\", answer.answer);\n this.$set(question, \"essayCorrectReportRecordId\", answer.essay_correct_report_record_id || null);\n }\n });\n }\n });\n });\n });\n let questionData = {\n spent_second: routeType ? spentSecond : answers.spent_second, //模考从details取spent_second,练习answers取spent_second\n questions: questions,\n correctCount: correctCount,\n questionCount: questionCount,\n wrongCount: routeType\n ? answers.length - correctCount\n : answers.answers.length - correctCount, //模考answers是数组,练习answers是对象\n };\n return questionData;\n },\n goGrade() {\n window.open(\n \"https://detail.tmall.com/item.htm?abbucket=15&id=526295928116&rn=3e0b8845eb4cfa9ca1b58bda2bca4a09&spm=a1z10.3-b.w4011-13284260798.47.73444236yEs0v2\"\n );\n },\n ...mapActions([\"setAnalysisMode\", \"setMockDetails\"]),\n },\n watch: {\n routeQuestionId(newSum) {\n if (newSum) {\n this.$router.push(\n {\n path: this.$route.path,\n query: {\n ...this.$route.query,\n questionId: newSum,\n },\n params: {\n ...this.$route.params,\n },\n },\n () => { }\n );\n }\n },\n },\n components: {\n listen,\n reading,\n writing,\n parts,\n player,\n pie,\n TableQuestion,\n centerTopBar,\n },\n};\n","\n \n
\n
\n
\n
\n
\n
你的模考分数
\n
\n
\n
听力
\n
\n {{ listenDetail && listenDetail?.score }}\n
\n
\n 0\n
\n
\n 听力报告\n
\n
\n\n
\n
阅读
\n
\n {{ readDetail && readDetail.score }}\n
\n
\n 0\n
\n
\n 阅读报告\n
\n
\n\n
\n
写作
\n
\n 去评分\n \n \n \n
\n
\n 写作报告\n
\n
\n
\n
\n
\n\n
\n
你的正确率
\n
\n
\n
听力
\n
\n 正确率\n \n {{\n (\n (listenDetail.correct_question_count /\n listenDetail.question_count) *\n 100\n ).toFixed(0)\n }}%\n \n
\n
\n 正确率\n 0%\n
\n
\n 正确数量\n {{ listenDetail.correct_question_count }}/{{\n listenDetail.question_count\n }}\n
\n
\n 正确数量\n 0/40\n
\n
\n
\n
阅读
\n
\n 正确率\n \n {{\n (\n (readDetail.correct_question_count /\n readDetail.question_count) *\n 100\n ).toFixed(0)\n }}%\n \n
\n
\n 正确率\n 0%\n
\n
\n 正确数量\n {{ readDetail.correct_question_count }}/{{\n readDetail.question_count\n }}\n
\n
\n 正确数量\n 0/40\n
\n
\n
\n
\n
\n\n
\n
本站学员平均分
\n
\n
\n
\n 听力 {{ overViewData?.avg_scores[0]?.score }} ({{\n overViewData?.avg_scores[0]?.correct_count\n }}/40)\n
\n
\n 听力 0.0 (0/40)\n
\n
\n 阅读 {{ overViewData?.avg_scores[1]?.score }} ({{\n overViewData?.avg_scores[1]?.correct_count\n }}/40)\n
\n
阅读 0.0 (0/40)
\n
\n
\n 你打败了\n {{ overViewData.over_percent }}%\n 的学员\n
\n
\n 你打败了\n 0%\n 的学员\n
\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./report.vue?vue&type=template&id=8086354a&\"\nimport script from \"./report.vue?vue&type=script&lang=js&\"\nexport * from \"./report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./report.vue?vue&type=style&index=0&id=8086354a&prod&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AiCorrection.vue?vue&type=style&index=0&id=5d34bc7b&prod&scoped=true&lang=less&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./analysisCart.vue?vue&type=style&index=0&id=24373818&prod&lang=less&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./consumeDialog.vue?vue&type=style&index=0&id=5d5433a0&prod&lang=css&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./unlockBox.vue?vue&type=style&index=0&id=1fb3ce32&prod&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./parts.vue?vue&type=style&index=0&id=0347c52a&prod&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=style&index=0&id=8086354a&prod&lang=less&\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pop.vue?vue&type=style&index=0&id=448aae7e&prod&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./listen.vue?vue&type=style&index=0&id=1d93383e&prod&lang=less&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TableQuestion.vue?vue&type=style&index=0&id=1fc0a572&prod&lang=less&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/style-resources-loader/lib/index.js??ref--11-oneOf-1-4!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./reading.vue?vue&type=style&index=0&id=0dc41a02&prod&lang=less&scoped=true&\""],"sourceRoot":""}