import { IframePageParmas, LinkOpenTypeEnum, StateEnum } from "@/types"; import mittBus from "@/utils/mitt"; interface LinkPageOptions { url: string; type?: number | LinkOpenTypeEnum; id?: number; isTicket?: boolean; title?: string; isHeader?: boolean; modalWidth?: number; modalHeight?: number; } export function bschLinkPage(options: LinkPageOptions) { const { url, type = LinkOpenTypeEnum.Open, title } = options; const openType: LinkOpenTypeEnum = type as LinkOpenTypeEnum; if (openType === LinkOpenTypeEnum.Open) { window.open(url); } else if (openType === LinkOpenTypeEnum.Href) { window.location.href = url; } else if (openType === LinkOpenTypeEnum.IFrame) { const { isHeader = false } = options; const params: IframePageParmas = { url, appName: title ?? "", isHeader, }; mittBus.emit("openBschIframePage", params); } else if (openType === LinkOpenTypeEnum.Modal) { const { modalWidth = 80, modalHeight = 70 } = options; mittBus.emit("showLightAppModal", { width: modalWidth, height: modalHeight, url, title: title ?? "轻应用" }); // const { modalTitle = "新窗口", modalWidth = 80, modalHeight = 70 } = options; } } /** 打开应用页面(与 AppList.vue 点击应用图标同一条路径): * 默认新窗口打开;命中 iframe 白名单($conf.ifameAppIdArr)则走站内 iframe(带 Header)。 */ export function openAppPage(app: any, ifameAppIdArr: number[] = []) { const options: LinkPageOptions = { url: app.webAddr, type: LinkOpenTypeEnum.Open, title: app.name, }; if (ifameAppIdArr.includes(app.id)) { options.type = LinkOpenTypeEnum.IFrame; options.isHeader = true; } bschLinkPage(options); } export function isTickeRoterByName(name: string) { return ["BschAppDetails", "AppDetails"].includes(name); }