import Glass from '@/components/glass' import { useTranslation } from '@/i18n.ts' import { PageContainer, ProCard } from '@ant-design/pro-components' import { Button, Form, Input, message, Radio, TreeSelect, InputNumber, notification, Alert } from 'antd' import { useAtomValue } from 'jotai' import { menuDataAtom, saveOrUpdateMenuAtom, selectedMenuAtom } from './store.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 '@/types' import MenuTree from './components/MenuTree.tsx' import BatchButton from '@/pages/system/menus/components/BatchButton.tsx' import { useEffect } from 'react' import { createLazyFileRoute } from '@tanstack/react-router' const Menus = () => { const { styles, cx } = useStyle() const { t } = useTranslation() const [ form ] = Form.useForm() const { mutate, isPending, isSuccess, error, isError } = useAtomValue(saveOrUpdateMenuAtom) const { data = [] } = useAtomValue(menuDataAtom) const currentMenu = useAtomValue(selectedMenuAtom) ?? {} useEffect(() => { if (isSuccess) { message.success(t('message.saveSuccess', '保存成功')) } if (isError) { notification.error({ message: t('message.error', '错误'), description: (error as any).message ?? t('message.saveFail', '保存失败'), }) } }, [ isError, isSuccess ]) return ( } > } >
{ return prevValues.id !== curValues.id }}>
) } export const Route = createLazyFileRoute('/system/menus')({ component: Menus }) export default Menus