From 29aa7746640d7d0c0f01f3e0d3f23ef3250086a7 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期五, 13 六月 2025 16:50:39 +0800
Subject: [PATCH] 数据为空的校验补充
---
zy-acs-flow/src/page/segment/SegmentList.jsx | 98 ++++++++++++++++++++++++++++++++++++------------
1 files changed, 73 insertions(+), 25 deletions(-)
diff --git a/zy-acs-flow/src/page/segment/SegmentList.jsx b/zy-acs-flow/src/page/segment/SegmentList.jsx
index cbda7cf..43b51fd 100644
--- a/zy-acs-flow/src/page/segment/SegmentList.jsx
+++ b/zy-acs-flow/src/page/segment/SegmentList.jsx
@@ -32,6 +32,8 @@
DeleteButton,
FunctionField,
Count,
+ useNotify,
+ useRefresh,
} from 'react-admin';
import { Box, Typography, Stack, useMediaQuery, Tabs, Tab, Divider } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -42,6 +44,9 @@
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
+import ConfirmButton from "../components/ConfirmButton";
+import ClearIcon from '@mui/icons-material/Clear';
+import request from '@/utils/request';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -53,28 +58,29 @@
'& .column-name': {
},
'& .opt': {
- width: 200
+ width: 130
},
}));
const filters = [
- <SearchInput source="condition" alwaysOn />,
+ // <SearchInput source="condition" alwaysOn />,
+ <TextInput source="groupId" label="table.field.segment.groupId" alwaysOn />,
+ <ReferenceInput source="agvId" label="table.field.segment.agvId" reference="agv" alwaysOn>
+ <AutocompleteInput label="table.field.segment.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
+ </ReferenceInput>,
+ <ReferenceInput source="taskId" label="table.field.segment.taskId" reference="task" alwaysOn>
+ <AutocompleteInput label="table.field.segment.taskId" optionText="seqNum" filterToQuery={(val) => ({ seqNum: val })} />
+ </ReferenceInput>,
+ <TextInput source="posType" label="table.field.segment.posType" alwaysOn resettable />,
<DateInput label='common.time.after' source="timeStart" alwaysOn />,
<DateInput label='common.time.before' source="timeEnd" alwaysOn />,
<TextInput source="uuid" label="table.field.segment.uuid" />,
- <TextInput source="groupId" label="table.field.segment.groupId" />,
<NumberInput source="travelId" label="table.field.segment.travelId" />,
- <ReferenceInput source="taskId" label="table.field.segment.taskId" reference="task">
- <AutocompleteInput label="table.field.segment.taskId" optionText="seqNum" filterToQuery={(val) => ({ seqNum: val })} />
- </ReferenceInput>,
- <ReferenceInput source="agvId" label="table.field.segment.agvId" reference="agv">
- <AutocompleteInput label="table.field.segment.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
- </ReferenceInput>,
<ReferenceInput source="endNode" label="table.field.segment.endNode" reference="code">
<AutocompleteInput label="table.field.segment.endNode" optionText="data" filterToQuery={(val) => ({ data: val })} />
</ReferenceInput>,
- <TextInput source="posType" label="table.field.segment.posType" />,
+
<NumberInput source="backpack" label="table.field.segment.backpack" />,
<TextInput label="common.field.memo" source="memo" />,
@@ -107,7 +113,7 @@
title={"menu.segment"}
empty={<EmptyData />}
filters={filters}
- sort={{ field: "create_time", order: "desc" }}
+ sort={{ field: "update_time", order: "desc" }}
actions={(
<TopToolbar>
<FilterButton />
@@ -139,6 +145,8 @@
const TabbedDatagrid = () => {
const translate = useTranslate();
+ const notify = useNotify();
+ const refresh = useRefresh();
const { filterValues, setFilters, displayedFilters } = useListContext();
const isXSmall = useMediaQuery(theme =>
theme.breakpoints.down('sm')
@@ -151,6 +159,19 @@
);
}, [filterValues, setFilters, displayedFilters]);
+ const handleDeprecate = (segmentId) => {
+ request.get("/segment/cancel/" + segmentId).then(res => {
+ const { code, msg, data } = res.data;
+ if (code === 200) {
+ notify(msg || 'common.response.success', { type: 'success', messageArgs: { _: msg } });
+ refresh();
+ } else {
+ notify(msg || 'common.response.fail', { type: 'error', messageArgs: { _: msg } });
+ }
+ }).catch(error => {
+ notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
+ })
+ }
return (
<>
@@ -198,11 +219,11 @@
<>
<StyledDatagrid
preferenceKey='segment'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={(id, resource, record) => false}
expand={() => <SegmentPanel />}
expandSingle={true}
- omit={['id', 'startNode', 'statusBool', 'updateBy', 'createTime', 'createBy', 'memo']}
+ omit={['id', 'uuid', 'startNode', 'statusBool', 'updateBy', 'createTime', 'createBy', 'memo']}
>
<NumberField source="id" />
{/* <TextField source="segDesc" label="table.field.segment.segDesc" /> */}
@@ -211,20 +232,24 @@
<ReferenceField source="travelId" label="table.field.segment.travelId" reference="travel" link={false} sortable={false}>
<TextField source="uuid" />
</ReferenceField>
- <ReferenceField source="taskId" label="table.field.segment.taskId" reference="task" link={false} sortable={false}>
- <TextField source="seqNum" />
- </ReferenceField>
<ReferenceField source="agvId" label="table.field.segment.agvId" reference="agv" link={false} sortable={false}>
<TextField source="uuid" />
</ReferenceField>
- <NumberField source="serial" label="table.field.segment.serial" />
+ <ReferenceField source="taskId" label="table.field.segment.taskId" reference="task" link={false} sortable={false}>
+ <TextField source="seqNum" />
+ </ReferenceField>
+ <TextField source="posType" label="table.field.segment.posType" sortable={false} />
+ <NumberField source="backpack" label="table.field.segment.backpack" sortable={false} />
+ <NumberField source="algoTime" label="table.field.segment.algoTime" sortable={false} />
<ReferenceField source="endNode" label="table.field.segment.endNode" reference="code" link={false} sortable={false}>
<TextField source="data" />
</ReferenceField>
- <TextField source="posType" label="table.field.segment.posType" />
- <NumberField source="backpack" label="table.field.segment.backpack" />
- <TextField source="state" label="table.field.segment.state" />
-
+ <FunctionField label="table.field.segment.state" cellClassName="state" render={record => (
+ <>
+ {translate(tabs.find(item => item.id === record.state)?.name)}
+ </>
+ )} />
+ <NumberField source="serial" label="table.field.segment.serial" sortable={false} />
<ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
<TextField source="nickname" />
</ReferenceField>
@@ -235,10 +260,33 @@
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
- {/* <FunctionField label="common.field.opt" cellClassName="opt" render={record => (
- <>
- </>
- )} /> */}
+ {(
+ filterValues.state === 'INIT'
+ || filterValues.state === 'WAITING'
+ || filterValues.state === 'RUNNING'
+ ) && (
+ <FunctionField label="common.field.opt" cellClassName="opt" render={record => (
+ <>
+ <ConfirmButton
+ label="common.action.deprecate"
+ size="small"
+ color="inherit"
+ startIcon={<ClearIcon />}
+ sx={{
+ padding: '1px',
+ fontSize: '.75rem',
+ '& .MuiButton-startIcon': {
+ marginRight: '2px'
+ },
+ }}
+ data={record.id}
+ onConfirm={() => {
+ handleDeprecate(record.id);
+ }}
+ />
+ </>
+ )} />
+ )}
</StyledDatagrid>
</>
)}
--
Gitblit v1.9.1