From fe02206b64c4997094fd8371f6b5d439c3f2688f Mon Sep 17 00:00:00 2001
From: unknown <qq1940665526@163.com>
Date: 星期四, 06 六月 2024 11:56:44 +0800
Subject: [PATCH] 优化

---
 src/books/embedded/view/components/chapter001.vue        |   80 ++++--
 src/books/embedded/view/components/index.vue             |  302 ++++++++++++++++++++----
 src/books/artAndDance/view/components/chapter003.vue     |   11 
 src/books/childHealth/view/content/components/header.vue |    2 
 src/books/artAndDance/view/components/chapter001.vue     |   11 
 src/books/artAndDance/view/components/chapter005.vue     |    4 
 /dev/null                                                |   51 ----
 src/books/artAndDance/view/components/header.vue         |    4 
 src/books/artAndDance/view/components/chapter002.vue     |    1 
 src/books/artAndDance/view/components/chapter004.vue     |   11 
 src/books/artAndDance/view/components/index.vue          |  218 ++++++++++++++++-
 src/App.vue                                              |    2 
 src/books/English/view/components/index.vue              |    1 
 13 files changed, 506 insertions(+), 192 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 41998ce..8f7eebb 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -72,7 +72,7 @@
         // embedded
         // english
         // artAndDance
-        this.config.resourceCtx + "sportsAndHealth"
+        this.config.resourceCtx + "english"
       );
       // 娴嬭瘯璇曡30椤�
       // this.activeBook.tryPageCount = 10;
diff --git a/src/books/English/view/components/index.vue b/src/books/English/view/components/index.vue
index 7729adb..884face 100644
--- a/src/books/English/view/components/index.vue
+++ b/src/books/English/view/components/index.vue
@@ -88,7 +88,6 @@
         setTimeout(() => {
           this.initSwiper();
           this.initViewer();
-          // this.getAduio();
         }, 200);
       },
     },
diff --git a/src/books/artAndDance/view/components/chapter001.vue b/src/books/artAndDance/view/components/chapter001.vue
index 85a7ea2..6ff78bb 100644
--- a/src/books/artAndDance/view/components/chapter001.vue
+++ b/src/books/artAndDance/view/components/chapter001.vue
@@ -80,13 +80,8 @@
             x5-playsinline=""
             controls
             class="w100"
+            style="margin-top: 40px;"
           ></video>
-          <p class="center">
-            <img class="img-g" alt="" src="image/i0007-1.jpg" />
-          </p>
-          <h2 class="lefth2" id="b003">
-            <img class="img-gn" alt="" src="image/czysj.jpg" />
-          </h2>
         </div>
         <ul>
           <li class="fl ju-end mr-40">
@@ -109,6 +104,9 @@
           class="w100 mb-40"
         />
         <div class="padding-96">
+          <h2 class="lefth2" id="b003">
+            <img class="img-gn" alt="" src="../../assets/images/czysj.jpg" />
+          </h2>
           <div class="bj1">
             <p class="block">
               <img
@@ -133,7 +131,6 @@
               鍏呭垎鐞嗚В鍙よ瘲琛ㄨ揪鐨勬儏鎰燂紝鏍规嵁宸插鑸炶箞鍏冪礌锛屽垱缂栧甫鏈夐�佸埆鎰忓懗鐨勫崟涓�鑸炶箞鍔ㄤ綔鎴栭�犲瀷鍚с��
             </p>
           </div>
-          <p class="center"><img class="img-0" alt="" src="image/ym.jpg" /></p>
         </div>
         <ul class="pb-box">
           <li class="ml-40">
diff --git a/src/books/artAndDance/view/components/chapter002.vue b/src/books/artAndDance/view/components/chapter002.vue
index b71081b..6fae6b3 100644
--- a/src/books/artAndDance/view/components/chapter002.vue
+++ b/src/books/artAndDance/view/components/chapter002.vue
@@ -115,6 +115,7 @@
             x5-playsinline=""
             controls
             class="w100"
+            style="margin-top: 40px;"
           ></video>
           <h2 class="lefth2 mt-40" id="b007">
             <img class="img-gn" alt="" src="../../assets/images/czysj.jpg" />
diff --git a/src/books/artAndDance/view/components/chapter003.vue b/src/books/artAndDance/view/components/chapter003.vue
index 55d0e3d..22e319f 100644
--- a/src/books/artAndDance/view/components/chapter003.vue
+++ b/src/books/artAndDance/view/components/chapter003.vue
@@ -79,13 +79,8 @@
             x5-playsinline=""
             controls
             class="w100"
+            style="margin-top: 40px;"
           ></video>
-          <p class="center">
-            <img class="img-g" alt="" src="image/i0007-1.jpg" />
-          </p>
-          <h2 class="lefth2" id="b003">
-            <img class="img-gn" alt="" src="image/czysj.jpg" />
-          </h2>
         </div>
         <ul>
           <li class="fl ju-end mr-40">
@@ -108,6 +103,9 @@
           class="w100 mb-40"
         />
         <div class="padding-96">
+          <h2 class="lefth2" id="b003">
+            <img class="img-gn" alt="" src="../../assets/images/czysj.jpg" />
+          </h2>
           <div class="bj1">
             <p class="block">
               <img
@@ -132,7 +130,6 @@
               瑙傚療鐢熸椿涓挀楸艰�呯殑褰㈣薄锛屾牴鎹凡瀛﹁垶韫堝厓绱狅紝鍒涚紪鍑烘柊鐨勫崟涓�鑸炶箞鍔ㄤ綔鎴栬�呴�犲瀷鍚с��
             </p>
           </div>
-          <p class="center"><img class="img-0" alt="" src="image/ym.jpg" /></p>
         </div>
         <ul class="pb-box">
           <li class="ml-40">
diff --git a/src/books/artAndDance/view/components/chapter004.vue b/src/books/artAndDance/view/components/chapter004.vue
index 95c2859..eddb74d 100644
--- a/src/books/artAndDance/view/components/chapter004.vue
+++ b/src/books/artAndDance/view/components/chapter004.vue
@@ -83,13 +83,8 @@
             x5-playsinline=""
             controls
             class="w100"
+            style="margin-top: 40px;"
           ></video>
