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