From 7f70cb15d035f0c233b9e62b9e43aa985317c908 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 04 十一月 2024 10:22:45 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/agv/AgvList.jsx | 73 +++++++++++++++++++++++++++++++++--- 1 files changed, 66 insertions(+), 7 deletions(-) diff --git a/zy-acs-flow/src/page/agv/AgvList.jsx b/zy-acs-flow/src/page/agv/AgvList.jsx index 7a9a0c0..b0855da 100644 --- a/zy-acs-flow/src/page/agv/AgvList.jsx +++ b/zy-acs-flow/src/page/agv/AgvList.jsx @@ -8,7 +8,7 @@ SelectColumnsButton, EditButton, FilterButton, - CreateButton, + useRefresh, ExportButton, BulkDeleteButton, WrapperField, @@ -30,8 +30,13 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, + useGetIdentity, + ListBase, + Title, + Pagination, + ListToolbar, } from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; +import { Box, Typography, LinearProgress, Stack } from '@mui/material'; import { styled } from '@mui/material/styles'; import AgvCreate from "./AgvCreate"; import AgvPanel from "./AgvPanel"; @@ -40,8 +45,64 @@ import MyExportButton from '../components/MyExportButton'; import PageDrawer from "../components/PageDrawer"; import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE } from '@/config/setting'; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, CUSTOM_PAGES_DATA_INTERVAL } from '@/config/setting'; import * as Common from '@/utils/common'; +import { ImageList } from "./GridList"; +import { AgvListFilter } from "./AgvListFilter"; + +export const AgvGrid = () => { + const [createDialog, setCreateDialog] = useState(false); + + return ( + <> + <ListBase perPage={50} sort={{ field: "create_time", order: "asc" }}> + <AgvGridLayout + setCreateDialog={setCreateDialog} + /> + </ListBase> + <AgvCreate + open={createDialog} + setOpen={setCreateDialog} + /> + </> + ) +} + +const AgvGridLayout = ({ setCreateDialog }) => { + const { data, isPending, filterValues, refetch } = useListContext(); + const hasFilters = filterValues && Object.keys(filterValues).length > 0; + + React.useEffect(() => { + const intervalId = setInterval(() => { + refetch(); + }, CUSTOM_PAGES_DATA_INTERVAL); + + return () => clearInterval(intervalId); + }, [refetch]); + + if (isPending) return <LinearProgress />; + if (!data?.length && !hasFilters) return <EmptyData onClick={() => { setCreateDialog(true) }} />; + + return ( + <Stack direction="row" component="div"> + <AgvListFilter /> + <Stack sx={{ width: '100%' }}> + <Title title={"menu.agv"} /> + <ListToolbar actions={( + <TopToolbar> + <MyCreateButton onClick={() => { setCreateDialog(true) }} variant="contained" /> + <MyExportButton /> + </TopToolbar> + )} /> + <ImageList /> + <Pagination rowsPerPageOptions={[10, 25, 50, 100]} /> + </Stack> + </Stack> + ); +} + + + const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -92,7 +153,7 @@ />, ] -const AgvList = () => { +export const AgvList = () => { const translate = useTranslate(); const [createDialog, setCreateDialog] = useState(false); @@ -121,7 +182,7 @@ <MyExportButton /> </TopToolbar> )} - perPage={25} + perPage={DEFAULT_PAGE_SIZE} > <StyledDatagrid preferenceKey='agv' @@ -174,5 +235,3 @@ </Box> ) } - -export default AgvList; -- Gitblit v1.9.1