skyouc
2025-05-23 03dbce0ba849005d060af569ffe3a58c0a1e0e45
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: ' 正常' },
                                            { 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: ' 正常' },
                                                { 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>
    );
}