From b0aff204cd0ff448902736e9805f0cc922d3d642 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期四, 26 九月 2024 13:46:11 +0800 Subject: [PATCH] # --- zy-acs-flow/src/i18n/en.js | 1 zy-acs-flow/src/page/jam/JamList.jsx | 294 ++++++++++++++++++++++++++++++++++++---------------------- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/JamController.java | 2 zy-acs-flow/src/i18n/zh.js | 1 4 files changed, 184 insertions(+), 114 deletions(-) diff --git a/zy-acs-flow/src/i18n/en.js b/zy-acs-flow/src/i18n/en.js index 36977da..cb4bafb 100644 --- a/zy-acs-flow/src/i18n/en.js +++ b/zy-acs-flow/src/i18n/en.js @@ -580,6 +580,7 @@ finish: 'FINISH', fail: 'FAIL', deprecated: 'DEPRECATED', + done: "DONE", }, }, }, diff --git a/zy-acs-flow/src/i18n/zh.js b/zy-acs-flow/src/i18n/zh.js index 9d69979..f31f77e 100644 --- a/zy-acs-flow/src/i18n/zh.js +++ b/zy-acs-flow/src/i18n/zh.js @@ -579,6 +579,7 @@ finish: '宸插畬鎴�', fail: '澶辫触', deprecated: '搴熷純', + done: "瀹岀粨", }, }, }, diff --git a/zy-acs-flow/src/page/jam/JamList.jsx b/zy-acs-flow/src/page/jam/JamList.jsx index 0ab7c11..8bcb480 100644 --- a/zy-acs-flow/src/page/jam/JamList.jsx +++ b/zy-acs-flow/src/page/jam/JamList.jsx @@ -33,8 +33,9 @@ FunctionField, useNotify, useRefresh, + Count, } from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; +import { Box, Typography, Card, Stack, useMediaQuery, Tabs, Tab, Divider } from '@mui/material'; import { styled } from '@mui/material/styles'; import JamCreate from "./JamCreate"; import JamPanel from "./JamPanel"; @@ -68,6 +69,9 @@ <ReferenceInput source="jamAgv" label="table.field.jam.jamAgv" reference="agv" alwaysOn> <AutocompleteInput label="table.field.jam.jamAgv" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} /> </ReferenceInput>, + <ReferenceInput source="avoAgv" label="table.field.jam.avoAgv" reference="agv" alwaysOn> + <AutocompleteInput label="table.field.jam.avoAgv" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} /> + </ReferenceInput>, <SelectInput source="cycleAvo" label="table.field.jam.cycleAvo" choices={[ { id: 1, name: 'common.enums.true' }, @@ -79,30 +83,27 @@ <DateInput label='common.time.before' source="timeEnd" alwaysOn />, <TextInput source="uuid" label="table.field.jam.uuid" />, - <TextInput source="name" label="table.field.jam.name" />, - <ReferenceInput source="jamCode" label="table.field.jam.jamCode" reference="code"> - <AutocompleteInput label="table.field.jam.jamCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> - </ReferenceInput>, - <ReferenceInput source="jamSeg" label="table.field.jam.jamSeg" reference="segment"> - <AutocompleteInput label="table.field.jam.jamSeg" optionText="id" filterToQuery={(val) => ({ id: val })} /> - </ReferenceInput>, - <ReferenceInput source="avoAgv" label="table.field.jam.avoAgv" reference="agv"> - <AutocompleteInput label="table.field.jam.avoAgv" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} /> - </ReferenceInput>, - <ReferenceInput source="avoCode" label="table.field.jam.avoCode" reference="code"> - <AutocompleteInput label="table.field.jam.avoCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> - </ReferenceInput>, - <ReferenceInput source="avoSeg" label="table.field.jam.avoSeg" reference="segment"> - <AutocompleteInput label="table.field.jam.avoSeg" optionText="id" filterToQuery={(val) => ({ id: val })} /> - </ReferenceInput>, - <ReferenceInput source="cycleCode" label="table.field.jam.cycleCode" reference="code"> - <AutocompleteInput label="table.field.jam.cycleCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> - </ReferenceInput>, - <DateInput source="startTime" label="table.field.jam.startTime" />, - <DateInput source="notifyTime" label="table.field.jam.notifyTime" />, - <DateInput source="endTime" label="table.field.jam.endTime" />, - <NumberInput source="duration" label="table.field.jam.duration" />, - <TextInput source="state" label="table.field.jam.state" />, + // <TextInput source="name" label="table.field.jam.name" />, + // <ReferenceInput source="jamCode" label="table.field.jam.jamCode" reference="code"> + // <AutocompleteInput label="table.field.jam.jamCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> + // </ReferenceInput>, + // <ReferenceInput source="jamSeg" label="table.field.jam.jamSeg" reference="segment"> + // <AutocompleteInput label="table.field.jam.jamSeg" optionText="id" filterToQuery={(val) => ({ id: val })} /> + // </ReferenceInput>, + // <ReferenceInput source="avoCode" label="table.field.jam.avoCode" reference="code"> + // <AutocompleteInput label="table.field.jam.avoCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> + // </ReferenceInput>, + // <ReferenceInput source="avoSeg" label="table.field.jam.avoSeg" reference="segment"> + // <AutocompleteInput label="table.field.jam.avoSeg" optionText="id" filterToQuery={(val) => ({ id: val })} /> + // </ReferenceInput>, + // <ReferenceInput source="cycleCode" label="table.field.jam.cycleCode" reference="code"> + // <AutocompleteInput label="table.field.jam.cycleCode" optionText="data" filterToQuery={(val) => ({ data: val })} /> + // </ReferenceInput>, + // <DateInput source="startTime" label="table.field.jam.startTime" />, + // <DateInput source="notifyTime" label="table.field.jam.notifyTime" />, + // <DateInput source="endTime" label="table.field.jam.endTime" />, + // <NumberInput source="duration" label="table.field.jam.duration" />, + // <TextInput source="state" label="table.field.jam.state" />, <TextInput label="common.field.memo" source="memo" />, <SelectInput @@ -114,13 +115,6 @@ ]} />, ] - -const states = [ - { id: 'RUNNING', name: 'page.jam.enums.state.running' }, - { id: 'FINISH', name: 'page.jam.enums.state.finish' }, - { id: 'FAIL', name: 'page.jam.enums.state.fail' }, - { id: 'DEPRECATED', name: 'page.jam.enums.state.deprecated' }, -]; const JamList = () => { const translate = useTranslate(); @@ -157,7 +151,7 @@ title={"menu.jam"} empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} filters={filters} - sort={{ field: "create_time", order: "desc" }} + sort={{ field: "start_time", order: "desc" }} actions={( <TopToolbar> <FilterButton /> @@ -167,87 +161,9 @@ </TopToolbar> )} perPage={DEFAULT_PAGE_SIZE} + filterDefaultValues={{ state: 'RUNNING' }} > - <StyledDatagrid - preferenceKey='jam' - bulkActionButtons={false} - rowClick={(id, resource, record) => false} - // expand={() => <JamPanel />} - // expandSingle={true} - omit={['id', 'uuid', 'cycleCode', 'updateBy', 'updateTime', 'createTime', 'createBy', 'statusBool', 'memo']} - > - <NumberField source="id" /> - <TextField source="uuid" label="table.field.jam.uuid" /> - {/* <TextField source="name" label="table.field.jam.name" /> */} - <ReferenceField source="jamSeg" label="table.field.jam.jamSeg" reference="segment" link={false} sortable={false}> - <FunctionField render={(record) => { - return <>{record.groupId} - ({record.serial})</> - }} /> - </ReferenceField> - <ReferenceField source="jamAgv" label="table.field.jam.jamAgv" reference="agv" link={false} sortable={false} > - <TextField source="uuid" sx={{ fontWeight: 'bold' }} /> - </ReferenceField> - <ReferenceField source="jamCode" label="table.field.jam.jamCode" reference="code" link={false} sortable={false}> - <TextField source="data" /> - </ReferenceField> - <ReferenceField source="avoSeg" label="table.field.jam.avoSeg" reference="segment" link={false} sortable={false}> - <FunctionField render={(record) => { - return <>{record.groupId} - ({record.serial})</> - }} /> - </ReferenceField> - <ReferenceField source="avoAgv" label="table.field.jam.avoAgv" reference="agv" link={false} sortable={false}> - <TextField source="uuid" sx={{ fontWeight: 'bold' }} /> - </ReferenceField> - <ReferenceField source="avoCode" label="table.field.jam.avoCode" reference="code" link={false} sortable={false}> - <TextField source="data" /> - </ReferenceField> - <BooleanField source="cycleAvoBool" label="table.field.jam.cycleAvo" sortable={false} /> - <ReferenceField source="cycleCode" label="table.field.jam.cycleCode" reference="code" link={false} sortable={false}> - <TextField source="data" /> - </ReferenceField> - <DateField source="startTime" label="table.field.jam.startTime" showTime /> - <DateField source="notifyTime" label="table.field.jam.notifyTime" showTime /> - <DateField source="endTime" label="table.field.jam.endTime" showTime /> - <NumberField source="duration" label="table.field.jam.duration" /> - <FunctionField label="table.field.segment.state" cellClassName="state" render={record => ( - <> - {translate(states.find(item => item.id === record.state)?.name)} - </> - )} /> - <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> - <DateField source="updateTime" label="common.field.updateTime" showTime /> - <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> - <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 => ( - (record.state === "RUNNING" || record.state === "FINISH") && ( - <> - <ConfirmButton - label="common.action.deprecated" - size="small" - color="primary" - startIcon={<CloseIcon />} - sx={{ - padding: '1px', - fontSize: '.75rem', - '& .MuiButton-startIcon': { - marginRight: '2px' - }, - }} - data={record.uuid} - onConfirm={() => { - onDeprecated(record.id); - }} - /> - </> - ) - )} /> - </StyledDatagrid> + <TabbedDatagrid onDeprecated={onDeprecated} /> </List> <JamCreate open={createDialog} @@ -263,4 +179,156 @@ ) } +const states = [ + { id: 'RUNNING', name: 'page.jam.enums.state.running' }, + { id: 'FINISH', name: 'page.jam.enums.state.finish' }, + { id: 'FAIL', name: 'page.jam.enums.state.fail' }, + { id: 'DEPRECATED', name: 'page.jam.enums.state.deprecated' }, +]; + +const TabbedDatagrid = ({ onDeprecated }) => { + const translate = useTranslate(); + const { filterValues, setFilters, displayedFilters } = useListContext(); + const isXSmall = useMediaQuery(theme => + theme.breakpoints.down('sm') + ); + + const handleChange = useCallback((event, value) => { + setFilters && setFilters( + { ...filterValues, state: value }, + displayedFilters + ); + }, [filterValues, setFilters, displayedFilters]); + + return ( + <> + <Tabs + variant="fullWidth" + centered + value={filterValues.state} + indicatorColor="primary" + onChange={handleChange} + > + {states.map(item => { + return <Tab + key={item.id} + value={item.id} + label={ + <span style={{ fontWeight: 'bold' }}> + <span > + {translate(item.name)} + </span> + + ( + <Count + filter={{ + ...filterValues, + state: item.id, + }} + sx={{ lineHeight: 'inherit' }} + /> + ) + </span> + } + /> + })} + </Tabs> + <Divider /> + {(isXSmall || true) && ( + <> + {( + filterValues.state === 'RUNNING' + || filterValues.state === 'FINISH' + || filterValues.state === 'FAIL' + || filterValues.state === 'DEPRECATED' + ) + && ( + <> + <StyledDatagrid + preferenceKey='jam' + bulkActionButtons={false} + rowClick={(id, resource, record) => false} + // expand={() => <JamPanel />} + // expandSingle={true} + omit={['id', 'uuid', 'cycleCode', 'updateBy', 'updateTime', 'createTime', 'createBy', 'statusBool', 'memo']} + > + <NumberField source="id" /> + <TextField source="uuid" label="table.field.jam.uuid" /> + {/* <TextField source="name" label="table.field.jam.name" /> */} + <ReferenceField source="jamSeg" label="table.field.jam.jamSeg" reference="segment" link={false} sortable={false}> + <FunctionField render={(record) => { + return <>{record.groupId} - ({record.serial})</> + }} /> + </ReferenceField> + <ReferenceField source="jamAgv" label="table.field.jam.jamAgv" reference="agv" link={false} sortable={false} > + <TextField source="uuid" sx={{ fontWeight: 'bold' }} /> + </ReferenceField> + <ReferenceField source="jamCode" label="table.field.jam.jamCode" reference="code" link={false} sortable={false}> + <TextField source="data" /> + </ReferenceField> + <ReferenceField source="avoSeg" label="table.field.jam.avoSeg" reference="segment" link={false} sortable={false}> + <FunctionField render={(record) => { + return <>{record.groupId} - ({record.serial})</> + }} /> + </ReferenceField> + <ReferenceField source="avoAgv" label="table.field.jam.avoAgv" reference="agv" link={false} sortable={false}> + <TextField source="uuid" sx={{ fontWeight: 'bold' }} /> + </ReferenceField> + <ReferenceField source="avoCode" label="table.field.jam.avoCode" reference="code" link={false} sortable={false}> + <TextField source="data" /> + </ReferenceField> + <BooleanField source="cycleAvoBool" label="table.field.jam.cycleAvo" sortable={false} /> + <ReferenceField source="cycleCode" label="table.field.jam.cycleCode" reference="code" link={false} sortable={false}> + <TextField source="data" /> + </ReferenceField> + <DateField source="startTime" label="table.field.jam.startTime" showTime /> + <DateField source="notifyTime" label="table.field.jam.notifyTime" showTime /> + <DateField source="endTime" label="table.field.jam.endTime" showTime /> + <NumberField source="duration" label="table.field.jam.duration" /> + <FunctionField label="table.field.segment.state" cellClassName="state" render={record => ( + <> + {translate(states.find(item => item.id === record.state)?.name)} + </> + )} /> + <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <DateField source="updateTime" label="common.field.updateTime" showTime /> + <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <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 => ( + (record.state === "RUNNING") && ( + <> + <ConfirmButton + label="common.action.deprecated" + size="small" + color="primary" + startIcon={<CloseIcon />} + sx={{ + padding: '1px', + fontSize: '.75rem', + '& .MuiButton-startIcon': { + marginRight: '2px' + }, + }} + data={record.uuid} + onConfirm={() => { + onDeprecated(record.id); + }} + /> + </> + ) + )} /> + </StyledDatagrid> + </> + )} + </> + )} + </> + ) +} export default JamList; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/JamController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/JamController.java index e882071..c808cd7 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/JamController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/JamController.java @@ -31,7 +31,7 @@ public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<Jam, BaseParam> pageParam = new PageParam<>(baseParam, Jam.class); - return R.ok().add(jamService.page(pageParam, pageParam.buildWrapper(true))); + return R.ok().add(jamService.page(pageParam, pageParam.buildWrapper(true, "start_time"))); } @PreAuthorize("hasAuthority('manager:jam:list')") -- Gitblit v1.9.1