Pārlūkot izejas kodu

refactor: 审批模块菜单功能回滚

lanjianrong 3 gadi atpakaļ
vecāks
revīzija
bacd4cabf2

+ 14 - 5
src/pages/Business/RuleCode/components/LeftMenu/index.tsx

@@ -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 => ({