import { createApp } from "vue"; import App from "./App.vue"; import router from "@/router"; import utils from "@/utils"; // 接口层副作用:执行 mountApis 把 Apis 挂到 globalThis(页面以全局 Apis.GatewayAdmin.* 调用)。 // auto-import 只登记 default 名 api,页面引用的是 Apis,不会注入 import——必须在此显式引入。 import "@/api"; // @ts-ignore import ViewUIPlus from "view-ui-plus"; import "view-ui-plus/dist/styles/viewuiplus.css"; import "@/assets/styles/main.scss"; // 布局/主题/图标(base.layout.css + iview.override.css + icons.css)由中央静态通道下发: // index.html 的 yh-theme-init.js 按 manifest 版本追加 ,天然排在本文件组件库样式之后 //(本地 layout.css 快照已随之退役,删防双份漂移) import "virtual:uno.css"; import "virtual:svg-icons-register"; import config from "@/assets/config/host.config"; import { consumeSsoReturnUrl } from "@/utils/ssoReturn"; /* 外观三键通道契约(§3):yh-theme-init 异步补齐段按「__APP_CONFIG__.serviceHost + /api/appearance」取服务端真源。网关后端无 env-config 端点、__APP_CONFIG__ 恒空, 这里用 host.config 的同源推导值(生产 /open-gateway、dev 取 VITE_SERVICE_HOST)播种, 否则 init 会裸打域根 /api/appearance 404。模块脚本先于 DOMContentLoaded+delay 执行,时序安全。 */ const g = window as any; g.__APP_CONFIG__ = g.__APP_CONFIG__ || {}; if (!g.__APP_CONFIG__.serviceHost) g.__APP_CONFIG__.serviceHost = config.serviceHost; const app = createApp(App); app.use(router); app.use(ViewUIPlus); app.config.globalProperties.$conf = config; app.config.globalProperties.$utils = utils; // SSO 登录往返只能把浏览器送回控制台默认页(后端用固定 CAS service,见网关 SsoAddressing); // 挂载前先换回跳转前记下的页签,避免首帧闪一下默认页。 const ssoReturn = consumeSsoReturnUrl(); if (ssoReturn) router.replace(ssoReturn); app.mount("#app");