import React, { useState, useEffect } from 'react' import { history, Outlet, useLocation, matchRoutes } from '@umijs/max' import { Menu, Tabs } from 'antd' import './SystemContentList.less' import { formatRoute, getDefaultRoute } from '@/utils/routeUtils' import { conversationStore, } from '@/utils/pageConversationStore' import { renderPageContent } from '../topnavbar/form/RenderPageContentForm' const SystemContentList = (props) => { const dynamicRoute = window.dynamicRoute const [expandedPage, setExpandedPage] = useState('conversation') const conversationExpanded = expandedPage === 'conversation' const toggleExpand = (page) => { setExpandedPage(prev => prev === page ? null : page) } const [conversationConversations, setConversationConversations] = useState(conversationStore.getConversations()) const location = useLocation() const pathName = location.pathname const [openKey, setOpenKey] = useState([]) const [selectedKey, setSelectedKey] = useState([]) const [menuItems, setMenuItems] = useState([]) let defaultKey = '' useEffect(() => { if (!dynamicRoute || dynamicRoute?.length === 0) return let newList = [] let routes = [] if (dynamicRoute?.length) { let tempRoute = dynamicRoute?.filter(item => pathName.indexOf(item.key) !== -1) ?? [] newList = formatRoute(tempRoute[0]?.children) routes = formatRoute(tempRoute[0]?.children, true) defaultKey = getDefaultRoute(routes) const mathRoute = matchRoutes(routes, pathName) setRouteActive({ key: mathRoute?.length ? pathName : defaultKey }, routes) } setMenuItems(newList) }, [pathName]) useEffect(() => { const unsubscribeConversation = conversationStore.subscribe(({ conversations }) => { setConversationConversations(conversations) }) return () => { unsubscribeConversation() } }, []) const setRouteActive = (value, menu) => { const curKey = value.key const tempMenu = menu ?? menuItems ?? [] const mathRoute = matchRoutes(tempMenu, curKey) let openKeys = [] let selectedKeys = [] mathRoute?.map((item, index) => { mathRoute?.length !== index + 1 && (openKeys = [...openKeys, item.pathname]) mathRoute?.length === index + 1 && (selectedKeys = [...selectedKeys, item.pathname]) }) setOpenKey(openKeys) setSelectedKey(selectedKeys) history.replace(curKey) } return (