fix: type error

This commit is contained in:
vben
2020-11-12 22:20:15 +08:00
parent 21e0548e34
commit ecfb702b09
37 changed files with 83 additions and 73 deletions

View File

@@ -1,4 +1,4 @@
import { AppRouteModule } from '/@/router/types.d';
import { AppRouteModule, RouteModule } from '/@/router/types.d';
import type { MenuModule, Menu, AppRouteRecordRaw } from '/@/router/types';
import { findPath, forEach, treeMap, treeToList } from './treeHelper';
@@ -48,7 +48,7 @@ export function transformRouteToMenu(routeModList: AppRouteModule[]) {
const cloneRouteModList = cloneDeep(routeModList);
const routeList: AppRouteRecordRaw[] = [];
cloneRouteModList.forEach((item) => {
const { layout, routes, children } = item;
const { layout, routes, children } = item as RouteModule;
if (layout) {
layout.children = routes || children;
routeList.push(layout);

View File

@@ -1,4 +1,4 @@
import { createStorage } from '/@/utils/storage/index';
import { createStorage } from '/@/utils/storage';
import { isIeFn } from '/@/utils/browser';
import { BASE_LOCAL_CACHE_KEY, BASE_SESSION_CACHE_KEY } from '/@/enums/cacheEnum';

View File

@@ -1,9 +1,9 @@
import type { AppRouteModule, AppRouteRecordRaw } from '/@/router/types';
import type { AppRouteModule, AppRouteRecordRaw, RouteModule } from '/@/router/types';
import type { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
import { createRouter, createWebHashHistory } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { tabStore } from '/@/store/modules/tab';
import { createRouter, createWebHashHistory } from 'vue-router';
import { toRaw } from 'vue';
import { PAGE_LAYOUT_COMPONENT } from '/@/router/constant';
// import { isDevMode } from '/@/utils/env';
@@ -21,17 +21,17 @@ export function setCurrentTo(to: RouteLocationNormalized) {
}
// 转化路由模块
// 将多级转成2层。keepAlive问题
export function genRouteModule(moduleList: AppRouteModule[]) {
export function genRouteModule(moduleList: AppRouteModule[] | AppRouteRecordRaw[]) {
const ret: AppRouteRecordRaw[] = [];
for (const routeMod of moduleList) {
let routes = [];
let routes: RouteRecordRaw[] = [];
let layout: AppRouteRecordRaw | undefined;
if (Reflect.has(routeMod, 'routes')) {
routes = routeMod.routes as any;
layout = routeMod.layout;
routes = (routeMod as RouteModule).routes as any;
layout = (routeMod as RouteModule).layout;
} else if (Reflect.has(routeMod, 'path')) {
layout = omit(routeMod, 'children') as any;
routes = routeMod.children || [];
routes = (routeMod.children as RouteRecordRaw[]) || ([] as RouteRecordRaw[]);
}
const router = createRouter({ routes, history: createWebHashHistory() });
@@ -66,20 +66,26 @@ function asyncImportRoute(routes: AppRouteRecordRaw[] | undefined) {
});
}
function getLayoutComp(comp: string) {
return comp === 'PAGE_LAYOUT' ? PAGE_LAYOUT_COMPONENT : '';
}
// 将后台对象转成路由对象
export function transformObjToRoute(routeList: AppRouteModule[]) {
export function transformObjToRoute<T = any>(routeList: AppRouteModule[]): T[] {
routeList.forEach((route) => {
asyncImportRoute(Reflect.has(route, 'routes') ? route.routes : route.children || []);
if (route.layout) {
route.layout.component =
route.layout.component === 'PAGE_LAYOUT' ? PAGE_LAYOUT_COMPONENT : '';
asyncImportRoute(
Reflect.has(route, 'routes') ? (route as RouteModule).routes : route.children || []
);
if ((route as RouteModule).layout) {
(route as RouteModule).layout.component = getLayoutComp(
(route as RouteModule).layout.component
);
} else {
route.component = route.component === 'PAGE_LAYOUT' ? PAGE_LAYOUT_COMPONENT : '';
const _layout = omit(route, 'children') as any;
route.layout = _layout;
route.component = getLayoutComp(route.component);
(route as RouteModule).layout = omit(route, 'children') as any;
}
});
return routeList;
return (routeList as unknown) as T[];
}
//

View File

@@ -20,6 +20,7 @@ export function getSlot(slots: Slots, slot = 'default', data?: any) {
/**
* extends slots
* @param slots
* @param excludeKeys
*/
export function extendSlots(slots: Slots, excludeKeys: string[] = []) {
const slotKeys = Object.keys(slots);