import React, { useState, useMemo, useEffect } from "react";
import { connect } from "dva";
import { withRouter } from "dva/router";
import { Dropdown, Icon, Menu, message, Button, Modal } from "antd";
import { HeaderSearch as OPTSearch, PictureThumb } from "@woowalker/feui";
import ModifyPassword from "../components/MainPage/ModifyPassword";
import FoUserInfoShow from "../components/MainPage/FoUserInfoShow";
import FeedbackQuestion from "../components/MainPage/FeedbackQuestion";
import GuideCanvas from "../components/MainPage/GuideCanvas";
import IconFont from "../utils/iconFont";
import {
initFilter,
requestFullScreenMethod,
exitFullScreen,
isFullscreenElement,
} from "../utils/common";
import config from "../config";
import "./header.less";
import Option from "./Option";
import FullScreenPage from "./FullScreen";
// 投屏
const DataV = (props) => {
const navTo = () => {
const { OrgId, Tenant, baseConfig } = props.login;
const preUrl = baseConfig.SCREEN_URL || config.dataVUrl;
const queryStr = `OrgId=${OrgId}&Tenant=${Tenant}`;
const url = `${
preUrl.indexOf("?") !== -1 ? preUrl : preUrl + "?"
}${queryStr}`;
window.open(url, "_blank");
};
return (
{/* */}
);
};
const HeaderDataV = connect(({ login }) => ({ login }))(DataV);
// 搜索
const Search = (props) => {
const [autoCompleteData, setAutoCompleteData] = useState([]);
const leafMenus = useMemo(() => {
const menuForms = [];
const menuDatas = [];
function traverseChild(item) {
if (!item.Menu.Nav_MenuForm || item.ChildMenus?.length) {
item.ChildMenus.forEach((x) => {
traverseChild(x);
});
} else if (item.Menu.Nav_MenuForm) {
menuForms.push({
MenuName: item.Menu.NAME,
...item.Menu.Nav_MenuForm,
});
menuDatas.push(item);
}
}
const menus = props.login.loginInfo.Menus || [];
menus.forEach((item) => {
traverseChild(item);
});
return { menuForms, menuDatas };
}, [props.login.loginInfo?.Menus]);
/**
* 搜索菜单
* @param {*} e
*/
const handleSearchMenu = (e) => {
if (!e || e === "") {
setAutoCompleteData([]);
return;
}
const validResult = [];
leafMenus.menuForms.forEach((item) => {
if (
item.CODE.toLowerCase().indexOf(e.toLowerCase()) >= 0 ||
item.NAME.toLowerCase().indexOf(e.toLowerCase()) >= 0 ||
item.MenuName.toLowerCase().indexOf(e.toLowerCase()) >= 0
) {
validResult.push(item);
}
});
setAutoCompleteData(validResult);
};
/**
* 选中菜单
* @param {*} e
*/
const handleSelectMenu = (e) => {
const menu = leafMenus.menuDatas.find(
(item) => item.Menu.Nav_MenuForm.ID === e
);
props.dispatch({
type: "app/updateActivatedMenu",
payload: {
currActivatedTab: menu.Node.ID,
currActivatedMenu: menu.Node,
},
});
props.history.push({ pathname: `/main/${menu.Node.ID}` });
};
if (window.navigator.userAgent.indexOf("Windows") < 1) {
return ;
} else {
return (
);
}
//return (
//
//
//)
};
const HeaderSearch = withRouter(connect(({ login }) => ({ login }))(Search));
// 个人中心
const User = (props) => {
const [visible, setVisible] = useState(false);
/**
* 注销登录
*/
const handleLogout = () => {
const { OrgId, userId } = props.login;
const logJson = initFilter(OrgId, userId, "", 0, 1, 0);
props.dispatch({
type: "app/addLoginOut",
payload: logJson,
});
localStorage.removeItem("accessToken");
localStorage.removeItem("currentMineTypeName");
props.history.push({ pathname: "/login" });
};
/**
* 锁屏
*/
const handleLockScreen = () => {
localStorage.removeItem("accessToken");
props.dispatch({
type: "login/save",
payload: {
screenLocked: true,
},
});
};
/**
* 菜单选中
* @param {*} evt
*/
const handleUserMenuClick = (evt) => {
switch (evt.key) {
case "user-menu-logout":
handleLogout();
break;
case "user-menu-lockscreen":
handleLockScreen();
break;
case "user-menu-cacheclean":
window.localStorage.clear();
message.success("清除成功,即将重新加载页面", 2, () => {
setTimeout(() => window.location.reload(true), 500);
});
break;
default:
break;
}
setVisible(false);
};
const { loginInfo = {} } = props.login;
return (
当前登录:{loginInfo.User?.NAME}
我的资料
修改密码
{/* 问题反馈 */}
{/* 屏幕锁定 */}
清除缓存
版本号:{config.version}
退出登录
}
>
);
};
const HeaderUser = withRouter(connect(({ login }) => ({ login }))(User));
// 2023-10-08 生产单元
const MineType = (props) => {
const [visible, setVisible] = useState(false);
let currUserMineType = localStorage.getItem("MineType");
if (currUserMineType == null || currUserMineType == undefined) {
localStorage.setItem("MineType", "30");
localStorage.setItem("currentMineTypeName", "露天矿");
} else {
if (localStorage.getItem("currentMineTypeName") == null) {
if (currUserMineType.indexOf(30) > -1) {
localStorage.setItem("currentMineType", 30);
localStorage.setItem("currentMineTypeName", "露天矿");
} else if (currUserMineType.indexOf(20) > -1) {
localStorage.setItem("currentMineType", 20);
localStorage.setItem("currentMineTypeName", "尾矿库");
} else if (currUserMineType.indexOf(10) > -1) {
localStorage.setItem("currentMineType", 10);
localStorage.setItem("currentMineTypeName", "选矿厂");
} else if (currUserMineType.indexOf(40) > -1) {
localStorage.setItem("currentMineType", 40);
localStorage.setItem("currentMineTypeName", "地下矿");
}
else if (currUserMineType.indexOf(31) > -1) {
localStorage.setItem("currentMineType", 31);
localStorage.setItem("currentMineTypeName", "职能口");
}
else if (currUserMineType.indexOf(32) > -1) {
localStorage.setItem("currentMineType", 32);
localStorage.setItem("currentMineTypeName", "非金属");
}
} else {
let currentMineType = localStorage.getItem("currentMineType");
if (currUserMineType.indexOf(currentMineType) > -1) {
if (currentMineType == 30) {
localStorage.setItem("currentMineTypeName", "露天矿");
} else if (currUserMineType == 20) {
localStorage.setItem("currentMineTypeName", "尾矿库");
} else if (currUserMineType == 10) {
localStorage.setItem("currentMineTypeName", "选矿厂");
} else if (currUserMineType == 40) {
localStorage.setItem("currentMineTypeName", "地下矿");
}else if (currUserMineType == 31) {
localStorage.setItem("currentMineTypeName", "职能口");
}else if (currUserMineType == 32) {
localStorage.setItem("currentMineTypeName", "非金属");
}
} else {
if (currUserMineType.indexOf(30) > -1) {
localStorage.setItem("currentMineTypeName", "露天矿");
} else if (currUserMineType.indexOf(20) > -1) {
localStorage.setItem("currentMineTypeName", "尾矿库");
} else if (currUserMineType.indexOf(10) > -1) {
localStorage.setItem("currentMineTypeName", "选矿厂");
} else if (currUserMineType.indexOf(40) > -1) {
localStorage.setItem("currentMineTypeName", "地下矿");
}
else if (currUserMineType.indexOf(31) > -1) {
localStorage.setItem("currentMineTypeName", "职能口");
}
else if (currUserMineType.indexOf(32) > -1) {
localStorage.setItem("currentMineTypeName", "非金属");
}
}
}
}
let currUserMineTypeArray = [];
if (currUserMineType.indexOf("30") > -1) {
currUserMineTypeArray.push({ key: "30", label: "露天矿" });
}
if (currUserMineType.indexOf("10") > -1) {
currUserMineTypeArray.push({ key: "10", label: "选矿厂" });
}
if (currUserMineType.indexOf("20") > -1) {
currUserMineTypeArray.push({ key: "20", label: "尾矿库" });
}
if (currUserMineType.indexOf("40") > -1) {
currUserMineTypeArray.push({ key: "40", label: "地下矿" });
}
if (currUserMineType.indexOf("31") > -1) {
currUserMineTypeArray.push({ key: "31", label: "职能口" });
}
if (currUserMineType.indexOf("32") > -1) {
currUserMineTypeArray.push({ key: "32", label: "非金属" });
}
const MineTypeMenu = () => {
return (
);
};
/**
* 生产单元切换
* @param {*} evt
*/
const handleMineTypeClick = (evt) => {
localStorage.setItem("currentMineType", evt.key);
localStorage.setItem("currentMineTypeName", evt.item.props.children);
setVisible(false);
window.location.reload();
};
if (window.navigator.userAgent.indexOf("Windows") < 1) {
return ;
} else {
return (
生产单元:{localStorage.getItem("currentMineTypeName")}
);
}
};
const HeaderMineType = withRouter(
connect(({ login }) => ({ login }))(MineType)
);
const GuideCodePage = (props) => {
const [showCanvas, setshowCanvas] = useState(false);
const currVans = (val) => {
setshowCanvas(true);
};
/**
* 生产单元切换
* @param {*} evt
*/
if (window.navigator.userAgent.indexOf("Windows") < 1) {
return ;
} else {
return (
{
currVans();
}}
style={{ margin: "0px 36px", display: "flex", alignItems: "center" }}
>
{
setshowCanvas(false);
}}
onCancel={() => {
setshowCanvas(false);
}}
footer={null}
>
);
}
};
const GuideCode = withRouter(
connect(({ login }) => ({ login }))(GuideCodePage)
);
const NavOpton = (props) => {
const [showModal, setshowModal] = useState(false);
const getChildCount = (val) => {
setshowModal(val);
};
if (window.navigator.userAgent.indexOf("Windows") < 1) {
return ;
} else {
return (
{
setshowModal(true);
}}
>
{/* */}
{
setshowModal(false);
}}
onCancel={() => {
setshowModal(false);
}}
className="headerModal"
>
);
}
};
const FullScreenOpton = (props) => {
const [showModal, setshowModal] = useState(false);
const getChildCount = (val) => {
setshowModal(val);
};
const [fullScreen, setFullScreen] = useState(false);
const [originResizeFunc, setOriginResizeFunc] = useState();
const escFunction = () => {
let isFull = !!(
document.fullscreen ||
document.mozFullScreen ||
document.webkitIsFullScreen ||
document.webkitFullScreen ||
document.msFullScreen
);
if (isFull) {
// /
}else{
// requestFullScreenMethod(document.body);
setshowModal(false);
}
};
useEffect(() => {
// 监听退出全屏事件 --- chrome 用 esc 退出全屏并不会触发 keyup 事件
document.addEventListener(
"webkitfullscreenchange",
escFunction
); /* Chrome, Safari and Opera */
document.addEventListener("mozfullscreenchange", escFunction); /* Firefox */
document.addEventListener(
"fullscreenchange",
escFunction
); /* Standard syntax */
document.addEventListener(
"msfullscreenchange",
escFunction
); /* IE / Edge */
return () => {
//销毁时清除监听
document.removeEventListener("webkitfullscreenchange", escFunction);
document.removeEventListener("mozfullscreenchange", escFunction);
document.removeEventListener("fullscreenchange", escFunction);
document.removeEventListener("MSFullscreenChange", escFunction);
};
}, []);
if (window.navigator.userAgent.indexOf("Windows") < 1) {
return ;
} else {
return (
{
setshowModal(true);
requestFullScreenMethod(document.body); // 进入全屏
}}
>
{/* */}
{
setshowModal(false);
}}
onCancel={() => {
setshowModal(false);
}}
className="fullScreen"
>
);
}
};
const FullScreen = withRouter(
connect(({ login }) => ({ login }))(FullScreenOpton)
);
const HeaderNav = withRouter(connect(({ login }) => ({ login }))(NavOpton));
function Header(props) {
const { baseConfig = {} } = props.login;
const thumbCode = baseConfig.Nav_PictureLogo
? baseConfig.Nav_PictureLogo.CODE
: "";
let isMobile = false;
if (window.navigator.userAgent.indexOf("Windows") < 1) {
isMobile = true;
}
return (
{isMobile ? (
) : (
矿山安全生产标准化系统
(SPS)
{baseConfig.SYS_NAME}{" "}
)}
{!props.matchLogin ? (
{/* */}
{/* {window.location.host == "121.41.2.71:8001" ? : ""} */}
{/* style={{"color":"#f3eded"}} */}
{props.login.user.NAME}({props.login.user.CODE})
) : null}
);
}
export default connect(({ login }) => ({ login }))(Header);