ss-dp/src/views/Home/index.js

89 lines
3.0 KiB
JavaScript

import React, { useState, useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import Header from './components/Layouts/Header';
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 MapCtrl from './MapCtrl/index'
import MapToolBox from './mapToolBox'
import './index.less';
import { showFullScreen } from '@/utils/tools';
const HomePage = () => {
const [activeMenu, setActiveMenu] = useState('siquan');
const [userInfo, setUserInfo] = useState({ userName: '系统管理员' });
const [isReady, setIsReady] = useState(false);
const isFullScreen = useSelector(s => s.runtime.isFullScreen);
const dispatch = useDispatch()
useEffect(()=>{
//根据isFullScreen判断当前是否进入全屏
showFullScreen(isFullScreen)
},[isFullScreen])
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);
dispatch.runtime.setHome()
}, []);
const renderContent = () => {
if (!isReady) return null; //状态提升,防止跳过来的参数,不能及时渲染
switch (activeMenu) {
case 'siquan':
return <SiQuan />;
case 'sizhi':
return <SiZhi />;
case 'siyu':
return <SiYu />;
case 'siguan':
return <SiGuan />;
default:
return <SiQuan />;
}
};
return (
// style={{position:"relative"}} 这段以后写在.home-page里
<div className="home-page" style={{position:"relative"}}>
<Header activeMenu={activeMenu} onMenuChange={setActiveMenu} userName={userInfo.userName} />
<div className="main-content-wrapper" style={{ pointerEvents: 'none' }}>
<div className="content-overlay" style={{ pointerEvents: 'none' }}>
{renderContent()}
</div>
</div>
{/* 地图相关 */}
<div style={{ height: '100%', width: '100%', position: 'absolute', top: 0, left: 0, overflow: 'hidden', zIndex: 0, pointerEvents: 'auto' }}>
{/* 地图 */}
<MapCtrl/>
{/* 控制按钮 */}
<MapToolBox/>
</div>
</div>
)
}
export default HomePage;