From 95fd5b01ceb0db9cb5065701efb9789d5500b922 Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期四, 20 二月 2025 15:19:43 +0800 Subject: [PATCH] # --- rsf-admin/src/page/matnr/MatnrList.jsx | 157 ++++++++++++++++++------------- rsf-admin/src/page/matnr/MatnrListAside.jsx | 112 ++++++++++++++++++++++ rsf-admin/src/i18n/en.js | 1 3 files changed, 205 insertions(+), 65 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 1bb8214..921ae49 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -108,6 +108,7 @@ dashboard: 'Dashboard', basicInfo: 'BasicInfo', settings: 'Settings', + basicInfo: 'BasicInfo', system: 'System', user: 'User', role: 'Role', diff --git a/rsf-admin/src/page/matnr/MatnrList.jsx b/rsf-admin/src/page/matnr/MatnrList.jsx index d36d984..63f8da3 100644 --- a/rsf-admin/src/page/matnr/MatnrList.jsx +++ b/rsf-admin/src/page/matnr/MatnrList.jsx @@ -32,7 +32,7 @@ AutocompleteInput, DeleteButton, } from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; +import { Box, Typography, Card, Stack,LinearProgress } from '@mui/material'; import { styled } from '@mui/material/styles'; import MatnrCreate from "./MatnrCreate"; import MatnrPanel from "./MatnrPanel"; @@ -43,6 +43,7 @@ import MyField from "../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; +import MatListAside from './MatnrListAside'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -71,8 +72,8 @@ <ReferenceInput source="groupId" label="table.field.matnr.groupId" reference="matnrGroup"> <AutocompleteInput label="table.field.matnr.groupId" optionText="code" filterToQuery={(val) => ({ code: val })} /> </ReferenceInput>, - <ReferenceInput source="rglarId" label="table.field.matnr.rglarId" reference="rglarId"> - <AutocompleteInput label="table.field.matnr.rglarId" optionText="code" filterToQuery={(val) => ({ code: val })} /> + <ReferenceInput source="batchRegularId" label="table.field.matnr.batchRegularId" reference="batchRegular"> + <AutocompleteInput label="table.field.matnr.batchRegularId" optionText="code" filterToQuery={(val) => ({ code: val })} /> </ReferenceInput>, <TextInput source="erpCode" label="table.field.matnr.erpCode" />, <TextInput source="spec" label="table.field.matnr.spec" />, @@ -83,9 +84,9 @@ <TextInput source="describle" label="table.field.matnr.describle" />, <NumberInput source="nromNum" label="table.field.matnr.nromNum" />, <TextInput source="unit" label="table.field.matnr.unit" />, - <TextInput source="purUnit" label="table.field.matnr.purUnit" />, + <TextInput source="purchaseUnit" label="table.field.matnr.purchaseUnit" />, <TextInput source="stockUnit" label="table.field.matnr.stockUnit" />, - <SelectInput source="stockLevel" label="table.field.matnr.stockLevel" + <SelectInput source="stockLeval" label="table.field.matnr.stockLeval" choices={[ { id: 0, name: ' A' }, { id: 1, name: ' B' }, @@ -98,12 +99,12 @@ { id: 1, name: ' 鏄�' }, ]} />, - <NumberInput source="safeQty" label="table.field.matnr.safeQty" />, + <NumberInput source="safetyQty" label="table.field.matnr.safetyQty" />, <NumberInput source="minQty" label="table.field.matnr.minQty" />, <NumberInput source="maxQty" label="table.field.matnr.maxQty" />, - <NumberInput source="stagn" label="table.field.matnr.stagn" />, - <NumberInput source="valid" label="table.field.matnr.valid" />, - <NumberInput source="validWarn" label="table.field.matnr.validWarn" />, + <NumberInput source="stagnate" label="table.field.matnr.stagnate" />, + <NumberInput source="validity" label="table.field.matnr.validity" />, + <NumberInput source="validityWarr" label="table.field.matnr.validityWarr" />, <NumberInput source="flagCheck" label="table.field.matnr.flagCheck" />, <TextInput label="common.field.memo" source="memo" />, @@ -118,11 +119,91 @@ />, ] +const MatnrListContent = (props) => { + const translate = useTranslate(); + const { isLoading } = useListContext(); + + return ( + <Box sx={{ position: 'relative' }}> + {isLoading && ( + <LinearProgress + sx={{ + height: "2px", + position: 'absolute', + top: 0, + left: 0, + right: 0, + }} + /> + )} + <StyledDatagrid + preferenceKey='matnr' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <MatnrPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <TextField source="name" label="table.field.matnr.name" /> + <TextField source="code" label="table.field.matnr.code" /> + <ReferenceField source="shipperId" label="table.field.matnr.shipperId" reference="shipper" link={false} sortable={false}> + <TextField source="name" /> + </ReferenceField> + <ReferenceField source="groupId" label="table.field.matnr.groupId" reference="matnrGroup" link={false} sortable={false} alwaysOn> + <TextField source="code" /> + </ReferenceField> + <ReferenceField source="batchRegularId" label="table.field.matnr.batchRegularId" reference="batchRegular" link={false} sortable={false}> + <TextField source="code" /> + </ReferenceField> + <TextField source="erpCode" label="table.field.matnr.erpCode" /> + <TextField source="spec" label="table.field.matnr.spec" /> + <TextField source="model" label="table.field.matnr.model" /> + <NumberField source="weight" label="table.field.matnr.weight" /> + <TextField source="color" label="table.field.matnr.color" /> + <TextField source="size" label="table.field.matnr.size" /> + <TextField source="describle" label="table.field.matnr.describle" /> + <NumberField source="nromNum" label="table.field.matnr.nromNum" /> + <TextField source="unit" label="table.field.matnr.unit" /> + <TextField source="purchaseUnit" label="table.field.matnr.purchaseUnit" /> + <TextField source="stockUnit" label="table.field.matnr.stockUnit" /> + <TextField source="stockLeval$" label="table.field.matnr.stockLeval" sortable={false} /> + <TextField source="isLabelMange$" label="table.field.matnr.isLabelMange" sortable={false} /> + <NumberField source="safetyQty" label="table.field.matnr.safetyQty" /> + <NumberField source="minQty" label="table.field.matnr.minQty" /> + <NumberField source="maxQty" label="table.field.matnr.maxQty" /> + <NumberField source="stagnate" label="table.field.matnr.stagnate" /> + <NumberField source="validity" label="table.field.matnr.validity" /> + <NumberField source="validityWarr" label="table.field.matnr.validityWarr" /> + <NumberField source="flagCheck" label="table.field.matnr.flagCheck" /> + + <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} /> + <WrapperField cellClassName="opt" label="common.field.opt"> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + </WrapperField> + </StyledDatagrid> + </Box> + ); + +} + const MatnrList = () => { const translate = useTranslate(); const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); + + return ( <Box display="flex"> @@ -148,63 +229,9 @@ </TopToolbar> )} perPage={DEFAULT_PAGE_SIZE} + aside={ <MatListAside /> } > - <StyledDatagrid - preferenceKey='matnr' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={(id, resource, record) => false} - expand={() => <MatnrPanel />} - expandSingle={true} - omit={['id', 'createTime', 'createBy', 'memo']} - > - <NumberField source="id" /> - <TextField source="name" label="table.field.matnr.name" /> - <TextField source="code" label="table.field.matnr.code" /> - <ReferenceField source="shipperId" label="table.field.matnr.shipperId" reference="shipper" link={false} sortable={false}> - <TextField source="name" /> - </ReferenceField> - <ReferenceField source="groupId" label="table.field.matnr.groupId" reference="matnrGroup" link={false} sortable={false}> - <TextField source="code" /> - </ReferenceField> - <ReferenceField source="rglarId" label="table.field.matnr.rglarId" reference="rglarId" link={false} sortable={false}> - <TextField source="code" /> - </ReferenceField> - <TextField source="erpCode" label="table.field.matnr.erpCode" /> - <TextField source="spec" label="table.field.matnr.spec" /> - <TextField source="model" label="table.field.matnr.model" /> - <NumberField source="weight" label="table.field.matnr.weight" /> - <TextField source="color" label="table.field.matnr.color" /> - <TextField source="size" label="table.field.matnr.size" /> - <TextField source="describle" label="table.field.matnr.describle" /> - <NumberField source="nromNum" label="table.field.matnr.nromNum" /> - <TextField source="unit" label="table.field.matnr.unit" /> - <TextField source="purUnit" label="table.field.matnr.purUnit" /> - <TextField source="stockUnit" label="table.field.matnr.stockUnit" /> - <TextField source="stockLeval$" label="table.field.matnr.stockLevel" sortable={false} /> - <TextField source="isLabelMange$" label="table.field.matnr.isLabelMange" sortable={false} /> - <NumberField source="safeQty" label="table.field.matnr.safeQty" /> - <NumberField source="minQty" label="table.field.matnr.minQty" /> - <NumberField source="maxQty" label="table.field.matnr.maxQty" /> - <NumberField source="stagn" label="table.field.matnr.stagn" /> - <NumberField source="valid" label="table.field.matnr.valid" /> - <NumberField source="validWarn" label="table.field.matnr.validWarn" /> - <NumberField source="flagCheck" label="table.field.matnr.flagCheck" /> - - <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} /> - <WrapperField cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> - </WrapperField> - </StyledDatagrid> + <MatnrListContent /> </List> <MatnrCreate open={createDialog} diff --git a/rsf-admin/src/page/matnr/MatnrListAside.jsx b/rsf-admin/src/page/matnr/MatnrListAside.jsx new file mode 100644 index 0000000..2935e52 --- /dev/null +++ b/rsf-admin/src/page/matnr/MatnrListAside.jsx @@ -0,0 +1,112 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import request from '@/utils/request'; +import { + SavedQueriesList, + FilterLiveSearch, + FilterList, + FilterListItem, + useStore, + FilterFormInput, + FilterLiveForm, + TextInput, + useGetList +} from 'react-admin'; +import BookmarkIcon from '@mui/icons-material/BookmarkBorder'; +import { Box, Typography, Card, CardContent, useTheme, TextField } from '@mui/material'; +import { RichTreeView } from "@mui/x-tree-view/RichTreeView"; +import { TreeItem2 } from "@mui/x-tree-view/TreeItem2"; +import WcIcon from '@mui/icons-material/Wc'; +import AccessTimeIcon from '@mui/icons-material/AccessTime'; +import { useForm, Controller } from "react-hook-form"; + +const MatListAside = () => { + const theme = useTheme(); + const treeData = [ + { + id: '0655', + label: '0655', + editable: true, + children: [ + { + id: 'grid-community', label: '@mui/x-data-grid', editable: true, children: [ + { id: 'grid-community22', label: '@mui/x-data-grid', editable: true },] + }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro', editable: true }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium', editable: true }, + ], + }, + { + id: 'pickers', + label: 'Date and Time pickers', + children: [ + { + id: 'pickers-community', + label: '@mui/x-date-pickers', + disabled: true, + }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro', editable: true }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, + { + id: 'tree-view2', + label: 'Tree View3', + children: [{ id: 'tree-view-community1', label: '@mui/x-tree-view' }], + }, + ]; + + + + const CustomCheckbox = React.forwardRef(function CustomCheckbox(props, ref) { + return <input type="checkbox" ref={ref} {...props} />; + }); + + const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + return ( + <TreeItem2 + {...props} + ref={ref} + slots={{ + checkbox: CustomCheckbox, + }} + /> + ); + }); + + + return ( + <Card + sx={{ + display: { xs: 'none', md: 'block', }, + order: -1, + mr: 2, + mt: 8, + alignSelf: 'flex-start', + border: theme.palette.mode === 'light' && '1px solid #e0e0e3', + width: 250 + }} + > + <CardContent> + <SavedQueriesList icon={<BookmarkIcon />} /> + <FilterLiveSearch source='groupId' hiddenLabel /> + <RichTreeView + defaultExpandedItems={['grid', 'pickers']} + expansionTrigger="iconContainer" + items={ treeData } + slots={ CustomTreeItem } + /> + </CardContent> + </Card> + ) +} + +export default MatListAside; -- Gitblit v1.9.1