From 03dbce0ba849005d060af569ffe3a58c0a1e0e45 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 23 五月 2025 14:24:06 +0800 Subject: [PATCH] 盘点再入库 --- rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx | 221 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 129 insertions(+), 92 deletions(-) diff --git a/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx b/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx index 28cd69d..40fba47 100644 --- a/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx +++ b/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx @@ -5,7 +5,13 @@ TextInput, NumberInput, BooleanInput, + TextField, + WrapperField, + NumberField, DateInput, + TopToolbar, + SelectColumnsButton, + DatagridConfigurable, SaveButton, SelectInput, ReferenceInput, @@ -17,6 +23,12 @@ useNotify, Form, useCreateController, + useGetList, + useList, + ListContextProvider, + useListContext, + Button, + useRecordContext, } from 'react-admin'; import { Dialog, @@ -27,15 +39,38 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; +import DialogCloseButton from "../../components/DialogCloseButton"; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import { styled } from '@mui/material/styles'; +import StatusSelectInput from "../../components/StatusSelectInput"; +import OutOrderItemList from "./OutOrderItemList"; +import MemoInput from "../../components/MemoInput"; +import AddIcon from '@mui/icons-material/Add'; +import SelectMatnrModal from "./SelectMatnrModal"; + +const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' + }, + '& .RaDatagrid-row': { + cursor: 'auto' + }, + '& .column-name': { + }, + '& .opt': { + width: 200 + }, +})); + const OutOrderCreate = (props) => { - const { open, setOpen } = props; - + const { open, setOpen, record } = props; + const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_order_type')) || []; + const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; const translate = useTranslate(); const notify = useNotify(); + const [drawerVal, setDrawerVal] = useState(false); + const [matCreate, setMatCreate] = useState(false); const handleClose = (event, reason) => { if (reason !== "backdropClick") { @@ -52,6 +87,9 @@ notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); }; + const { data, total, isPending, error, refetch, meta } = useGetList('/wave/locs/preview', { filter: { waveId: record?.id } }); + const listContext = useList({ data, isPending }); + return ( <> <CreateBase @@ -67,9 +105,11 @@ aria-labelledby="form-dialog-title" fullWidth disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' + maxWidth="xl" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' > - <Form> + <Form + resource="outStock" + > <DialogTitle id="form-dialog-title" sx={{ position: 'sticky', top: 0, @@ -83,97 +123,79 @@ </Box> </DialogTitle> <DialogContent sx={{ mt: 2 }}> - <Grid container rowSpacing={2} columnSpacing={2}> - {/* <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrder.code" - source="code" - parse={v => v} - autoFocus - /> - </Grid> */} - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrder.poCode" - source="poCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrder.poId" - source="poId" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput + <> + <Grid container> + <Grid item xs={12} display="flex" gap={1}> + <TextInput + label="table.field.asnOrder.poCode" + source="poCode" + parse={v => v} + /> + <NumberInput + label="table.field.asnOrder.poId" + source="poId" + /> + {/* <AutocompleteInput + choices={dicts} + optionText="label" label="table.field.asnOrder.type" source="type" + optionValue="value" + validate={required()} parse={v => v} - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrder.wkType" - source="wkType" - parse={v => v} - validate={required()} - /> - </Grid> - {/* <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrder.anfme" - source="anfme" - validate={required()} - /> - </Grid> */} - {/* <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.asnOrder.qty" - source="qty" - validate={required()} - /> - </Grid> */} - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.asnOrder.logisNo" - source="logisNo" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <DateInput - label="table.field.asnOrder.arrTime" - source="arrTime" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <SelectInput - label="table.field.asnOrder.rleStatus" - source="rleStatus" - choices={[ - { id: 0, name: ' 姝e父' }, - { id: 1, name: ' 宸查噴鏀�' }, - ]} - /> - </Grid> + /> */} + <AutocompleteInput + choices={business} + optionText="label" + label="table.field.asnOrder.wkType" + source="wkType" + optionValue="value" + validate={required()} + parse={v => v} + /> + <NumberInput + label="table.field.asnOrder.anfme" + source="anfme" + validate={required()} + /> - <Grid item xs={6} display="flex" gap={1}> - <StatusSelectInput /> + </Grid> + <Grid item xs={12} display="flex" gap={1}> + <NumberInput + label="table.field.asnOrder.qty" + source="qty" + /> + <TextInput + label="table.field.asnOrder.logisNo" + source="logisNo" + parse={v => v} + /> + <DateInput + label="table.field.asnOrder.arrTime" + source="arrTime" + /> + <SelectInput + label="table.field.asnOrder.rleStatus" + source="rleStatus" + choices={[ + { id: 0, name: ' 姝e父' }, + { id: 1, name: ' 宸查噴鏀�' }, + ]} + /> + </Grid> </Grid> - <Grid item xs={12} display="flex" gap={1}> - <Stack direction="column" spacing={1} width={'100%'}> - <MemoInput /> - </Stack> - </Grid> - </Grid> + <SelectMatnrModal open={matCreate} setOpen={setMatCreate} /> + <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> + <Toolbar sx={{ width: '100%', justifyContent: 'end' }} > + <AddOutOrderButton setMatCreate={setMatCreate} /> + <SaveButton /> + </Toolbar> + </DialogActions> + <Box> + + </Box> + </> </DialogContent> - <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> - <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <SaveButton /> - </Toolbar> - </DialogActions> </Form> </Dialog> </CreateBase> @@ -182,3 +204,18 @@ } export default OutOrderCreate; + + +const AddOutOrderButton = (setMatCreate) => { + const record = useRecordContext(); + const addMats = (event) => { + event.stopPropagation(); + setMatCreate(true) + } + + return ( + <Button label={"common.action.newAddMats"} onClick={addMats} variant="contained" sx={{ padding: '0.6em', marginRight: '1em' }}> + <AddIcon /> + </Button> + ); +} -- Gitblit v1.9.1