From 27cb2a0c8d0c5414821e92782bc8d133db856d0c Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期六, 12 十月 2024 18:04:30 +0800
Subject: [PATCH] 数学题目

---
 src/books/mathBook/view/components/index.vue |  338 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 226 insertions(+), 112 deletions(-)

diff --git a/src/books/mathBook/view/components/index.vue b/src/books/mathBook/view/components/index.vue
index b135e8a..04469b0 100644
--- a/src/books/mathBook/view/components/index.vue
+++ b/src/books/mathBook/view/components/index.vue
@@ -3,46 +3,47 @@
     <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"
-      ></chapterOne>
-    </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">
+      </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 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";
 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, // 鎬荤珷鑺傛暟
+      catalogLength: 6, // 鎬荤珷鑺傛暟
       showCatalogList: [], // 鏄剧ず鐨勭珷鑺�
       loadThreshold: 300, // 瑙﹀彂鍔犺浇闃堝��
       throttleThreshold: 100, // 鑺傛祦闃堝��
@@ -54,6 +55,8 @@
       questionDataMap: {},
       renderSignMap: {},
       highlightData: null,
+      questionId: {},
+      collectId: [],
     };
   },
   computed: {
@@ -102,7 +105,7 @@
   },
   mounted() {
     // 榛樿鍔犺浇绔犺妭
-    this.showCatalogList = [1];
+    this.showCatalogList = [0];
     // 婊氬姩鐩戝惉鑺傛祦
     this.throttledScrollHandler = _.throttle(
       this.scrollFun,
@@ -158,36 +161,40 @@
     }, 500);
 
     // 娴嬭瘯椤甸潰璺宠浆
-    // setTimeout(() => {
-    //   this.gotoPage(1, 10);
-    //   setTimeout(() => {
-    //     this.renderSign("Highlight", {
-    //       id: "2ACA9359",
-    //       txt: "棰樹竴瀛︿範涓婚涓� 杩愬姩",
-    //       page: "10",
-    //       type: "Highlight",
-    //       color: "#F5E12A"
-    //     });
-    // setTimeout(() => {
-    //   this.delSign({
-    //     ids: ["2ACA9359"]
-    //   });
-    // }, 2000);
-    //   }, 5000);
+    setTimeout(() => {
+      this.gotoPage(4, 157);
+    //   //   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
-    // });
-    // }, 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);
+
+    // 鑾峰彇棰樼洰id鍒楄〃
+    this.getQuestionId();
+    this.getCollect()
   },
   methods: {
     // setZoom1() {
@@ -206,6 +213,9 @@
     // },
     // 婊氬姩鐩戝惉
     scrollFun(event) {
+
+      this.handleVideoPicture()
+
       // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩
       if (event.target.scrollTop > this.previousScrollTop) {
         // 鍚戜笅
@@ -260,6 +270,7 @@
             this.catalogLength - 2,
             this.catalogLength - 1,
             this.catalogLength,
+
           ];
         } else {
           this.showCatalogList = [catalog - 1, catalog, catalog + 1];
@@ -309,7 +320,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) {
@@ -441,8 +455,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.color = themeColor;
         }
@@ -459,8 +473,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.backgroundColor = themeColor;
         }
@@ -477,8 +491,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.borderColor = themeColor;
         }
@@ -537,30 +551,18 @@
             // 娣诲姞椤电爜
             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 +576,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();
@@ -625,12 +630,8 @@
           spaceBetween: 30, // 闂撮殧
           // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
           navigation: {
-            nextEl: (this.container ? this.container : document).querySelector(
-              ".swiper-button-next"
-            ),
-            prevEl: (this.container ? this.container : document).querySelector(
-              ".swiper-button-prev"
-            ),
+            nextEl: dom.querySelector(".swiper-button-next"),
+            prevEl: dom.querySelector(".swiper-button-prev"),
           },
           // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
           observer: true,
@@ -657,12 +658,8 @@
           spaceBetween: 30, // 闂撮殧
           // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
           navigation: {
-            nextEl: (this.container ? this.container : document).querySelector(
-              ".swiper-button-next"
-            ),
-            prevEl: (this.container ? this.container : document).querySelector(
-              ".swiper-button-prev"
-            ),
+            nextEl: dom.querySelector(".swiper-button-next"),
+            prevEl: dom.querySelector(".swiper-button-prev"),
           },
           // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
           observer: true,
@@ -710,11 +707,10 @@
       const pageData = {
         pageHeader,
         chapterOne,
-        // chapterTwo,
-        // chapterThree,
-        // chapterFour,
-        // chapterFive,
-        // chapterSix,
+        chapterTwo,
+        chapterThree,
+        chapterFour,
+        chapterFive,
       };
       // 閬嶅巻鎵�鏈夌珷鑺傛枃浠�
       for (const key in pageData) {
@@ -726,7 +722,7 @@
           propsData: {
             showPageList: [],
             questionData: {},
-            isSearch: true
+            isSearch: true,
           },
         });
         pageExample.$mount(
@@ -758,7 +754,7 @@
               propsData: {
                 showPageList: [pageNum],
                 questionData: {},
-                isSearch: true
+                isSearch: true,
               },
             });
             pageExample.$mount(
@@ -772,7 +768,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();
@@ -811,17 +810,131 @@
       // 璁板綍楂樹寒淇℃伅
       this.highlightData = data;
       // 璺宠浆
-      this.gotoPage(data.catalog, data.page, () => {});
+      this.gotoPage(data.catalog, data.page, () => { });
     },
+    // 鑾峰彇棰樼洰鍒楄〃
+    getQuestionId() {
+      axios
+        .get(this.config.activeBook.resourceUrl + "/question.json")
+        .then((res) => {
+          this.questionId = res.data.data;
+        });
+    },
+    // 鑾峰彇棰樼洰鏀惰棌id鍒楄〃
+    getCollect() {
+      if(!localStorage.getItem(this.config.tokenKey)) return false
+      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
+            }
+          } 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"
+          );
+          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 (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"')
+            }
+            item.isCollect = this.collectId.indexOf(item.id) > -1 ? true : false
+            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 [];
+      }
+    },
+
+    // 瑙嗛灏忕獥
+    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>
@@ -831,6 +944,7 @@
   width: 100%;
   height: 100%;
   overflow: auto;
+
   .page-content {
     max-width: 816px;
     min-width: 375px;

--
Gitblit v1.9.1