diff --git a/config/HomePage/router_home.ts b/config/HomePage/router_home.ts index dc02a47..3186226 100644 --- a/config/HomePage/router_home.ts +++ b/config/HomePage/router_home.ts @@ -1,5 +1,6 @@ export default [ { + name: '首页', path: '/Dashboard', component: './MainPage/ProjectManager', }, diff --git a/config/proxy.ts b/config/proxy.ts index 9aac713..8a2014b 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -14,7 +14,7 @@ export default { }, UAT: { '/api/sys-manager-ebtp-project': { - target: 'http://localhost:18030', + target: 'http://192.168.110.231:18030', changeOrigin: true, pathRewrite: { '/api/sys-manager-ebtp-project': '' }, }, @@ -58,7 +58,11 @@ export default { changeOrigin: true, pathRewrite: { '/api/biz-supplier-manage': '' }, }, - + '/api/biz-service-ebtp-resps': { + target: 'http://192.168.110.51:18013', + changeOrigin: true, + pathRewrite: { '/api/biz-service-ebtp-resps': '' }, + }, // '/api/wfap/v1/audit/bill/find/by/procid': { // target: 'http://10.242.31.158:8891/',//审批单 uat环境自动审批,暂时用不到 // changeOrigin: true, diff --git a/package.json b/package.json index 6c56a81..9567b17 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "devDependencies": { "@alita/plugins": "^3.5.5", "@types/classnames": "^2.2.7", + "@types/cookie": "0.5.4", "@types/express": "^4.17.0", "@types/history": "^4.7.2", "@types/jest": "^26.0.0", diff --git a/src/app.tsx b/src/app.tsx index bbc867b..66063c0 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -50,7 +50,8 @@ function TabLayout({ const items = Object.entries(keepElements.current).map( ([pathname]: any) => { const pathnameLowerCase = pathname.toLowerCase(); - const label = pathKeyMap.get(pathnameLowerCase)?.name || 'Unknown'; + const pathKeyMapItem = pathKeyMap.get(pathnameLowerCase); + const label = pathKeyMapItem?.name || pathKeyMapItem?.routeName || 'Unknown'; const active = pathnameLowerCase === activeKeyLowerCase; return ({ label, key: pathnameLowerCase, closeIcon: }) }, @@ -61,7 +62,8 @@ function TabLayout({ { - navigate(key); + const { pathname, search } = keepElements.current[key].location; + navigate(`${pathname}${search}`); }} activeKey={activeKeyLowerCase} type="editable-card" @@ -79,12 +81,14 @@ function TabLayout({ return } dropByCacheKey(targetKey) - if (targetKey === activeKey) { + if (targetKey === activeKey?.toLowerCase()) { // 删除当前选中的tab时: // 1.如果当前tab是第一个时自动选中后一个 // 2.不是第一个时自动选中前一个 const i = pathList.indexOf(targetKey) - navigate(pathList[i === 0 ? i + 1 : i - 1]) + const to = pathList[i === 0 ? i + 1 : i - 1] + const { pathname, search } = keepElements.current[to].location; + navigate(`${pathname}${search}`) } }} items={items} diff --git a/src/layouts/BasicLayout.tsx b/src/layouts/BasicLayout.tsx index 1fe5aa0..d201261 100644 --- a/src/layouts/BasicLayout.tsx +++ b/src/layouts/BasicLayout.tsx @@ -4,7 +4,7 @@ import ProLayout, { Settings, } from '@ant-design/pro-layout'; import React, { useEffect, useMemo, useRef, useState } from 'react'; -import { Link, connect, Dispatch, history, Outlet, useLocation, useKeepOutlets } from '@umijs/max'; +import { Link, connect, Dispatch, history, useLocation, useKeepOutlets, useAppData } from '@umijs/max'; import { Result, Button, message } from 'antd'; import Authorized from '@/utils/Authorized'; import RightContent from '@/components/GlobalHeader/RightContent'; @@ -105,6 +105,8 @@ const BasicLayout: React.FC = (props) => { const mall3_token: any = sessionStorage.getItem('Authorization');//当前登录token const userData: any = getSessionUserData();//当前登录人信息 const children = useKeepOutlets(); + const routeData = useAppData(); + useEffect(() => { if (getSessionRoleData()?.roleId) { let params = { @@ -116,7 +118,10 @@ const BasicLayout: React.FC = (props) => { if (dispatch) { dispatch({ type: 'user/saveMenuData', - payload: res.data || [], + payload: { + menuData: res.data || [], + routeData: routeData.routes, + }, }); } setmenuShow(true) diff --git a/src/models/user.ts b/src/models/user.ts index 5e802c8..72cba41 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -16,10 +16,16 @@ export interface CurrentUser { unreadCount?: number; } +export interface PathKeyMap { + name: string; + icon?: string; + routeName?: string; +} + export interface UserModelState { currentUser?: CurrentUser; menuData?: any[]; - pathKeyMap?: Map; + pathKeyMap?: Map; } export interface UserModelType { @@ -42,7 +48,7 @@ const UserModel: UserModelType = { state: { currentUser: {}, menuData: [], - pathKeyMap: new Map(), + pathKeyMap: new Map(), }, effects: { @@ -70,8 +76,9 @@ const UserModel: UserModelType = { }; }, saveMenuData(state, action) { - const menuData = action.payload || []; - const pathKeyMap = new Map(); + const menuData = action.payload.menuData || []; + const routeData = action.payload.routeData || []; + const pathKeyMap = new Map(); // 将menuData转换为pathKeyMap 递归处理 const convertToPathKeyMap = (menuData: any[]) => { menuData.forEach((item: any) => { @@ -83,7 +90,24 @@ const UserModel: UserModelType = { }); }; convertToPathKeyMap(menuData); - pathKeyMap.set('/dashboard', { name: '首页' }); + let i = 1; + while (routeData[i]) { + const item = routeData[i]; + if (item.name) { + const pathname = item.path.toLowerCase(); + if (pathKeyMap.has(pathname)) { + const target = pathKeyMap.get(pathname)!; + const newItem = { + ...target, + routeName: item.name, + } + pathKeyMap.set(pathname, newItem); + } else { + pathKeyMap.set(pathname, { name: item.name, icon: item.icon }); + } + } + i++; + } return { ...state, menuData: action.payload || [], diff --git a/tsconfig.json b/tsconfig.json index 814972c..7184137 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,6 @@ "moduleResolution": "node", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, - "suppressImplicitAnyIndexErrors": true, "noUnusedLocals": true, "allowJs": true, "skipLibCheck": true,