main.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { createApp } from "vue";
  2. import App from "./App.vue";
  3. import setupPlugins from "@/plugins";
  4. import { createTerminal } from "vue-web-terminal";
  5. // 暗黑主题样式
  6. import "element-plus/theme-chalk/dark/css-vars.css";
  7. import "element-plus/dist/index.css";
  8. // 暗黑模式自定义变量
  9. import "@/styles/dark/css-vars.css";
  10. import "@/styles/index.scss";
  11. import "uno.css";
  12. // 过渡动画
  13. import "animate.css";
  14. import { useConfigStore } from "@/store";
  15. const app = createApp(App);
  16. // 注册插件
  17. app.use(setupPlugins);
  18. // 注册终端组件
  19. app.use(createTerminal());
  20. // 封装设置 title 和 favicon 的函数
  21. const setTitleAndFavicon = async () => {
  22. try {
  23. const configStore = useConfigStore();
  24. await configStore.getConfig();
  25. const webTitle = configStore.configData.sys_web_title?.config_value;
  26. const webFavicon = configStore.configData.sys_web_favicon?.config_value;
  27. const webLogo = configStore.configData.sys_web_logo?.config_value;
  28. if (webTitle) {
  29. document.title = webTitle;
  30. }
  31. if (webFavicon) {
  32. const favicon = document.querySelector('link[rel="icon"]');
  33. if (favicon instanceof HTMLLinkElement) {
  34. favicon.href = webFavicon;
  35. }
  36. }
  37. if (webLogo) {
  38. const loadingLogo = document.querySelector(".loading-container-logo");
  39. if (loadingLogo instanceof HTMLImageElement) {
  40. loadingLogo.src = webLogo;
  41. }
  42. }
  43. } catch (error) {
  44. console.error("获取配置数据失败:", error);
  45. }
  46. };
  47. app.mount("#app");
  48. // 在应用挂载后执行设置逻辑
  49. setTitleAndFavicon();