/* * @Author: your name * @Date: 2021-11-09 13:56:33 * @LastEditTime: 2025-04-27 13:43:23 * @LastEditors: code4eat awesomedema@gmail.com * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath: /KC-MiddlePlatform/src/layouts/index.tsx */ import { IRouteComponentProps, useModel, history } from 'umi'; import ProLayout from '@ant-design/pro-layout'; import TopBar from '@/components/topBar'; import { Key, useEffect, useRef, useState } from 'react'; import { getSpecifyMenuDetail, getUserPlatformNav } from '@/service/menu'; import { getAppAccess, getSysParamsByCode } from '@/service'; import { Input, Modal } from 'antd'; import './style.less'; import { KcimCenterSysId } from '@/constant'; import { askAiReq } from '@/service/ai'; import { createFromIconfontCN } from '@ant-design/icons'; import ReactMarkdown from 'react-markdown'; import AiChat from '@/components/intelligenceBot'; const TopHoc = ({ currentSelectedSys, openedSysLists, navData, set_emptyPageContent, logo, topBarTitle, }: { set_emptyPageContent: any; currentSelectedSys: TopBar.Tab | undefined; openedSysLists: TopBar.Tab[]; navData: TopBar.PanelData[]; logo: string; topBarTitle: string; }) => { const { initialState, setInitialState } = useModel('@@initialState'); const onTabChangeHandle = async (data: TopBar.Tab[]) => {}; const onTabClickHandle = async (data: TopBar.Tab) => { const { systemId = '', menuId = '' } = data; const resp = await getAppAccess(systemId.length > 0 ? systemId : menuId); if (!resp) { if (JSON.stringify(data) != '{}') { if (data.contentType != 7) { await setInitialState((s) => ({ ...s, currentSelectedSys: data } as any)); } localStorage.removeItem('selectedKeys'); localStorage.removeItem('openKeys'); if (data.contentType == 4) { //空白页面 if (data.isSetupMenu) { //体系菜单掩藏子应用的menu localStorage.setItem('isChildShowMenu', 'false'); } history.push(`${data.path}?isEmpty=true&menuId=${data.menuId}`); } else { if (data.isSetupMenu) { //体系菜单掩藏子应用的menu localStorage.setItem('isChildShowMenu', 'false'); } else { localStorage.setItem('isChildShowMenu', 'true'); } if (data.contentType == 7 && data.type == 1) { window.open(data.url, '_blank'); } else { history.push(data.path); } } } } else { Modal.error({ title: '当前系统未注册,请联系管理员处理!', }); } }; const userPannelTabClickhandle = (tag: string) => { if (tag == 'LOGOUT') { if (initialState) { const { logout } = initialState; logout && logout(); } } if (tag == 'SETTING') { if (initialState) { // setInitialState((s) => ({ // ...s, // currentSelectedSys: { // menuId: -1, // name: '个人中心', // icon: '', // url: '', // systemId: '-1', // type:1, // contentType:'0', // path: '/personalCenter', // }, // })); } history.push('/personalCenter'); } }; return ( ); }; /** * 定义单条消息的类型 */ type Message = { sender: 'user' | 'bot'; content: string; // 可能包含纯文本或HTML }; const IconFont = createFromIconfontCN({ scriptUrl: '', }); export default function Layout({ children, location, route, history, match }: IRouteComponentProps) { const { initialState, setInitialState } = useModel('@@initialState'); const [navData, set_navData] = useState([]); const [emptyPageContent, set_emptyPageContent] = useState(''); const [isEmpty, set_isEmpty] = useState(false); const [topBarLogoUrl, set_topBarLogoUrl] = useState(''); const [topBarTitle, set_topBarTitle] = useState(''); const queryParams = new URLSearchParams(location.search); const noTopBar = queryParams.get('noTopbar'); const [ifShowAiBtn, set_ifShowAiBtn] = useState(false); const getNavData = async () => { const nav = await getUserPlatformNav(); if (nav) { set_navData(nav as any); setInitialState((t) => ({ ...t, navData: nav } as any)); } }; const getAllParamsHanle = async () => { const resp = await getSysParamsByCode(KcimCenterSysId); if (resp) { resp.forEach((item: any) => { if (item.code == '1739122834787143680') { item.value && set_topBarLogoUrl(item.value); } if (item.code == '1739123252502073344') { item.value && set_topBarTitle(item.value); } if (item.code == '1907252043454746624') { item.value && set_ifShowAiBtn(item.value == '1'); } }); } }; const getEmptyPageContent = async (menuId: Key) => { const menuItem = await getSpecifyMenuDetail(menuId); set_emptyPageContent(menuItem.description); }; useEffect(() => { if (location.pathname != '/login') { getNavData(); } if (location.pathname == '/index') { //localStorage.removeItem('currentSelectedTab'); //localStorage.removeItem('isChildShowMenu'); localStorage.removeItem('selectedKeys'); localStorage.removeItem('openKeys'); } if (location.query.isEmpty == 'true' && location.query.menuId) { getEmptyPageContent(location.query.menuId as string); } }, []); useEffect(() => { if (location.pathname != '/platform') { //排除已有系统的空白页面 set_isEmpty(location.query.isEmpty == 'true'); } }); if (location.pathname == '/login') { return
{children}
; } useEffect(() => { getAllParamsHanle(); }, []); // if (initialState?.currentSelectedSys) { // const { type, url, contentType } = initialState.currentSelectedSys; // if (type == 1 && contentType == 6) { // const userData = localStorage.getItem('userData'); // const { token } = JSON.parse(userData as string); // return ( // // ) // } // } return ( { return ( { history.push(`${item.path}${item.contentType == 4 ? `?isEmpty=true&menuId=${item.key}` : ''}` || '/'); }} > {dom} ); }} menu={{ request: async () => { return [ { path: '/index', name: topBarTitle, }, ]; }, }} pageTitleRender={false} headerRender={ noTopBar != 'true' ? () => { return ( initialState && ( ) ); } : false } > {isEmpty && (

{emptyPageContent}

)} {!isEmpty && (
{(window.self === window.top&&ifShowAiBtn)&&} <>{children}
)}
); }