|
@@ -1,15 +1,15 @@
|
|
|
import { Menu, MenuProps } from 'antd'
|
|
|
-import React, { useState } from 'react'
|
|
|
+import React, { useEffect, useState } from 'react'
|
|
|
import styles from './index.less'
|
|
|
import { BusinessType } from '@/enums/gc'
|
|
|
-import { querySubjectList } from '@/services/api/subject'
|
|
|
-import { useRequest } from '@umijs/max'
|
|
|
+import { connect } from '@umijs/max'
|
|
|
import classNames from 'classnames'
|
|
|
import { approvalTypeMap } from '../..'
|
|
|
|
|
|
type LeftMenuProps = {
|
|
|
title?: string
|
|
|
onChange?: (key: string, option: { key: string; label: string }) => void
|
|
|
+ subjectList?: API.SubjectParams[]
|
|
|
}
|
|
|
|
|
|
export const businessOptions = [
|
|
@@ -18,14 +18,14 @@ export const businessOptions = [
|
|
|
{ label: '决算审核', key: BusinessType.DONE }
|
|
|
]
|
|
|
|
|
|
-const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onChange }) => {
|
|
|
+const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onChange, dispatch, subjectList }) => {
|
|
|
const [state, setState] = useState({
|
|
|
openKeys: [],
|
|
|
- subjectList: [],
|
|
|
/** 激活的业务主体id+业务类型 */
|
|
|
activeKey: null,
|
|
|
selectedKeysValue: ''
|
|
|
})
|
|
|
+ console.log(state.activeKey)
|
|
|
|
|
|
const handleOnSelect = ({ key }) => {
|
|
|
const [value, label] = key.split('_')
|
|
@@ -37,19 +37,24 @@ const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onCha
|
|
|
onChange(key, option)
|
|
|
}
|
|
|
}
|
|
|
- useRequest(() => querySubjectList({ current: 1, pageSize: 214000 }), {
|
|
|
- onSuccess: async result => {
|
|
|
- const activeKey = `${result?.items[0]?.ID}_${businessOptions[0].key}`
|
|
|
+ useEffect(() => {
|
|
|
+ if (!subjectList.length) {
|
|
|
+ dispatch({
|
|
|
+ type: 'business/querySubject',
|
|
|
+ payload: { current: 1, pageSize: 214000 }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (subjectList.length) {
|
|
|
+ const activeKey = `${subjectList[0]?.ID}_${businessOptions[0].key}`
|
|
|
setState({
|
|
|
...state,
|
|
|
- subjectList: result?.items,
|
|
|
activeKey,
|
|
|
- openKeys: [result?.items[0]?.ID]
|
|
|
+ openKeys: [subjectList[0]?.ID]
|
|
|
})
|
|
|
handleOnSelect({ key: activeKey })
|
|
|
}
|
|
|
- })
|
|
|
- const rootSubmenuKeys = state.subjectList.map(item => item.ID)
|
|
|
+ }, [subjectList.length])
|
|
|
+ const rootSubmenuKeys = 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) {
|
|
@@ -70,7 +75,7 @@ const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onCha
|
|
|
onOpenChange={onOpenChange}
|
|
|
onSelect={handleOnSelect}
|
|
|
mode="inline"
|
|
|
- items={state.subjectList.map(item => ({
|
|
|
+ items={subjectList.map(item => ({
|
|
|
label: item.name,
|
|
|
key: item.ID,
|
|
|
children: businessOptions.map(business => ({
|
|
@@ -84,4 +89,6 @@ const LeftMenu: React.FC<LeftMenuProps> = ({ title = '业务主体列表', onCha
|
|
|
)
|
|
|
}
|
|
|
|
|
|
-export default LeftMenu
|
|
|
+export default connect(({ business }: { subjectList: BusinessModelState }) => ({
|
|
|
+ subjectList: business.subjectList
|
|
|
+}))(LeftMenu)
|