From 6953f79ce7da9f584102c298097b0ca26cdd4fb8 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 27 九月 2024 10:24:55 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java | 3 zy-acs-flow/src/page/mission/MissionList.jsx | 92 ++++++++++++++++++++++ zy-acs-flow/src/page/mission/MissionEmpty.jsx | 77 +++++++++++++++++++ zy-acs-flow/src/page/mission/MissionShow.jsx | 12 +++ 4 files changed, 182 insertions(+), 2 deletions(-) diff --git a/zy-acs-flow/src/page/mission/MissionEmpty.jsx b/zy-acs-flow/src/page/mission/MissionEmpty.jsx new file mode 100644 index 0000000..84d66eb --- /dev/null +++ b/zy-acs-flow/src/page/mission/MissionEmpty.jsx @@ -0,0 +1,77 @@ +import { LinearProgress, Stack, Typography } from '@mui/material'; +import { CreateButton, useGetList } from 'react-admin'; +import useAppBarHeight from '../misc/useAppBarHeight'; +import { matchPath, useLocation } from 'react-router'; +import { DealCreate } from './DealCreate'; +import { Contact } from '../types'; +import { Link } from 'react-router-dom'; + +export const MissionEmpty = ({ children }) => { + const location = useLocation(); + const matchCreate = matchPath('/deals/create', location.pathname); + const appbarHeight = useAppBarHeight(); + + // get Contact data + const { data: contacts, isPending: contactsLoading } = useGetList<Contact>( + 'contacts', + { + pagination: { page: 1, perPage: 1 }, + } + ); + + if (contactsLoading) return <LinearProgress />; + + return ( + <Stack + justifyContent="center" + alignItems="center" + gap={3} + sx={{ + height: `calc(100dvh - ${appbarHeight}px)`, + }} + > + <img src="./img/empty.svg" alt="No contacts found" /> + {contacts && contacts.length > 0 ? ( + <> + <Stack gap={0} alignItems="center"> + <Typography variant="h6" fontWeight="bold"> + No deals found + </Typography> + <Typography + variant="body2" + align="center" + color="text.secondary" + gutterBottom + > + It seems your deal list is empty. + </Typography> + </Stack> + <Stack spacing={2} direction="row"> + <CreateButton variant="contained" label="Create deal" /> + </Stack> + <DealCreate open={!!matchCreate} /> + {children} + </> + ) : ( + <Stack gap={0} alignItems="center"> + <Typography variant="h6" fontWeight="bold"> + No deals found + </Typography> + <Typography + variant="body2" + align="center" + color="text.secondary" + gutterBottom + > + It seems your contact list is empty. + <br /> + <Link to="/contacts/create"> + Add your first contact + </Link>{' '} + before creating a deal. + </Typography> + </Stack> + )} + </Stack> + ); +}; diff --git a/zy-acs-flow/src/page/mission/MissionList.jsx b/zy-acs-flow/src/page/mission/MissionList.jsx index d33cd3b..712cc13 100644 --- a/zy-acs-flow/src/page/mission/MissionList.jsx +++ b/zy-acs-flow/src/page/mission/MissionList.jsx @@ -1,11 +1,101 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate } from 'react-router-dom'; +import { + ListBase, + DatagridConfigurable, + SearchInput, + TopToolbar, + SelectColumnsButton, + EditButton, + FilterButton, + CreateButton, + ExportButton, + BulkDeleteButton, + WrapperField, + useRecordContext, + useTranslate, + useListContext, + useCreatePath, + TextField, + NumberField, + DateField, + BooleanField, + ReferenceField, + TextInput, + DateTimeInput, + DateInput, + SelectInput, + NumberInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + ListToolbar, +} from 'react-admin'; +import { matchPath, useLocation } from 'react-router'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import EmptyData from "../components/EmptyData"; +import PageDrawer from "../components/PageDrawer"; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import * as Common from '@/utils/common'; +// import { MissionEmpty } from "./MissionEmpty"; +import MissionShow from "./MissionShow"; const MissionList = () => { return ( <> - <h1>Fuck</h1> + <ListBase + perPage={100} + filter={{ + }} + > + <MissionLayout /> + </ListBase> </> ) } +const filters = [ + <SearchInput source="q" alwaysOn />, +]; + +const MissionLayout = () => { + const location = useLocation(); + const matchShow = matchPath('/mission/:id/show', location.pathname); + + const { data, isPending, filterValues } = useListContext(); + if (isPending) return null; + console.log(data); + + if (!data?.length) { + return ( + <> + {/* <MissionEmpty> */} + <MissionShow open={!!matchShow} id={matchShow?.params.id} /> + {/* <DealArchivedList /> */} + {/* </MissionEmpty> */} + </> + ); + } + + return ( + <Stack component="div" sx={{ width: '100%' }}> + <Title title={'menu.mission'} /> + <ListToolbar filters={filters} actions={( + <TopToolbar> + <FilterButton /> + <SelectColumnsButton preferenceKey='locSts' /> + </TopToolbar> + )} /> + <Card> + {/* <DealListContent /> */} + </Card> + {/* <DealArchivedList /> */} + + <MissionShow open={!!matchShow} id={matchShow?.params.id} /> + </Stack> + ); +} + export default MissionList; \ No newline at end of file diff --git a/zy-acs-flow/src/page/mission/MissionShow.jsx b/zy-acs-flow/src/page/mission/MissionShow.jsx new file mode 100644 index 0000000..203abbd --- /dev/null +++ b/zy-acs-flow/src/page/mission/MissionShow.jsx @@ -0,0 +1,12 @@ + + +const MissionShow = () => { + + return ( + <> + show + </> + ) +} + +export default MissionShow; \ No newline at end of file diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java index 6174aed..fb131e9 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MissionController.java @@ -1,5 +1,6 @@ package com.zy.acs.manager.manager.controller; +import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import com.zy.acs.manager.manager.service.MissionService; import com.zy.acs.manager.manager.service.SegmentService; @@ -28,7 +29,7 @@ @PreAuthorize("hasAuthority('manager:mission:list')") @PostMapping("/mission/page") public R page(@RequestBody Map<String, Object> map) { - return R.ok().add(missionService.getList()); + return R.ok().add(Cools.add("total", Integer.MAX_VALUE).add("records", missionService.getList())); } } -- Gitblit v1.9.1