App.tsx 3.4 KB

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