-          <p class="center">
-            <img class="img-g" alt="" src="image/i0007-1.jpg" />
-          </p>
-          <h2 class="lefth2" id="b003">
-            <img class="img-gn" alt="" src="image/czysj.jpg" />
-          </h2>
         </div>
         <ul>
           <li class="fl ju-end mr-40">
@@ -112,6 +107,9 @@
           class="w100 mb-40"
         />
         <div class="padding-96">
+          <h2 class="lefth2" id="b003">
+            <img class="img-gn" alt="" src="../../assets/images/czysj.jpg" />
+          </h2>
           <div class="bj1">
             <p class="block">
               <img
@@ -136,7 +134,6 @@
               璇锋�濊�冧竴涓嬶紝闄や簡鑸炶箞涓�滃彧鍦ㄦ灞变腑鈥濈殑鍔ㄤ綔涔嬪锛岃繕鏈変粈涔堣垶韫堝姩浣滀篃鍙互浣撶幇杩欏彞璇楃殑鍚箟鍛紵
             </p>
           </div>
-          <p class="center"><img class="img-0" alt="" src="image/ym.jpg" /></p>
         </div>
         <ul class="pb-box">
           <li class="ml-40">
diff --git a/src/books/artAndDance/view/components/chapter005.vue b/src/books/artAndDance/view/components/chapter005.vue
index 9c11b04..bc95185 100644
--- a/src/books/artAndDance/view/components/chapter005.vue
+++ b/src/books/artAndDance/view/components/chapter005.vue
@@ -127,6 +127,9 @@
             class="w100"
             style="margin:38px 0"
           ></video>
+          <h2 class="lefth2" id="b003">
+            <img class="img-gn" alt="" src="../../assets/images/czysj.jpg" />
+          </h2>
           <div class="bj1">
             <p class="block">
               <img
@@ -151,7 +154,6 @@
               鏍规嵁鏈崟鍏冩墍瀛︾殑鑸炶箞鍏冪礌浠ュ強鍙よ瘲瀵撴剰锛屽彂鎸ユ兂璞★紝鍒涚紪鏂扮殑鍗曚竴鑸炶箞鍔ㄤ綔鎴栭�犲瀷鍚с��
             </p>
           </div>
-          <p class="center"><img class="img-0" alt="" src="image/ym.jpg" /></p>
         </div>
         <ul>
           <li class="ml-40">
diff --git a/src/books/artAndDance/view/components/header.vue b/src/books/artAndDance/view/components/header.vue
index f33c54e..eda72e8 100644
--- a/src/books/artAndDance/view/components/header.vue
+++ b/src/books/artAndDance/view/components/header.vue
@@ -11,12 +11,12 @@
     </div>
     <div class="page-box" page="3">
       <div v-if="showPageList.indexOf(3) > -1">
-        <ul class="fl fl-cl ju-bt">
+        <ul class="fl fl-cl ju-bt pg-mh">
           <li>
             <img src="../../assets/images/pageHeader.png" alt="" class="w100" />
           </li>
           <li>
-            <div class="bodystyle">
+            <div class="bodystyle" style="margin-bottom: 100px">
               <h1 id="a003" class="front">缂栧浼�</h1>
               <hr />
               <p>椤俱��銆�闂細<span class="kaiti">褰悏璞°��鍚曡壓鐢�</span></p>
diff --git a/src/books/artAndDance/view/components/index.vue b/src/books/artAndDance/view/components/index.vue
index 628befe..78947f5 100644
--- a/src/books/artAndDance/view/components/index.vue
+++ b/src/books/artAndDance/view/components/index.vue
@@ -1,5 +1,8 @@
 <template>
   <div class="page-main" @scroll="throttledScrollHandler">
+    <div id="searchDomBox" style="display: none">
+      <div id="searchContent"></div>
+    </div>
     <div
       class="page-content"
       :style="{
@@ -13,7 +16,6 @@
         :showPageList="loadPageList"
       ></pageHeader>
       <chapterOne
-        @saveCharacters="saveCharacters"
         v-if="showCatalogList.indexOf(2) > -1"
         :showPageList="loadPageList"
       ></chapterOne>
@@ -69,8 +71,9 @@
       observer: null,
       loadPageObserver: null,
       loadPageList: [],
-      questionData: {},
+      questionDataMap: {},
       renderSignMap: {},
+      highlightData: null,
     };
   },
   computed: {
@@ -108,6 +111,14 @@
         }, 200);
       },
     },
+    pageZoom: {
+      handler(newVal, oldVal) {
+        const scrollBox = (
+          this.container ? this.container : document
+        ).querySelector(".page-main");
+        scrollBox.scrollTop = (scrollBox.scrollTop / oldVal) * newVal;
+      },
+    },
   },
   mounted() {
     // 榛樿鍔犺浇绔犺妭
@@ -134,6 +145,14 @@
         // 鍒犻櫎绗旇銆侀珮浜�佸垝绾�
         delSign: (data) => {
           this.delSign(data);
+        },
+        // 鍏ㄦ枃妫�绱�
+        searchBookByKeyword: (keyword) => {
+          return this.searchTextByPage(keyword);
+        },
+        // 璺宠浆妫�绱㈢粨鏋滀綅缃�
+        jumpSearchItem: (data) => {
+          this.searchItemLocation(data);
         },
       });
     }
@@ -175,9 +194,36 @@
     //   });
     // }, 2000);
     //   }, 5000);
