App.vue 2.8 KB

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