feat: 添加字典方法
Some checks failed
coverage CI / build (push) Has been cancelled

This commit is contained in:
2025-09-27 15:52:40 +08:00
parent 39f9e0e714
commit b4d3535b91
10 changed files with 1290 additions and 35 deletions

View File

@@ -1,15 +1,9 @@
import type { Settings as LayoutSettings } from '@ant-design/pro-components';
import { SettingDrawer } from '@ant-design/pro-components';
import type { RequestConfig, RunTimeLayoutConfig } from '@umijs/max';
import { history, Link, Navigate } from '@umijs/max';
import { Modal, Spin } from 'antd';
import React, {
Children,
Component,
createContext,
JSX,
Suspense,
} from 'react';
import { history, Navigate } from '@umijs/max';
import { Spin } from 'antd';
import React from 'react';
import {
AvatarDropdown,
AvatarName,
@@ -18,17 +12,14 @@ import {
SelectLang,
} from '@/components';
import { getInfo } from '@/services/login';
import type { TokenType, UserInfoVO, UserVO } from '@/services/login/types';
import type { UserInfoVO } from '@/services/login/types';
import defaultSettings from '../config/defaultSettings';
import { errorConfig } from './requestErrorConfig';
import '@ant-design/v5-patch-for-react-19';
import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth';
import {
transformBackendMenuToFlatRoutes,
transformMenuToRoutes,
} from '@/utils/menuUtils';
import { useDictStore } from '@/hooks/stores/dict';
import { getAccessToken, getTenantId } from '@/utils/auth';
import { CACHE_KEY, useCache } from './hooks/web/useCache';
import { MenuVO } from './services/system/menu';
const isDev = process.env.NODE_ENV === 'development';
const isDevOrTest = isDev || process.env.CI;
@@ -46,6 +37,7 @@ export async function getInitialState(): Promise<{
fetchUserInfo?: () => Promise<UserInfoVO | undefined>;
}> {
const { wsCache } = useCache();
const dictStore = useDictStore();
const fetchUserInfo = async () => {
// history.push(loginPath);
try {
@@ -57,6 +49,10 @@ export async function getInitialState(): Promise<{
wsCache.set(CACHE_KEY.USER, data);
wsCache.set(CACHE_KEY.ROLE_ROUTERS, data.menus);
if (!dictStore.getIsSetDict) {
await dictStore.setDictMap();
}
// 转换菜单格式
return data;
@@ -198,7 +194,7 @@ export const request: RequestConfig = {
};
// 如果有token则添加Authorization头
if (token) {
headers['Authorization'] = `Bearer ${getAccessToken()}`;
headers.Authorization = `Bearer ${getAccessToken()}`;
}
return { url, options: { ...options, headers } };
},
@@ -241,7 +237,7 @@ export function patchClientRoutes({ routes }: { routes: any }) {
const parentId = routes[routerIndex].id;
if (globalMenus) {
routes[routerIndex]['routes'].push(...loopMenuItem(globalMenus, parentId));
routes[routerIndex].routes.push(...loopMenuItem(globalMenus, parentId));
}
}
@@ -308,7 +304,7 @@ const findFirstLeafRoute = (menuItem: any, parent = '/'): string | null => {
// 递归查找第一个叶子节点
for (const child of menuItem.children) {
const leafRoute = findFirstLeafRoute(child, menuItem.path + '/');
const leafRoute = findFirstLeafRoute(child, `${menuItem.path}/`);
if (leafRoute) {
return leafRoute;
}