#
vincentlu
8 天以前 ecf983ba1fa2e8ca88ad9f5dff911b96a96faca4
#
2个文件已修改
85 ■■■■ 已修改文件
zy-acs-flow/src/i18n/zh.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/sta/StaPanel.jsx 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/i18n/zh.js
@@ -573,7 +573,7 @@
                state: "预约状态",
                reason: "原因",
                expireTime: "过期时间",
                waitingAt: "开始等待时间",
                waitingAt: "就位时间",
                confirmedAt: "确认时间",
                cancelledAt: "取消时间",
                uniqKey: "幂等键",
zy-acs-flow/src/page/sta/StaPanel.jsx
@@ -1,4 +1,4 @@
import React, { useState, useEffect } from "react";
import React, { useState, useEffect, useMemo } from "react";
import {
    Box,
    Card,
@@ -18,6 +18,7 @@
    useTranslate,
    useRecordContext,
    useDataProvider,
    useGetMany,
} from 'react-admin';
import { format } from 'date-fns';
import * as Common from '@/utils/common'
@@ -30,23 +31,43 @@
];
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.rsvInCnt', valueKey: 'rsvInCnt' },
    { labelKey: 'table.field.sta.rsvOutCnt', valueKey: 'rsvOutCnt' },
    // { labelKey: 'table.field.sta.staSts', valueKey: 'staSts$' },
    { labelKey: 'table.field.sta.offset', valueKey: 'offset' },
    { labelKey: 'table.field.sta.zpallet', valueKey: 'zpallet' },
];
const RESERVE_COLUMN_COUNT = 11;
const StaPanel = () => {
    const record = useRecordContext();
    const translate = useTranslate();
    const dataProvider = useDataProvider();
    const [reserves, setReserves] = useState([]);
    const [isReservesLoading, setIsReservesLoading] = useState(false);
    const taskIds = useMemo(() => extractIds(reserves, 'taskId'), [reserves]);
    const segmentIds = useMemo(() => extractIds(reserves, 'segmentId'), [reserves]);
    const agvIds = useMemo(() => extractIds(reserves, 'agvId'), [reserves]);
    const { data: taskRecords = [] } = useGetMany('task', { ids: taskIds }, { enabled: taskIds.length > 0 });
    const { data: segmentRecords = [] } = useGetMany('segment', { ids: segmentIds }, { enabled: segmentIds.length > 0 });
    const { data: agvRecords = [] } = useGetMany('agv', { ids: agvIds }, { enabled: agvIds.length > 0 });
    const taskLabelMap = useMemo(
        () => createLabelMap(taskRecords, (item) => item.seqNum),
        [taskRecords]
    );
    const segmentLabelMap = useMemo(
        () => createLabelMap(segmentRecords, (item) => item.groupId + '-' + item.serial),
        [segmentRecords]
    );
    const agvLabelMap = useMemo(
        () => createLabelMap(agvRecords, (item) => item.uuid),
        [agvRecords]
    );
    useEffect(() => {
        if (!record?.id) {
@@ -133,19 +154,23 @@
                        <Table size="small">
                            <TableHead>
                                <TableRow>
                                    <TableCell>{translate('table.field.staReserve.name')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.uuid')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.taskId')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.segmentId')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.agvId')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.type')}</TableCell>
                                    <TableCellRight>{translate('table.field.staReserve.qty')}</TableCellRight>
                                    <TableCell>{translate('table.field.staReserve.state')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.agvId')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.expireTime')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.waitingAt')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.confirmedAt')}</TableCell>
                                    <TableCell>{translate('table.field.staReserve.uniqKey')}</TableCell>
                                </TableRow>
                            </TableHead>
                            <TableBody>
                                {isReservesLoading && (
                                    <TableRow>
                                        <TableCell colSpan={7}>
                                        <TableCell colSpan={RESERVE_COLUMN_COUNT}>
                                            <Box display="flex" alignItems="center" gap={1}>
                                                <CircularProgress size={16} />
                                                <Typography variant="body2" color="textSecondary">
@@ -157,7 +182,7 @@
                                )}
                                {!isReservesLoading && reserves.length === 0 && (
                                    <TableRow>
                                        <TableCell colSpan={7}>
                                        <TableCell colSpan={RESERVE_COLUMN_COUNT}>
                                            <Typography variant="body2" color="textSecondary">
                                                {translate('ra.navigation.no_results')}
                                            </Typography>
@@ -166,13 +191,17 @@
                                )}
                                {reserves.map((reserve) => (
                                    <TableRow key={reserve.id}>
                                        <TableCell>{reserve.name || '-'}</TableCell>
                                        <TableCell>{reserve.uuid || '-'}</TableCell>
                                        <TableCell>{getReferenceLabel(taskLabelMap, reserve.taskId)}</TableCell>
                                        <TableCell>{getReferenceLabel(segmentLabelMap, reserve.segmentId)}</TableCell>
                                        <TableCell>{getReferenceLabel(agvLabelMap, reserve.agvId)}</TableCell>
                                        <TableCell>{formatReserveType(reserve.type, translate)}</TableCell>
                                        <TableCellRight>{reserve.qty ?? '-'}</TableCellRight>
                                        <TableCell>{formatReserveState(reserve.state, translate)}</TableCell>
                                        <TableCell>{reserve.agvId$ || reserve.agvId || '-'}</TableCell>
                                        <TableCell>{formatDateTime(reserve.expireTime)}</TableCell>
                                        <TableCell>{formatDateTime(reserve.waitingAt)}</TableCell>
                                        <TableCell>{formatDateTime(reserve.confirmedAt)}</TableCell>
                                        <TableCell>{reserve.uniqKey || '-'}</TableCell>
                                    </TableRow>
                                ))}
                            </TableBody>
@@ -279,6 +308,37 @@
    return String(value);
};
const extractIds = (items, key) => {
    if (!items || items.length === 0) return [];
    const unique = new Set();
    items.forEach((item) => {
        const value = item?.[key];
        if (value !== undefined && value !== null && value !== '') {
            unique.add(value);
        }
    });
    return Array.from(unique);
};
const createLabelMap = (records, getLabel) => {
    if (!records || records.length === 0) return {};
    return records.reduce((acc, record) => {
        if (record?.id === undefined || record?.id === null) {
            return acc;
        }
        const label = getLabel(record);
        acc[record.id] = label ?? record.id;
        return acc;
    }, {});
};
const getReferenceLabel = (map, id) => {
    if (id === undefined || id === null || id === '') {
        return '-';
    }
    return map?.[id] || id;
};
const formatReserveType = (value, translate) =>
    formatReserveEnum(value, translate, 'type');
@@ -287,6 +347,11 @@
        cancelled: 'canceled',
    });
const getReserveRelationValue = (reserve, key) => {
    if (!reserve) return '-';
    return reserve[`${key}$`] || reserve[key] || '-';
};
const formatReserveEnum = (value, translate, enumType, overrides = {}) => {
    const normalized = normalizeValueKey(value);
    if (!normalized) {