闫增涛
2024-05-27 1b89c6d9b6626e09cf3c30a2f2d7354c9f18151f
src/books/lifeCare/index.vue
@@ -1,46 +1,41 @@
<template>
  <div
    class="public-books"
    @mouseup="handleMouseUp"
    :style="{
      fontSize: fontSize ? fontSize + 'px' : '16px',
      transform: `scale(${pageZoom ? pageZoom : 1})`,
    }"
  >
    <front001 v-if="showCatalogList.indexOf(0) > -1" />
    <front002 v-if="showCatalogList.indexOf(0) > -1" />
    <front003 v-if="showCatalogList.indexOf(0) > -1" />
    <front004  v-if="showCatalogList.indexOf(0) > -1"/>
    <front005 v-if="showCatalogList.indexOf(0) > -1" />
    <front006 v-if="showCatalogList.indexOf(0) > -1" />
    <ChapterOne v-if="showCatalogList.indexOf(1) > -1" />
    <ChapterTwo v-if="showCatalogList.indexOf(2) > -1" />
    <ChapterThree v-if="showCatalogList.indexOf(3) > -1" />
    <ChapterFour v-if="showCatalogList.indexOf(4) > -1" />
    <ChapterFive  v-if="showCatalogList.indexOf(5) > -1" />
    <chapterSix v-if="showCatalogList.indexOf(6) > -1" />
    <!-- <chapterSeven /> -->
    <!-- <chapterEight /> -->
    <!-- <chapterNine /> -->
    <!-- <chapter010 /> -->
    <!-- <chapter011 /> -->
    <!-- <chapter012 /> -->
    <!-- <chapter013 /> -->
    <!-- <chapter014 /> -->
    <!-- <chapter015 /> -->
    <!-- <chapter016 /> -->
    <!-- <chapter017 /> -->
    <!-- <topic008 /> -->
  <div class="page-main" @scroll="throttledScrollHandler">
    <div
      class="public-books"
      @mouseup="handleMouseUp"
      :style="{
        fontSize: fontSize ? fontSize + 'px' : '16px',
        transform: `scale(${pageZoom ? pageZoom : 1})`,
      }"
    >
      <div style="width: 100%; height: 800px;">
        <drawflow />
      </div>
      <front001 v-if="showCatalogList.indexOf(0) > -1" />
      <ChapterOne v-if="showCatalogList.indexOf(1) > -1" />
      <ChapterTwo v-if="showCatalogList.indexOf(2) > -1" />
      <ChapterThree v-if="showCatalogList.indexOf(3) > -1" />
      <ChapterFour v-if="showCatalogList.indexOf(4) > -1" />
      <ChapterFive v-if="showCatalogList.indexOf(5) > -1" />
      <chapterSix v-if="showCatalogList.indexOf(6) > -1" />
      <chapterSeven v-if="showCatalogList.indexOf(7) > -1" />
      <chapterEight v-if="showCatalogList.indexOf(8) > -1" />
      <chapterNine v-if="showCatalogList.indexOf(9) > -1" />
      <chapter010 v-if="showCatalogList.indexOf(10) > -1" />
      <chapter011 v-if="showCatalogList.indexOf(11) > -1" />
      <chapter012 v-if="showCatalogList.indexOf(12) > -1" />
      <chapter013 v-if="showCatalogList.indexOf(13) > -1" />
      <chapter014 v-if="showCatalogList.indexOf(14) > -1" />
      <chapter015 v-if="showCatalogList.indexOf(15) > -1" />
      <chapter016 v-if="showCatalogList.indexOf(16) > -1" />
      <chapter017 v-if="showCatalogList.indexOf(17) > -1" />
      <chapter018 v-if="showCatalogList.indexOf(18) > -1" />
    </div>
  </div>
