App.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. const loginState = await authStore.loadLoginState();
  21. if (AppConfig.requireLogin) {
  22. //如果未登录,跳转登录页
  23. if (!loginState && redirectThrottle.isTimeout()) {
  24. redirectThrottle.recordTime();
  25. setTimeout(() => {
  26. const pageUrl = getCurrentPageUrl() || '';
  27. const noLoginPages = AppConfig.noLoginPages;
  28. if (noLoginPages.indexOf('/' + pageUrl) == -1 && noLoginPages.indexOf(pageUrl) == -1)
  29. navTo('/pages/user/login');
  30. }, 500);
  31. }
  32. }
  33. await BugReporter.checkAndReportBug();
  34. await init();
  35. });
  36. //配置BugReporter
  37. BugReporter.config({
  38. abstractionLayer: new BugReporterAbstractionUniapp(),
  39. serverUrl: ApiCofig.bugReport.server,
  40. appId: ApiCofig.bugReport.appId,
  41. appKey: ApiCofig.bugReport.appKey,
  42. });
  43. onError((err) => {
  44. if (!((err as any) instanceof RequestApiError)) {
  45. BugReporter.reportError(err);
  46. }
  47. });
  48. //设置请求基础地址
  49. RequestApiConfig.setConfig({
  50. ...RequestApiConfig.getConfig(),
  51. BaseUrl: ApiCofig.server.Prod,
  52. EnableApiRequestLog: isTestEnv,
  53. EnableApiDataLog: false,
  54. })
  55. //修改默认主题颜色
  56. configTheme(false, (theme, defaultDarkTheme) => {
  57. theme.colorConfigs.default.primary = '#00b66a';
  58. theme.colorConfigs.pressed.primary = '#00814b';
  59. theme.colorConfigs.background.primary = '#dcfff0';
  60. theme.varOverrides['ImageDefaultImage'] = 'https://mncdn.wenlvti.net/app_static/xiangyuan/EmptyImage.png';
  61. return [theme, defaultDarkTheme];
  62. });
  63. IconUtils.loadDefaultIcons('https://mncdn.wenlvti.net/app_static/xiangyuan/data/DefaultIcon.json');
  64. </script>
  65. <style lang="scss">
  66. /*每个页面公共css */
  67. @import "@/components/index.scss";
  68. page {
  69. background: #f7f8f9;
  70. }
  71. </style>