import React, { useState, useRef, useEffect, useMemo } from "react"; 
 | 
import { 
 | 
    CreateBase, 
 | 
    useTranslate, 
 | 
    TextInput, 
 | 
    NumberInput, 
 | 
    BooleanInput, 
 | 
    TextField, 
 | 
    WrapperField, 
 | 
    NumberField, 
 | 
    DateInput, 
 | 
    TopToolbar, 
 | 
    SelectColumnsButton, 
 | 
    DatagridConfigurable, 
 | 
    SaveButton, 
 | 
    SelectInput, 
 | 
    ReferenceInput, 
 | 
    ReferenceArrayInput, 
 | 
    AutocompleteInput, 
 | 
    Toolbar, 
 | 
    required, 
 | 
    useDataProvider, 
 | 
    useNotify, 
 | 
    Form, 
 | 
    useCreateController, 
 | 
    useGetList, 
 | 
    useList, 
 | 
    ListContextProvider, 
 | 
    useListContext, 
 | 
    Button, 
 | 
    useRecordContext, 
 | 
} from 'react-admin'; 
 | 
import { 
 | 
    Dialog, 
 | 
    DialogActions, 
 | 
    DialogContent, 
 | 
    DialogTitle, 
 | 
    Stack, 
 | 
    Grid, 
 | 
    Box, 
 | 
} from '@mui/material'; 
 | 
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, 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") { 
 | 
            setOpen(false); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    const handleSuccess = async (data) => { 
 | 
        setOpen(false); 
 | 
        notify('common.response.success'); 
 | 
    }; 
 | 
  
 | 
    const handleError = async (error) => { 
 | 
        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 
 | 
                record={{}} 
 | 
                transform={(data) => { 
 | 
                    return data; 
 | 
                }} 
 | 
                mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} 
 | 
            > 
 | 
                <Dialog 
 | 
                    open={open} 
 | 
                    onClose={handleClose} 
 | 
                    aria-labelledby="form-dialog-title" 
 | 
                    fullWidth 
 | 
                    disableRestoreFocus 
 | 
                    maxWidth="xl"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl' 
 | 
                > 
 | 
                    <Form 
 | 
                        resource="outStock" 
 | 
                    > 
 | 
                        <DialogTitle id="form-dialog-title" sx={{ 
 | 
                            position: 'sticky', 
 | 
                            top: 0, 
 | 
                            backgroundColor: 'background.paper', 
 | 
                            zIndex: 1000 
 | 
                        }} 
 | 
                        > 
 | 
                            {translate('create.title')} 
 | 
                            <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> 
 | 
                                <DialogCloseButton onClose={handleClose} /> 
 | 
                            </Box> 
 | 
                        </DialogTitle> 
 | 
                        <DialogContent sx={{ mt: 2 }}> 
 | 
                            <> 
 | 
                                <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} 
 | 
                                    /> */} 
 | 
                                        <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> 
 | 
                                    <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> 
 | 
                                <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> 
 | 
                    </Form> 
 | 
                </Dialog> 
 | 
            </CreateBase> 
 | 
        </> 
 | 
    ) 
 | 
} 
 | 
  
 | 
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> 
 | 
    ); 
 | 
} 
 |