</template>
<script>
import front001 from "./view/front001";
import front002 from "./view/front002";
import front003 from "./view/front003";
import front004 from "./view/front004";
import front005 from "./view/front005";
import front006 from "./view/front006";
import ChapterOne from "./view/chapter001";
import ChapterTwo from "./view/chapter002";
import ChapterThree from "./view/chapter003";
@@ -58,19 +53,21 @@
import chapter015 from "./view/chapter015";
import chapter016 from "./view/chapter016";
import chapter017 from "./view/chapter017";
import chapter018 from "./view/chapter018";
import NoteIcon from "@/assets/images/biji.png";
import drawflow from "@/components/drawflow";
import _ from "lodash";
export default {
  name: "temp-book",
  data() {
    return {
      catalogLength: 13, // 总章节数
      catalogLength: 18, // 总章节数
      showCatalogList: [], // 显示的章节
      loadThreshold: 300, // 触发加载阈值
      throttleThreshold: 100, // 节流阈值
      previousScrollTop: 0,
      throttledScrollHandler: null,
      observer: null
    }
      observer: null,
    };
  },
  watch: {
    showCatalogList: {
@@ -81,20 +78,21 @@
        ) {
          // 调用父层方法
          this.$store.state.qiankun.catalogChange({
            showCatalogList: newVal
            showCatalogList: newVal,
          });
        }
        // 启动页码观察
        setTimeout(() => {
          this.initObservation();
          this.initThemeColor();
        }, 500);
      }
    }
      },
    },
  },
  mounted() {
        // 默认加载章节
        this.showCatalogList = [0];
    // 默认加载章节
    this.showCatalogList = [0];
    // 滚动监听节流
    this.throttledScrollHandler = _.throttle(
      this.scrollFun,
@@ -115,7 +113,7 @@
        // 删除笔记、高亮、划线
        delSign: (data) => {
          this.delSign(data);
        }
        },
      });
    }
@@ -124,7 +122,7 @@
    this.observer = new IntersectionObserver(this.pageChangeCallback, {
      root: null, // 指定根元素,这里设为 null,表示选取整个视窗作为根元素。
      rootMargin: "0px", // 指定根元素的边界,这里设为 "0px",表示根元素的边界和视窗的边界重合
      threshold: 0.5 // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。
      threshold: 0.5, // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。
    });
    // 启动页码观察
@@ -153,12 +151,8 @@
    // }, 3000);
  },
  components: {
    drawflow,
    front001,
    front002,
    front003,
    front004,
    front005,
    front006,
    ChapterOne,
    ChapterTwo,
    ChapterThree,
@@ -176,6 +170,7 @@
    chapter015,
    chapter016,
    chapter017,
    chapter018,
  },
  computed: {
    fontSize() {
@@ -237,14 +232,14 @@
      }
    },
        // 滚动监听
        scrollFun(event) {
    // 滚动监听
    scrollFun(event) {
      // 判断向上滚动还是向下滚动
      if (event.target.scrollTop > this.previousScrollTop) {
        // 向下
        const currentScrollTop =
          event.target.scrollTop + event.target.offsetHeight;
        if (
          currentScrollTop >=
          event.target.scrollHeight - this.loadThreshold
@@ -293,7 +288,7 @@
          this.showCatalogList = [
            this.catalogLength - 2,
            this.catalogLength - 1,
            this.catalogLength
            this.catalogLength,
          ];
        } else {
          this.showCatalogList = [catalog - 1, catalog, catalog + 1];
@@ -344,7 +339,7 @@
            // 笔记
            pageDom.innerHTML = pageDom.innerHTML.replace(
              reg,
              `<span datatype="Note" dataid="${data.id}" style="border-bottom-color:${data.color}" class="notesline" onclick="signClick('Note','${data.id}','${data.chapterNum}')">${data.txt}<img src="${NoteIcon}" style="cursor: pointer" /></span>`
              `<span datatype="Note" dataid="${data.id}" style="border-bottom-color:${data.color}" class="notesline" onclick="signClick('Note','${data.id}','${data.chapterNum}')" onmouseover="noteHover('Note','${data.id}','${data.chapterNum}')">${data.txt}<img src="${NoteIcon}" style="cursor: pointer" /></span>`
            );
            break;
        }
@@ -401,7 +396,6 @@
      const borderColorDom = (
        this.container ? this.container : document
      ).querySelectorAll(".theme-border");
      console.log(this.config,'this.configthis.config');
      // 获取配置的主题色
      const bookThemeColor =
        this.config.activeBook && this.config.activeBook.bookThemeColor
@@ -491,12 +485,11 @@
            "chapter"
          );
          const catalog = catalogDom.getAttribute("num");
          console.log("page", page, catalog);
          // 返回页码和章节信息
          if (this.$store.state.qiankun && this.$store.state.qiankun.pageChange)
            this.$store.state.qiankun.pageChange({
              page: page,
              catalog: catalog
              catalog: catalog,
            });
          // const sections = Array.from(document.querySelectorAll(".section"));
          //sections:获取所有具有 .section 类名的元素,并转换为数组。
@@ -504,11 +497,11 @@
          //index:查找当前目标元素在 sections 数组中的索引,并加 1,用于确定当前页码。
        }
      });
    }
    },
  },
};
</script>
<style lang="less">
@import './css/default.less';
@import "./css/default.less";
</style>