yiming
2024-08-30 cb473a93039981b8dee32543f473f2cd408460e7
src/books/mathBook/view/components/index.vue
@@ -8,9 +8,18 @@
      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">
      <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">
      </chapterThree>
      <chapterFour v-if="showCatalogList.indexOf(5) > -1" :showPageList="loadPageList">
      </chapterFour>
      <chapterFive v-if="showCatalogList.indexOf(6) > -1" :showPageList="loadPageList">
      </chapterFive>
    </div>
  </div>
</template>
@@ -19,10 +28,10 @@
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 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 NoteIcon from "@/assets/images/biji.png";
import _ from "lodash";
@@ -35,7 +44,7 @@
  name: "pageContent",
  data() {
    return {
      catalogLength: 2, // 总章节数
      catalogLength: 6, // 总章节数
      showCatalogList: [], // 显示的章节
      loadThreshold: 300, // 触发加载阈值
      throttleThreshold: 100, // 节流阈值
@@ -97,7 +106,7 @@
  },
  mounted() {
    // 默认加载章节
    this.showCatalogList = [1];
    this.showCatalogList = [0];
    // 滚动监听节流
    this.throttledScrollHandler = _.throttle(
      this.scrollFun,
@@ -153,36 +162,36 @@
    }, 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);
    //   this.gotoPage(2, 8);
    //   //   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();
@@ -205,6 +214,9 @@
    // },
    // 滚动监听
    scrollFun(event) {
      this.handleVideoPicture()
      // 判断向上滚动还是向下滚动
      if (event.target.scrollTop > this.previousScrollTop) {
        // 向下
@@ -259,6 +271,7 @@
            this.catalogLength - 2,
            this.catalogLength - 1,
            this.catalogLength,
          ];
        } else {
          this.showCatalogList = [catalog - 1, catalog, catalog + 1];
@@ -540,9 +553,13 @@
            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);
                }
              }
@@ -691,11 +708,11 @@
      const pageData = {
        pageHeader,
        chapterOne,
        // chapterTwo,
        // chapterThree,
        // chapterFour,
        // chapterFive,
        // chapterSix,
        chapterTwo,
        chapterThree,
        chapterFour,
        chapterFive,
      };
      // 遍历所有章节文件
      for (const key in pageData) {
@@ -803,6 +820,7 @@
        .get(this.config.activeBook.resourceUrl + "/question.json")
        .then((res) => {
          this.questionId = res.data.data;
        });
    },
    // 获取题目收藏id列表
@@ -827,6 +845,7 @@
    },
    // 获取章节题目
    async getQuestion(num, page) {
      // debugger
      let cardList = [
        {
          catalogName: "单选题",
@@ -854,9 +873,17 @@
          const res = await axios.get(
            this.config.activeBook.resourceUrl + "/question-" + num + ".json"
          );
          if (!res.data.data) return [];
          console.log(1, res);
          // debugger
          if (!res.data) return [];
          // debugger
          for (let index = 0; index < res.data.data.length; index++) {
            const item = res.data.data[index];
            // debugger
            // 数学公式加类名去修改样式
            if (item.type && item.type == 'material') {
              if (!item.infoList.length) return false
@@ -867,6 +894,7 @@
              if (item.answer) item.answer = item.answer.replace(/\<math/gi, '<math class="examination-math"')
            }
            item.isCollect = this.collectId.indexOf(item.id) > -1 ? true : false
            // debugger
            if (this.questionId[num][page].indexOf(item.id) > -1) {
              if (item.type && item.type == "material") {
                cardList.push(item);
@@ -885,21 +913,44 @@
              }
            }
          }
          console.log(cardList.filter((item) => item.infoList.length > 0));
          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>