From e7a3bd564e86027df0accd73e6adcd99c95bdb18 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期日, 04 一月 2026 14:53:14 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/page/sta/StaPanel.jsx | 147 +++++++++++++++++++++++++++---------------------
zy-acs-flow/src/i18n/en.js | 15 +++++
zy-acs-flow/src/i18n/zh.js | 15 +++++
3 files changed, 113 insertions(+), 64 deletions(-)
diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js
index 3ce2a15..ad48b73 100644
--- a/zy-acs-flow/src/i18n/en.js
+++ b/zy-acs-flow/src/i18n/en.js
@@ -596,6 +596,21 @@
levOffset: 'lev offset',
bottomOffset: 'bottom offset',
},
+ sta: {
+ enums: {
+ type: {
+ in: 'UNLOAD',
+ out: 'LOAD',
+ },
+ state: {
+ reserved: 'RESERVED',
+ waiting: 'WAITING',
+ confirmed: 'CONFIRMED',
+ canceled: 'CANCELLED',
+ timeout: 'TIMEOUT',
+ },
+ },
+ },
funcSta: {
enums: {
type: {
diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js
index 930dcee..dc0d1ec 100644
--- a/zy-acs-flow/src/i18n/zh.js
+++ b/zy-acs-flow/src/i18n/zh.js
@@ -596,6 +596,21 @@
levOffset: '姣忓眰楂樺害',
bottomOffset: '搴曢儴鍋忕Щ閲�',
},
+ sta: {
+ enums: {
+ type: {
+ in: '鏀捐揣',
+ out: '鍙栬揣',
+ },
+ state: {
+ reserved: '宸查绾�',
+ waiting: '绛夊緟鎵ц',
+ confirmed: '宸茬‘璁�',
+ canceled: '宸插彇娑�',
+ timeout: '瓒呮椂',
+ },
+ },
+ },
funcSta: {
enums: {
type: {
diff --git a/zy-acs-flow/src/page/sta/StaPanel.jsx b/zy-acs-flow/src/page/sta/StaPanel.jsx
index 367bb32..1e8414a 100644
--- a/zy-acs-flow/src/page/sta/StaPanel.jsx
+++ b/zy-acs-flow/src/page/sta/StaPanel.jsx
@@ -20,7 +20,6 @@
useDataProvider,
} from 'react-admin';
import { format } from 'date-fns';
-import PanelTypography from "../components/PanelTypography";
import * as Common from '@/utils/common'
const STATUS_FIELDS = [
@@ -30,6 +29,18 @@
{ key: 'outEnable', labelKey: 'table.field.sta.outEnable' },
];
+const INFO_FIELDS = [
+ { labelKey: 'table.field.sta.uuid', valueKey: 'uuid' },
+ { labelKey: 'table.field.sta.zoneId', valueKey: 'zoneId$' },
+ { labelKey: 'table.field.sta.staType', valueKey: 'staType$' },
+ { labelKey: 'table.field.sta.code', valueKey: 'code$' },
+ { labelKey: 'table.field.sta.capacity', valueKey: 'capacity' },
+ { labelKey: 'table.field.sta.offset', valueKey: 'offset' },
+ { labelKey: 'table.field.sta.rsvInCnt', valueKey: 'rsvInCnt' },
+ { labelKey: 'table.field.sta.rsvOutCnt', valueKey: 'rsvOutCnt' },
+ { labelKey: 'table.field.sta.staSts', valueKey: 'staSts$' },
+ { labelKey: 'table.field.sta.zpallet', valueKey: 'zpallet' },
+];
const StaPanel = () => {
const record = useRecordContext();
const translate = useTranslate();
@@ -99,66 +110,14 @@
</Grid>
<Box height={16}> </Box>
<Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.uuid"
- property={record.uuid}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.zoneId"
- property={record.zoneId$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.staType"
- property={record.staType$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.code"
- property={record.code$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.capacity"
- property={record.capacity}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.offset"
- property={record.offset}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.rsvInCnt"
- property={record.rsvInCnt}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.rsvOutCnt"
- property={record.rsvOutCnt}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.staSts"
- property={record.staSts$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.sta.zpallet"
- property={record.zpallet}
- />
- </Grid>
+ {INFO_FIELDS.map(({ labelKey, valueKey }) => (
+ <Grid item xs={12} sm={6} md={4} key={labelKey}>
+ <InfoItem
+ labelKey={labelKey}
+ value={getRecordValue(record, valueKey)}
+ />
+ </Grid>
+ ))}
</Grid>
<Divider sx={{ my: 2 }} />
@@ -209,7 +168,7 @@
<TableRow>
<TableCell colSpan={7}>
<Typography variant="body2" color="textSecondary">
- No reservations
+ {translate('ra.navigation.no_results')}
</Typography>
</TableCell>
</TableRow>
@@ -217,9 +176,9 @@
{reserves.map((reserve) => (
<TableRow key={reserve.id}>
<TableCell>{reserve.name || '-'}</TableCell>
- <TableCell>{reserve.type || '-'}</TableCell>
+ <TableCell>{formatReserveType(reserve.type, translate)}</TableCell>
<TableCellRight>{reserve.qty ?? '-'}</TableCellRight>
- <TableCell>{reserve.state || '-'}</TableCell>
+ <TableCell>{formatReserveState(reserve.state, translate)}</TableCell>
<TableCell>{reserve.agvId$ || reserve.agvId || '-'}</TableCell>
<TableCell>{formatDateTime(reserve.waitingAt)}</TableCell>
<TableCell>{formatDateTime(reserve.confirmedAt)}</TableCell>
@@ -232,6 +191,39 @@
</Card >
</>
);
+};
+
+const InfoItem = ({ labelKey, value }) => {
+ const translate = useTranslate();
+ return (
+ <Stack spacing={0.5}>
+ <Typography variant="caption" color="textSecondary">
+ {Common.camelToPascalWithSpaces(translate(labelKey))}
+ </Typography>
+ <Typography variant="body2" fontWeight={600}>
+ {formatInfoValue(value)}
+ </Typography>
+ </Stack>
+ );
+};
+
+const getRecordValue = (record, key) => {
+ if (!record) return undefined;
+ if (record[key] !== undefined && record[key] !== null) {
+ return record[key];
+ }
+ if (key.endsWith('$')) {
+ const fallbackKey = key.slice(0, -1);
+ return record[fallbackKey];
+ }
+ return record[key];
+};
+
+const formatInfoValue = (value) => {
+ if (value === null || value === undefined || value === '') {
+ return '-';
+ }
+ return value;
};
const StatusIndicator = ({ labelKey, value }) => {
@@ -296,6 +288,33 @@
return String(value);
};
+const formatReserveType = (value, translate) =>
+ formatReserveEnum(value, translate, 'type');
+
+const formatReserveState = (value, translate) =>
+ formatReserveEnum(value, translate, 'state', {
+ cancelled: 'canceled',
+ });
+
+const formatReserveEnum = (value, translate, enumType, overrides = {}) => {
+ const normalized = normalizeValueKey(value);
+ if (!normalized) {
+ return '-';
+ }
+ const translationKey = overrides[normalized] || normalized;
+ return translate(`page.sta.enums.${enumType}.${translationKey}`, { _: value });
+};
+
+const normalizeValueKey = (value) => {
+ if (typeof value === 'string') {
+ return value.trim().toLowerCase();
+ }
+ if (value === undefined || value === null) {
+ return '';
+ }
+ return String(value).trim().toLowerCase();
+};
+
const formatDateTime = (value) => {
if (!value) return '-';
try {
--
Gitblit v1.9.1