2026-01-26 17:55:28 +08:00
|
|
|
import React, { useState, useEffect } from 'react';
|
2026-01-21 16:29:13 +08:00
|
|
|
import Header from './components/Layouts/Header';
|
|
|
|
|
import MapContainer from './components/Map/MapContainer';
|
|
|
|
|
import SiQuan from './components/Business/SiQuan';
|
|
|
|
|
import SiZhi from './components/Business/SiZhi';
|
|
|
|
|
import SiYu from './components/Business/SiYu';
|
|
|
|
|
import SiGuan from './components/Business/SiGuan';
|
|
|
|
|
import './index.less';
|
|
|
|
|
|
|
|
|
|
const HomePage = () => {
|
|
|
|
|
const [activeMenu, setActiveMenu] = useState('siquan');
|
2026-01-26 17:55:28 +08:00
|
|
|
const [userInfo, setUserInfo] = useState({ userName: '系统管理员' });
|
|
|
|
|
const [isReady, setIsReady] = useState(false);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// 兼容 Hash 路由模式:参数可能跟在 # 后面 (例如 /#/home?token=...)
|
|
|
|
|
let queryString = window.location.search;
|
|
|
|
|
if (window.location.hash.indexOf('?') > -1) {
|
|
|
|
|
queryString = window.location.hash.split('?')[1];
|
|
|
|
|
}
|
|
|
|
|
const params = new URLSearchParams(queryString);
|
|
|
|
|
|
|
|
|
|
const token = params.get('access_token');
|
|
|
|
|
const userName = params.get('userName');
|
|
|
|
|
const userId = params.get('userId');
|
|
|
|
|
|
|
|
|
|
if (token) localStorage.setItem('access_token', token);
|
|
|
|
|
if (userId) localStorage.setItem('userId', userId);
|
|
|
|
|
|
|
|
|
|
// 优先使用 URL 参数中的用户名,其次读取本地存储,最后默认
|
|
|
|
|
const finalUserName = userName || localStorage.getItem('userName') || '系统管理员';
|
|
|
|
|
if (userName) localStorage.setItem('userName', userName);
|
|
|
|
|
|
|
|
|
|
setUserInfo({ userName: finalUserName });
|
|
|
|
|
setIsReady(true);
|
|
|
|
|
}, []);
|
2026-01-21 16:29:13 +08:00
|
|
|
|
|
|
|
|
const renderContent = () => {
|
2026-01-26 17:55:28 +08:00
|
|
|
if (!isReady) return null; //状态提升,防止跳过来的参数,不能及时渲染
|
2026-01-21 16:29:13 +08:00
|
|
|
switch (activeMenu) {
|
|
|
|
|
case 'siquan':
|
|
|
|
|
return <SiQuan />;
|
|
|
|
|
case 'sizhi':
|
|
|
|
|
return <SiZhi />;
|
|
|
|
|
case 'siyu':
|
|
|
|
|
return <SiYu />;
|
|
|
|
|
case 'siguan':
|
|
|
|
|
return <SiGuan />;
|
|
|
|
|
default:
|
|
|
|
|
return <SiQuan />;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className="home-page">
|
2026-01-26 17:55:28 +08:00
|
|
|
<Header activeMenu={activeMenu} onMenuChange={setActiveMenu} userName={userInfo.userName} />
|
2026-01-21 16:29:13 +08:00
|
|
|
<div className="main-content-wrapper">
|
|
|
|
|
<MapContainer />
|
|
|
|
|
<div className="content-overlay">
|
|
|
|
|
{renderContent()}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default HomePage;
|