App.vue 2.9 KB

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