App.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <script setup lang="ts">
  2. import AppConfig, { isTestEnv } from '@/common/config/AppCofig'
  3. import { onError, onLaunch } from '@dcloudio/uni-app'
  4. import { useAuthStore } from './store/auth'
  5. import { configTheme } from './components/theme/ThemeDefine';
  6. import { getCurrentPageUrl, navTo } from './components/utils/PageAction';
  7. import { RequestApiConfig, RequestApiError } from '@imengyu/imengyu-utils';
  8. import ApiCofig from './common/config/ApiCofig';
  9. import { useAppInit } from './common/composeabe/AppInit';
  10. import MemoryTimeOut from './common/composeabe/MemoryTimeOut';
  11. import BugReporter, { type BugDetailDeviceInfo } from './common/BugReporter';
  12. import { BugReporterAbstractionUniapp } from './common/BugReporter/impl/BugReporterAbstractionUniapp';
  13. import { IconUtils } from './components/basic/IconUtils';
  14. const authStore = useAuthStore();
  15. const { init } = useAppInit();
  16. const redirectThrottle = new MemoryTimeOut('RedirectThrottle', 50000);
  17. onLaunch(async () => {
  18. console.log('App Launch');
  19. //加载字体
  20. loadFontFace();
  21. //加载登录信息
  22. const loginState = await authStore.loadLoginState();
  23. if (AppConfig.requireLogin) {
  24. //如果未登录,跳转登录页
  25. if (!loginState && redirectThrottle.isTimeout()) {
  26. redirectThrottle.recordTime();
  27. setTimeout(() => {
  28. const pageUrl = getCurrentPageUrl() || '';
  29. const noLoginPages = AppConfig.noLoginPages;
  30. if (noLoginPages.indexOf('/' + pageUrl) == -1 && noLoginPages.indexOf(pageUrl) == -1)
  31. navTo('/pages/user/login');
  32. }, 500);
  33. }
  34. }
  35. await BugReporter.checkAndReportBug();
  36. await init();
  37. });
  38. //配置BugReporter
  39. BugReporter.config({
  40. abstractionLayer: new BugReporterAbstractionUniapp(),
  41. serverUrl: ApiCofig.bugReport.server,
  42. appId: ApiCofig.bugReport.appId,
  43. appKey: ApiCofig.bugReport.appKey,
  44. });
  45. onError((err) => {
  46. if (!((err as any) instanceof RequestApiError)) {
  47. BugReporter.reportError(err);
  48. }
  49. });
  50. //设置请求基础地址
  51. RequestApiConfig.setConfig({
  52. ...RequestApiConfig.getConfig(),
  53. BaseUrl: ApiCofig.server.Prod,
  54. EnableApiRequestLog: isTestEnv,
  55. EnableApiDataLog: false,
  56. })
  57. function loadFontFace() {
  58. uni.loadFontFace({
  59. global: true,
  60. family: "SongtiSCBlack",
  61. source: 'url("https://mncdn.wenlvti.net/assets/fonts/STSongti-SC-Black.woff")',
  62. });
  63. uni.loadFontFace({
  64. global: true,
  65. family: "HUNdin1451",
  66. source: 'url("https://mncdn.wenlvti.net/app_static/minnan/fonts/HUN-din1451.woff")',
  67. });
  68. }
  69. //修改默认主题颜色
  70. configTheme(false, (theme, defaultDarkTheme) => {
  71. theme.colorConfigs.default.primary = '#e19579';
  72. theme.colorConfigs.pressed.primary = '#fbce7a';
  73. theme.colorConfigs.default.button = '#f6e9d9';
  74. theme.colorConfigs.background.primary = '#fef2e8';
  75. theme.colorConfigs.background.secondary = '#f7f8f9';
  76. theme.colorConfigs.background.tertiary = '#fff7f1';
  77. theme.varOverrides['ImageDefaultImage'] = 'https://mncdn.wenlvti.net/app_static/xiangyuan/EmptyImage.png';
  78. return [theme, defaultDarkTheme];
  79. });
  80. IconUtils.loadDefaultIcons('https://mncdn.wenlvti.net/app_static/xiangyuan/data/DefaultIcon.json');
  81. </script>
  82. <style lang="scss">
  83. /*每个页面公共css */
  84. @import "@/static/css/font.css";
  85. @import "@/components/index.scss";
  86. page {
  87. background: #fef2e8;
  88. }
  89. </style>