Browse Source

Merge branch 'iteration-2024-05020-updateapply' into online

lex 1 year ago
parent
commit
a2faf427a6
2 changed files with 223 additions and 204 deletions
  1. 220 203
      src/App.tsx
  2. 3 1
      src/vite-env.d.ts

+ 220 - 203
src/App.tsx

@@ -1,203 +1,220 @@
-import {
-  computed,
-  defineComponent,
-  onMounted,
-  ref,
-  onBeforeUnmount,
-  onUnmounted
-} from 'vue';
-import { NConfigProvider, zhCN, dateZhCN, NModal } from 'naive-ui';
-import { AppProvider } from './components/Application';
-import { RouterView, useRouter } from 'vue-router';
-import setting from './settings/designSetting';
-import { lighten } from './utils';
-import RouterError from './components/RouterError';
-
-import { tryOnUnmounted } from '@vueuse/core';
-import { useUserStore } from './store/modules/users';
-export default defineComponent({
-  name: 'App',
-  setup() {
-    const isIOSChrome = ref();
-    const getThemeOverrides = computed(() => {
-      const appTheme = setting.appTheme;
-      const lightenStr = lighten(setting.appTheme, 6);
-
-      return {
-        common: {
-          primaryColor: appTheme,
-          primaryColorHover: lightenStr,
-          primaryColorPressed: lightenStr
-        },
-        LoadingBar: {
-          colorLoading: appTheme
-        }
-      };
-    });
-    // const showModal = ref(false);
-    const showModalMsg = ref('');
-    // 判断浏览器
-    // 是否是360
-    const check360 = () => {
-      const result = false;
-      for (const key in navigator.plugins) {
-        // np-mswmp.dll只在360浏览器下存在
-        if (navigator.plugins[key].filename == 'internal-nacl-plugin') {
-          return !result;
-        }
-      }
-      return result;
-    };
-    //
-
-    const isChrome = () => {
-      const isChromium = window.chrome,
-        winNav = window.navigator,
-        vendorName = winNav.vendor,
-        isOpera = winNav.userAgent.indexOf('OPR') > -1,
-        isIEedge = winNav.userAgent.indexOf('Edge') > -1,
-        isIOSChrome = winNav.userAgent.match('CriOS'),
-        // QQ
-        isQQBriwser =
-          winNav.userAgent.indexOf('QQBrowser') > -1 ||
-          winNav.userAgent.indexOf('QQ') > -1,
-        // 搜狗
-        isSouggou =
-          winNav.userAgent.indexOf('se 2.x') > -1 ||
-          winNav.userAgent.indexOf('MetaSr') > -1,
-        // 360
-        is360 = check360() && winNav.userAgent.indexOf('Safari') > -1,
-        // 遨游
-        isMaxthon = winNav.userAgent.indexOf('Maxthon') > -1,
-        // 是否为2345浏览器
-        is2345Explorer = winNav.userAgent.includes('2345Explorer'),
-        // 世界之窗
-        isTheWorld = winNav.userAgent.indexOf('TheWorld') > -1,
-        // 猎豹
-        isLiebao = winNav.userAgent.indexOf('LBBROWSER') > -1;
-      // console.log(isQQBriwser, isSouggou, is360, isMaxthon, is2345Explorer, isTheWorld, isLiebao)
-      if (isIOSChrome) {
-        return true;
-      } else if (
-        isChromium !== null &&
-        typeof isChromium !== 'undefined' &&
-        vendorName === 'Google Inc.' &&
-        isOpera === false &&
-        isIEedge === false &&
-        isQQBriwser === false &&
-        isSouggou === false &&
-        is360 === false &&
-        isMaxthon === false &&
-        is2345Explorer === false &&
-        isTheWorld === false &&
-        isLiebao === false
-      ) {
-        return true;
-      } else {
-        return false;
-      }
-    };
-
-    // 获取谷歌版本
-    const getChromeVersion = () => {
-      const arr = navigator.userAgent.split(' ');
-      let chromeVersion = '' as any;
-      for (let i = 0; i < arr.length; i++) {
-        if (/chrome/i.test(arr[i])) chromeVersion = arr[i];
-      }
-      if (chromeVersion) {
-        return Number(chromeVersion.split('/')[1].split('.')[0]);
-      } else {
-        return false;
-      }
-    };
-
-    const isChromeFlag = isChrome();
-    // console.log('isChromeFlag', isChromeFlag);
-    if (isChromeFlag) {
-      const chromeVersion = getChromeVersion();
-      if (!chromeVersion || (chromeVersion && chromeVersion < 100)) {
-        showModalMsg.value =
-          '您当前的chrome版本过低,为了保证您的用户体验请升级后使用';
-        // showModal.value = true;
-      }
-      // if (chromeVersion) {
-      //   return Number(chromeVersion.split('/')[1].split('.')[0]);
-      // } else {
-      //   return false;
-      // }
-    } else {
-      showModalMsg.value = '为了保证您的用户体验,请使用chrome打开,点击确定下载';
-      // showModal.value = true;
-      console.log('---');
-    }
-    const submitCallback = () => {
-      window.open('https://www.google.cn/intl/zh-CN/chrome/');
-    };
-    const handleOpen = (e: MessageEvent) => {
-      if (e.data?.api === 'onLogin') {
-        const userStore = useUserStore();
-        const router = useRouter();
-        const documentDom: any = document;
-        documentDom.exitFullscreen
-          ? documentDom.exitFullscreen()
-          : documentDom.mozCancelFullScreen
-          ? documentDom.mozCancelFullScreen()
-          : documentDom.webkitExitFullscreen
-          ? documentDom.webkitExitFullscreen()
-          : '';
-        userStore.logout();
-        history.go(0);
-      }
-    };
-
-    onMounted(() => {
-      window.addEventListener('message', handleOpen);
-
-      // 禁用右键菜单
-      document.addEventListener('contextmenu', function (event) {
-        event.preventDefault();
-      });
-      // 禁用浏览器快捷键
-      document.addEventListener('keydown', function (event) {
-        // 屏蔽 F12 和 Ctrl+Shift+I
-        if (
-          event.key === 'F12' ||
-          (event.ctrlKey && event.shiftKey && event.key === 'I') ||
-          (event.metaKey && event.altKey && event.key === 'I')
-        ) {
-          event.preventDefault();
-        }
-      });
-    });
-    onUnmounted(() => {
-      window.removeEventListener('message', handleOpen);
-    });
-
-    return () => (
-      <>
-        <NConfigProvider
-          locale={zhCN}
-          themeOverrides={getThemeOverrides.value}
-          // :theme="getDarkTheme"
-          // :theme-overrides="getThemeOverrides"
-          dateLocale={dateZhCN}>
-          <AppProvider>
-            <RouterView />
-            <RouterError />
-          </AppProvider>
-        </NConfigProvider>
-        {/* <NModal
-          show={showModal.value}
-          closeOnEsc={false}
-          closable={false}
-          maskClosable={false}
-          preset="dialog"
-          title="确认"
-          content={showModalMsg.value}
-          positive-text="确认"
-          onPositiveClick={submitCallback}></NModal> */}
-      </>
-    );
-  }
-});
+import {
+  computed,
+  defineComponent,
+  onMounted,
+  ref,
+  onBeforeUnmount,
+  onUnmounted
+} from 'vue';
+import { NConfigProvider, zhCN, dateZhCN, NModal } from 'naive-ui';
+import { AppProvider } from './components/Application';
+import { RouterView, useRouter } from 'vue-router';
+import setting from './settings/designSetting';
+import { lighten } from './utils';
+import RouterError from './components/RouterError';
+import { useRegisterSW } from 'virtual:pwa-register/vue';
+
+import { tryOnUnmounted } from '@vueuse/core';
+import { useUserStore } from './store/modules/users';
+export default defineComponent({
+  name: 'App',
+  setup() {
+    const isIOSChrome = ref();
+    const getThemeOverrides = computed(() => {
+      const appTheme = setting.appTheme;
+      const lightenStr = lighten(setting.appTheme, 6);
+
+      return {
+        common: {
+          primaryColor: appTheme,
+          primaryColorHover: lightenStr,
+          primaryColorPressed: lightenStr
+        },
+        LoadingBar: {
+          colorLoading: appTheme
+        }
+      };
+    });
+    // const showModal = ref(false);
+    const showModalMsg = ref('');
+    // 判断浏览器
+    // 是否是360
+    const check360 = () => {
+      const result = false;
+      for (const key in navigator.plugins) {
+        // np-mswmp.dll只在360浏览器下存在
+        if (navigator.plugins[key].filename == 'internal-nacl-plugin') {
+          return !result;
+        }
+      }
+      return result;
+    };
+    //
+
+    const isChrome = () => {
+      const isChromium = window.chrome,
+        winNav = window.navigator,
+        vendorName = winNav.vendor,
+        isOpera = winNav.userAgent.indexOf('OPR') > -1,
+        isIEedge = winNav.userAgent.indexOf('Edge') > -1,
+        isIOSChrome = winNav.userAgent.match('CriOS'),
+        // QQ
+        isQQBriwser =
+          winNav.userAgent.indexOf('QQBrowser') > -1 ||
+          winNav.userAgent.indexOf('QQ') > -1,
+        // 搜狗
+        isSouggou =
+          winNav.userAgent.indexOf('se 2.x') > -1 ||
+          winNav.userAgent.indexOf('MetaSr') > -1,
+        // 360
+        is360 = check360() && winNav.userAgent.indexOf('Safari') > -1,
+        // 遨游
+        isMaxthon = winNav.userAgent.indexOf('Maxthon') > -1,
+        // 是否为2345浏览器
+        is2345Explorer = winNav.userAgent.includes('2345Explorer'),
+        // 世界之窗
+        isTheWorld = winNav.userAgent.indexOf('TheWorld') > -1,
+        // 猎豹
+        isLiebao = winNav.userAgent.indexOf('LBBROWSER') > -1;
+      // console.log(isQQBriwser, isSouggou, is360, isMaxthon, is2345Explorer, isTheWorld, isLiebao)
+      if (isIOSChrome) {
+        return true;
+      } else if (
+        isChromium !== null &&
+        typeof isChromium !== 'undefined' &&
+        vendorName === 'Google Inc.' &&
+        isOpera === false &&
+        isIEedge === false &&
+        isQQBriwser === false &&
+        isSouggou === false &&
+        is360 === false &&
+        isMaxthon === false &&
+        is2345Explorer === false &&
+        isTheWorld === false &&
+        isLiebao === false
+      ) {
+        return true;
+      } else {
+        return false;
+      }
+    };
+
+    // 获取谷歌版本
+    const getChromeVersion = () => {
+      const arr = navigator.userAgent.split(' ');
+      let chromeVersion = '' as any;
+      for (let i = 0; i < arr.length; i++) {
+        if (/chrome/i.test(arr[i])) chromeVersion = arr[i];
+      }
+      if (chromeVersion) {
+        return Number(chromeVersion.split('/')[1].split('.')[0]);
+      } else {
+        return false;
+      }
+    };
+
+    const isChromeFlag = isChrome();
+    // console.log('isChromeFlag', isChromeFlag);
+    if (isChromeFlag) {
+      const chromeVersion = getChromeVersion();
+      if (!chromeVersion || (chromeVersion && chromeVersion < 100)) {
+        showModalMsg.value =
+          '您当前的chrome版本过低,为了保证您的用户体验请升级后使用';
+        // showModal.value = true;
+      }
+      // if (chromeVersion) {
+      //   return Number(chromeVersion.split('/')[1].split('.')[0]);
+      // } else {
+      //   return false;
+      // }
+    } else {
+      showModalMsg.value = '为了保证您的用户体验,请使用chrome打开,点击确定下载';
+      // showModal.value = true;
+      console.log('---');
+    }
+    const submitCallback = () => {
+      window.open('https://www.google.cn/intl/zh-CN/chrome/');
+    };
+    const handleOpen = (e: MessageEvent) => {
+      if (e.data?.api === 'onLogin') {
+        const userStore = useUserStore();
+        const router = useRouter();
+        const documentDom: any = document;
+        documentDom.exitFullscreen
+          ? documentDom.exitFullscreen()
+          : documentDom.mozCancelFullScreen
+            ? documentDom.mozCancelFullScreen()
+            : documentDom.webkitExitFullscreen
+              ? documentDom.webkitExitFullscreen()
+              : '';
+        userStore.logout();
+        history.go(0);
+      }
+    };
+
+    onMounted(() => {
+      window.addEventListener('message', handleOpen);
+
+      // 禁用右键菜单
+      document.addEventListener('contextmenu', function (event) {
+        event.preventDefault();
+      });
+      // 禁用浏览器快捷键
+      document.addEventListener('keydown', function (event) {
+        // 屏蔽 F12 和 Ctrl+Shift+I
+        if (
+          event.key === 'F12' ||
+          (event.ctrlKey && event.shiftKey && event.key === 'I') ||
+          (event.metaKey && event.altKey && event.key === 'I')
+        ) {
+          event.preventDefault();
+        }
+      });
+    });
+    onUnmounted(() => {
+      window.removeEventListener('message', handleOpen);
+
+      // const intervalMS = 60 * 60 * 1000;
+
+      // console.log(useRegisterSW, '1');
+      // const updateServiceWorker =
+      useRegisterSW({
+        onRegistered(r: any) {
+          console.log(r, 'registered');
+
+          r &&
+            setInterval(() => {
+              console.log('registered interval:', r);
+              r.update();
+            }, 30000);
+        }
+      });
+    });
+
+    return () => (
+      <>
+        <NConfigProvider
+          locale={zhCN}
+          themeOverrides={getThemeOverrides.value}
+          // :theme="getDarkTheme"
+          // :theme-overrides="getThemeOverrides"
+          dateLocale={dateZhCN}>
+          <AppProvider>
+            <RouterView />
+            <RouterError />
+          </AppProvider>
+        </NConfigProvider>
+        {/* <NModal
+          show={showModal.value}
+          closeOnEsc={false}
+          closable={false}
+          maskClosable={false}
+          preset="dialog"
+          title="确认"
+          content={showModalMsg.value}
+          positive-text="确认"
+          onPositiveClick={submitCallback}></NModal> */}
+      </>
+    );
+  }
+});

+ 3 - 1
src/vite-env.d.ts

@@ -1 +1,3 @@
-/// <reference types="vite/client" />
+/// <reference types="vite/client" />
+
+/// <reference types="vite-plugin-pwa/vue" />