import React, { useState, useRef, useEffect, useMemo } from "react"; 
 | 
import { 
 | 
    CreateBase, 
 | 
    useTranslate, 
 | 
    TextInput, 
 | 
    NumberInput, 
 | 
    BooleanInput, 
 | 
    DateInput, 
 | 
    SaveButton, 
 | 
    SelectInput, 
 | 
    ReferenceInput, 
 | 
    ReferenceArrayInput, 
 | 
    AutocompleteInput, 
 | 
    Toolbar, 
 | 
    required, 
 | 
    useDataProvider, 
 | 
    useNotify, 
 | 
    Form, 
 | 
    SelectArrayInput, 
 | 
    useCreateController, 
 | 
} from 'react-admin'; 
 | 
import { 
 | 
    Dialog, 
 | 
    DialogActions, 
 | 
    DialogContent, 
 | 
    DialogTitle, 
 | 
    Stack, 
 | 
    Grid, 
 | 
    Box, 
 | 
} from '@mui/material'; 
 | 
import DialogCloseButton from "../../components/DialogCloseButton"; 
 | 
import StatusSelectInput from "../../components/StatusSelectInput"; 
 | 
import MemoInput from "../../components/MemoInput"; 
 | 
import request from '@/utils/request'; 
 | 
import DictionarySelect from "../../components/DictionarySelect"; 
 | 
  
 | 
const LocCreate = (props) => { 
 | 
    const { open, setOpen } = props; 
 | 
    const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_loc_type')) || []; 
 | 
  
 | 
    const translate = useTranslate(); 
 | 
    const notify = useNotify(); 
 | 
    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 [warehouseId, setWrehouseId] = useState(); 
 | 
  
 | 
    const warehouseChange = (val) => { 
 | 
        setWrehouseId(val) 
 | 
    } 
 | 
  
 | 
  
 | 
    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="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl' 
 | 
                > 
 | 
                    <Form> 
 | 
                        <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 rowSpacing={2} columnSpacing={2}> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <ReferenceInput 
 | 
                                        source="warehouseId" 
 | 
                                        reference="warehouse" 
 | 
                                    > 
 | 
                                        <AutocompleteInput 
 | 
                                            label="table.field.loc.warehouseId" 
 | 
                                            optionText="name" 
 | 
                                            validate={[required()]} 
 | 
                                            onChange={warehouseChange} 
 | 
                                            filterToQuery={(val) => ({ name: val })} 
 | 
                                        /> 
 | 
                                    </ReferenceInput> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <ReferenceInput 
 | 
                                        source="areaId" 
 | 
                                        reference="warehouseAreas" 
 | 
                                        filter={{ warehouseId }} 
 | 
                                    > 
 | 
                                        <AutocompleteInput 
 | 
                                            label="table.field.loc.areaId" 
 | 
                                            optionText="name" 
 | 
                                            validate={[required()]} 
 | 
                                            filterToQuery={(val) => ({ name: val })} 
 | 
                                        /> 
 | 
                                    </ReferenceInput> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.code" 
 | 
                                        source="code" 
 | 
                                        parse={v => v} 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    {/* <ReferenceInput 
 | 
                                        source="type" 
 | 
                                        reference="dictData" 
 | 
                                        filter={{ dictTypeCode: 'sys_loc_type' }} 
 | 
                                    > 
 | 
                                        <AutocompleteInput 
 | 
                                            label="table.field.loc.type" 
 | 
                                            optionText="label" 
 | 
                                            optionValue="value" 
 | 
                                            parse={v => v} 
 | 
                                            validate={[required()]} 
 | 
                                        /> 
 | 
                                    </ReferenceInput> */} 
 | 
                                    {/* <AutocompleteInput 
 | 
                                        choices={dicts} 
 | 
                                        source="type" 
 | 
                                        optionText="label" 
 | 
                                        label="table.field.loc.type" 
 | 
                                        optionValue="value" 
 | 
                                        parse={v => v} 
 | 
                                        validate={[required()]} 
 | 
                                    /> */} 
 | 
                                    <ReferenceArrayInput source="typeIds" reference="locType" > 
 | 
                                        <SelectArrayInput label="table.field.loc.type" validate={[required()]} /> 
 | 
                                    </ReferenceArrayInput> 
 | 
                                </Grid> 
 | 
                                {/* <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.name" 
 | 
                                        source="name" 
 | 
                                        parse={v => v} 
 | 
                                    /> 
 | 
                                </Grid> */} 
 | 
                                {/* <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.flagLogic" 
 | 
                                        source="flagLogic" 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.fucAtrrs" 
 | 
                                        source="fucAtrrs" 
 | 
                                        parse={v => v} 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.barcode" 
 | 
                                        source="barcode" 
 | 
                                        parse={v => v} 
 | 
                                    /> 
 | 
                                </Grid> */} 
 | 
                                {/* <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.unit" 
 | 
                                        source="unit" 
 | 
                                        parse={v => v} 
 | 
                                    /> 
 | 
                                </Grid> */} 
 | 
                                {/* <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.size" 
 | 
                                        source="size" 
 | 
                                        parse={v => v} 
 | 
                                    /> 
 | 
                                </Grid> */} 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.length" 
 | 
                                        source="length" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.width" 
 | 
                                        source="width" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.height" 
 | 
                                        source="height" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.row" 
 | 
                                        source="row" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.col" 
 | 
                                        source="col" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.lev" 
 | 
                                        source="lev" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                {/* <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.channel" 
 | 
                                        source="channel" 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.maxParts" 
 | 
                                        source="maxParts" 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.maxPack" 
 | 
                                        source="maxPack" 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <NumberInput 
 | 
                                        label="table.field.loc.flagLabelMange" 
 | 
                                        source="flagLabelMange" 
 | 
                                    /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <TextInput 
 | 
                                        label="table.field.loc.locAttrs" 
 | 
                                        source="locAttrs" 
 | 
                                        parse={v => v} 
 | 
                                        validate={required()} 
 | 
                                    /> 
 | 
                                </Grid> */} 
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <DictionarySelect 
 | 
                                        label={translate("table.field.loc.useStatus")} 
 | 
                                        name="useStatus" 
 | 
                                        size="small" 
 | 
                                        validate={[required()]} 
 | 
                                        dictTypeCode="sys_loc_use_stas" 
 | 
                                    /> 
 | 
                                    {/* <ReferenceInput 
 | 
                                        source="useStatus" 
 | 
                                        reference="dictData" 
 | 
                                        filter={{ dictTypeCode: 'sys_loc_use_stas' }} 
 | 
                                    > 
 | 
                                        <AutocompleteInput 
 | 
                                            label="table.field.loc.useStatus" 
 | 
                                            optionText="label" 
 | 
                                            optionValue="value" 
 | 
                                            parse={v => v} 
 | 
                                            validate={[required()]} 
 | 
                                        /> 
 | 
                                    </ReferenceInput> */} 
 | 
                                </Grid> 
 | 
  
 | 
  
 | 
                                <Grid item xs={6} display="flex" gap={1}> 
 | 
                                    <StatusSelectInput /> 
 | 
                                </Grid> 
 | 
                                <Grid item xs={12} display="flex" gap={1}> 
 | 
                                    <Stack direction="column" spacing={1} width={'100%'}> 
 | 
                                        <MemoInput /> 
 | 
                                    </Stack> 
 | 
                                </Grid> 
 | 
                            </Grid> 
 | 
                        </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> 
 | 
        </> 
 | 
    ) 
 | 
} 
 | 
  
 | 
export default LocCreate; 
 |