|
@@ -1,4 +1,4 @@
|
|
|
-import { Menu } from 'antd'
|
|
|
+import { Menu, MenuProps } from 'antd'
|
|
|
import React, { useState } from 'react'
|
|
|
import styles from './index.less'
|
|
|
import { BusinessType } from '@/enums/gc'
|
|
@@ -21,7 +21,7 @@ export const businessOptions = [
|
|
|
|
|
|
const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onChange }) => {
|
|
|
const [state, setState] = useState({
|
|
|
- defaultOpenKeys: null,
|
|
|
+ openKeys: [],
|
|
|
subjectList: [],
|
|
|
/** 激活的业务主体id+业务类型 */
|
|
|
activeKey: null
|
|
@@ -36,12 +36,20 @@ const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onCha
|
|
|
...state,
|
|
|
subjectList: result?.items,
|
|
|
activeKey,
|
|
|
- defaultOpenKeys: [result?.items[0]?.ID]
|
|
|
+ openKeys: [result?.items[0]?.ID]
|
|
|
})
|
|
|
handleOnSelect({ key: activeKey })
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
+ const rootSubmenuKeys = state.subjectList.map(item => item.ID)
|
|
|
+ const onOpenChange: MenuProps['onOpenChange'] = keys => {
|
|
|
+ const latestOpenKey = keys.find(key => state.openKeys.indexOf(key) === -1)
|
|
|
+ if (rootSubmenuKeys.indexOf(latestOpenKey!) === -1) {
|
|
|
+ setState({ ...state, openKeys: keys })
|
|
|
+ } else {
|
|
|
+ setState({ ...state, openKeys: latestOpenKey ? [latestOpenKey] : [] })
|
|
|
+ }
|
|
|
+ }
|
|
|
return (
|
|
|
<div
|
|
|
className={classNames(styles.menuBox, 'w-216px rounded-20px')}
|
|
@@ -50,7 +58,8 @@ const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onCha
|
|
|
{state.activeKey && (
|
|
|
<Menu
|
|
|
defaultSelectedKeys={[state.activeKey]}
|
|
|
- defaultOpenKeys={state.defaultOpenKeys}
|
|
|
+ openKeys={state.openKeys}
|
|
|
+ onOpenChange={onOpenChange}
|
|
|
onSelect={handleOnSelect}
|
|
|
mode="inline"
|
|
|
items={state.subjectList.map(item => ({
|