App.vue 3.0 KB

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