From bc1f3bb645daafa84b3a5e70a2331e40137de885 Mon Sep 17 00:00:00 2001 From: litian <2804272236@qq.com> Date: 星期四, 24 四月 2025 17:04:18 +0800 Subject: [PATCH] jiansuojiejue --- src/books/mathBook/view/components/index.vue | 263 +++++++++++++++++++++++++++++++++++----------------- 1 files changed, 177 insertions(+), 86 deletions(-) diff --git a/src/books/mathBook/view/components/index.vue b/src/books/mathBook/view/components/index.vue index 7f749fe..74c5672 100644 --- a/src/books/mathBook/view/components/index.vue +++ b/src/books/mathBook/view/components/index.vue @@ -3,27 +3,61 @@ <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(1) > -1" :showPageList="loadPageList"></pageHeader> - <chapterOne v-if="showCatalogList.indexOf(2) > -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> + <chapterThree + v-if="showCatalogList.indexOf(4) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > + </chapterThree> + <chapterFour + v-if="showCatalogList.indexOf(5) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > + </chapterFour> + <chapterFive + v-if="showCatalogList.indexOf(6) > -1" + :showPageList="loadPageList" + :questionData="questionDataMap" + > + </chapterFive> </div> </div> </template> <script> +import Vue from "vue"; import axios from "axios"; import pageHeader from "./header.vue"; 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 chapterSix from './chapter006.vue' +import chapterTwo from "./chapter002.vue"; +import chapterThree from "./chapter003.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"; @@ -35,7 +69,7 @@ name: "pageContent", data() { return { - catalogLength: 2, // 鎬荤珷鑺傛暟 + catalogLength: 6, // 鎬荤珷鑺傛暟 showCatalogList: [], // 鏄剧ず鐨勭珷鑺� loadThreshold: 300, // 瑙﹀彂鍔犺浇闃堝�� throttleThreshold: 100, // 鑺傛祦闃堝�� @@ -48,7 +82,9 @@ renderSignMap: {}, highlightData: null, questionId: {}, - collectId: [] + collectId: [], + questionDataIndex: 0, // 褰撳墠璇锋眰鐨勬槸鍝釜绔犺妭鐨勯鐩� + questionList: [], // 绔犺妭棰樼洰鍒楄〃 }; }, computed: { @@ -153,40 +189,40 @@ }, 500); // 娴嬭瘯椤甸潰璺宠浆 - setTimeout(() => { - this.gotoPage(1, 9); - // setTimeout(() => { - // this.renderSign("Highlight", { - // id: "2ACA9359", - // txt: "棰樹竴瀛︿範涓婚涓� 杩愬姩", - // page: "10", - // type: "Highlight", - // color: "#F5E12A" - // }); - // setTimeout(() => { - // this.delSign({ - // ids: ["2ACA9359"] - // }); - // }, 2000); - // }, 5000); + // setTimeout(() => { + // this.gotoPage(4,79); + // // setTimeout(() => { + // // this.renderSign("Highlight", { + // // id: "2ACA9359", + // // txt: "棰樹竴瀛︿範涓婚涓� 杩愬姩", + // // page: "10", + // // type: "Highlight", + // // color: "#F5E12A" + // // }); + // // setTimeout(() => { + // // this.delSign({ + // // ids: ["2ACA9359"] + // // }); + // // }, 2000); + // // }, 5000); - // const pageDom = (this.container ? this.container : document) - // .querySelector("#app") - // .querySelectorAll(".page-box"); - // 妫�绱� - // console.log(this.searchTextByPage("淇濇姢鍐呰剰鍣ㄥ畼"), "searchTextByPage"); - // 妫�绱㈣烦杞� - // this.searchItemLocation({ - // catalog: 2, - // page: 10, - // txt: " 杩愬姩绯荤粺鏄敱楠ㄣ�侀杩炵粨鍜岄楠艰倢涓夐儴鍒嗙粍鎴愮殑銆傚叏韬殑楠ㄩ�氳繃楠ㄨ繛缁撶粍鎴愪汉浣撻楠硷紙瑙佸浘1-1锛夈�傞楠兼槸浜轰綋鐨勬敮鏋讹紝鍏锋湁淇濇姢鍐呰剰鍣ㄥ畼銆佷緵鑲岃倝闄勭潃鍜屼綔涓鸿倢鑲夎繍鍔ㄧ殑鏉犳潌绛変綔鐢ㄣ�傚湪绁炵粡绯荤粺鐨勬敮閰嶄笅锛岃倢鑲夋敹缂╃壍鍔ㄦ墍闄勭潃鐨勯缁曠潃鍏宠妭杞姩锛屼娇韬綋浜х敓鍚勭鍔ㄤ綔銆傛墍浠ワ紝杩愬姩绯荤粺鍏锋湁杩愬姩銆佹敮鎸佸拰淇濇姢绛夊姛鑳斤紝骞煎勾鏃舵湡鐨勯楠艰繕鍏锋湁閫犺鍔熻兘銆� ", - // txtIndex: 57 - // }); - }, 500); + // // const pageDom = (this.container ? this.container : document) + // // .querySelector("#app") + // // .querySelectorAll(".page-box"); + // // 妫�绱� + // // console.log(this.searchTextByPage("淇濇姢鍐呰剰鍣ㄥ畼"), "searchTextByPage"); + // // 妫�绱㈣烦杞� + // // this.searchItemLocation({ + // // catalog: 2, + // // page: 10, + // // txt: " 杩愬姩绯荤粺鏄敱楠ㄣ�侀杩炵粨鍜岄楠艰倢涓夐儴鍒嗙粍鎴愮殑銆傚叏韬殑楠ㄩ�氳繃楠ㄨ繛缁撶粍鎴愪汉浣撻楠硷紙瑙佸浘1-1锛夈�傞楠兼槸浜轰綋鐨勬敮鏋讹紝鍏锋湁淇濇姢鍐呰剰鍣ㄥ畼銆佷緵鑲岃倝闄勭潃鍜屼綔涓鸿倢鑲夎繍鍔ㄧ殑鏉犳潌绛変綔鐢ㄣ�傚湪绁炵粡绯荤粺鐨勬敮閰嶄笅锛岃倢鑲夋敹缂╃壍鍔ㄦ墍闄勭潃鐨勯缁曠潃鍏宠妭杞姩锛屼娇韬綋浜х敓鍚勭鍔ㄤ綔銆傛墍浠ワ紝杩愬姩绯荤粺鍏锋湁杩愬姩銆佹敮鎸佸拰淇濇姢绛夊姛鑳斤紝骞煎勾鏃舵湡鐨勯楠艰繕鍏锋湁閫犺鍔熻兘銆� ", + // // txtIndex: 57 + // // }); + // }, 500); // 鑾峰彇棰樼洰id鍒楄〃 this.getQuestionId(); - this.getCollect() + this.getCollect(); }, methods: { // setZoom1() { @@ -205,6 +241,7 @@ // }, // 婊氬姩鐩戝惉 scrollFun(event) { + this.handleVideoPicture(); // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩 if (event.target.scrollTop > this.previousScrollTop) { // 鍚戜笅 @@ -443,8 +480,8 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.color = themeColor; } @@ -461,8 +498,8 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.backgroundColor = themeColor; } @@ -479,15 +516,14 @@ page && pageThemeColor && pageThemeColor[page] ? pageThemeColor[page] : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum] - ? chapterThemeColor[chapterNum] - : bookThemeColor; + ? chapterThemeColor[chapterNum] + : bookThemeColor; if (themeColor) { domItem.style.borderColor = themeColor; } }); }, getParentWithClass(element, className) { - console.log(element, className, "element, className"); while (element.parentElement) { element = element.parentElement; if (element.classList.contains(className)) { @@ -542,8 +578,20 @@ 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('棰樼洰',this.questionDataMap); } } } @@ -691,11 +739,10 @@ const pageData = { pageHeader, chapterOne, - // chapterTwo, - // chapterThree, - // chapterFour, - // chapterFive, - // chapterSix, + chapterTwo, + chapterThree, + chapterFour, + chapterFive, }; // 閬嶅巻鎵�鏈夌珷鑺傛枃浠� for (const key in pageData) { @@ -795,7 +842,7 @@ // 璁板綍楂樹寒淇℃伅 this.highlightData = data; // 璺宠浆 - this.gotoPage(data.catalog, data.page, () => { }); + this.gotoPage(data.catalog, data.page, () => {}); }, // 鑾峰彇棰樼洰鍒楄〃 getQuestionId() { @@ -807,6 +854,7 @@ }, // 鑾峰彇棰樼洰鏀惰棌id鍒楄〃 getCollect() { + if (!localStorage.getItem(this.config.tokenKey)) return false; this.MG.identity .getUserKey({ domain: "collectData", @@ -816,17 +864,21 @@ 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(() => { + console.log("index 璇锋眰棰樼洰鏀惰棌id鎶ラ敊"); + }); + console.log('鏀惰棌id',this.collectId); }, // 鑾峰彇绔犺妭棰樼洰 - async getQuestion(num, page) { + async getQuestion(num, page, questionIndex) { let cardList = [ { catalogName: "鍗曢�夐", @@ -848,38 +900,62 @@ catalogName: "绠�绛旈", infoList: [], }, + ]; if (this.questionId) { if (this.questionId[num] && this.questionId[num][page]) { - const res = await axios.get( - this.config.activeBook.resourceUrl + "/question-" + num + ".json" - ); - if (!res.data.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; + } + 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" ||item.questionType == "formula") { + if(typeof item.userAnswer != 'string') console.log('澶辫触',item); cardList[4].infoList.push(item); } } @@ -891,15 +967,30 @@ 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); + if (playVudio) { + const bottomGap = playVudio.getBoundingClientRect().bottom; + const topGap = playVudio.getBoundingClientRect().top; + if (bottomGap < 0 || topGap > window.innerHeight) { + playVudio.requestPictureInPicture(); + } + } + }, }, components: { pageHeader, chapterOne, - // chapterTwo, - // chapterThree, - // chapterFour, - // chapterFive, - // chapterSix, + chapterTwo, + chapterThree, + chapterFour, + chapterFive, }, }; </script> -- Gitblit v1.9.1