From 30d147c4c92dbfd5ca1b2f8c24a617dc82d2d25b Mon Sep 17 00:00:00 2001
From: zhongshujie <2862698242@qq.com>
Date: 星期一, 28 四月 2025 18:34:51 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/testbookLayout

---
 src/books/artAndDance/view/components/index.vue |  201 ++++++++++++++++++++++++++-----------------------
 1 files changed, 107 insertions(+), 94 deletions(-)

diff --git a/src/books/artAndDance/view/components/index.vue b/src/books/artAndDance/view/components/index.vue
index 6678a4d..80a52cf 100644
--- a/src/books/artAndDance/view/components/index.vue
+++ b/src/books/artAndDance/view/components/index.vue
@@ -3,66 +3,34 @@
     <div id="searchDomBox" style="display: none">
       <div id="searchContent"></div>
     </div>
-    <div
-      class="page-content"
-      :style="{
-        fontSize: fontSize ? fontSize + 'px' : '16px',
-        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"
-        @closeAudio="closeAudio"
-      ></chapterOne>
-      <chapterTwo
-        v-if="showCatalogList.indexOf(3) > -1"
-        :showPageList="loadPageList"
-        @closeAudio="closeAudio"
-      >
+    <div class="page-content" :style="{
+      fontSize: fontSize ? fontSize + 'px' : '16px',
+      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"></chapterOne>
+      <chapterTwo v-if="showCatalogList.indexOf(3) > -1" :showPageList="loadPageList">
       </chapterTwo>
-      <chapterThree
-      v-if="showCatalogList.indexOf(4) > -1"
-        :showPageList="loadPageList"
-        @closeAudio="closeAudio"
-      ></chapterThree>
-      <chapterFour
-      v-if="showCatalogList.indexOf(5) > -1"
-        :showPageList="loadPageList"
-        @closeAudio="closeAudio"
-      ></chapterFour>
-      <chapterFive
-      v-if="showCatalogList.indexOf(6) > -1"
-        :showPageList="loadPageList"
-        @closeAudio="closeAudio"
-      ></chapterFive>
-      <chapterSix
-        v-if="showCatalogList.indexOf(7) > -1"
-        :showPageList="loadPageList"
-      ></chapterSix>
+      <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>
+      <chapterSix v-if="showCatalogList.indexOf(7) > -1" :showPageList="loadPageList"></chapterSix>
     </div>
-    <miniAudio
-      :path="audioPath"
-      :currentTime="currentTime"
-      @closeMiniAudio="closeMiniAudio"
-      ref="audioPlayer"
-    ></miniAudio>
+    <miniAudio :path="audioPath" :currentTime="currentTime" @closeMiniAudio="closeMiniAudio" ref="audioPlayer">
+    </miniAudio>
   </div>
 </template>
 
 <script>
+import Vue from 'vue'
 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 chapterSix from './chapter006.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 miniAudio from "@/components/miniAudio/index.vue";
 import _ from "lodash";
