From 9f7d850f985cbd1756798329b9a3669dae51ac48 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期一, 18 八月 2025 17:23:55 +0800 Subject: [PATCH] 1 --- zy-acs-flow/src/page/segment/SegmentList.jsx | 120 +++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 86 insertions(+), 34 deletions(-) diff --git a/zy-acs-flow/src/page/segment/SegmentList.jsx b/zy-acs-flow/src/page/segment/SegmentList.jsx index c45df61..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,15 +187,18 @@ 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', fontWeight: 'bold' }} + 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