main.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { createApp } from 'vue'
  2. import pinia from "./stores/index";
  3. import router from "./router";
  4. import './style.css'
  5. import App from './App.vue'
  6. import ElementPlus from 'element-plus'
  7. import 'element-plus/dist/index.css'
  8. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  9. import { lissenLog, log } from './utils/log'
  10. import useUserInfo from './stores/modules/user'
  11. import { startGenerateServer } from './utils/generateServer'
  12. import { updateHttpConfig } from './utils/http'
  13. import client from './stores/modules/client'
  14. import icpList from './utils/ipc'
  15. // 初始化应用配置
  16. function initializeAppConfig() {
  17. try {
  18. // 获取应用配置
  19. const clientStore = client();
  20. clientStore.ipc.send(icpList.utils.getAppConfig);
  21. clientStore.ipc.once(icpList.utils.getAppConfig, (event, result) => {
  22. console.log('应用配置已加载:', result);
  23. // 设置HTTP配置
  24. if (result && (result as any).env) {
  25. updateHttpConfig((result as any).env);
  26. } else {
  27. // 如果没有配置,使用默认环境
  28. updateHttpConfig('prod');
  29. }
  30. });
  31. } catch (error) {
  32. console.warn('获取应用配置失败,使用默认配置:', error);
  33. // 使用默认环境
  34. updateHttpConfig('prod');
  35. }
  36. }
  37. const app = createApp(App)
  38. app.use(ElementPlus)
  39. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  40. app.component(key, component)
  41. }
  42. app.use(pinia)
  43. app.use(router)
  44. // 注册埋点指令和路由监听 - 确保在router使用后立即注册
  45. lissenLog(app)
  46. log(router)
  47. app.mount('#app')
  48. // 应用挂载后初始化应用配置
  49. initializeAppConfig()
  50. // 刷新后根据会话标记显示登录弹窗
  51. try {
  52. const flag = sessionStorage.getItem('NEED_LOGIN_MODAL')
  53. if (flag) {
  54. const userStore = useUserInfo()
  55. userStore.updateLoginShow(true)
  56. sessionStorage.removeItem('NEED_LOGIN_MODAL')
  57. }
  58. } catch {}
  59. // 启动本地生成服务(仅在 Electron 的 Node 集成环境有效)
  60. try {
  61. startGenerateServer()
  62. } catch (e) {
  63. console.warn('[generateServer] failed to start', e)
  64. }