App.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { computed, defineComponent, onMounted, ref, onBeforeUnmount } from 'vue';
  2. import { NConfigProvider, zhCN, dateZhCN, NModal } from 'naive-ui';
  3. import { AppProvider } from './components/Application';
  4. import { RouterView } from 'vue-router';
  5. import setting from './settings/designSetting';
  6. import { lighten } from './utils';
  7. import RouterError from './components/RouterError';
  8. import { tryOnUnmounted } from '@vueuse/core';
  9. export default defineComponent({
  10. name: 'App',
  11. setup() {
  12. const isIOSChrome = ref();
  13. const getThemeOverrides = computed(() => {
  14. const appTheme = setting.appTheme;
  15. const lightenStr = lighten(setting.appTheme, 6);
  16. return {
  17. common: {
  18. primaryColor: appTheme,
  19. primaryColorHover: lightenStr,
  20. primaryColorPressed: lightenStr
  21. },
  22. LoadingBar: {
  23. colorLoading: appTheme
  24. }
  25. };
  26. });
  27. // const showModal = ref(false);
  28. const showModalMsg = ref('');
  29. // 判断浏览器
  30. const isChrome = () => {
  31. const isChromium = (window as any).chrome;
  32. const winNav = window.navigator;
  33. const vendorName = winNav.vendor;
  34. const isOpera = typeof (window as any).opr !== 'undefined';
  35. const isIEedge = winNav.userAgent.indexOf('Edge') > -1;
  36. isIOSChrome.value = winNav.userAgent.match('CriOS');
  37. return (
  38. isIOSChrome.value ||
  39. (isChromium !== null &&
  40. typeof isChromium !== 'undefined' &&
  41. vendorName === 'Google Inc.' &&
  42. isOpera === false &&
  43. isIEedge === false)
  44. );
  45. };
  46. // 获取谷歌版本
  47. const getChromeVersion = () => {
  48. const arr = navigator.userAgent.split(' ');
  49. let chromeVersion = '' as any;
  50. for (let i = 0; i < arr.length; i++) {
  51. if (/chrome/i.test(arr[i])) chromeVersion = arr[i];
  52. }
  53. if (chromeVersion) {
  54. return Number(chromeVersion.split('/')[1].split('.')[0]);
  55. } else {
  56. return false;
  57. }
  58. };
  59. const isChromeFlag = isChrome();
  60. if (isChromeFlag) {
  61. const chromeVersion = getChromeVersion();
  62. if (!chromeVersion || (chromeVersion && chromeVersion < 100)) {
  63. showModalMsg.value =
  64. '您当前的chrome版本过低,为了保证您的用户体验请升级后使用';
  65. // showModal.value = true;
  66. }
  67. // if (chromeVersion) {
  68. // return Number(chromeVersion.split('/')[1].split('.')[0]);
  69. // } else {
  70. // return false;
  71. // }
  72. } else {
  73. showModalMsg.value = '为了保证您的用户体验,请使用chrome打开,点击确定下载';
  74. // showModal.value = true;
  75. console.log('---');
  76. }
  77. const submitCallback = () => {
  78. window.open('https://www.google.cn/intl/zh-CN/chrome/');
  79. };
  80. return () => (
  81. <>
  82. <NConfigProvider
  83. locale={zhCN}
  84. themeOverrides={getThemeOverrides.value}
  85. // :theme="getDarkTheme"
  86. // :theme-overrides="getThemeOverrides"
  87. dateLocale={dateZhCN}>
  88. <AppProvider>
  89. <RouterView />
  90. <RouterError />
  91. </AppProvider>
  92. </NConfigProvider>
  93. {/* <NModal
  94. show={showModal.value}
  95. closeOnEsc={false}
  96. closable={false}
  97. maskClosable={false}
  98. preset="dialog"
  99. title="确认"
  100. content={showModalMsg.value}
  101. positive-text="确认"
  102. onPositiveClick={submitCallback}></NModal> */}
  103. </>
  104. );
  105. }
  106. });