|
|
@@ -1,10 +1,3 @@
|
|
|
-// 路由components映射
|
|
|
-import type { IRouteProps } from 'umi';
|
|
|
-import type { MenuItem } from '@/pages/system/Menu/typing';
|
|
|
-
|
|
|
-/** localStorage key */
|
|
|
-export const MENUS_DATA_CACHE = 'MENUS_DATA_CACHE';
|
|
|
-
|
|
|
/** 路由Code */
|
|
|
export const MENUS_CODE = {
|
|
|
'Analysis/CPU': 'Analysis/CPU',
|
|
|
@@ -22,27 +15,10 @@ export const MENUS_CODE = {
|
|
|
'device/Category': 'device/Category',
|
|
|
'device/Command': 'device/Command',
|
|
|
'device/DataSource': 'device/DataSource',
|
|
|
- 'device/Firmware/Detail/History': 'device/Firmware/Detail/History',
|
|
|
- 'device/Firmware/Detail/Task/Detail': 'device/Firmware/Detail/Task/Detail',
|
|
|
- 'device/Firmware/Detail/Task/Release': 'device/Firmware/Detail/Task/Release',
|
|
|
- 'device/Firmware/Detail/Task/Save': 'device/Firmware/Detail/Task/Save',
|
|
|
- 'device/Firmware/Detail/Task': 'device/Firmware/Detail/Task',
|
|
|
- 'device/Firmware/Detail': 'device/Firmware/Detail',
|
|
|
'device/Firmware/Save': 'device/Firmware/Save',
|
|
|
'device/Firmware': 'device/Firmware',
|
|
|
- 'device/Instance/Detail/Config/Tags': 'device/Instance/Detail/Config/Tags',
|
|
|
- 'device/Instance/Detail/Config': 'device/Instance/Detail/Config',
|
|
|
- 'device/Instance/Detail/Functions': 'device/Instance/Detail/Functions',
|
|
|
- 'device/Instance/Detail/Info': 'device/Instance/Detail/Info',
|
|
|
- 'device/Instance/Detail/Log': 'device/Instance/Detail/Log',
|
|
|
- 'device/Instance/Detail/MetadataLog/Event': 'device/Instance/Detail/MetadataLog/Event',
|
|
|
- 'device/Instance/Detail/MetadataLog/Property': 'device/Instance/Detail/MetadataLog/Property',
|
|
|
- 'device/Instance/Detail/Running': 'device/Instance/Detail/Running',
|
|
|
- 'device/Instance/Detail': 'device/Instance/Detail',
|
|
|
'device/Instance': 'device/Instance',
|
|
|
'device/Location': 'device/Location',
|
|
|
- 'device/Product/Detail/BaseInfo': 'device/Product/Detail/BaseInfo',
|
|
|
- 'device/Product/Detail': 'device/Product/Detail',
|
|
|
'device/Product/Save': 'device/Product/Save',
|
|
|
'device/Product': 'device/Product',
|
|
|
'device/components/Alarm/Edit': 'device/components/Alarm/Edit',
|
|
|
@@ -64,7 +40,6 @@ export const MENUS_CODE = {
|
|
|
'link/Type': 'link/Type',
|
|
|
'link/Type/Save': 'link/Type/Save',
|
|
|
'link/AccessConfig': 'link/AccessConfig',
|
|
|
- 'link/AccessConfig/Detail': 'link/AccessConfig/Detail',
|
|
|
'log/Access': 'log/Access',
|
|
|
'log/System': 'log/System',
|
|
|
'media/Cascade': 'media/Cascade',
|
|
|
@@ -81,7 +56,6 @@ export const MENUS_CODE = {
|
|
|
'system/Department/Assets': 'system/Department/Assets',
|
|
|
'system/Department/Member': 'system/Department/Member',
|
|
|
'system/Department': 'system/Department',
|
|
|
- 'system/Menu/Detail': 'system/Menu/Detail',
|
|
|
'system/Menu': 'system/Menu',
|
|
|
'system/OpenAPI': 'system/OpenAPI',
|
|
|
'system/Permission': 'system/Permission',
|
|
|
@@ -98,127 +72,34 @@ export const MENUS_CODE = {
|
|
|
'visualization/Category': 'visualization/Category',
|
|
|
'visualization/Configuration': 'visualization/Configuration',
|
|
|
'visualization/Screen': 'visualization/Screen',
|
|
|
+ 'device/Firmware/Detail/History': 'device/Firmware/Detail/History',
|
|
|
+ 'device/Firmware/Detail/Task/Detail': 'device/Firmware/Detail/Task/Detail',
|
|
|
+ 'device/Firmware/Detail/Task/Release': 'device/Firmware/Detail/Task/Release',
|
|
|
+ 'device/Firmware/Detail/Task/Save': 'device/Firmware/Detail/Task/Save',
|
|
|
+ 'device/Firmware/Detail/Task': 'device/Firmware/Detail/Task',
|
|
|
+ 'device/Firmware/Detail': 'device/Firmware/Detail',
|
|
|
+ 'device/Instance/Detail/Config/Tags': 'device/Instance/Detail/Config/Tags',
|
|
|
+ 'device/Instance/Detail/Config': 'device/Instance/Detail/Config',
|
|
|
+ 'device/Instance/Detail/Functions': 'device/Instance/Detail/Functions',
|
|
|
+ 'device/Instance/Detail/Info': 'device/Instance/Detail/Info',
|
|
|
+ 'device/Instance/Detail/Log': 'device/Instance/Detail/Log',
|
|
|
+ 'device/Instance/Detail/MetadataLog/Event': 'device/Instance/Detail/MetadataLog/Event',
|
|
|
+ 'device/Instance/Detail/MetadataLog/Property': 'device/Instance/Detail/MetadataLog/Property',
|
|
|
+ 'device/Instance/Detail/Running': 'device/Instance/Detail/Running',
|
|
|
+ 'device/Instance/Detail': 'device/Instance/Detail',
|
|
|
+ 'device/Product/Detail/BaseInfo': 'device/Product/Detail/BaseInfo',
|
|
|
+ 'device/Product/Detail': 'device/Product/Detail',
|
|
|
+ 'link/AccessConfig/Detail': 'link/AccessConfig/Detail',
|
|
|
+ 'system/Menu/Detail': 'system/Menu/Detail',
|
|
|
+ 'system/Department/Detail': 'system/Department/Detail',
|
|
|
};
|
|
|
|
|
|
-/**
|
|
|
- * 根据url获取映射的组件
|
|
|
- * @param files
|
|
|
- */
|
|
|
-const findComponents = (files: __WebpackModuleApi.RequireContext) => {
|
|
|
- const modules = {};
|
|
|
- files.keys().forEach((key) => {
|
|
|
- // 删除路径开头的./ 以及结尾的 /index;
|
|
|
- const str = key.replace(/(\.\/|\.tsx)/g, '').replace('/index', '');
|
|
|
- modules[str] = files(key).default;
|
|
|
- });
|
|
|
- return modules;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 扁平化路由树
|
|
|
- * @param routes
|
|
|
- */
|
|
|
-export const flatRoute = (routes: MenuItem[]): MenuItem[] => {
|
|
|
- return routes.reduce<MenuItem[]>((pValue, currValue) => {
|
|
|
- const menu: MenuItem[] = [];
|
|
|
- const { children, ...extraRoute } = currValue;
|
|
|
- menu.push(extraRoute);
|
|
|
- return [...pValue, ...menu, ...flatRoute(children || [])];
|
|
|
- }, []);
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 处理为正确的路由格式
|
|
|
- * @param extraRoutes 后端菜单数据
|
|
|
- * @param level 路由层级
|
|
|
- */
|
|
|
-
|
|
|
-const allComponents = findComponents(require.context('@/pages', true, /index(\.tsx)$/));
|
|
|
-const getRoutes = (extraRoutes: MenuItem[], level = 1): IRouteProps[] => {
|
|
|
- return extraRoutes.map((route) => {
|
|
|
- const component = allComponents[route.code] || null;
|
|
|
- const _route: IRouteProps = {
|
|
|
- key: route.url,
|
|
|
- name: route.name,
|
|
|
- path: route.url,
|
|
|
- };
|
|
|
-
|
|
|
- if (route.children && route.children.length) {
|
|
|
- const flatRoutes = getRoutes(flatRoute(route.children || []), level + 1);
|
|
|
- const redirect = flatRoutes.filter((r) => r.component)[0]?.path;
|
|
|
-
|
|
|
- _route.children = redirect
|
|
|
- ? [
|
|
|
- ...flatRoutes,
|
|
|
- {
|
|
|
- path: _route.path,
|
|
|
- redirect: redirect,
|
|
|
- },
|
|
|
- ]
|
|
|
- : flatRoutes;
|
|
|
- }
|
|
|
-
|
|
|
- if (component) {
|
|
|
- _route.component = component;
|
|
|
- }
|
|
|
-
|
|
|
- if (level !== 1) {
|
|
|
- _route.exact = true;
|
|
|
- }
|
|
|
-
|
|
|
- return _route;
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
-export const getMenus = (extraRoutes: IRouteProps[], level: number = 1): any[] => {
|
|
|
- return extraRoutes.map((route) => {
|
|
|
- const children =
|
|
|
- route.children && route.children.length ? getMenus(route.children, level + 1) : [];
|
|
|
- const _route = {
|
|
|
- key: route.url,
|
|
|
- name: route.name,
|
|
|
- path: route.url,
|
|
|
- icon: route.icon,
|
|
|
- exact: level !== 1 ? true : false,
|
|
|
- children: children,
|
|
|
- };
|
|
|
- return _route;
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
-/** 缓存路由数据,格式为 [{ code: url }] */
|
|
|
-export const saveMenusCache = (routes: MenuItem[]) => {
|
|
|
- const list: MenuItem[] = flatRoute(routes);
|
|
|
- const listObject = {};
|
|
|
- list.forEach((route) => {
|
|
|
- listObject[route.code] = route.url;
|
|
|
- });
|
|
|
- try {
|
|
|
- localStorage.setItem(MENUS_DATA_CACHE, JSON.stringify(listObject));
|
|
|
- } catch (e) {
|
|
|
- console.log(e);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 通过缓存的数据取出相应的路由url
|
|
|
- * @param code
|
|
|
- */
|
|
|
-export const getMenuPathByCode = (code: string): string => {
|
|
|
- const menusStr = localStorage.getItem(MENUS_DATA_CACHE) || '{}';
|
|
|
- const menusData = JSON.parse(menusStr);
|
|
|
- return menusData[code];
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 通过缓存的数据取出相应的路由url
|
|
|
- * @param code 路由Code
|
|
|
- * @param id 路由携带参数
|
|
|
- * @param regStr 路由参数code
|
|
|
- */
|
|
|
-export const getMenuPathByParams = (code: string, id?: string, regStr: string = ':id') => {
|
|
|
- const menusData = getMenuPathByCode(code);
|
|
|
- return id ? menusData.replace(regStr, id) : menusData;
|
|
|
+export const getDetailNameByCode = {
|
|
|
+ 'system/Menu/Detail': '菜单详情',
|
|
|
+ 'device/Product/Detail': '产品详情',
|
|
|
+ 'device/Instance/Detail': '设备详情',
|
|
|
+ 'device/Firmware/Detail': '固件详情',
|
|
|
+ 'system/Department/Detail': '部门详情',
|
|
|
+ 'link/Type/Save': '网络组件详情',
|
|
|
+ 'link/AccessConfig/Detail': '配置详情',
|
|
|
};
|
|
|
-
|
|
|
-export default getRoutes;
|