-    // }, 1000);
+
+    // 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
+    // });
+    // }, 5000);
   },
   methods: {
+    // setZoom1() {
+    //   let scale = this.$store.state.qiankun.scale + 10;
+    //   const scrollBox = (
+    //     this.container ? this.container : document
+    //   ).querySelector(".page-main");
+    //   this.$store.commit("setZoom", scale);
+    // },
+    // setZoom2() {
+    //   let scale = this.$store.state.qiankun.scale - 10;
+    //   const scrollBox = (
+    //     this.container ? this.container : document
+    //   ).querySelector(".page-main");
+    //   this.$store.commit("setZoom", scale);
+    // },
     // 婊氬姩鐩戝惉
     scrollFun(event) {
       // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩
@@ -270,6 +316,10 @@
 
     // 娓叉煋鏍囪
     renderSign(type, data) {
+      // 鐖跺眰璁剧疆绂佹娓叉煋鏍囪鏃朵笉鍐嶈繘琛屾覆鏌�
+      if (this.$store.state.qiankun.disableSign) {
+        return false;
+      }
       const existence = (
         this.container ? this.container : document
       ).querySelector(`[dataid="${data.id}"]`);
@@ -279,10 +329,7 @@
           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) {
@@ -458,6 +505,7 @@
       });
     },
     getParentWithClass(element, className) {
+      console.log(element, className, "element, className");
       while (element.parentElement) {
         element = element.parentElement;
         if (element.classList.contains(className)) {
@@ -507,11 +555,11 @@
               "chapter"
             );
             const catalog = catalogDom.getAttribute("num");
-            // if (!this.questionData[page]) {
+            // if (!this.questionDataMap[page]) {
             //   if (testData && testData[catalog]) {
             //     if (testData[catalog][page]) {
             //       if (Array.isArray(testData[catalog][page])) {
-            //         this.questionData[page] = await getQuestionList(
+            //         this.questionDataMap[page] = await getQuestionList(
             //           page,
             //           testData[catalog][page],
             //           this.config.activeBook
@@ -525,9 +573,9 @@
             //             this.config.activeBook
             //           );
             //         }
-            //         this.questionData[page] = obj;
+            //         this.questionDataMap[page] = obj;
             //       }
-            //       console.log("棰樼洰", this.questionData);
+            //       console.log("棰樼洰", this.questionDataMap);
             //     }
             //   }
             // }
@@ -540,6 +588,36 @@
                   this.renderSign(key, item);
                 });
               }
+            }
+            // 澶勭悊楂樹寒
+            if (this.highlightData) {
+              // 楂樹寒琛�
+              setTimeout(() => {
+                // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
+                const pageTextList = document.createTreeWalker(target, NodeFilter.SHOW_TEXT);
+                // 鍖归厤鍏抽敭瀛�
+                const allPageTextNodes = [];
+                let currentNode = pageTextList.nextNode();
+                while (currentNode) {
+                  allPageTextNodes.push(currentNode);
+                  currentNode = pageTextList.nextNode();
+                }
+                for (let i = 0; i < allPageTextNodes.length; i++) {
+                  const textDom = allPageTextNodes[i];
+                  let txtIndex = textDom.textContent.indexOf(
+                    this.highlightData.txt
+                  );
+                  if (txtIndex > -1) {
+                    textDom.parentNode.style.transition =
+                      "background-color 0.8s";
+                    textDom.parentNode.scrollIntoView();
+                    textDom.parentNode.style.backgroundColor = "#79bbf0";
+                    setTimeout(() => {
+                      textDom.parentNode.style.backgroundColor = "";
+                    }, 1000);
+                  }
+                }
+              }, 100);
             }
             if (this.loadPageList.length > 5) {
               // 瓒呰繃5椤�
@@ -644,18 +722,114 @@
         });
       }
     },
