From b3814333d786324bb81cca7d1bcf5ac8f2f1a7cf Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 23 七月 2025 08:35:33 +0800
Subject: [PATCH] 保存一个版本
---
zy-acs-flow/src/page/segment/SegmentList.jsx | 122 +++++++++++++++++++++++++++++-----------
1 files changed, 87 insertions(+), 35 deletions(-)
diff --git a/zy-acs-flow/src/page/segment/SegmentList.jsx b/zy-acs-flow/src/page/segment/SegmentList.jsx
index 1c17780..43b51fd 100644
--- a/zy-acs-flow/src/page/segment/SegmentList.jsx
+++ b/zy-acs-flow/src/page/segment/SegmentList.jsx
@@ -32,8 +32,10 @@
DeleteButton,
FunctionField,
Count,
+ useNotify,
+ useRefresh,
} from 'react-admin';
-import { Box, Typography, Card, Stack, useMediaQuery, Tabs, Tab, Divider } from '@mui/material';
+import { Box, Typography, Stack, useMediaQuery, Tabs, Tab, Divider } from '@mui/material';
import { styled } from '@mui/material/styles';
import SegmentPanel from "./SegmentPanel";
import EmptyData from "../components/EmptyData";
@@ -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 />
@@ -131,13 +137,16 @@
}
const tabs = [
- { id: 'INIT', name: 'INIT' },
- { id: 'WAITING', name: 'WAITING' },
- { id: 'RUNNING', name: 'RUNNING' },
- { id: 'FINISH', name: 'FINISH' },
+ { id: 'INIT', name: 'page.segment.enums.state.init' },
+ { id: 'WAITING', name: 'page.segment.enums.state.waiting' },
+ { id: 'RUNNING', name: 'page.segment.enums.state.running' },
+ { id: 'FINISH', name: 'page.segment.enums.state.finish' },
];
const TabbedDatagrid = () => {
+ const translate = useTranslate();
+ const notify = useNotify();
+ const refresh = useRefresh();
const { filterValues, setFilters, displayedFilters } = useListContext();
const isXSmall = useMediaQuery(theme =>
theme.breakpoints.down('sm')
@@ -150,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 (
<>
@@ -165,17 +187,20 @@
key={item.id}
value={item.id}
label={
- <span>
- {item.name}
- {/* (
+ <span style={{ fontWeight: 'bold' }}>
+ <span >
+ {translate(item.name)}
+ </span>
+
+ (
<Count
filter={{
...filterValues,
- state: item.name,
+ state: item.id,
}}
sx={{ lineHeight: 'inherit' }}
/>
- ) */}
+ )
</span>
}
/>
@@ -194,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" /> */}
@@ -207,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>
@@ -231,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