1
YM
2024-05-15 6fc787dfbd55fc0b9aa4b84b0781f9f2825ffd1f
src/books/childHealth/view/content/index.vue
@@ -3,7 +3,6 @@
    <div class="page-content">
      <pageHeader v-if="showCatalogList.indexOf(0) > -1"></pageHeader>
      <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne>
      <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne>
      <chapterTwo v-if="showCatalogList.indexOf(2) > -1"></chapterTwo>
      <chapterThree v-if="showCatalogList.indexOf(3) > -1"></chapterThree>
      <chapterFour v-if="showCatalogList.indexOf(4) > -1"></chapterFour>
@@ -37,9 +36,7 @@
import chapterEleven from "./components/chapter011.vue";
import chapterTwelve from "./components/chapter012.vue";
import chapterThirteen from "./components/chapter013.vue";
import _ from "lodash";
export default {
  data() {
    return {
@@ -51,6 +48,18 @@
      throttledScrollHandler: null
    };
  },
  watch: {
    showCatalogList: {
      handler(newVal) {
        if (this.$store.state.qiankun && this.$store.state.qiankun.catalogChange) {
          // 调用父层方法
          this.$store.state.qiankun.catalogChange({
            showCatalogList: newVal
          });
        }
      }
    }
  },
  mounted() {
    // 默认加载章节
    this.showCatalogList = [0];
@@ -60,13 +69,26 @@
      this.throttleThreshold,
      { leading: true, trailing: false }
    );
    // 提供页面跳转功能
    if (this.setGlobalState) {
      // 定义子层方法
      this.setGlobalState({
        gotoPage: (catalog, page) => {
          console.log(catalog, page, "gotoPage:catalog, page");
          this.gotoPage(catalog, page);
        }
      });
    }
    // 测试页面跳转
    // setTimeout(() => {
    //   this.gotoPage(5, 100);
    // }, 3000);
  },
  methods: {
    scrollFun(e) {
      // 判断向上滚动还是向下滚动
      if (event.target.scrollTop > this.previousScrollTop) {
        console.log("向下滚动");
        const currentScrollTop =
          event.target.scrollTop + event.target.offsetHeight;
        if (
@@ -89,7 +111,6 @@
          }
        }
      } else if (event.target.scrollTop < this.previousScrollTop) {
        console.log("向上滚动");
        const currentScrollTop = event.target.scrollTop;
        if (currentScrollTop <= this.loadThreshold) {
          // 到达阈值
@@ -103,9 +124,47 @@
          }
        }
      }
      console.log(this.showCatalogList);
      // showCatalogList 当前显示的三个章节,watch监听传递给主应用
      // 更新上一次滚动的位置
      this.previousScrollTop = event.target.scrollTop;
      // 返回页码和章节信息
      if (this.$store.state.qiankun && this.$store.state.qiankun.pageChange)
        this.$store.state.qiankun.pageChange({
          page: 100,
          catalog: 5,
          catalogId: "",
          catalogName: ""
        });
    },
    gotoPage(catalog, page) {
      if (catalog >= 0 && catalog <= this.catalogLength) {
        // 处理渲染章节
        if (catalog == 0) {
          this.showCatalogList = [0, 1];
        } else if (catalog == this.catalogLength) {
          this.showCatalogList = [
            this.catalogLength - 2,
            this.catalogLength - 1,
            this.catalogLength
          ];
        } else {
          this.showCatalogList = [catalog - 1, catalog, catalog + 1];
        }
        setTimeout(() => {
          console.log(document);
          console.log(document.querySelector(`[page="${page}"]`));
          // 跳转页码
          const pageDom = document.querySelector(`[page="${page}"]`);
          if (pageDom) {
            pageDom.scrollIntoView();
          } else {
            console.log("页码错误!");
          }
        }, 100);
      } else {
        console.log("章节错误!");
      }
    }
  },
  components: {