-    // 鐐瑰嚮浜嬩欢锛氬皢鐢熷兓鍗曡瘝浼犵粰 涓诲簲鐢� 浠庤�岃皟鐢ㄨ瘝鍏稿姛鑳�
-    saveCharacters(event, word) {
-      console.log("鐢熷兓瀛�", event, word);
-      if (this.$store.state.qiankun && this.$store.state.qiankun.chooseWords) {
-        this.$store.state.qiankun.chooseWords({
-          type: "word",
-          word,
-          x: event.pageX,
-          y: event.pageY,
+    // 鏍规嵁鍏抽敭瀛楀叏鏂囨绱�
+    searchTextByPage(keyword) {
+      const searchResult = [];
+      let catalogIndex = 0;
+      // 鎵�鏈夌珷鑺傜粍浠讹紙姣忔湰涔﹀埗浣滄椂鍗曠嫭閰嶇疆锛�
+      const pageData = {
+        pageHeader,
+        chapterOne,
+        chapterTwo,
+        chapterThree,
+        chapterFour,
+        chapterFive,
+        chapterSix,
+      };
+      // 閬嶅巻鎵�鏈夌珷鑺傛枃浠�
+      for (const key in pageData) {
+        catalogIndex++;
+        let pageComponent, pageExample;
+        // 鍏堟覆鏌撲竴娆″綋鍓嶇珷鑺傛枃浠讹紙杩欐椂椤甸潰鐨勫唴瀹逛负绌猴級锛岃幏鍙栭〉鐮佷俊鎭�
+        pageComponent = Vue.extend(pageData[key]);
+        pageExample = new pageComponent({
+          propsData: {
+            showPageList: [],
+            questionData: {},
+          },
         });
+        pageExample.$mount(
+          (this.container ? this.container : document).querySelector(
+            "#searchContent"
+          )
+        );
+        // 鑾峰彇椤电爜
+        const pageDom = (this.container ? this.container : document)
+          .querySelector("#searchDomBox")
+          .querySelectorAll(".page-box");
+        const pages = [];
+        for (let i = 0; i < pageDom.length; i++) {
+          const pageDomItem = pageDom[i];
+          pages.push(Number(pageDomItem.getAttribute("page")));
+        }
+        // 鑾峰彇椤甸潰缁撴潫锛屽嵏杞介攢姣�
+        pageExample.$destroy();
+        (this.container ? this.container : document).querySelector(
+          "#searchDomBox"
+        ).innerHTML = '<div id="searchContent"></div>';
+        // 閬嶅巻椤电爜
+        if (pages.length) {
+          for (let i = 0; i < pages.length; i++) {
+            const pageNum = pages[i];
+            // 鍔ㄦ�佹覆鏌撳搴旂珷鑺傜殑椤电爜
+            pageComponent = Vue.extend(pageData[key]);
+            pageExample = new pageComponent({
+              propsData: {
+                showPageList: [pageNum],
+                questionData: {},
+              },
+            });
+            pageExample.$mount(
+              (this.container ? this.container : document).querySelector(
+                "#searchContent"
+              )
+            );
+            // 鑾峰彇瀵瑰簲椤甸潰dom
+            const thisPageDom = (this.container ? this.container : document)
+              .querySelector("#searchDomBox")
+              .querySelector(`[page="${pageNum}"]`);
+            if (thisPageDom) {
+              // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
+              const pageTextList = document.createTreeWalker(thisPageDom, NodeFilter.SHOW_TEXT);
+              // 鍖归厤鍏抽敭瀛�
+              const allPageTextNodes = [];
+              let currentNode = pageTextList.nextNode();
+              while (currentNode) {
+                allPageTextNodes.push(currentNode);
+                currentNode = pageTextList.nextNode();
+              }
+              for (let i = 0; i < allPageTextNodes.length; i++) {
+                const textDom = allPageTextNodes[i];
+                let txtIndex = textDom.textContent.indexOf(keyword);
+                if (txtIndex > -1) {
+                  // 璁板綍鍏抽敭瀛楁墍鍦ㄩ〉鐮併�佺珷鑺備互鍙婂尮閰嶅埌鐨勬钀�
+                  searchResult.push({
+                    page: pageNum,
+                    catalog: catalogIndex,
+                    txt: textDom.textContent,
+                    txtIndex: txtIndex,
+                  });
+                }
+              }
+              // 缁撴潫锛屽嵏杞介攢姣�
+              pageExample.$destroy();
+              (this.container ? this.container : document).querySelector(
+                "#searchDomBox"
+              ).innerHTML = '<div id="searchContent"></div>';
+            }
+          }
+        }
       }
-      // chooseWords
+      // 杈撳嚭鎼滅储缁撴灉
+      console.log(searchResult);
+      return searchResult;
+    },
+    // 鏍规嵁妫�绱㈢粨鏋滆烦杞搴斾綅缃苟楂樹寒
+    searchItemLocation(data) {
+      // 璁板綍楂樹寒淇℃伅
+      this.highlightData = data;
+      // 璺宠浆
+      this.gotoPage(data.catalog, data.page, () => {});
     },
   },
   components: {
@@ -665,7 +839,7 @@
     chapterThree,
     chapterFour,
     chapterFive,
-    chapterSix
+    chapterSix,
   },
 };
 </script>
diff --git a/src/books/childHealth/view/components/pageHeader/evenHeader.vue b/src/books/childHealth/view/components/pageHeader/evenHeader.vue
deleted file mode 100644
index a5208e4..0000000
--- a/src/books/childHealth/view/components/pageHeader/evenHeader.vue
+++ /dev/null
@@ -1,19 +0,0 @@
-<template>
-  <div class="header-box">
-    <div class="header-border-box"></div>
-    <div class="header-num-box">
-      <span class="fw-b italic">{{num}}</span>
-      <span class="ml-30">瀛﹀墠鍎跨鍗敓涓庝繚鍋ワ紙绗�3鐗堬級</span>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "even-header",
-  props:["num"],
-  methods: {},
-};
-</script>
-
-<style lang="less" scoped></style>
diff --git a/src/books/childHealth/view/components/pageHeader/oddHeader.vue b/src/books/childHealth/view/components/pageHeader/oddHeader.vue
deleted file mode 100644
index eb612fc..0000000
--- a/src/books/childHealth/view/components/pageHeader/oddHeader.vue
+++ /dev/null
@@ -1,51 +0,0 @@
-<template>
-  <div class="page-header-box">
-    <span class="page-header-text" v-if="special == 1"
-      >涓撻涓�&nbsp;瀛﹀墠鍎跨鐢熺悊鍙戝睍鐗圭偣涓庝繚鍋�</span
-    >
-    <span class="page-header-text" v-if="special == 2"
-      >涓撻浜�&nbsp;瀛﹀墠鍎跨鐨勭敓闀垮彂鑲�</span
-    >
-    <span class="page-header-text" v-if="special == 3"
-      >涓撻涓�&nbsp;瀛﹀墠鍎跨蹇冮噷鍙戝睍鐗圭偣涓庝繚鍋�</span
-    >
-    <span class="page-header-text" v-if="special == 4"
-      >涓撻鍥�&nbsp;瀛﹀墠鍎跨鍋ュ悍璇勪环</span
-    >
-    <span class="page-header-text" v-if="special == 5"
-      >涓撻浜�&nbsp;瀛﹀墠鍎跨钀ュ吇鍗敓涓庝繚鍋�</span
-    >
-    <span class="page-header-text" v-if="special == 6"
-      >涓撻鍏�&nbsp;瀛﹀墠鍎跨鍚勫勾榫勬湡鐨勭壒鐐逛笌淇濆仴</span
-    >
-    <span class="page-header-text" v-if="special == 7"
-      >涓撻涓�&nbsp;瀛﹀墠鍎跨鐤剧梾鍙婂叾棰勯槻</span
-    >
-    <span class="page-header-text" v-if="special == 8"
-      >涓撻鍏�&nbsp;瀛﹀墠鍎跨甯哥敤鎶ょ悊涓庢�ユ晳鎶�鏈�</span
-    >
-    <span class="page-header-text" v-if="special == 9"
-      >涓撻涔�&nbsp;瀛﹀墠鍎跨鐢熸椿淇濆仴鍒跺害</span
-    >
-    <span class="page-header-text" v-if="special == 10"
-      >涓撻涔�&nbsp;鎵樺辜鏈烘瀯鐨勭幆澧冨崼鐢�</span
-    >
-    <span class="page-header-text" v-if="special == 11"
-      >缁煎悎浜戞祴璇�</span
-    >
-    <span class="page-header-text" v-if="special == 12"
-      >鍙傝�冩枃鐚�</span
-    >
-    <span class="page-header-num">{{ num }}</span>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "even-header",
-  props: ["special", "num"],
-  methods: {},
-};
-</script>
-
-<style lang="less" scoped></style>
diff --git a/src/books/childHealth/view/content/components/header.vue b/src/books/childHealth/view/content/components/header.vue
index 7bd41bf..4e2b6a5 100644
--- a/src/books/childHealth/view/content/components/header.vue
+++ b/src/books/childHealth/view/content/components/header.vue
@@ -193,10 +193,8 @@
 </template>
 
 <script>
