From 96fc14f8a8a2ddebeda887f30c902a51bb97b61a Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期二, 14 五月 2024 21:16:51 +0800
Subject: [PATCH] 增加页面跳转

---
 src/main.js                                                  |    9 +++++----
 src/books/childHealth/view/content/components/chapter005.vue |    2 +-
 src/books/childHealth/view/content/index.vue                 |   40 +++++++++++++++++++++++++++++++++++++++-
 3 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/src/books/childHealth/view/content/components/chapter005.vue b/src/books/childHealth/view/content/components/chapter005.vue
index 6093340..a8068dd 100644
--- a/src/books/childHealth/view/content/components/chapter005.vue
+++ b/src/books/childHealth/view/content/components/chapter005.vue
@@ -52,7 +52,7 @@
       </div>
     </div>
     <!-- 100 -->
-    <div class="page-box">
+    <div class="page-box" page="100">
       <even-header :num="100" />
       <div class="padding-96">
         <p>
diff --git a/src/books/childHealth/view/content/index.vue b/src/books/childHealth/view/content/index.vue
index 9972ef9..5f88fe5 100644
--- a/src/books/childHealth/view/content/index.vue
+++ b/src/books/childHealth/view/content/index.vue
@@ -60,10 +60,21 @@
       this.throttleThreshold,
       { leading: true, trailing: false }
     );
+    // 鎻愪緵椤甸潰璺宠浆鍔熻兘
+    if (this.setGlobalState) {
+      this.setGlobalState({
+        gotoPage: (catalog, page) => {
+          this.gotoPage(catalog, page);
+        }
+      });
+    }
+    // 娴嬭瘯椤甸潰璺宠浆
+    // setTimeout(() => {
+    //   this.gotoPage(5, 100);
+    // }, 3000);
   },
   methods: {
     scrollFun(e) {
-
       // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩
       if (event.target.scrollTop > this.previousScrollTop) {
         console.log("鍚戜笅婊氬姩");
@@ -106,6 +117,33 @@
       console.log(this.showCatalogList);
       // 鏇存柊涓婁竴娆℃粴鍔ㄧ殑浣嶇疆
       this.previousScrollTop = event.target.scrollTop;
+    },
+    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(() => {
+          // 璺宠浆椤电爜
+          const pageDom = document.querySelector(`[page="${page}"]`);
+          if (pageDom) {
+            pageDom.scrollIntoView();
+          } else {
+            console.log("椤电爜閿欒锛�");
+          }
+        }, 50);
+      } else {
+        console.log("绔犺妭閿欒锛�");
+      }
     }
   },
   components: {
diff --git a/src/main.js b/src/main.js
index 6e7021d..0079324 100644
--- a/src/main.js
+++ b/src/main.js
@@ -30,7 +30,9 @@
 let instance = null;
 
 function render(props = {}) {
-  const { container } = props;
+  const { container, onGlobalStateChange, setGlobalState } = props;
+  Vue.prototype.onGlobalStateChange = onGlobalStateChange;
+  Vue.prototype.setGlobalState = setGlobalState;
   instance = new Vue({
     // router,
     store,
@@ -56,8 +58,8 @@
 
   props.setGlobalState({
     state: 3, // 搴旂敤鎸傝浇瀹屾垚锛屽悓鏃剁敤浜庤Е鍙戜竴娆tateChange灏唖tate鎸傝浇鍦╲uex褰撲腑
-    bookName:config.activeBook.bookName,
-    bookId:config.activeBook.bookId
+    bookName: config.activeBook.bookName,
+    bookId: config.activeBook.bookId
   });
 
   render(props);
@@ -72,4 +74,3 @@
 // export async function update(props) {
 //   render(props);
 // }
-

--
Gitblit v1.9.1