From 75f3cd29a2006eb70bfc8cb47e3e4d780fc75b0b Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期日, 04 一月 2026 16:29:30 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/sta/StaCreate.jsx |   11 ++++-
 zy-acs-flow/src/page/sta/StaPanel.jsx  |   67 ++++++++++++++++++++++++++++++++-
 zy-acs-flow/src/i18n/en.js             |    1 
 zy-acs-flow/src/i18n/zh.js             |    1 
 4 files changed, 76 insertions(+), 4 deletions(-)

diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index ad48b73..fdd374c 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -281,6 +281,7 @@
                 staType: "station type",
                 code: "code",
                 offset: "offset",
+                angle: 'angle',
                 autoing: "autoing",
                 loading: "loading",
                 inEnable: "in enable",
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index 9d0b60a..b11042c 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -281,6 +281,7 @@
                 staType: "绔欑偣绫诲瀷",
                 code: "鍦伴潰鐮�",
                 offset: "鍋忕Щ閲�",
+                angle: '浣滀笟瑙掑害',
                 autoing: "鑷姩",
                 loading: "杞借揣",
                 inEnable: "鍙叆",
diff --git a/zy-acs-flow/src/page/sta/StaCreate.jsx b/zy-acs-flow/src/page/sta/StaCreate.jsx
index d462dc4..7eec5ab 100644
--- a/zy-acs-flow/src/page/sta/StaCreate.jsx
+++ b/zy-acs-flow/src/page/sta/StaCreate.jsx
@@ -160,6 +160,13 @@
                                         validate={required()}
                                     />
                                 </Grid>
+                                <Grid item xs={6} display="flex" gap={1}>
+                                    <NumberInput
+                                        label="table.field.sta.angle"
+                                        source="angle"
+                                        validate={required()}
+                                    />
+                                </Grid>
                                 {/* <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
                                         label="table.field.sta.autoing"
@@ -195,7 +202,7 @@
                                         parse={v => v}
                                     />
                                 </Grid> */}
-                                <Grid item xs={6} display="flex" gap={1}>
+                                {/* <Grid item xs={6} display="flex" gap={1}>
                                     <ReferenceInput
                                         source="staSts"
                                         reference="staSts"
@@ -207,7 +214,7 @@
                                             validate={required()}
                                         />
                                     </ReferenceInput>
-                                </Grid>
+                                </Grid> */}
 
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <StatusSelectInput />
diff --git a/zy-acs-flow/src/page/sta/StaPanel.jsx b/zy-acs-flow/src/page/sta/StaPanel.jsx
index 7bd1e09..2534540 100644
--- a/zy-acs-flow/src/page/sta/StaPanel.jsx
+++ b/zy-acs-flow/src/page/sta/StaPanel.jsx
@@ -13,6 +13,10 @@
     Divider,
     CircularProgress,
     Stack,
+    FormControl,
+    InputLabel,
+    Select,
+    MenuItem,
 } from '@mui/material';
 import {
     useTranslate,
@@ -42,12 +46,16 @@
 ];
 
 const RESERVE_COLUMN_COUNT = 11;
+const RESERVE_TYPE_OPTIONS = ['IN', 'OUT'];
+const RESERVE_STATE_OPTIONS = ['reserved', 'waiting', 'confirmed', 'canceled', 'timeout'];
 const StaPanel = () => {
     const record = useRecordContext();
     const translate = useTranslate();
     const dataProvider = useDataProvider();
     const [reserves, setReserves] = useState([]);
     const [isReservesLoading, setIsReservesLoading] = useState(false);
+    const [typeFilter, setTypeFilter] = useState('');
+    const [stateFilter, setStateFilter] = useState('');
     const taskIds = useMemo(() => extractIds(reserves, 'taskId'), [reserves]);
     const segmentIds = useMemo(() => extractIds(reserves, 'segmentId'), [reserves]);
     const agvIds = useMemo(() => extractIds(reserves, 'agvId'), [reserves]);
@@ -68,6 +76,19 @@
         () => createLabelMap(agvRecords, (item) => item.uuid),
         [agvRecords]
     );
+
+    const filteredReserves = useMemo(() => {
+        if (!typeFilter && !stateFilter) {
+            return reserves;
+        }
+        return reserves.filter((reserve) => {
+            const matchesType =
+                !typeFilter || normalizeValueKey(reserve?.type) === normalizeValueKey(typeFilter);
+            const matchesState =
+                !stateFilter || normalizeValueKey(reserve?.state) === normalizeValueKey(stateFilter);
+            return matchesType && matchesState;
+        });
+    }, [reserves, typeFilter, stateFilter]);
 
     useEffect(() => {
         if (!record?.id) {
@@ -151,6 +172,48 @@
                         <Typography variant="subtitle1" gutterBottom>
                             {translate('menu.staReserve')}
                         </Typography>
+                        <Stack direction={{ xs: 'column', sm: 'row' }} spacing={2} mb={2}>
+                            <FormControl size="small" sx={{ minWidth: 160 }}>
+                                <InputLabel id="sta-panel-reserve-type-label">
+                                    {translate('table.field.staReserve.type')}
+                                </InputLabel>
+                                <Select
+                                    labelId="sta-panel-reserve-type-label"
+                                    value={typeFilter}
+                                    label={translate('table.field.staReserve.type')}
+                                    onChange={(event) => setTypeFilter(event.target.value)}
+                                >
+                                    <MenuItem value="">
+                                        {translate('common.action.reset')}
+                                    </MenuItem>
+                                    {RESERVE_TYPE_OPTIONS.map((option) => (
+                                        <MenuItem key={option} value={option}>
+                                            {formatReserveType(option, translate)}
+                                        </MenuItem>
+                                    ))}
+                                </Select>
+                            </FormControl>
+                            <FormControl size="small" sx={{ minWidth: 160 }}>
+                                <InputLabel id="sta-panel-reserve-state-label">
+                                    {translate('table.field.staReserve.state')}
+                                </InputLabel>
+                                <Select
+                                    labelId="sta-panel-reserve-state-label"
+                                    value={stateFilter}
+                                    label={translate('table.field.staReserve.state')}
+                                    onChange={(event) => setStateFilter(event.target.value)}
+                                >
+                                    <MenuItem value="">
+                                        {translate('common.action.reset')}
+                                    </MenuItem>
+                                    {RESERVE_STATE_OPTIONS.map((option) => (
+                                        <MenuItem key={option} value={option}>
+                                            {formatReserveState(option, translate)}
+                                        </MenuItem>
+                                    ))}
+                                </Select>
+                            </FormControl>
+                        </Stack>
                         <Table size="small">
                             <TableHead>
                                 <TableRow>
@@ -180,7 +243,7 @@
                                         </TableCell>
                                     </TableRow>
                                 )}
-                                {!isReservesLoading && reserves.length === 0 && (
+                                {!isReservesLoading && filteredReserves.length === 0 && (
                                     <TableRow>
                                         <TableCell colSpan={RESERVE_COLUMN_COUNT}>
                                             <Typography variant="body2" color="textSecondary">
@@ -189,7 +252,7 @@
                                         </TableCell>
                                     </TableRow>
                                 )}
-                                {reserves.map((reserve) => (
+                                {filteredReserves.map((reserve) => (
                                     <TableRow key={reserve.id}>
                                         <TableCell>{reserve.uuid || '-'}</TableCell>
                                         <TableCell>{getReferenceLabel(taskLabelMap, reserve.taskId)}</TableCell>

--
Gitblit v1.9.1