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