declare global { interface Window { registerBundle: (comp: BizComponent | BizComponent[]) => void; _componentRegisterQueue: any[]; bundleEpochBaseComponents?: any; viewEpochBaseComponents?: any; } } export interface BizComponent { flag: 'biz'; componentName: string; displayName: string; configure: object; } export function configure(config: object, componentName: string, displayName?: string) { return function (target: T): T & BizComponent { const BizTarget = target as T & BizComponent; BizTarget.flag = 'biz'; BizTarget.componentName = componentName; BizTarget.displayName = displayName || componentName; BizTarget.configure = config; return BizTarget; }; } export function getBaseComponent(componentName) { if (!componentName) { return; } const { bundleEpochBaseComponents, viewEpochBaseComponents } = window; if (bundleEpochBaseComponents) { const viewsMap = bundleEpochBaseComponents.default?.viewsMap || {}; return viewsMap[componentName]; } if (viewEpochBaseComponents) { const coms = viewEpochBaseComponents.default || []; return coms.find((com) => com.displayName === componentName); } } export function getAppCodeFromCtx(ctx) { return ( ctx && ((ctx.getContextData && ctx.getContextData('appCode')) || (ctx.getConfig && ctx.getConfig('appCode'))) ); } // todo 看看怎么塞这两个值 export function getPageInfo() { if (window.epochPage && window.epochPage.page) { return window.epochPage.page; } if (window.epochPage && window.epochPage.layout) { return window.epochPage.layout; } return { appCode: '', code: '', }; } export function getDownloadUrl({ path, name }) { if (path && name) { return `/file/download?path=${encodeURIComponent(path)}&name=${encodeURIComponent(name)}`; } return ''; }