lex-xin 3 months ago
parent
commit
f100ae1b58

+ 1 - 1
dev-dist/sw.js

@@ -82,7 +82,7 @@ define(['./workbox-5357ef54'], (function (workbox) { 'use strict';
     "revision": "3ca0b8505b4bec776b69afdba2768812"
   }, {
     "url": "index.html",
-    "revision": "0.ebqjmacp618"
+    "revision": "0.9q8anqa4crg"
   }], {});
   workbox.cleanupOutdatedCaches();
   workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

+ 1 - 1
public/version.json

@@ -1 +1 @@
-{"version":1736996801790}
+{"version":1737014821014}

+ 27 - 19
src/App.tsx

@@ -15,20 +15,21 @@ export default defineComponent({
     const { needRefresh, offlineReady, updateServiceWorker } = useRegisterSW({
       onRegistered(r: any) {
         console.log(r, 'registered');
-
-        // if (r) {
-        //   setInterval(() => {
-        //     r.update(); // 手动触发更新检查
-        //   }, 30000); // 每 30 秒检查一次
-        // }
+        if (r) {
+          setInterval(() => {
+            r.update(); // 手动触发更新检查
+          }, 30000); // 每 30 秒检查一次
+        }
       },
       onNeedRefresh() {
         console.log('新版本可用!');
+        alert('新版本可用!');
       },
       onOfflineReady() {
         console.log('离线功能就绪。');
       }
     });
+
     // const isIOSChrome = ref();
     // const showModalMask = ref(false);
     const getThemeOverrides = computed(() => {
@@ -193,19 +194,26 @@ export default defineComponent({
 
       // console.log('app - onounted - test interval');
 
-      // if ('serviceWorker' in navigator) {
-      //   navigator.serviceWorker.getRegistrations().then(registrations => {
-      //     for (const registration of registrations) {
-      //       if (registration.scope.startsWith(`https://${location.host}/`)) {
-      //         registration.unregister().then(() => {
-      //           console.log(
-      //             `Service Worker unregistered for https://${location.host}/`
-      //           );
-      //         });
-      //       }
-      //     }
-      //   });
-      // }
+      if ('serviceWorker' in navigator) {
+        // navigator.serviceWorker.addEventListener('message', event => {
+        //   console.log('messageType: ', event.data?.type);
+        //   if (event.data?.type === 'NEW_VERSION_AVAILABLE') {
+        //     console.log('New version available, refresh the page.');
+        //     // 可以提示用户刷新页面
+        //   }
+        // });
+        // navigator.serviceWorker.getRegistrations().then(registrations => {
+        //   for (const registration of registrations) {
+        //     if (registration.scope.startsWith(`https://${location.host}/`)) {
+        //       registration.unregister().then(() => {
+        //         console.log(
+        //           `Service Worker unregistered for https://${location.host}/`
+        //         );
+        //       });
+        //     }
+        //   }
+        // });
+      }
     });
     onUnmounted(() => {
       // window.removeEventListener('resize', resize);

+ 1 - 1
src/views/notation/index.tsx

@@ -41,7 +41,7 @@ export default defineComponent({
     };
     const handleOpen = (e: MessageEvent) => {
       if (e.data.api === 'notation_open') {
-        if (state.application) {
+        if (window.matchMedia('(display-mode: standalone)').matches) {
           show.value = true;
           previewModal.value = true;
           previewParams.value = {

+ 24 - 11
src/views/prepare-lessons/components/lesson-main/courseware-presets/index.tsx

@@ -113,6 +113,7 @@ export default defineComponent({
       attendClassItem: {} as any,
       attendClassId: null as any,
       previewModal: false,
+      previewModalType: 'attend' as 'attend' | 'music',
       previewParams: {
         type: '',
         courseId: '',
@@ -372,6 +373,7 @@ export default defineComponent({
         ).matches;
         forms.previewModal = true;
         fscreen();
+        forms.previewModalType = 'attend';
         forms.previewParams = {
           type: 'preview',
           courseId: id,
@@ -412,6 +414,7 @@ export default defineComponent({
             '(display-mode: standalone)'
           ).matches;
           forms.previewModal = true;
+          forms.previewModalType = 'attend';
           fscreen();
           forms.previewParams = {
             type: 'class',
@@ -661,6 +664,7 @@ export default defineComponent({
         item.pptId =
           dataRes.data.chapterKnowledgeList[0].chapterKnowledgeMaterialList[0].id;
       }
+
       const href = `${vaildPPTUrl()}/#/pptEditor?id=${
         item.pptId
       }&Authorization=${
@@ -668,7 +672,17 @@ export default defineComponent({
       }&instrumentId=${instrumentId}&lessonCoursewareKnowledgeId=${
         prepareStore.getSelectKey
       }&fromType=TEACHER`;
-      window.open(href);
+      if (window.matchMedia('(display-mode: standalone)').matches) {
+        forms.previewModal = true;
+        forms.previewModalType = 'music';
+        // window.open(href);
+        forms.previewParams = {
+          src: href
+        };
+      } else {
+        window.open(href);
+      }
+
       // 刷新一下列表
       !teacherSaveFlag && getCoursewareList();
     }
@@ -1049,7 +1063,7 @@ export default defineComponent({
         {/* 应用内预览或上课 */}
         <PreviewWindow
           v-model:show={forms.previewModal}
-          type="attend"
+          type={forms.previewModalType}
           params={forms.previewParams}
         />
 
@@ -1070,6 +1084,7 @@ export default defineComponent({
                   '(display-mode: standalone)'
                 ).matches;
                 forms.previewModal = true;
+                forms.previewModalType = 'attend';
                 forms.previewParams = {
                   ...item
                 };
@@ -1178,15 +1193,13 @@ export default defineComponent({
                 v-model:value={pptCourseware.subjects}
                 v-slots={{
                   action: () => (
-                    <>
-                      <NButton
-                        text
-                        style=" --n-width: 100% "
-                        size="small"
-                        onClick={() => chioseAll(subjectList.value)}>
-                        全选
-                      </NButton>
-                    </>
+                    <NButton
+                      text
+                      style=" --n-width: 100% "
+                      size="small"
+                      onClick={() => chioseAll(subjectList.value)}>
+                      全选
+                    </NButton>
                   )
                 }}
               />

+ 2 - 0
src/views/preview-window/index.tsx

@@ -54,6 +54,7 @@ export default defineComponent({
     );
 
     const handleOpen = (e: MessageEvent) => {
+      console.log(e, 'iframe_exit');
       if (e.data.api === 'iframe_exit') {
         emit('update:show', false);
       }
@@ -99,6 +100,7 @@ export default defineComponent({
               ) : type.value == 'music' ? (
                 <iframe
                   src={params.value.src}
+                  key={params.value.src}
                   onLoad={(val: any) => {
                     iframeDislableKeyboard(val.target);
                   }}

+ 2 - 2
vite.config.ts

@@ -67,8 +67,8 @@ export default defineConfig(() => {
         registerType: 'autoUpdate',
         includeAssets: ['./logo.png'],
         workbox: {
-          skipWaiting: true, // 强制跳过等待
-          clientsClaim: true,
+          skipWaiting: false, // 强制跳过等待
+          clientsClaim: false
           // runtimeCaching: [
           //   {
           //     urlPattern: ({ url }) =>