From f109a7f75ddc1bbec14df4b92efc01bae208ad8c Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期四, 20 六月 2024 17:54:36 +0800 Subject: [PATCH] 答题器优化 --- src/books/mathBook/view/components/index.vue | 174 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 127 insertions(+), 47 deletions(-) diff --git a/src/books/mathBook/view/components/index.vue b/src/books/mathBook/view/components/index.vue index d608cce..415d301 100644 --- a/src/books/mathBook/view/components/index.vue +++ b/src/books/mathBook/view/components/index.vue @@ -18,13 +18,14 @@ <chapterOne v-if="showCatalogList.indexOf(2) > -1" :showPageList="loadPageList" + :questionData="questionDataMap" ></chapterOne> </div> - </div> </template> <script> +import axios from "axios"; import pageHeader from "./header.vue"; import chapterOne from "./chapter001.vue"; // import chapterTwo from "./chapter002.vue"; @@ -38,8 +39,9 @@ import "swiper/swiper-bundle.css"; import Viewer from "viewerjs"; import "viewerjs/dist/viewer.css"; +import getQuestionList from "@/assets/methods/examination"; export default { - name:"pageContent", + name: "pageContent", data() { return { catalogLength: 2, // 鎬荤珷鑺傛暟 @@ -54,6 +56,8 @@ questionDataMap: {}, renderSignMap: {}, highlightData: null, + questionId: {}, + collectId:[] }; }, computed: { @@ -188,6 +192,10 @@ // txtIndex: 57 // }); // }, 5000); + + // 鑾峰彇棰樼洰id鍒楄〃 + this.getQuestionId(); + this.getCollect() }, methods: { // setZoom1() { @@ -309,7 +317,10 @@ this.container ? this.container : document ).querySelector(`[page="${data.page}"]`); // 鍒涘缓 createTreeWalker 杩唬鍣紝鐢ㄤ簬閬嶅巻鏂囨湰鑺傜偣锛屼繚瀛樺埌涓�涓暟缁� - const treeWalker = document.createTreeWalker(pageDom, NodeFilter.SHOW_TEXT); + const treeWalker = document.createTreeWalker( + pageDom, + NodeFilter.SHOW_TEXT + ); const allTextNodes = []; let currentNode = treeWalker.nextNode(); while (currentNode) { @@ -537,30 +548,14 @@ // 娣诲姞椤电爜 this.loadPageList.push(Number(page)); const catalog = catalogDom.getAttribute("num"); - // if (!this.questionDataMap[page]) { - // if (testData && testData[catalog]) { - // if (testData[catalog][page]) { - // if (Array.isArray(testData[catalog][page])) { - // this.questionDataMap[page] = await getQuestionList( - // page, - // testData[catalog][page], - // this.config.activeBook - // ); - // } else { - // const obj = {}; - // for (let key in testData[catalog][page]) { - // obj[key] = await getQuestionList( - // [], - // testData[catalog][page][key], - // this.config.activeBook - // ); - // } - // this.questionDataMap[page] = obj; - // } - // console.log("棰樼洰", this.questionDataMap); - // } - // } - // } + 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); + } + } + } // 娓叉煋杩欎竴椤电殑鏍囪 for (const key in this.renderSignMap) { if (this.renderSignMap[key][page]) { @@ -574,7 +569,10 @@ // 楂樹寒琛� setTimeout(() => { // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣 - const pageTextList = document.createTreeWalker(target, NodeFilter.SHOW_TEXT); + const pageTextList = document.createTreeWalker( + target, + NodeFilter.SHOW_TEXT + ); // 鍖归厤鍏抽敭瀛� const allPageTextNodes = []; let currentNode = pageTextList.nextNode(); @@ -618,23 +616,19 @@ autoplay: { //鑷姩寮�濮� delay: 3000, //鏃堕棿闂撮殧 - disableOnInteraction: false //*鎵嬪姩鎿嶄綔杞挱鍥惧悗涓嶄細鏆傚仠* + disableOnInteraction: false, //*鎵嬪姩鎿嶄綔杞挱鍥惧悗涓嶄細鏆傚仠* }, paginationClickable: true, slidesPerView: 1, // 涓�缁勪笁涓� spaceBetween: 30, // 闂撮殧 // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳 navigation: { - nextEl: dom.querySelector( - ".swiper-button-next" - ), - prevEl: dom.querySelector( - ".swiper-button-prev" - ) + nextEl: dom.querySelector(".swiper-button-next"), + prevEl: dom.querySelector(".swiper-button-prev"), }, // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔� observer: true, - observeParents: true + observeParents: true, // // 濡傛灉闇�瑕佸垎椤靛櫒 // pagination: { // el: (this.container ? this.container : document).querySelector( @@ -657,12 +651,8 @@ spaceBetween: 30, // 闂撮殧 // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳 navigation: { - nextEl: dom.querySelector( - ".swiper-button-next" - ), - prevEl: dom.querySelector( - ".swiper-button-prev" - ) + nextEl: dom.querySelector(".swiper-button-next"), + prevEl: dom.querySelector(".swiper-button-prev"), }, // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔� observer: true, @@ -681,8 +671,8 @@ var paginationInfoEl = dom.querySelector(".pageBox"); if (paginationInfoEl) paginationInfoEl.textContent = currentPage + "/" + totalPages; - } - } + }, + }, }); } }, @@ -726,7 +716,7 @@ propsData: { showPageList: [], questionData: {}, - isSearch: true + isSearch: true, }, }); pageExample.$mount( @@ -758,7 +748,7 @@ propsData: { showPageList: [pageNum], questionData: {}, - isSearch: true + isSearch: true, }, }); pageExample.$mount( @@ -772,7 +762,10 @@ .querySelector(`[page="${pageNum}"]`); if (thisPageDom) { // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣 - const pageTextList = document.createTreeWalker(thisPageDom, NodeFilter.SHOW_TEXT); + const pageTextList = document.createTreeWalker( + thisPageDom, + NodeFilter.SHOW_TEXT + ); // 鍖归厤鍏抽敭瀛� const allPageTextNodes = []; let currentNode = pageTextList.nextNode(); @@ -813,6 +806,93 @@ // 璺宠浆 this.gotoPage(data.catalog, data.page, () => {}); }, + // 鑾峰彇棰樼洰鍒楄〃 + getQuestionId() { + axios + .get(this.config.activeBook.resourceUrl + "/question-list.json") + .then((res) => { + this.questionId = res.data.list; + }); + }, + // 鑾峰彇棰樼洰鏀惰棌id鍒楄〃 + getCollect() { + this.MG.identity + .getUserKey({ + domain: "collectData", + keys: [this.config.activeBook.bookId], + }) + .then((res) => { + try { + const collect = JSON.parse(res[0].value); + if (collect.length) { + this.collectId = collect.find(item => item.type == 'json').collectList + console.log('鏀惰棌鍒楄〃',this.collectId); + } + } catch (error) { + console.log("鏆傛棤鏁版嵁"); + } + }).catch(res => { + console.log('index 璇锋眰棰樼洰鏀惰棌id鎶ラ敊'); + }) + }, + // 鑾峰彇绔犺妭棰樼洰 + async getQuestion(num, page) { + let cardList = [ + { + catalogName: "鍗曢�夐", + infoList: [], + }, + { + catalogName: "鍒ゆ柇棰�", + infoList: [], + }, + { + catalogName: "澶氶�夐", + infoList: [], + }, + { + catalogName: "濉┖棰�", + infoList: [], + }, + { + 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]; + item.isCollect = this.collectId.indexOf(item.id) > -1 ? true :false + console.log(item.id ,this.collectId.indexOf(item.id)); + if (this.questionId[num][page].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") { + cardList[0].infoList.push(item); + } else if (item.questionType == "multipleChoice") { + cardList[2].infoList.push(item); + } else if (item.questionType == "completion") { + cardList[3].infoList.push(item); + } else if (item.questionType == "shortAnswer") { + cardList[4].infoList.push(item); + } + } + } + } + return cardList.filter((item) => item.infoList.length > 0); + } + } else { + return []; + } + }, }, components: { pageHeader, -- Gitblit v1.9.1