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