@@ -71,7 +39,7 @@
 import Viewer from "viewerjs";
 import "viewerjs/dist/viewer.css";
 export default {
-  name:"pageContent",
+  name: "pageContent",
   data() {
     return {
       catalogLength: 7, // 鎬荤珷鑺傛暟
@@ -123,6 +91,8 @@
         setTimeout(() => {
           this.initSwiper();
           this.initViewer();
+          this.closeAudio();
+          this.closeVideo();
         }, 200);
       },
     },
@@ -194,7 +164,7 @@
 
     // 娴嬭瘯椤甸潰璺宠浆
     // setTimeout(() => {
-    //   this.gotoPage(6, 26);
+    //   this.gotoPage(6, 30);
     //   setTimeout(() => {
     //     this.renderSign("Highlight", {
     //       id: "2ACA9359",
@@ -208,7 +178,7 @@
     //     ids: ["2ACA9359"]
     //   });
     // }, 2000);
-    //   }, 5000);
+    // }, 500);
 
     // const pageDom = (this.container ? this.container : document)
     //   .querySelector("#app")
@@ -241,9 +211,10 @@
     // },
     // 婊氬姩鐩戝惉
     scrollFun(event) {
+      this.handleVideoPicture()
       // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩
       if (event.target.scrollTop > this.previousScrollTop) {
-        this.getAduio()
+        this.getAduio();
         // 鍚戜笅
         const currentScrollTop =
           event.target.scrollTop + event.target.offsetHeight;
@@ -267,7 +238,7 @@
           }
         }
       } else if (event.target.scrollTop < this.previousScrollTop) {
-        this.handleAudio()
+        this.handleAudio();
         // 鍚戜笂
         const currentScrollTop = event.target.scrollTop;
         if (currentScrollTop <= this.loadThreshold) {
@@ -346,7 +317,10 @@
           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) {
@@ -478,8 +452,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.color = themeColor;
         }
@@ -496,8 +470,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.backgroundColor = themeColor;
         }
@@ -514,8 +488,8 @@
           page && pageThemeColor && pageThemeColor[page]
             ? pageThemeColor[page]
             : chapterNum && chapterThemeColor && chapterThemeColor[chapterNum]
-            ? chapterThemeColor[chapterNum]
-            : bookThemeColor;
+              ? chapterThemeColor[chapterNum]
+              : bookThemeColor;
         if (themeColor) {
           domItem.style.borderColor = themeColor;
         }
@@ -611,7 +585,10 @@
               // 楂樹寒琛�
               setTimeout(() => {
                 // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
-                const pageTextList = document.createTreeWalker(target, NodeFilter.SHOW_TEXT);
+                const pageTextList = document.createTreeWalker(
+                  target,
+                  NodeFilter.SHOW_TEXT
+                );
                 // 鍖归厤鍏抽敭瀛�
                 const allPageTextNodes = [];
                 let currentNode = pageTextList.nextNode();
@@ -655,19 +632,15 @@
           autoplay: {
             //鑷姩寮�濮�
             delay: 3000, //鏃堕棿闂撮殧
-            disableOnInteraction: false //*鎵嬪姩鎿嶄綔杞挱鍥惧悗涓嶄細鏆傚仠*
+            disableOnInteraction: false, //*鎵嬪姩鎿嶄綔杞挱鍥惧悗涓嶄細鏆傚仠*
           },
           paginationClickable: true,
           slidesPerView: 1, // 涓�缁勪笁涓�
           spaceBetween: 30, // 闂撮殧
           // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
           navigation: {
-            nextEl: dom.querySelector(
-              ".swiper-button-next"
-            ),
-            prevEl: dom.querySelector(
-              ".swiper-button-prev"
-            )
+            nextEl: dom.querySelector(".swiper-button-next"),
+            prevEl: dom.querySelector(".swiper-button-prev"),
           },
           // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
           // observer: true,
@@ -694,12 +667,8 @@
           spaceBetween: 30, // 闂撮殧
           // 濡傛灉闇�瑕佸墠杩涘悗閫�鎸夐挳
           navigation: {
-            nextEl: dom.querySelector(
-              ".swiper-button-next"
-            ),
-            prevEl: dom.querySelector(
-              ".swiper-button-prev"
-            )
+            nextEl: dom.querySelector(".swiper-button-next"),
+            prevEl: dom.querySelector(".swiper-button-prev"),
           },
           // 绐楀彛鍙樺寲,閲嶆柊init,閽堝F11鍏ㄥ睆鍜屾斁澶х缉灏�,蹇呴』鍔�
           observer: true,
@@ -718,8 +687,8 @@
               var paginationInfoEl = dom.querySelector(".pageBox");
               if (paginationInfoEl)
                 paginationInfoEl.textContent = currentPage + "/" + totalPages;
-            }
-          }
+            },
+          },
         });
       }
     },
