From d6cc07d3e9c19a4f97f770581bc85ee3550a22ba Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期五, 25 十月 2024 16:48:24 +0800 Subject: [PATCH] 数学 --- src/books/mathBook/view/components/index.vue | 190 ++++++++++++++++++++++++++++++----------------- 1 files changed, 122 insertions(+), 68 deletions(-) diff --git a/src/books/mathBook/view/components/index.vue b/src/books/mathBook/view/components/index.vue index 04469b0..6dc4112 100644 --- a/src/books/mathBook/view/components/index.vue +++ b/src/books/mathBook/view/components/index.vue @@ -3,23 +3,48 @@ <div id="searchDomBox" style="display: none"> <div id="searchContent"></div> </div> - <div class="page-content" :style="{ - fontSize: fontSize ? fontSize + 'px' : '16px', - transform: `scale(${pageZoom ? pageZoom : 1})`, - transformOrigin: 'center top', - }"> - <pageHeader v-if="showCatalogList.indexOf(0) > -1" :showPageList="loadPageList"></pageHeader> - <chapterOne v-if="showCatalogList.indexOf(1) > -1" :showPageList="loadPageList" :questionData="questionDataMap"> + <div + class="page-content" + :style="{ + fontSize: fontSize ? fontSize + 'px' : '16px', + transform: `scale(${pageZoom ? pageZoom : 1})`, + transformOrigin: 'center top', + }" + > + <pageHeader + v-if="showCatalogList.indexOf(1) > -1" + :showPageList="loadPageList" + ></pageHeader> + <chapterOne + v-if="showCatalogList.indexOf(2) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > </chapterOne> - <chapterTwo v-if="showCatalogList.indexOf(3) > -1" :showPageList="loadPageList" :questionData="questionDataMap"> + <chapterTwo + v-if="showCatalogList.indexOf(3) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > </chapterTwo> - <chapterThree v-if="showCatalogList.indexOf(4) > -1" :showPageList="loadPageList" :questionData="questionDataMap"> + <chapterThree + v-if="showCatalogList.indexOf(4) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > </chapterThree> - <chapterFour v-if="showCatalogList.indexOf(5) > -1" :showPageList="loadPageList" :questionData="questionDataMap"> + <chapterFour + v-if="showCatalogList.indexOf(5) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > </chapterFour> - <chapterFive v-if="showCatalogList.indexOf(6) > -1" :showPageList="loadPageList" :questionData="questionDataMap"> + <chapterFive + v-if="showCatalogList.indexOf(6) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > </chapterFive> - </div> </div> </template> @@ -30,8 +55,8 @@ import chapterOne from "./chapter001.vue"; import chapterTwo from "./chapter002.vue"; import chapterThree from "./chapter003.vue"; -import chapterFour from './chapter004.vue' -import chapterFive from './chapter005.vue' +import chapterFour from "./chapter004.vue"; +import chapterFive from "./chapter005.vue"; import NoteIcon from "@/assets/images/biji.png"; import _ from "lodash"; import Swiper from "swiper/bundle"; @@ -57,6 +82,8 @@ highlightData: null, questionId: {}, collectId: [], + questionDataIndex: 0, // 褰撳墠璇锋眰鐨勬槸鍝釜绔犺妭鐨勯鐩� + questionList: [], // 绔犺妭棰樼洰鍒楄〃 }; }, computed: { @@ -105,7 +132,7 @@ }, mounted() { // 榛樿鍔犺浇绔犺妭 - this.showCatalogList = [0]; + this.showCatalogList = [1]; // 婊氬姩鐩戝惉鑺傛祦 this.throttledScrollHandler = _.throttle( this.scrollFun, @@ -162,7 +189,7 @@ // 娴嬭瘯椤甸潰璺宠浆 setTimeout(() => { - this.gotoPage(4, 157); + this.gotoPage(4,99); // // setTimeout(() => { // // this.renderSign("Highlight", { // // id: "2ACA9359", @@ -194,7 +221,7 @@ // 鑾峰彇棰樼洰id鍒楄〃 this.getQuestionId(); - this.getCollect() + this.getCollect(); }, methods: { // setZoom1() { @@ -213,9 +240,7 @@ // }, // 婊氬姩鐩戝惉 scrollFun(event) { - - this.handleVideoPicture() - + this.handleVideoPicture(); // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩 if (event.target.scrollTop > this.previousScrollTop) { // 鍚戜笅 @@ -270,7 +295,6 @@ this.catalogLength - 2, this.catalogLength - 1, this.catalogLength, - ]; } else { this.showCatalogList = [catalog - 1, catalog, catalog + 1]; @@ -455,8 +479,8 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.color = themeColor; } @@ -473,8 +497,8 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.backgroundColor = themeColor; } @@ -491,8 +515,8 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.borderColor = themeColor; } @@ -552,15 +576,23 @@ this.loadPageList.push(Number(page)); const catalog = catalogDom.getAttribute("num"); if (!this.questionDataMap[page]) { - if (this.questionId && this.questionId[catalog]) { - if (this.questionId[catalog][page]) { - - this.questionDataMap[page] = await this.getQuestion(catalog, page); - - console.log("棰樼洰", this.questionDataMap); + if (Array.isArray(this.questionId[catalog][page])) { + this.questionDataMap[page] = await this.getQuestion( + catalog, + page, + false + ); + } else { + const obj = {}; + for (let key in this.questionId[catalog][page]) { + obj[key] = await this.getQuestion(catalog, page, key); + } + this.questionDataMap[page] = obj; + } } + console.log(1, this.questionDataMap); } } // 娓叉煋杩欎竴椤电殑鏍囪 @@ -810,7 +842,7 @@ // 璁板綍楂樹寒淇℃伅 this.highlightData = data; // 璺宠浆 - this.gotoPage(data.catalog, data.page, () => { }); + this.gotoPage(data.catalog, data.page, () => {}); }, // 鑾峰彇棰樼洰鍒楄〃 getQuestionId() { @@ -822,7 +854,7 @@ }, // 鑾峰彇棰樼洰鏀惰棌id鍒楄〃 getCollect() { - if(!localStorage.getItem(this.config.tokenKey)) return false + if (!localStorage.getItem(this.config.tokenKey)) return false; this.MG.identity .getUserKey({ domain: "collectData", @@ -832,17 +864,20 @@ try { const collect = JSON.parse(res[0].value); if (collect.length) { - this.collectId = collect.find(item => item.type == 'json').collectList + this.collectId = collect.find( + (item) => item.type == "json" + ).collectList; } } catch (error) { console.log("鏆傛棤鏁版嵁"); } - }).catch(res => { - console.log('index 璇锋眰棰樼洰鏀惰棌id鎶ラ敊'); }) + .catch((res) => { + console.log("index 璇锋眰棰樼洰鏀惰棌id鎶ラ敊"); + }); }, // 鑾峰彇绔犺妭棰樼洰 - async getQuestion(num, page) { + async getQuestion(num, page, questionIndex) { let cardList = [ { catalogName: "鍗曢�夐", @@ -867,36 +902,58 @@ ]; if (this.questionId) { if (this.questionId[num] && this.questionId[num][page]) { - const res = await axios.get( - this.config.activeBook.resourceUrl + "/question-" + num + ".json" - ); - console.log(1, res); - if (!res.data) return []; - for (let index = 0; index < res.data.data.length; index++) { - const item = res.data.data[index]; + if (num != this.questionDataIndex || !this.questionList.length) { + // 鍒ゆ柇褰撳墠绔犺妭鐨勯鐩甹son鏄惁宸茬粡璇锋眰杩� + const res = await axios.get( + this.config.activeBook.resourceUrl + "/question-" + num + ".json" + ); + if (!res.data) return []; + this.questionList = res.data.data; + this.questionDataIndex = res.data.chapterNum; + console.log("绔犺妭鍙�", num, res); + } + let ids = []; + questionIndex + ? (ids = this.questionId[num][page][questionIndex]) + : (ids = this.questionId[num][page]); + for (let index = 0; index < this.questionList.length; index++) { + const item = this.questionList[index]; // 鏁板鍏紡鍔犵被鍚嶅幓淇敼鏍峰紡 - if (item.type && item.type == 'material') { - if (!item.infoList.length) return false - item.infoList.forEach(citem => { - if (citem.answer) citem.answer = citem.answer.replace(/\<math/gi, '<math class="examination-math"') - }) + if (item.type && item.type == "material") { + if (!item.infoList.length) return false; + item.infoList.forEach((citem) => { + if (citem.answer) + citem.answer = citem.answer.replace( + /\<math/gi, + '<math class="examination-math"' + ); + }); } else { - if (item.answer) item.answer = item.answer.replace(/\<math/gi, '<math class="examination-math"') + if (item.answer) + item.answer = item.answer.replace( + /\<math/gi, + '<math class="examination-math"' + ); } - item.isCollect = this.collectId.indexOf(item.id) > -1 ? true : false - if (this.questionId[num][page].indexOf(item.id) > -1) { + item.isCollect = + this.collectId.indexOf(item.id) > -1 ? true : false; + if (ids.indexOf(item.id) > -1) { if (item.type && item.type == "material") { cardList.push(item); } else { if (item.questionType == "judge") { cardList[1].infoList.push(item); - } else if (item.questionType == "singleChoice") { + } + if (item.questionType == "singleChoice") { cardList[0].infoList.push(item); - } else if (item.questionType == "multipleChoice") { + } + if (item.questionType == "multipleChoice") { cardList[2].infoList.push(item); - } else if (item.questionType == "completion") { + } + if (item.questionType == "completion") { cardList[3].infoList.push(item); - } else if (item.questionType == "shortAnswer") { + } + if (item.questionType == "shortAnswer") { cardList[4].infoList.push(item); } } @@ -908,17 +965,14 @@ return []; } }, - // 瑙嗛灏忕獥 handleVideoPicture() { - let doms = ( - this.container ? this.container : document - ).querySelectorAll(".video"); - doms = Array.from(doms) - if (!doms.length) return false - const playVudio = doms - .reverse() - .find((item) => item.paused == false); + let doms = (this.container ? this.container : document).querySelectorAll( + ".video" + ); + doms = Array.from(doms); + if (!doms.length) return false; + const playVudio = doms.reverse().find((item) => item.paused == false); if (playVudio) { const bottomGap = playVudio.getBoundingClientRect().bottom; const topGap = playVudio.getBoundingClientRect().top; @@ -926,7 +980,7 @@ playVudio.requestPictureInPicture(); } } - } + }, }, components: { pageHeader, -- Gitblit v1.9.1