-import evenHeaderVue from "../../components/pageHeader/evenHeader.vue";
 export default {
   name: "page-header",
-  components: { evenHeaderVue },
   props: {
     showPageList: {
       type: Array,
diff --git a/src/books/embedded/view/components/chapter001.vue b/src/books/embedded/view/components/chapter001.vue
index 9a59f99..c8a686f 100644
--- a/src/books/embedded/view/components/chapter001.vue
+++ b/src/books/embedded/view/components/chapter001.vue
@@ -51,10 +51,12 @@
             闅忕潃鍚嶱C鏃朵唬鐨勫埌鏉ワ紝鍦ㄥ埗閫犱笟棰嗗煙鏇存敞閲嶄娇鐢ㄧ鍚堝叾鐗瑰畾闇�姹傚苟甯︽湁鏅鸿兘鐨勫祵鍏ュ紡宸ヤ笟鎺у埗缁勬�佽蒋浠讹紝鑰屽祵鍏ュ紡缁勬�佽蒋浠剁壒鍏风殑鎸夊姛鑳藉壀瑁佺殑鐗规�э紝浠ュ強鍏跺唴宓岀殑瀹炴椂澶氫换鍔℃搷浣滅郴缁燂紝鍙繚璇佹暣涓祵鍏ョ郴缁熶綋绉皬銆佹垚鏈綆銆佸疄鏃舵�ч珮銆佸彲闈犳�ч珮鐨勫悓鏃讹紝杩樻柟渚夸笉鍏峰宓屽叆寮忚蒋浠跺紑鍙戠粡楠岀殑鐢ㄦ埛鍦ㄦ瀬鐭殑鏃堕棿鍐咃紝浣跨敤宓屽叆寮忕粍鎬佽蒋浠跺揩閫熷紑鍙戝畬鎴愪竴涓祵鍏ュ紡绯荤粺锛屽苟鏋佸ぇ鍦板姞蹇簡宓屽叆寮忎骇鍝佽繘鍏ュ競鍦虹殑閫熷害锛岃�屼笖浣夸骇鍝佸叿鏈変赴瀵岀殑浜烘満鐣岄潰銆傚寳浜槅浠戦�氭�佸叕鍙窶CGS缁勬�佽蒋浠讹紝閫氳繃澶у姏鍔犲己瀵瑰伐鎺х‖浠朵骇鍝佺殑椹卞姩鏀寔鍜屾彁鍗囪蒋浠跺唴閮ㄥ姛
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">1</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">1</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 2 -->
@@ -293,10 +295,12 @@
             锛�2锛夎澶囩獥鍙f槸MCGS宓屽叆鐗堢郴缁熶笌澶栧洿璁惧鑱旂郴鐨勫獟浠嬨�傝澶囩獥鍙d笓闂ㄧ敤鏉ユ斁缃笉鍚�
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">3</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">3</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 4 -->
@@ -457,10 +461,12 @@
             锛�5锛塗PC7062K鍚姩銆備娇鐢�24V鐩存祦鐢垫簮缁橳PC渚涚數锛屽紑鏈哄惎鍔ㄥ悗灞忓箷鍑虹幇鈥滄鍦ㄥ惎鍔ㄢ�濇彁绀鸿繘搴︽潯锛屾鏃朵笉闇�浠讳綍鎿嶄綔鑷姩杩涘叆宸ョ▼杩愯鐣岄潰锛屽鍥�1-11鎵�绀恒��
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">5</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">5</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 6 -->
@@ -741,10 +747,12 @@
             鍦ㄥ畨瑁呯▼搴忕獥鍙d腑鍗曞嚮鈥滃畨瑁呯粍鎬佽蒋浠垛�濇寜閽紝寮瑰嚭瀹夎绋嬪簭绐楀彛銆傚崟鍑烩�滀笅涓�姝モ�濇寜閽紝鍚姩瀹夎绋嬪簭锛屽鍥�1-16鎵�绀恒��
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">7</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">7</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 8 -->
@@ -1116,10 +1124,12 @@
             锛�2锛夊崟鍑烩�滅獥鍙e睘鎬р�濇寜閽紝寮瑰嚭鈥滅敤鎴风獥鍙e睘鎬ц缃�濆璇濇锛屽湪鈥滃熀鏈睘鎬р�濋�夐」鍗★紝灏嗏�滅獥鍙e悕绉扳�濅慨鏀逛负鈥滃父鐢ㄦ瀯浠朵娇鐢ㄢ�濓紝鍗曞嚮鈥滅‘璁も�濇寜閽繘琛屼繚瀛橈紝濡傚浘1-23鎵�绀恒��
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">9</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">9</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 10 -->
@@ -1274,10 +1284,12 @@
             锛�6锛夊崟鍑诲伐鍏风涓殑鈥滆緭鍏ユ鈥濇寜閽紝鍦ㄧ獥鍙f寜浣忛紶鏍囧乏閿紝鎷栨斁鍑轰袱涓竴瀹氬ぇ灏忕殑鈥滆緭鍏ユ鈥濓紝鍒嗗埆鎽嗘斁鍦ㄢ�滅姸鎬佹樉绀�1锛氣�濇爣绛俱�佲�滅姸鎬佹樉绀�2锛氣�濇爣绛剧殑鏃佽竟浣嶇疆锛屽鍥�1-32鎵�绀恒��
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">11</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">11</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 12 -->
@@ -1485,10 +1497,12 @@
             />鎸夐挳锛岃繘琛屼笅杞介厤缃�傚崟鍑烩�滆仈鏈鸿繍琛屸�濇寜閽紝杩炴帴鏂瑰紡閫夋嫨鈥淭CP/IP缃戠粶閫氫俊鈥濓紝璁剧疆瑙︽懜灞廔P涓庤绠楁満IP鍦ㄥ悓涓�缃戞鍐咃紝鍗曞嚮鈥滈�氫俊娴嬭瘯鈥濇寜閽紝閫�
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">13</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">13</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
     <!-- 14 -->
@@ -1881,10 +1895,12 @@
             ></textarea>
           </p>
         </div>
-        <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
-          <li class="footer-num">15</li>
-          <li class="footer-box"></li>
-        </ul>
+        <div class="fl ju-ed">
+          <ul class="page-footer fl fl-cl al-cn w-mi p0 mb-40">
+            <li class="footer-num">15</li>
+            <li class="footer-box"></li>
+          </ul>
+        </div>
       </div>
     </div>
   </div>
diff --git a/src/books/embedded/view/components/index.vue b/src/books/embedded/view/components/index.vue
index aa243a5..7a56f5c 100644
--- a/src/books/embedded/view/components/index.vue
+++ b/src/books/embedded/view/components/index.vue
@@ -1,5 +1,8 @@
 <template>
   <div class="page-main" @scroll="throttledScrollHandler">
+    <div id="searchDomBox" style="display: none">
+      <div id="searchContent"></div>
+    </div>
     <div
       class="page-content"
       :style="{
@@ -40,8 +43,9 @@
       observer: null,
       loadPageObserver: null,
       loadPageList: [],
-      questionData: {},
-      renderSignMap: {}
+      questionDataMap: {},
+      renderSignMap: {},
+      highlightData: null,
     };
   },
   computed: {
@@ -50,7 +54,7 @@
     },
     pageZoom() {
       return this.$store.state.qiankun.scale / 100;
-    }
+    },
   },
   watch: {
     showCatalogList: {
@@ -61,7 +65,7 @@
         ) {
           // 璋冪敤鐖跺眰鏂规硶
           this.$store.state.qiankun.catalogChange({
-            showCatalogList: newVal
+            showCatalogList: newVal,
           });
         }
         // 鍚姩椤电爜瑙傚療
@@ -69,17 +73,24 @@
           this.initObservation();
           this.initThemeColor();
         }, 500);