@@ -763,7 +732,7 @@
           propsData: {
             showPageList: [],
             questionData: {},
-            isSearch: true
+            isSearch: true,
           },
         });
         pageExample.$mount(
@@ -795,7 +764,7 @@
               propsData: {
                 showPageList: [pageNum],
                 questionData: {},
-                isSearch: true
+                isSearch: true,
               },
             });
             pageExample.$mount(
@@ -809,7 +778,10 @@
               .querySelector(`[page="${pageNum}"]`);
             if (thisPageDom) {
               // 鑾峰彇椤甸潰鎵�鏈塼ext鑺傜偣
-              const pageTextList = document.createTreeWalker(thisPageDom, NodeFilter.SHOW_TEXT);
+              const pageTextList = document.createTreeWalker(
+                thisPageDom,
+                NodeFilter.SHOW_TEXT
+              );
               // 鍖归厤鍏抽敭瀛�
               const allPageTextNodes = [];
               let currentNode = pageTextList.nextNode();
@@ -848,9 +820,9 @@
       // 璁板綍楂樹寒淇℃伅
       this.highlightData = data;
       // 璺宠浆
-      this.gotoPage(data.catalog, data.page, () => {});
+      this.gotoPage(data.catalog, data.page, () => { });
     },
-        // 椤甸潰鍚戜笅婊氬姩锛岄煶棰戝皬绐楁挱鏀惧姛鑳�
+    // 椤甸潰鍚戜笅婊氬姩锛岄煶棰戝皬绐楁挱鏀惧姛鑳�
     getAduio() {
       let allVideo = (
         this.container ? this.container : document
@@ -900,20 +872,60 @@
       this.audioPath = "";
     },
     // 鐐瑰嚮闊抽鎾斁锛屽叧闂叾浠栭煶棰�
-    closeAudio(path) {
-      let allVideo = (
+    closeAudio() {
+      let allAudio = (
         this.container ? this.container : document
       ).querySelectorAll(".audio");
-      allVideo = Array.from(allVideo);
-      if(allVideo.length) {
-        for (let index = 0; index < allVideo.length; index++) {
-          const item = allVideo[index];
-          if(item.currentSrc != path) {
-            item.pause()
+      for (let index = 0; index < allAudio.length; index++) {
+        const item = allAudio[index];
+        item.addEventListener("play", () => {
+          const audioList = Array.from(allAudio);
+          for (let cindex = 0; cindex < audioList.length; cindex++) {
+            const citem = audioList[cindex];
+            if (citem.currentSrc != item.src) {
+              citem.pause();
+            }
           }
+          this.closeMiniAudio();
+        });
+      }
+    },
+    // 鐐瑰嚮瑙嗛鍏抽棴鍏朵粬
+    closeVideo() {
+      let allVideo = (
+        this.container ? this.container : document
+      ).querySelectorAll(".video");
+      for (let index = 0; index < allVideo.length; index++) {
+        const item = allVideo[index];
+        item.addEventListener("playing", (item) => {
+          const path = item.srcElement.src;
+          const videoList = Array.from(allVideo);
+          for (let cindex = 0; cindex < videoList.length; cindex++) {
+            const citem = videoList[cindex];
+            if (citem.currentSrc != path && path) {
+              citem.pause();
+            }
+          }
+        });
+      }
+    },
+    // 瑙嗛灏忕獥
+    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) {
+          if(playVudio.readyState) playVudio.requestPictureInPicture();
         }
       }
-      this.closeMiniAudio()
     }
   },
   components: {
@@ -924,7 +936,7 @@
     chapterFour,
     chapterFive,
     chapterSix,
-    miniAudio
+    miniAudio,
   },
 };
 </script>
@@ -934,6 +946,7 @@
   width: 100%;
   height: 100%;
   overflow: auto;
+
   .page-content {
     max-width: 816px;
     min-width: 375px;

--
Gitblit v1.9.1