From bc07c6a47216096242d2ef1b335ae56cfd6b6d91 Mon Sep 17 00:00:00 2001 From: lix Date: Tue, 15 Jul 2025 14:07:43 +0800 Subject: [PATCH 1/2] refactor(router): replace routerRedux with history for navigation --- src/baseStyle.less | 1 + src/components/BiddingRoom/index.js | 1 - src/components/Promenu/index.less | 4 ++-- src/pages/BidEvaluation/Jury.js | 1 - src/pages/BidEvaluation/manager.js | 7 +------ src/pages/BidEvaluation/supplier.js | 2 -- src/pages/Evaluation/BaseInf/index.tsx | 2 +- src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js | 1 - .../Evaluation/BidPreliminary/BidPreliminaryManager/BPM.js | 1 - src/pages/MainPage/ProjectManager/Jury.js | 1 - src/pages/MainPage/ProjectManager/disposalManager.js | 1 - src/pages/MainPage/ProjectManager/index.less | 3 +++ src/pages/MainPage/ProjectManager/manager.js | 1 - src/pages/MainPage/ProjectManager/managerAdmin.js | 1 - src/pages/MainPage/ProjectManager/managerSubAdmin.js | 1 - src/pages/MainPage/ProjectManager/participants.js | 1 - src/pages/MainPage/ProjectManager/purchaseManager.js | 1 - src/pages/MainPage/ProjectManager/supplier.js | 1 - .../ZBiXuan/EvaluationRoom/View/BidDetailedManager/BPR.js | 1 - .../ZBiXuan/EvaluationRoom/View/BidNumberManager/BPR.js | 1 - 20 files changed, 8 insertions(+), 25 deletions(-) diff --git a/src/baseStyle.less b/src/baseStyle.less index c4f8cdf..e54feab 100644 --- a/src/baseStyle.less +++ b/src/baseStyle.less @@ -315,6 +315,7 @@ input::-webkit-outer-spin-button, &.ant-menu-item-only-child { padding-left: 40px !important; height: 56px; + line-height: 25px; margin: 0; padding-top: 16px; padding-bottom: 16px; diff --git a/src/components/BiddingRoom/index.js b/src/components/BiddingRoom/index.js index 95c56e0..70b42fc 100644 --- a/src/components/BiddingRoom/index.js +++ b/src/components/BiddingRoom/index.js @@ -3,7 +3,6 @@ import { Link, history } from '@umijs/max'; import './index.less'; import styles from './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import React, { useState, useEffect, useReducer } from 'react'; import { getSessionUserData, getRoomId, getRoomStatus, getProMethod, getSessionRoleData, getIPassDecode, getDefId, getProId, getOfflineStatusById } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; diff --git a/src/components/Promenu/index.less b/src/components/Promenu/index.less index c0f0dd1..29e82c5 100644 --- a/src/components/Promenu/index.less +++ b/src/components/Promenu/index.less @@ -90,10 +90,10 @@ min-width: 60px; } .horizontal-stepper .MuiStepIcon-completed { - color: #b30000 !important; + color: @primary-color !important; } .horizontal-stepper .MuiStepIcon-active { - color: #b30000 !important; + color: @primary-color !important; } .horizontal-stepper .MuiStep-completed { // min-width: 90px ; diff --git a/src/pages/BidEvaluation/Jury.js b/src/pages/BidEvaluation/Jury.js index 8fe7a0f..09dc3fb 100644 --- a/src/pages/BidEvaluation/Jury.js +++ b/src/pages/BidEvaluation/Jury.js @@ -226,7 +226,6 @@ class Jury extends PureComponent { // 再跳转 if(txt==1){ // sessionStorage.setItem("roomId",record.id) - // this.props.dispatch(routerRedux.push('/ProjectLayout/EvaRoom')) // history.push('/EvaRoom') window.open('/EvaRoom/Eva') }else{ diff --git a/src/pages/BidEvaluation/manager.js b/src/pages/BidEvaluation/manager.js index d460a77..0faa1a5 100644 --- a/src/pages/BidEvaluation/manager.js +++ b/src/pages/BidEvaluation/manager.js @@ -7,7 +7,6 @@ import { getDictBidMethodDict, getProMethod, getRoomId, getDefId, getQuotationMe import { saveLeaderId, getJuryData, checkOpenBidSupplier, getPackageList, createReviewRoom, closingReviewRoom } from './components/service'; import './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import { getProId, getProSignDict } from '@/utils/session'; import ReviewDevided from '@/pages/BidEvaluation/components/ReviewDevided'; import CreateReviewRoom from '@/pages/BidEvaluation/components/CreateReviewRoom'; @@ -68,7 +67,6 @@ class manager extends PureComponent { sessionStorage.setItem("roomId", record.id) this.savePageAndParams(); history.push(`/ProjectLayout/FlowConfig`) - // this.props.dispatch() } //查询评审室列表 getManagerList = (params) => { @@ -126,7 +124,6 @@ class manager extends PureComponent { sessionStorage.setItem("openTime", record.openTime) this.setState({ loading: true }) await getQuotationMethodById(record.id) - // this.props.dispatch(routerRedux.push('/ProjectLayout/EvaRoom')) this.setState({ loading: false }) window.open(`/EvaRoom`) } @@ -134,7 +131,6 @@ class manager extends PureComponent { onJurySet = (record) => { this.savePageAndParams(); history.push({ pathname: '/ProjectLayout/JudgingPanel', state: { roomId: record.id, secId: record.sectionId, openTime: record.openTime } }); - // this.props.dispatch(routerRedux.push(`/ProjectLayout/JudgingPanel?roomId=${record.id}&secId=${record.sectionId}&openTime=${record.openTime}`)); } //创建评审室 onCreateClick = async () => { @@ -429,8 +425,7 @@ class manager extends PureComponent { } // 跳转组建评委会 onRedirectRate = () => { - // this.props.dispatch(history.push('/JudgingPanel/list')) - history.push(`/JudgingPanel/list`) + history.push('/JudgingPanel/list') } render() { diff --git a/src/pages/BidEvaluation/supplier.js b/src/pages/BidEvaluation/supplier.js index 8797235..1458803 100644 --- a/src/pages/BidEvaluation/supplier.js +++ b/src/pages/BidEvaluation/supplier.js @@ -3,7 +3,6 @@ import { Divider, Button, Form, Card, Tabs, Table, Tooltip, Input, Select, Row, import './index.less'; import { connect } from "dva"; import { getProId, getProMethod, getDefId, getQuotationMethodById, getSessionUserData } from '@/utils/session'; -// import { routerRedux } from 'dva/router'; import { getURLInformation } from '@/utils/CommonUtils'; import { btnAuthority } from '@/utils/authority'; import { getMaxTurnSortSupplier } from './components/service'; @@ -72,7 +71,6 @@ class supplier extends PureComponent { sessionStorage.setItem("isBxOneSecondCustom", "0") } this.setState({ loading: false }) - // this.props.dispatch(routerRedux.push('/ProjectLayout/EvaRoom')) window.open('/EvaRoom') } render() { diff --git a/src/pages/Evaluation/BaseInf/index.tsx b/src/pages/Evaluation/BaseInf/index.tsx index 2385ce4..78efb5c 100644 --- a/src/pages/Evaluation/BaseInf/index.tsx +++ b/src/pages/Evaluation/BaseInf/index.tsx @@ -6,7 +6,7 @@ import ProTable, { ProColumns } from '@ant-design/pro-table'; import ReviewDevided from '@/pages/BidEvaluation/components/ReviewDevided'; import { getRoomDataById } from '@/services/common'; import { ExclamationCircleOutlined } from '@ant-design/icons'; - +import '@/assets/zjl_style.less' /** * 评审室内页-基本信息 * @author wuxianhui diff --git a/src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js b/src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js index 4c0f474..297f832 100644 --- a/src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js +++ b/src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js @@ -2,7 +2,6 @@ import React, {PureComponent} from 'react'; import {Divider,Button,Form,Card,Tabs,Table,Tooltip,Input,Select,Row,Col,message,Modal,Pagination,Spin} from 'antd'; // import './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import { getRoomId } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; diff --git a/src/pages/Evaluation/BidPreliminary/BidPreliminaryManager/BPM.js b/src/pages/Evaluation/BidPreliminary/BidPreliminaryManager/BPM.js index 56282c5..cbeb7e4 100644 --- a/src/pages/Evaluation/BidPreliminary/BidPreliminaryManager/BPM.js +++ b/src/pages/Evaluation/BidPreliminary/BidPreliminaryManager/BPM.js @@ -2,7 +2,6 @@ import React, {PureComponent} from 'react'; import {Divider,Button,Form,Card,Tabs,Table,Tooltip,Input,Select,Row,Col,message,Modal,Spin,Pagination} from 'antd'; // import './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import { getRoomId } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; import { CheckOutlined, CloseOutlined } from '@ant-design/icons'; diff --git a/src/pages/MainPage/ProjectManager/Jury.js b/src/pages/MainPage/ProjectManager/Jury.js index 5affae0..210aca0 100644 --- a/src/pages/MainPage/ProjectManager/Jury.js +++ b/src/pages/MainPage/ProjectManager/Jury.js @@ -4,7 +4,6 @@ import { history } from '@umijs/max'; import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { jurySaveInfo, getRA } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/disposalManager.js b/src/pages/MainPage/ProjectManager/disposalManager.js index 0ce3836..be21452 100644 --- a/src/pages/MainPage/ProjectManager/disposalManager.js +++ b/src/pages/MainPage/ProjectManager/disposalManager.js @@ -4,7 +4,6 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Emp import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { auctionFollowUpAProjectManager, getRA } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/index.less b/src/pages/MainPage/ProjectManager/index.less index 742a75b..8afc3de 100644 --- a/src/pages/MainPage/ProjectManager/index.less +++ b/src/pages/MainPage/ProjectManager/index.less @@ -87,6 +87,9 @@ border-radius: 4px; } } + .cardtre { + height: 100%; + } } .topt::-webkit-scrollbar { width: 8px; diff --git a/src/pages/MainPage/ProjectManager/manager.js b/src/pages/MainPage/ProjectManager/manager.js index 7f25f07..e7c9a4d 100644 --- a/src/pages/MainPage/ProjectManager/manager.js +++ b/src/pages/MainPage/ProjectManager/manager.js @@ -5,7 +5,6 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Emp import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { followUpAProjectManager, getSessionUserData } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/managerAdmin.js b/src/pages/MainPage/ProjectManager/managerAdmin.js index 01d7ce2..d298e95 100644 --- a/src/pages/MainPage/ProjectManager/managerAdmin.js +++ b/src/pages/MainPage/ProjectManager/managerAdmin.js @@ -4,7 +4,6 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Emp import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { getRA } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/managerSubAdmin.js b/src/pages/MainPage/ProjectManager/managerSubAdmin.js index 14e3920..9a8e31e 100644 --- a/src/pages/MainPage/ProjectManager/managerSubAdmin.js +++ b/src/pages/MainPage/ProjectManager/managerSubAdmin.js @@ -4,7 +4,6 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Emp import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { getRA } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/participants.js b/src/pages/MainPage/ProjectManager/participants.js index 89d8970..ec567b9 100644 --- a/src/pages/MainPage/ProjectManager/participants.js +++ b/src/pages/MainPage/ProjectManager/participants.js @@ -4,7 +4,6 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Emp import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { getRA } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/purchaseManager.js b/src/pages/MainPage/ProjectManager/purchaseManager.js index 10a22c2..a6916cd 100644 --- a/src/pages/MainPage/ProjectManager/purchaseManager.js +++ b/src/pages/MainPage/ProjectManager/purchaseManager.js @@ -20,7 +20,6 @@ import { import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { followUpAProjectManager, getRA, getSessionUserData } from '@/utils/session'; diff --git a/src/pages/MainPage/ProjectManager/supplier.js b/src/pages/MainPage/ProjectManager/supplier.js index d44a82b..77ccb3e 100644 --- a/src/pages/MainPage/ProjectManager/supplier.js +++ b/src/pages/MainPage/ProjectManager/supplier.js @@ -5,7 +5,6 @@ import { history } from '@umijs/max'; import { connect } from 'dva'; import './index.less'; import talkPng from '@/images/talk/talk.png'; -// import { routerRedux } from 'dva/router'; import { RightOutlined } from '@ant-design/icons'; import moment from 'moment'; import { followUpAProjectSupplier, getSessionUserData, getRA } from '@/utils/session'; diff --git a/src/pages/ZBiXuan/EvaluationRoom/View/BidDetailedManager/BPR.js b/src/pages/ZBiXuan/EvaluationRoom/View/BidDetailedManager/BPR.js index 22f0ca5..98d9e4a 100644 --- a/src/pages/ZBiXuan/EvaluationRoom/View/BidDetailedManager/BPR.js +++ b/src/pages/ZBiXuan/EvaluationRoom/View/BidDetailedManager/BPR.js @@ -2,7 +2,6 @@ import React, {PureComponent} from 'react'; import {Divider,Button,Form,Card,Tabs,Table,Tooltip,Input,Select,Row,Col,message,Modal,Pagination,Spin} from 'antd'; // import './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import { getRoomId } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; diff --git a/src/pages/ZBiXuan/EvaluationRoom/View/BidNumberManager/BPR.js b/src/pages/ZBiXuan/EvaluationRoom/View/BidNumberManager/BPR.js index 9024113..102664b 100644 --- a/src/pages/ZBiXuan/EvaluationRoom/View/BidNumberManager/BPR.js +++ b/src/pages/ZBiXuan/EvaluationRoom/View/BidNumberManager/BPR.js @@ -2,7 +2,6 @@ import React, {PureComponent} from 'react'; import {Divider,Button,Form,Card,Tabs,Table,Tooltip,Input,Select,Row,Col,message,Modal,Pagination,Spin} from 'antd'; // import './index.less'; import { connect } from "dva"; -// import { routerRedux } from 'dva/router'; import { getRoomId } from '@/utils/session'; import { getURLInformation } from '@/utils/CommonUtils'; From 8461126a55bb841e73fa7e8ad317db1892a44741 Mon Sep 17 00:00:00 2001 From: lix Date: Fri, 18 Jul 2025 10:13:27 +0800 Subject: [PATCH 2/2] feat: enhance menu and routing data handling --- config/HomePage/router_home.ts | 1 + config/proxy.ts | 8 ++++++-- package.json | 1 + src/app.tsx | 12 ++++++++---- src/layouts/BasicLayout.tsx | 9 +++++++-- src/models/user.ts | 34 +++++++++++++++++++++++++++++----- tsconfig.json | 1 - 7 files changed, 52 insertions(+), 14 deletions(-) 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,