-      }
+      },
     },
     loadPageList: {
       handler(newVal, oldVal) {
-        console.log(newVal, "this.loadPageList");
         setTimeout(() => {
           this.initSwiper();
           this.initViewer();
         }, 200);
-      }
-    }
+      },
+    },
+    pageZoom: {
+      handler(newVal, oldVal) {
+        const scrollBox = (
+          this.container ? this.container : document
+        ).querySelector(".page-main");
+        scrollBox.scrollTop = (scrollBox.scrollTop / oldVal) * newVal;
+      },
+    },
   },
   mounted() {
     // 榛樿鍔犺浇绔犺妭
@@ -106,7 +117,15 @@
         // 鍒犻櫎绗旇銆侀珮浜�佸垝绾�
         delSign: (data) => {
           this.delSign(data);
-        }
+        },
+        // 鍏ㄦ枃妫�绱�
+        searchBookByKeyword: (keyword) => {
+          return this.searchTextByPage(keyword);
+        },
+        // 璺宠浆妫�绱㈢粨鏋滀綅缃�
+        jumpSearchItem: (data) => {
+          this.searchItemLocation(data);
+        },
       });
     }
 
@@ -115,13 +134,13 @@
     this.observer = new IntersectionObserver(this.pageChangeCallback, {
       root: null, // 鎸囧畾鏍瑰厓绱狅紝杩欓噷璁句负 null锛岃〃绀洪�夊彇鏁翠釜瑙嗙獥浣滀负鏍瑰厓绱犮��
       rootMargin: "0px", // 鎸囧畾鏍瑰厓绱犵殑杈圭晫锛岃繖閲岃涓� "0px"锛岃〃绀烘牴鍏冪礌鐨勮竟鐣屽拰瑙嗙獥鐨勮竟鐣岄噸鍚�
-      threshold: 0.5 // 鎸囧畾浜ゅ弶姣斾緥锛岃繖閲岃涓� 0.5锛岃〃绀哄綋鐩爣鍏冪礌涓�鍗婃垨鏇村鏄剧ず鍦ㄨ绐椾腑鏃惰Е鍙戝洖璋冨嚱鏁般��
+      threshold: 0.5, // 鎸囧畾浜ゅ弶姣斾緥锛岃繖閲岃涓� 0.5锛岃〃绀哄綋鐩爣鍏冪礌涓�鍗婃垨鏇村鏄剧ず鍦ㄨ绐椾腑鏃惰Е鍙戝洖璋冨嚱鏁般��
     });
 
     this.loadPageObserver = new IntersectionObserver(this.loadPageCallback, {
       root: null, // 鎸囧畾鏍瑰厓绱狅紝杩欓噷璁句负 null锛岃〃绀洪�夊彇鏁翠釜瑙嗙獥浣滀负鏍瑰厓绱犮��
       rootMargin: "0px", // 鎸囧畾鏍瑰厓绱犵殑杈圭晫锛岃繖閲岃涓� "0px"锛岃〃绀烘牴鍏冪礌鐨勮竟鐣屽拰瑙嗙獥鐨勮竟鐣岄噸鍚�
-      threshold: 0 // 鎸囧畾浜ゅ弶姣斾緥锛岃繖閲岃涓� 0.5锛岃〃绀哄綋鐩爣鍏冪礌涓�鍗婃垨鏇村鏄剧ず鍦ㄨ绐椾腑鏃惰Е鍙戝洖璋冨嚱鏁般��
+      threshold: 0, // 鎸囧畾浜ゅ弶姣斾緥锛岃繖閲岃涓� 0.5锛岃〃绀哄綋鐩爣鍏冪礌涓�鍗婃垨鏇村鏄剧ず鍦ㄨ绐椾腑鏃惰Е鍙戝洖璋冨嚱鏁般��
     });
 
     // 鍚姩椤电爜瑙傚療
@@ -147,9 +166,36 @@
     //   });
     // }, 2000);
     //   }, 5000);
