From ef77d2b27d0de0d01f0f00525325c2bad36eb0a0 Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期四, 20 六月 2024 18:34:05 +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..0bee8ec 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.json")
+        .then((res) => {
+          this.questionId = res.data.data;
+        });
+    },
+    // 鑾峰彇棰樼洰鏀惰棌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