This commit is contained in:
wyw 2025-11-26 19:59:53 +08:00
commit 61a46c9903
6 changed files with 162 additions and 133 deletions

View File

@ -202,8 +202,8 @@ class FO043ShowPrint extends React.Component {
<td width="100px" className={styles.fontBold}>序号</td> <td width="100px" className={styles.fontBold}>序号</td>
<td className={styles.fontBold}>作业阶段</td> <td className={styles.fontBold}>作业阶段</td>
<td className={styles.fontBold}>作业流程及安全措施</td> <td className={styles.fontBold}>作业流程及安全措施</td>
<td style={{display:data.STATUS == 30?'inline':'none'}}className={styles.fontBold}>是否确认</td> <td style={{display:data.STATUS == 30?'table-cell':'none'}}className={styles.fontBold}>是否确认</td>
<td style={{display:data.STATUS == 30?'inline':'none'}}className={styles.fontBold}>附件</td> <td style={{display:data.STATUS == 30?'table-cell':'none'}}className={styles.fontBold}>附件</td>
</tr> </tr>
{ {
data.Nav_Details && data.Nav_Details.map((item, i) => { data.Nav_Details && data.Nav_Details.map((item, i) => {
@ -217,11 +217,11 @@ class FO043ShowPrint extends React.Component {
<td> <td>
{item.CONTENT} {item.CONTENT}
</td> </td>
<td style={{display:data.STATUS == 30?'inline':'none'}}> <td style={{display:data.STATUS == 30?'table-cell':'none'}}>
{item.IS_CONFIRM_NEW ? "是" : "否"} {item.IS_CONFIRM_NEW ? "是" : "否"}
{/* {enums.FOYesOrNoEnum.enums[item.IS_CONFIRM]} */} {/* {enums.FOYesOrNoEnum.enums[item.IS_CONFIRM]} */}
</td> </td>
<td style={{display:data.STATUS == 30?'inline':'none'}}> <td style={{display:data.STATUS == 30?'table-cell':'none'}}>
{showFiles(item.Nav_DetailFiles, config.picServerHost, this)} {showFiles(item.Nav_DetailFiles, config.picServerHost, this)}
</td> </td>
@ -231,7 +231,7 @@ class FO043ShowPrint extends React.Component {
</tbody> </tbody>
</table> : null </table> : null
} }
<Descriptions size="middle" bordered className={styles.description} style={{display:data.STATUS == 30?'inline':'none'}}> <Descriptions size="middle" bordered className={styles.description} style={{display:data.STATUS == 30?'block':'none'}}>
<Descriptions.Item label="动火作业现场条件验收情况">{data.COMPLETED_CONDITION}</Descriptions.Item> <Descriptions.Item label="动火作业现场条件验收情况">{data.COMPLETED_CONDITION}</Descriptions.Item>
<Descriptions.Item label="是否可以动火">{enums.FOYesOrNoEnum.enums[data.IS_FIRE]}</Descriptions.Item> <Descriptions.Item label="是否可以动火">{enums.FOYesOrNoEnum.enums[data.IS_FIRE]}</Descriptions.Item>
<Descriptions.Item label="动火实际开始时间">{data.ACT_DATE}</Descriptions.Item> <Descriptions.Item label="动火实际开始时间">{data.ACT_DATE}</Descriptions.Item>
@ -259,7 +259,7 @@ class FO043ShowPrint extends React.Component {
}</Descriptions.Item> }</Descriptions.Item>
</Descriptions> </Descriptions>
<Descriptions size="middle" bordered className={styles.description} style={{display:data.FIRE_STATUS == 10?'inline':'none'}}> <Descriptions size="middle" bordered className={styles.description} style={{display:data.FIRE_STATUS >= 10?'block':'none'}}>
<Descriptions.Item label="动火作业完工验收情况">{ <Descriptions.Item label="动火作业完工验收情况">{
data.COMPLETED_CONTENT data.COMPLETED_CONTENT
}</Descriptions.Item> }</Descriptions.Item>

View File

@ -204,8 +204,8 @@ class FO045ShowPrint extends React.Component {
<td width="100px" className={styles.fontBold}>序号</td> <td width="100px" className={styles.fontBold}>序号</td>
<td className={styles.fontBold}>作业阶段</td> <td className={styles.fontBold}>作业阶段</td>
<td className={styles.fontBold}>作业流程及安全措施</td> <td className={styles.fontBold}>作业流程及安全措施</td>
<td style={{display:data.STATUS == 30?'inline':'none'}}className={styles.fontBold}>是否确认</td> <td style={{display:data.STATUS == 30?'table-cell':'none'}}className={styles.fontBold}>是否确认</td>
<td style={{display:data.STATUS == 30?'inline':'none'}}className={styles.fontBold}>附件</td> <td style={{display:data.STATUS == 30?'table-cell':'none'}}className={styles.fontBold}>附件</td>
</tr> </tr>
{ {
data.Nav_Details && data.Nav_Details.map((item, i) => { data.Nav_Details && data.Nav_Details.map((item, i) => {
@ -219,11 +219,11 @@ class FO045ShowPrint extends React.Component {
<td> <td>
{item.CONTENT} {item.CONTENT}
</td> </td>
<td style={{display:data.STATUS == 30?'inline':'none'}}> <td style={{display:data.STATUS == 30?'table-cell':'none'}}>
{item.IS_CONFIRM_NEW ? "是" : "否"} {item.IS_CONFIRM_NEW ? "是" : "否"}
{/* {enums.FOYesOrNoEnum.enums[item.IS_CONFIRM]} */} {/* {enums.FOYesOrNoEnum.enums[item.IS_CONFIRM]} */}
</td> </td>
<td style={{display:data.STATUS == 30?'inline':'none'}}> <td style={{display:data.STATUS == 30?'table-cell':'none'}}>
{showFiles(item.Nav_DetailFiles, config.picServerHost, this)} {showFiles(item.Nav_DetailFiles, config.picServerHost, this)}
</td> </td>
@ -233,7 +233,7 @@ class FO045ShowPrint extends React.Component {
</tbody> </tbody>
</table> : null </table> : null
} }
<Descriptions size="middle" bordered className={styles.description}style={{display:data.STATUS == 30?'inline':'none'}}> <Descriptions size="middle" bordered className={styles.description}style={{display:data.STATUS == 30?'block':'none'}}>
<Descriptions.Item label="动火作业现场条件验收情况">{data.COMPLETED_CONDITION}</Descriptions.Item> <Descriptions.Item label="动火作业现场条件验收情况">{data.COMPLETED_CONDITION}</Descriptions.Item>
<Descriptions.Item label="是否可以动火">{enums.FOYesOrNoEnum.enums[data.IS_FIRE]}</Descriptions.Item> <Descriptions.Item label="是否可以动火">{enums.FOYesOrNoEnum.enums[data.IS_FIRE]}</Descriptions.Item>
<Descriptions.Item label="动火实际开始时间">{data.ACT_DATE}</Descriptions.Item> <Descriptions.Item label="动火实际开始时间">{data.ACT_DATE}</Descriptions.Item>
@ -259,7 +259,7 @@ class FO045ShowPrint extends React.Component {
}</Descriptions.Item> }</Descriptions.Item>
</Descriptions> </Descriptions>
<Descriptions size="middle" bordered className={styles.description} style={{display:data.FIRE_STATUS == 10?'inline':'none'}}> <Descriptions size="middle" bordered className={styles.description} style={{display:data.FIRE_STATUS >= 10?'block':'none'}}>
<Descriptions.Item label="动火作业完工验收情况">{ <Descriptions.Item label="动火作业完工验收情况">{
data.COMPLETED_CONTENT data.COMPLETED_CONTENT
}</Descriptions.Item> }</Descriptions.Item>

View File

@ -207,7 +207,10 @@ class SK006ShowOperateLog extends React.Component {
<span className={styles.discribeSpanUser}> 用户{item1.USER_NAME}</span> <span className={styles.discribeSpanUser}> 用户{item1.USER_NAME}</span>
<span className={styles.discribeSpanTime}> <span className={styles.discribeSpanTime}>
{' '} {' '}
时间{ShowDateTime(item1.DEAL_DATE, 'MM-dd HH:mm')} 时间
{item1.DEAL_DATE == '0001-01-01 00:00:00' || !item1.DEAL_DATE
? ''
: ShowDateTime(item1.DEAL_DATE, 'MM-dd HH:mm')}
</span> </span>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
import { message } from "antd/lib/index"; import { message } from "antd/lib/index";
import { Button, Descriptions, Popconfirm, Row, Col, Form, Input, Select, Modal } from 'antd'; import { Button, Descriptions, Popconfirm, Row, Col, Form, Input, Select, Modal } from 'antd';
import React from 'react'; import React from 'react';
import { initFilter, extendRule, extendInclude, extendIgnoreDataRule, setDataFieldValue, guid, showFiles, GetFileModel } from "../../../utils/common"; import { initFilter, extendRule, extendInclude, extendIgnoreDataRule, setDataFieldValue, guid, showFiles,showUserSign, GetFileModel } from "../../../utils/common";
import ReactToPrint from "react-to-print"; import ReactToPrint from "react-to-print";
import config from "../../../config"; import config from "../../../config";
import XLSX from 'xlsx'; import XLSX from 'xlsx';

View File

@ -46,16 +46,16 @@ export default {
} }
else if(stateData.FIRE_STATUS == 10) else if(stateData.FIRE_STATUS == 10)
{ {
setFieldEditable('COMPLETED_CONDITION', true) setFieldVisible('COMPLETED_CONDITION', true)
setFieldEditable('IS_FIRE', true) setFieldVisible('IS_FIRE', true)
setFieldEditable('ACT_DATE', true) setFieldVisible('ACT_DATE', true)
setFieldEditable('Nav_FireFiles', true) setFieldVisible('Nav_FireFiles', true)
setFieldEditable('Nav_DispatchUser.NAME', true) setFieldVisible('Nav_DispatchUser.NAME', true)
setFieldEditable('COMPLETED_CONTENT', false) setFieldVisible('COMPLETED_CONTENT', false)
setFieldEditable('IS_LEAVE', false) setFieldVisible('IS_LEAVE', false)
setFieldEditable('ACT_END_DATE', false) setFieldVisible('ACT_END_DATE', false)
setFieldEditable('LEAVE_DATE', false) setFieldVisible('LEAVE_DATE', false)
setFieldEditable('Nav_MonitorFiles', false) setFieldVisible('Nav_MonitorFiles', false)
} }
else if(stateData.FIRE_STATUS == 18) else if(stateData.FIRE_STATUS == 18)
{ {

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect, useMemo, useRef } from "react"; import React, { useState, useEffect, useMemo, useRef } from 'react';
import { import {
AppstoreOutlined, AppstoreOutlined,
CalendarOutlined, CalendarOutlined,
@ -7,26 +7,20 @@ import {
SettingOutlined, SettingOutlined,
MenuUnfoldOutlined, MenuUnfoldOutlined,
MenuFoldOutlined, MenuFoldOutlined,
} from "@ant-design/icons"; } from '@ant-design/icons';
import { Divider, Menu, Switch, Icon, Button, Modal } from "antd"; import { Divider, Menu, Switch, Icon, Button, Modal } from 'antd';
import { connect } from "dva"; import { connect } from 'dva';
import { withRouter, matchPath } from "dva/router"; import { withRouter, matchPath } from 'dva/router';
import { Scrollbars } from "react-custom-scrollbars"; import { Scrollbars } from 'react-custom-scrollbars';
import EnergyIcon from "../utils/energyIcon"; import EnergyIcon from '../utils/energyIcon';
import { $consts } from "../plugins"; import { $consts } from '../plugins';
import "./sider.less"; import './sider.less';
import MenuItem from "antd/lib/menu/MenuItem"; import MenuItem from 'antd/lib/menu/MenuItem';
import SubMenu from "antd/lib/menu/SubMenu"; import SubMenu from 'antd/lib/menu/SubMenu';
import FullScreenPage from "./FullScreen"; import FullScreenPage from './FullScreen';
import { import { requestFullScreenMethod } from '../utils/common';
requestFullScreenMethod,
} from "../utils/common";
const Sider = (props) => { const Sider = (props) => {
/** 菜单页展开与收起 */ /** 菜单页展开与收起 */
const timer = useRef(-1); const timer = useRef(-1);
const handleExpandMenuShow = () => { const handleExpandMenuShow = () => {
@ -44,7 +38,7 @@ const Sider = (props) => {
const [menuShrink, setMenuShrink] = useState({}); const [menuShrink, setMenuShrink] = useState({});
const handleMenuShrink = (menuId) => { const handleMenuShrink = (menuId) => {
const data = Object.assign({}, menuShrink); const data = Object.assign({}, menuShrink);
data[menuId] ? (data[menuId] = "") : (data[menuId] = menuId); data[menuId] ? (data[menuId] = '') : (data[menuId] = menuId);
setMenuShrink(data); setMenuShrink(data);
}; };
const [showModal, setshowModal] = useState(false); const [showModal, setshowModal] = useState(false);
@ -66,34 +60,25 @@ const Sider = (props) => {
}; };
useEffect(() => { useEffect(() => {
// 监听退出全屏事件 --- chrome 用 esc 退出全屏并不会触发 keyup 事件 // 监听退出全屏事件 --- chrome 用 esc 退出全屏并不会触发 keyup 事件
document.addEventListener( document.addEventListener('webkitfullscreenchange', escFunction); /* Chrome, Safari and Opera */
"webkitfullscreenchange", document.addEventListener('mozfullscreenchange', escFunction); /* Firefox */
escFunction document.addEventListener('fullscreenchange', escFunction); /* Standard syntax */
); /* Chrome, Safari and Opera */ document.addEventListener('msfullscreenchange', escFunction); /* IE / Edge */
document.addEventListener("mozfullscreenchange", escFunction); /* Firefox */
document.addEventListener(
"fullscreenchange",
escFunction
); /* Standard syntax */
document.addEventListener(
"msfullscreenchange",
escFunction
); /* IE / Edge */
return () => { return () => {
//销毁时清除监听 //销毁时清除监听
document.removeEventListener("webkitfullscreenchange", escFunction); document.removeEventListener('webkitfullscreenchange', escFunction);
document.removeEventListener("mozfullscreenchange", escFunction); document.removeEventListener('mozfullscreenchange', escFunction);
document.removeEventListener("fullscreenchange", escFunction); document.removeEventListener('fullscreenchange', escFunction);
document.removeEventListener("MSFullscreenChange", escFunction); document.removeEventListener('MSFullscreenChange', escFunction);
}; };
}, []); }, []);
/** 回到首页 */ /** 回到首页 */
const navToHome = () => { const navToHome = () => {
setActiveMenu(null); setActiveMenu(null);
if (localStorage.getItem("webOrgId") == '00300000-0000-0000-0000-000000000000' ) { if (localStorage.getItem('webOrgId') == '00300000-0000-0000-0000-000000000000') {
props.history.replace('/grouphome') props.history.replace('/grouphome');
}else{ } else {
props.history.replace('/home') props.history.replace('/home');
} }
// props.history.push({ pathname: "/home" }); // props.history.push({ pathname: "/home" });
}; };
@ -101,12 +86,72 @@ const Sider = (props) => {
setActiveMenu('largeScreen'); setActiveMenu('largeScreen');
setshowModal(true); setshowModal(true);
requestFullScreenMethod(document.body); requestFullScreenMethod(document.body);
} };
const clickMenu = () => { const clickMenu = () => {
collapsed === true ? setCollapsed(false) : setCollapsed(false) collapsed === true ? setCollapsed(false) : setCollapsed(false);
};
//ykx新增
const [openKeys, setOpenKeys] = useState([]);
// 手风琴模式:只展开一个菜单
const onOpenChange = (keys) => {
if (!keys || keys.length === 0) {
setOpenKeys([]);
return;
} }
// 包含常用菜单 sub1 和所有一级菜单 key
const rootSubMenuKeys = ['sub1', ...topMenus.menus.map((menu, index) => `${menu.Node.ID}_${index}`)];
// 查找最新展开的 key相对于当前 openKeys
const latestOpenKey = keys.find((key) => !openKeys.includes(key));
const isRoot = (key) => rootSubMenuKeys.includes(key);
// 根据二级 key 去找到它的一级父 key通过匹配 topMenus 中的 Children.Node.ID
const getParentKeyBySecondKey = (secondKey) => {
const secondId = String(secondKey).split('_')[0];
for (let i = 0; i < topMenus.menus.length; i++) {
const top = topMenus.menus[i];
if (top.Children && top.Children.some((c) => String(c.Node.ID) === secondId)) {
return `${top.Node.ID}_${i}`;
}
}
return null;
};
// 如果最新展开的是一级菜单,直接只保留该一级菜单(手风琴)
if (latestOpenKey && isRoot(latestOpenKey)) {
setOpenKeys([latestOpenKey]);
return;
}
// 如果最新展开的是二级菜单,保留它的父级和它自己
if (latestOpenKey) {
const parentKey = getParentKeyBySecondKey(latestOpenKey) || keys.find((k) => isRoot(k));
if (parentKey) {
setOpenKeys([parentKey, latestOpenKey]);
return;
}
}
// 兜底:保证每个父级只保留一个二级(取 keys 中最后一个属于该父级的二级)
const parentsInKeys = keys.filter((k) => isRoot(k));
if (parentsInKeys.length) {
const parent = parentsInKeys[0];
const secondsForParent = keys.filter((k) => !isRoot(k) && getParentKeyBySecondKey(k) === parent);
if (secondsForParent.length) {
setOpenKeys([parent, secondsForParent[secondsForParent.length - 1]]);
return;
} else {
setOpenKeys([parent]);
return;
}
}
// 其他情况直接使用传入的 keys
setOpenKeys(keys);
};
/** 子菜单路由 */ /** 子菜单路由 */
const navToMenu = (menu) => { const navToMenu = (menu) => {
props.history.push({ pathname: `/main/${menu.ID}` }); props.history.push({ pathname: `/main/${menu.ID}` });
@ -135,7 +180,7 @@ const Sider = (props) => {
useEffect(() => { useEffect(() => {
const { pathname } = props.location; const { pathname } = props.location;
const mathHome = matchPath(pathname, { const mathHome = matchPath(pathname, {
path: $consts["ROUTE/HOME"], path: $consts['ROUTE/HOME'],
exact: true, exact: true,
strict: true, strict: true,
}); });
@ -143,7 +188,7 @@ const Sider = (props) => {
activeMenu && setActiveMenu(null); activeMenu && setActiveMenu(null);
} }
const mathMain = matchPath(pathname, { const mathMain = matchPath(pathname, {
path: $consts["ROUTE/MAIN"], path: $consts['ROUTE/MAIN'],
exact: true, exact: true,
strict: true, strict: true,
}); });
@ -153,7 +198,7 @@ const Sider = (props) => {
const find = flatMenus.find((item) => item.ID === menuId); const find = flatMenus.find((item) => item.ID === menuId);
if (find) { if (find) {
props.dispatch({ props.dispatch({
type: "app/updateActivatedMenu", type: 'app/updateActivatedMenu',
payload: { payload: {
currActivatedTab: find.ID, currActivatedTab: find.ID,
currActivatedMenu: find, currActivatedMenu: find,
@ -175,12 +220,9 @@ const Sider = (props) => {
const topMenus = useMemo(() => { const topMenus = useMemo(() => {
const menus = props.login.loginInfo?.Menus || []; const menus = props.login.loginInfo?.Menus || [];
// 菜单宽度 82 + margin 40 // 菜单宽度 82 + margin 40
const menuWidth = menus.length const menuWidth = menus.length ? menus.length * 82 + (menus.length - 1) * 40 : 0;
? menus.length * 82 + (menus.length - 1) * 40
: 0;
// 叶子菜单需要换行展示个数 // 叶子菜单需要换行展示个数
const leafMenuSections = const leafMenuSections = menus.length < 3 ? 1 : menus.length === 3 ? 2 : menus.length - 2;
menus.length < 3 ? 1 : menus.length === 3 ? 2 : menus.length - 2;
const result = { const result = {
menus, menus,
width: menuWidth < 120 ? 120 : menuWidth, width: menuWidth < 120 ? 120 : menuWidth,
@ -203,13 +245,7 @@ const Sider = (props) => {
if (IS_MENU_SHRINK) { if (IS_MENU_SHRINK) {
const { menus } = topMenus; const { menus } = topMenus;
const data = {}; const data = {};
menus.forEach( menus.forEach((menu) => menu.Children && menu.Children.forEach((child) => (data[child.Node.ID] = child.Node.ID)));
(menu) =>
menu.Children &&
menu.Children.forEach(
(child) => (data[child.Node.ID] = child.Node.ID)
)
);
setMenuShrink(data); setMenuShrink(data);
} }
}, [IS_MENU_SHRINK]); }, [IS_MENU_SHRINK]);
@ -221,14 +257,14 @@ const Sider = (props) => {
if (collapsed == false) { if (collapsed == false) {
setCollapsed(true); setCollapsed(true);
} }
}, [props.repost]) }, [props.repost]);
// console.log(props.repost,'21312313213213123') // console.log(props.repost,'21312313213213123')
/** 登录页隐藏 */ /** 登录页隐藏 */
if (props.matchLogin) return null; if (props.matchLogin) return null;
return ( return (
<div className={`sider ${"shortMenuShow"}`}> <div className={`sider ${'shortMenuShow'}`}>
<Modal <Modal
title="功能导航" title="功能导航"
visible={showModal} visible={showModal}
@ -244,16 +280,18 @@ const Sider = (props) => {
> >
<FullScreenPage /> <FullScreenPage />
</Modal> </Modal>
<div className={`sider ${"shortMenuShow_overflow"}`}> <div className={`sider ${'shortMenuShow_overflow'}`}>
<Menu <Menu
mode="inline" mode="inline"
inlineCollapsed={collapsed} inlineCollapsed={collapsed}
style={{ style={{
// marginTop: 24, // marginTop: 24,
// paddingRight: 10, // paddingRight: 10,
paddingTop: '21px' paddingTop: '21px',
}} }}
// defaultOpenKeys={['sub1']} // defaultOpenKeys={['sub1']}
openKeys={openKeys}
onOpenChange={onOpenChange}
inlineIndent="16" inlineIndent="16"
onClick={clickMenu} onClick={clickMenu}
> >
@ -266,8 +304,8 @@ const Sider = (props) => {
<Icon type="home"></Icon> <Icon type="home"></Icon>
<span>首页</span> <span>首页</span>
</MenuItem> </MenuItem>
{localStorage.getItem("webOrgId") == '00300000-0000-0000-0000-000000000000'? {localStorage.getItem('webOrgId') == '00300000-0000-0000-0000-000000000000' ? (
<MenuItem key="largeScreen" onClick={navToLarge} title={'可视化大屏'} > <MenuItem key="largeScreen" onClick={navToLarge} title={'可视化大屏'}>
{/* <img {/* <img
src={require("../assets/layout/menu-all.png")} src={require("../assets/layout/menu-all.png")}
alt="" alt=""
@ -275,7 +313,8 @@ const Sider = (props) => {
/> */} /> */}
<Icon type="alert"></Icon> <Icon type="alert"></Icon>
<span>可视化大屏</span> <span>可视化大屏</span>
</MenuItem>:null} </MenuItem>
) : null}
<SubMenu <SubMenu
key="sub1" key="sub1"
title={ title={
@ -283,18 +322,13 @@ const Sider = (props) => {
<Icon type="profile" title="常用菜单"></Icon> <Icon type="profile" title="常用菜单"></Icon>
<span>常用菜单</span> <span>常用菜单</span>
</span> </span>
} }
onTitleClick={clickMenu} onTitleClick={clickMenu}
> >
{favorMenus.map((menu2, index2) => { {favorMenus.map((menu2, index2) => {
return ( return (
<MenuItem <MenuItem key={`${menu2.ID}_${index2}`} onClick={() => handleActiveMenu(menu2)} title={menu2.NAME}>
key={`${menu2.ID}_${index2}`} <Icon type={menu2.ICON ? menu2.ICON : 'file-text'} />
onClick={() => handleActiveMenu(menu2)}
title={menu2.NAME}
>
<Icon type={menu2.ICON ? menu2.ICON : "file-text"} />
<span>{menu2.NAME}</span> <span>{menu2.NAME}</span>
</MenuItem> </MenuItem>
@ -308,47 +342,38 @@ const Sider = (props) => {
key={`${menu.Node.ID}_${index}`} key={`${menu.Node.ID}_${index}`}
title={ title={
<span> <span>
<Icon type={menu.Node.ICON ? menu.Node.ICON : "reconciliation"} title={menu.Node.NAME}></Icon> <Icon type={menu.Node.ICON ? menu.Node.ICON : 'reconciliation'} title={menu.Node.NAME}></Icon>
<span>{menu.Node.NAME}</span> <span>{menu.Node.NAME}</span>
</span> </span>
} }
onTitleClick={() => { onTitleClick={() => {
setCurrMenu(menu.Node); setCurrMenu(menu.Node);
clickMenu() clickMenu();
}} }}
> >
{/* 二级 */} {/* 二级 */}
{menu.Children.map((menu1, index1) => { {menu.Children.map((menu1, index1) => {
const isLevel4Menu = menu1.Children?.find( const isLevel4Menu = menu1.Children?.find((mc) => mc.Children?.length);
(mc) => mc.Children?.length const childMenus = isLevel4Menu ? [menu] : menu.Children || [];
);
const childMenus = isLevel4Menu
? [menu]
: menu.Children || [];
return ( return (
<SubMenu <SubMenu
key={`${menu1.Node.ID}_${index1}`} key={`${menu1.Node.ID}_${index1}`}
title={ title={
<span> <span>
<Icon type={menu1.Node.ICON ? menu1.Node.ICON : "reconciliation"}></Icon> <Icon type={menu1.Node.ICON ? menu1.Node.ICON : 'reconciliation'}></Icon>
<span>{menu1.Node.NAME}</span> <span>{menu1.Node.NAME}</span>
</span> </span>
} }
> >
{/* 三级 */} {/* 三级 */}
{menu1.Children.map((menu3, index3) => { {menu1.Children.map((menu3, index3) => {
return ( return (
<MenuItem key={`${menu3.Node.ID}_${index3}`} onClick={() => <MenuItem
isLevel4Menu key={`${menu3.Node.ID}_${index3}`}
? navToBackend(menu3.Node) onClick={() => (isLevel4Menu ? navToBackend(menu3.Node) : handleActiveMenu(menu3.Node))}
: handleActiveMenu(menu3.Node)
}
title={menu3.Node.NAME} title={menu3.Node.NAME}
> >
<Icon type={menu3.Node.ICON ? menu3.Node.ICON : "file-text"} /> <Icon type={menu3.Node.ICON ? menu3.Node.ICON : 'file-text'} />
<span>{menu3.Node.NAME}</span> <span>{menu3.Node.NAME}</span>
</MenuItem> </MenuItem>
@ -361,9 +386,9 @@ const Sider = (props) => {
); );
})} })}
</Menu> </Menu>
</div> </div>
<div onClick={toggleCollapsed} <div
onClick={toggleCollapsed}
style={{ style={{
marginBottom: 16, marginBottom: 16,
display: 'flex', display: 'flex',
@ -375,17 +400,18 @@ const Sider = (props) => {
backgroundColor: '#DEE0E8', backgroundColor: '#DEE0E8',
borderRadius: '6px', borderRadius: '6px',
margin: '0px 0px 0px 0px', margin: '0px 0px 0px 0px',
}}
}}> >
<Icon type={collapsed ? 'right' : 'left'} style={{ <Icon
type={collapsed ? 'right' : 'left'}
style={{
fontSize: '12px', fontSize: '12px',
display: 'flex', display: 'flex',
// alignItems:'right', // alignItems:'right',
// justifyContent:'flex-end' // justifyContent:'flex-end'
}} /> }}
/>
</div> </div>
</div> </div>
); );
}; };