import Glass from '@/components/glass' import { useTranslation } from '@/i18n.ts' import { PlusOutlined } from '@ant-design/icons' import { PageContainer, ProCard } from '@ant-design/pro-components' import { Button, Form, Input, Radio, TreeSelect, InputNumber, notification, Alert, InputRef, Divider } from 'antd' import { useAtom, useAtomValue } from 'jotai' import { defaultMenu, menuDataAtom, saveOrUpdateMenuAtom, selectedMenuAtom } from '@/store/menu.ts' import IconPicker from '@/components/icon/picker' import ButtonTable from './components/ButtonTable.tsx' import { Flexbox } from 'react-layout-kit' import { DraggablePanel } from '@/components/draggable-panel' import { useStyle } from './style.ts' import { MenuItem } from '@/global' import MenuTree from './components/MenuTree.tsx' import BatchButton from '@/pages/system/menus/components/BatchButton.tsx' import { useEffect, useRef } from 'react' const Menus = () => { const { styles, cx } = useStyle() const { t } = useTranslation() const [ form ] = Form.useForm() const { mutate, isPending, error, isError } = useAtomValue(saveOrUpdateMenuAtom) const { data = [] } = useAtomValue(menuDataAtom) const [ currentMenu, setMenuData ] = useAtom(selectedMenuAtom) ?? {} const menuInputRef = useRef(undefined) useEffect(() => { if (isError) { notification.error({ message: t('message.error', '错误'), description: (error as any).message ?? t('message.saveFail', '保存失败'), }) } }, [ isError ]) useEffect(() => { if (currentMenu.id === 0 && menuInputRef.current) { menuInputRef.current.focus() } }, [ currentMenu ]) return ( } >
} >
{ return prevValues.id !== curValues.id }}>
) } export default Menus