Files
open-gateway-front/src/main.ts
T

50 lines
2.0 KiB
TypeScript

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 版本追加 <link>,天然排在本文件组件库样式之后
//(本地 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");