-    // }, 1000);
+
+    // 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
+    // });
+    // }, 5000);
   },
   methods: {
+    // setZoom1() {
+    //   let scale = this.$store.state.qiankun.scale + 10;
+    //   const scrollBox = (
+    //     this.container ? this.container : document
+    //   ).querySelector(".page-main");
+    //   this.$store.commit("setZoom", scale);
+    // },
+    // setZoom2() {
+    //   let scale = this.$store.state.qiankun.scale - 10;
+    //   const scrollBox = (
+    //     this.container ? this.container : document
+    //   ).querySelector(".page-main");
+    //   this.$store.commit("setZoom", scale);
+    // },
     // 婊氬姩鐩戝惉
     scrollFun(event) {
       // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩
@@ -205,7 +251,7 @@
           this.showCatalogList = [
             this.catalogLength - 2,
             this.catalogLength - 1,
-            this.catalogLength
+            this.catalogLength,
           ];
         } else {
           this.showCatalogList = [catalog - 1, catalog, catalog + 1];
@@ -232,6 +278,7 @@
         // 绔嬪嵆娓叉煋
         this.renderSign(type, data);
       }
+
       // 鍌ㄥ瓨鏁版嵁
       if (!this.renderSignMap[type]) this.renderSignMap[type] = {};
       if (!this.renderSignMap[type][data.page])
@@ -241,6 +288,10 @@
 
     // 娓叉煋鏍囪
     renderSign(type, data) {
+      // 鐖跺眰璁剧疆绂佹娓叉煋鏍囪鏃朵笉鍐嶈繘琛屾覆鏌�
+      if (this.$store.state.qiankun.disableSign) {
+        return false;
+      }
       const existence = (
         this.container ? this.container : document
       ).querySelector(`[dataid="${data.id}"]`);
@@ -250,10 +301,7 @@
           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) {
@@ -429,6 +477,7 @@
       });
     },
     getParentWithClass(element, className) {
+      console.log(element, className, "element, className");
       while (element.parentElement) {
         element = element.parentElement;
         if (element.classList.contains(className)) {
@@ -458,7 +507,7 @@
             this.$store.state.qiankun.pageChange({
               page: page,
               catalog: catalog,
-              text
+              text,
             });
           // const sections = Array.from(document.querySelectorAll(".section"));
           //sections锛氳幏鍙栨墍鏈夊叿鏈� .section 绫诲悕鐨勫厓绱狅紝骞惰浆鎹负鏁扮粍銆�
@@ -478,16 +527,15 @@
               "chapter"
             );
             const catalog = catalogDom.getAttribute("num");
-            // if (!this.questionData[page]) {
+            // if (!this.questionDataMap[page]) {
             //   if (testData && testData[catalog]) {
             //     if (testData[catalog][page]) {
             //       if (Array.isArray(testData[catalog][page])) {
-            //         this.questionData[page] = await getQuestionList(
+            //         this.questionDataMap[page] = await getQuestionList(
             //           page,
             //           testData[catalog][page],
             //           this.config.activeBook
             //         );
-                    
             //       } else {
             //         const obj = {};
             //         for (let key in testData[catalog][page]) {
@@ -497,9 +545,9 @@
             //             this.config.activeBook
             //           );
             //         }
-            //         this.questionData[page] = obj;
+            //         this.questionDataMap[page] = obj;
             //       }
-            //       console.log('棰樼洰',this.questionData);
+            //       console.log("棰樼洰", this.questionDataMap);
             //     }
             //   }
             // }
@@ -512,6 +560,36 @@
                   this.renderSign(key, item);
                 });
               }
