mirror of
https://github.com/m-xlsea/ruoyi-plus-soybean.git
synced 2025-09-24 07:49:47 +08:00
refactor(projects): format code style [调整代码格式]
This commit is contained in:
54
src/utils/router/component.ts
Normal file
54
src/utils/router/component.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import type { RouteComponent } from 'vue-router';
|
||||
import { BasicLayout, BlankLayout } from '@/layouts';
|
||||
import { views } from '@/views';
|
||||
import { isFunction } from '../common';
|
||||
|
||||
type Lazy<T> = () => Promise<T>;
|
||||
|
||||
interface ModuleComponent {
|
||||
default: RouteComponent;
|
||||
}
|
||||
|
||||
type LayoutComponent = Record<EnumType.LayoutComponentName, Lazy<ModuleComponent>>;
|
||||
|
||||
/**
|
||||
* 获取布局的vue文件(懒加载的方式)
|
||||
* @param layoutType - 布局类型
|
||||
*/
|
||||
export function getLayoutComponent(layoutType: EnumType.LayoutComponentName) {
|
||||
const layoutComponent: LayoutComponent = {
|
||||
basic: BasicLayout,
|
||||
blank: BlankLayout
|
||||
};
|
||||
return layoutComponent[layoutType];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取页面导入的vue文件
|
||||
* @param routeKey - 路由key
|
||||
*/
|
||||
export function getViewComponent(routeKey: AuthRoute.LastDegreeRouteKey) {
|
||||
if (!views[routeKey]) {
|
||||
throw new Error(`路由“${routeKey}”没有对应的组件文件!`);
|
||||
}
|
||||
return setViewComponentName(views[routeKey], routeKey);
|
||||
}
|
||||
|
||||
/** 给页面组件设置名称 */
|
||||
function setViewComponentName(component: RouteComponent | Lazy<ModuleComponent>, name: string) {
|
||||
if (isAsyncComponent(component)) {
|
||||
return async () => {
|
||||
const result = await component();
|
||||
Object.assign(result.default, { name });
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
Object.assign(component, { name });
|
||||
|
||||
return component;
|
||||
}
|
||||
|
||||
function isAsyncComponent(component: RouteComponent | Lazy<ModuleComponent>): component is Lazy<ModuleComponent> {
|
||||
return isFunction(component);
|
||||
}
|
Reference in New Issue
Block a user