From 3fa7cdec6ce44f07a0dc7e1910511ead606990f3 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 11 九月 2025 08:19:53 +0800
Subject: [PATCH] 1

---
 zy-acs-flow/src/page/mission/MissionList.jsx |   72 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 1 deletions(-)

diff --git a/zy-acs-flow/src/page/mission/MissionList.jsx b/zy-acs-flow/src/page/mission/MissionList.jsx
index d33cd3b..b0b3eca 100644
--- a/zy-acs-flow/src/page/mission/MissionList.jsx
+++ b/zy-acs-flow/src/page/mission/MissionList.jsx
@@ -1,11 +1,81 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import { useNavigate } from 'react-router-dom';
+import {
+    ListBase,
+    TopToolbar,
+    FilterButton,
+    useListContext,
+    TextInput,
+    ReferenceInput,
+    AutocompleteInput,
+    ListToolbar,
+    Title,
+} from 'react-admin';
+import { matchPath, useLocation } from 'react-router';
+import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material';
+import { styled } from '@mui/material/styles';
+import * as Common from '@/utils/common';
+import MissionShow from "./MissionShow";
+import { MissionListContent } from "./MissionListContent";
+import EmptyDataLoader from "../components/EmptyDataLoader";
+import MissionResend from "./MissionResend";
 
 const MissionList = () => {
 
     return (
         <>
-            <h1>Fuck</h1>
+            <ListBase
+                perPage={100}
+                filter={{
+                }}
+            >
+                <MissionLayout />
+            </ListBase>
         </>
     )
 }
 
+const filters = [
+    <ReferenceInput source="agvId" label="table.field.segment.agvId" reference="agv" alwaysOn>
+        <AutocompleteInput label="table.field.segment.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
+    </ReferenceInput>,
+    <TextInput source="groupNo" label="table.field.segment.groupId" />,
+];
+
+const MissionLayout = () => {
+    const location = useLocation();
+    const matchShow = matchPath('/mission/:id/show', location.pathname);
+    const matchResend = matchPath('/mission/:id/resend', location.pathname);
+
+    const { data, isPending, filterValues } = useListContext();
+    const hasFilters = filterValues && Object.keys(filterValues).length > 0;
+
+    if (isPending) return <LinearProgress />;
+    if (!data?.length && !hasFilters) {
+        return (
+            <>
+                <EmptyDataLoader>
+                    <MissionShow open={!!matchShow} groupNo={matchShow?.params.id} />
+                </EmptyDataLoader>
+            </>
+        );
+    }
+
+    return (
+        <Stack component="div" sx={{ width: '100%' }}>
+            <Title title={'menu.mission'} />
+            <ListToolbar filters={filters} actions={(
+                <TopToolbar>
+                    <FilterButton />
+                </TopToolbar>
+            )} />
+            <Card>
+                <MissionListContent />
+            </Card>
+            <MissionShow open={!!matchShow} id={matchShow?.params.id} />
+            <MissionResend open={!!matchResend} id={matchResend?.params.id} />
+        </Stack>
+    );
+}
+
 export default MissionList;
\ No newline at end of file

--
Gitblit v1.9.1