+            }
+            // 澶勭悊楂樹寒
+            if (this.highlightData) {
+              // 楂樹寒琛�
+              setTimeout(() => {
+                // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
+                const pageTextList = document.createTreeWalker(target, NodeFilter.SHOW_TEXT);
+                // 鍖归厤鍏抽敭瀛�
+                const allPageTextNodes = [];
+                let currentNode = pageTextList.nextNode();
+                while (currentNode) {
+                  allPageTextNodes.push(currentNode);
+                  currentNode = pageTextList.nextNode();
+                }
+                for (let i = 0; i < allPageTextNodes.length; i++) {
+                  const textDom = allPageTextNodes[i];
+                  let txtIndex = textDom.textContent.indexOf(
+                    this.highlightData.txt
+                  );
+                  if (txtIndex > -1) {
+                    textDom.parentNode.style.transition =
+                      "background-color 0.8s";
+                    textDom.parentNode.scrollIntoView();
+                    textDom.parentNode.style.backgroundColor = "#79bbf0";
+                    setTimeout(() => {
+                      textDom.parentNode.style.backgroundColor = "";
+                    }, 1000);
+                  }
+                }
+              }, 100);
             }
             if (this.loadPageList.length > 5) {
               // 瓒呰繃5椤�
@@ -564,40 +642,40 @@
       for (let i = 0; i < pptDoms.length; i++) {
         const dom = pptDoms[i];
         new Swiper(dom, {
-        loop: false, // 鏃犵紳
-        autoplay: false,
-        paginationClickable: true,
-        slidesPerView: 1, // 涓�缁勪笁涓�
-        spaceBetween: 30, // 闂撮殧
-        // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
-        navigation: {
-          nextEl: (this.container ? this.container : document).querySelector(
-            ".swiper-button-next"
-          ),
-          prevEl: (this.container ? this.container : document).querySelector(
-            ".swiper-button-prev"
-          ),
-        },
-        // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
-        observer: true,
-        observeParents: true,
-        on: {
-          init:(value) => {
-            let currentPage = value.activeIndex + 1; // 鑾峰彇褰撳墠椤碉紙浠�1寮�濮嬭鏁帮級
-            let totalPages = value.slides.length; // 鑾峰彇鎬婚〉鏁�
-            var paginationInfoEl = dom.querySelector('.pageBox');
-            if(paginationInfoEl)
-              paginationInfoEl.textContent = currentPage + '/' + totalPages;
+          loop: false, // 鏃犵紳
+          autoplay: false,
+          paginationClickable: true,
+          slidesPerView: 1, // 涓�缁勪笁涓�
+          spaceBetween: 30, // 闂撮殧
+          // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
+          navigation: {
+            nextEl: (this.container ? this.container : document).querySelector(
+              ".swiper-button-next"
+            ),
+            prevEl: (this.container ? this.container : document).querySelector(
+              ".swiper-button-prev"
+            ),
           },
-          slideChange:(value) => {
-            let currentPage = value.activeIndex + 1; // 鑾峰彇褰撳墠椤碉紙浠�1寮�濮嬭鏁帮級
-            let totalPages = value.slides.length; // 鑾峰彇鎬婚〉鏁�
-            var paginationInfoEl = dom.querySelector('.pageBox');
-            if(paginationInfoEl)
-              paginationInfoEl.textContent = currentPage + '/' + totalPages;
+          // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
+          observer: true,
+          observeParents: true,
+          on: {
+            init: (value) => {
+              let currentPage = value.activeIndex + 1; // 鑾峰彇褰撳墠椤碉紙浠�1寮�濮嬭鏁帮級
+              let totalPages = value.slides.length; // 鑾峰彇鎬婚〉鏁�
+              var paginationInfoEl = dom.querySelector(".pageBox");
+              if (paginationInfoEl)
+                paginationInfoEl.textContent = currentPage + "/" + totalPages;
+            },
+            slideChange: (value) => {
+              let currentPage = value.activeIndex + 1; // 鑾峰彇褰撳墠椤碉紙浠�1寮�濮嬭鏁帮級
+              let totalPages = value.slides.length; // 鑾峰彇鎬婚〉鏁�
+              var paginationInfoEl = dom.querySelector(".pageBox");
+              if (paginationInfoEl)
+                paginationInfoEl.textContent = currentPage + "/" + totalPages;
+            },
           },
-        },
-      });
+        });
       }
     },
     initViewer() {
@@ -607,18 +685,124 @@
       for (let i = 0; i < doms.length; i++) {
         const dom = doms[i];
         new Viewer(dom, {
-          container: (this.container ? this.container.querySelector("#app") : "body"),
+          container: this.container
+            ? this.container.querySelector("#app")
+            : "body",
           navbar: true, // 鏄剧ず瀵艰埅鏍�
           toolbar: true, // 鏄剧ず宸ュ叿鏍�
-          title: true // 鏄剧ず鏍囬
+          title: true, // 鏄剧ず鏍囬
         });
       }
-    }
+    },
+    // 鏍规嵁鍏抽敭瀛楀叏鏂囨绱�
+    searchTextByPage(keyword) {
+      const searchResult = [];
+      let catalogIndex = 0;
+      // 鎵�鏈夌珷鑺傜粍浠讹紙姣忔湰涔﹀埗浣滄椂鍗曠嫭閰嶇疆锛�
+      const pageData = {
+        pageHeader,
+        chapterOne,
+      };
+      // 閬嶅巻鎵�鏈夌珷鑺傛枃浠�
+      for (const key in pageData) {
+        catalogIndex++;
+        let pageComponent, pageExample;
+        // 鍏堟覆鏌撲竴娆″綋鍓嶇珷鑺傛枃浠讹紙杩欐椂椤甸潰鐨勫唴瀹逛负绌猴級锛岃幏鍙栭〉鐮佷俊鎭�
+        pageComponent = Vue.extend(pageData[key]);
+        pageExample = new pageComponent({
+          propsData: {
+            showPageList: [],
+            questionData: {},
+          },
+        });
+        pageExample.$mount(
+          (this.container ? this.container : document).querySelector(
+            "#searchContent"
+          )
+        );
+        // 鑾峰彇椤电爜
+        const pageDom = (this.container ? this.container : document)
+          .querySelector("#searchDomBox")
+          .querySelectorAll(".page-box");
+        const pages = [];
+        for (let i = 0; i < pageDom.length; i++) {
+          const pageDomItem = pageDom[i];
+          pages.push(Number(pageDomItem.getAttribute("page")));
+        }
+        // 鑾峰彇椤甸潰缁撴潫锛屽嵏杞介攢姣�
+        pageExample.$destroy();
+        (this.container ? this.container : document).querySelector(
+          "#searchDomBox"
+        ).innerHTML = '<div id="searchContent"></div>';
+        // 閬嶅巻椤电爜
+        if (pages.length) {
+          for (let i = 0; i < pages.length; i++) {
+            const pageNum = pages[i];
+            // 鍔ㄦ�佹覆鏌撳搴旂珷鑺傜殑椤电爜
+            pageComponent = Vue.extend(pageData[key]);
+            pageExample = new pageComponent({
+              propsData: {
+                showPageList: [pageNum],
+                questionData: {},
+              },
+            });
+            pageExample.$mount(
+              (this.container ? this.container : document).querySelector(
+                "#searchContent"
+              )
+            );
+            // 鑾峰彇瀵瑰簲椤甸潰dom
+            const thisPageDom = (this.container ? this.container : document)
+              .querySelector("#searchDomBox")
+              .querySelector(`[page="${pageNum}"]`);
+            if (thisPageDom) {
+              // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
+              const pageTextList = document.createTreeWalker(thisPageDom, NodeFilter.SHOW_TEXT);
+              // 鍖归厤鍏抽敭瀛�
+              const allPageTextNodes = [];
+              let currentNode = pageTextList.nextNode();
+              while (currentNode) {
+                allPageTextNodes.push(currentNode);
+                currentNode = pageTextList.nextNode();
+              }
+              for (let i = 0; i < allPageTextNodes.length; i++) {
+                const textDom = allPageTextNodes[i];
+                let txtIndex = textDom.textContent.indexOf(keyword);
+                if (txtIndex > -1) {
+                  // 璁板綍鍏抽敭瀛楁墍鍦ㄩ〉鐮併�佺珷鑺備互鍙婂尮閰嶅埌鐨勬钀�
+                  searchResult.push({
+                    page: pageNum,
+                    catalog: catalogIndex,
+                    txt: textDom.textContent,
+                    txtIndex: txtIndex,
+                  });
+                }
+              }
+              // 缁撴潫锛屽嵏杞介攢姣�
+              pageExample.$destroy();
+              (this.container ? this.container : document).querySelector(
+                "#searchDomBox"
+              ).innerHTML = '<div id="searchContent"></div>';
+            }
+          }
+        }
+      }
+      // 杈撳嚭鎼滅储缁撴灉
+      console.log(searchResult);
+      return searchResult;
+    },
+    // 鏍规嵁妫�绱㈢粨鏋滆烦杞搴斾綅缃苟楂樹寒
+    searchItemLocation(data) {
+      // 璁板綍楂樹寒淇℃伅
+      this.highlightData = data;
+      // 璺宠浆
+      this.gotoPage(data.catalog, data.page, () => {});
+    },
   },
   components: {
     pageHeader,
     chapterOne,
-  }
+  },
 };
 </script>
 <style scoped lang="less">

--
Gitblit v1.9.1