|  |  | 
 |  |  |     useCreateController, | 
 |  |  |     useListContext, | 
 |  |  |     useRefresh, | 
 |  |  |     SelectArrayInput | 
 |  |  | } from 'react-admin'; | 
 |  |  | import { | 
 |  |  |     Dialog, | 
 |  |  | 
 |  |  |  | 
 |  |  | } from '@mui/material'; | 
 |  |  | import DialogCloseButton from "../../components/DialogCloseButton"; | 
 |  |  | import DictionarySelect from "../../components/DictionarySelect"; | 
 |  |  | import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form"; | 
 |  |  | import SaveIcon from '@mui/icons-material/Save'; | 
 |  |  | import request from '@/utils/request'; | 
 |  |  | 
 |  |  | const InitModal = ({ open, setOpen }) => { | 
 |  |  |     const refresh = useRefresh(); | 
 |  |  |     const translate = useTranslate(); | 
 |  |  |     const { filterValues } = useListContext(); // 获取列表上下文    | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     const notify = useNotify(); | 
 |  |  |     const [disabled, setDisabled] = useState(false) | 
 |  |  |  | 
 |  |  |     const [formData, setFormData] = useState({ | 
 |  |  |         "areaId": "", | 
 |  |  |         "endBay": "", | 
 |  |  |         "endLev": "", | 
 |  |  |         "endRow": "", | 
 |  |  |         "warehouseId": filterValues.warehouseId, | 
 |  |  |         "areaId": filterValues.areaId, | 
 |  |  |         "endBay": undefined, | 
 |  |  |         "endLev": undefined, | 
 |  |  |         "endRow": undefined, | 
 |  |  |         "locType": "", | 
 |  |  |         "startBay": "", | 
 |  |  |         "startLev": "", | 
 |  |  |         "startRow": "", | 
 |  |  |         "type": "" | 
 |  |  |         "startBay": undefined, | 
 |  |  |         "startLev": undefined, | 
 |  |  |         "startRow": undefined, | 
 |  |  |         "type": "", | 
 |  |  |         "typeIds": undefined, | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     const handleClose = (event, reason) => { | 
 |  |  | 
 |  |  |         e.preventDefault(); | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     const handleChange = (e) => { | 
 |  |  |         const { name, value } = e.target; | 
 |  |  |     const handleChange = (value, name) => { | 
 |  |  |         setFormData((prevData) => ({ | 
 |  |  |             ...prevData, | 
 |  |  |             [name]: value | 
 |  |  | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     const handleSubmit = async () => { | 
 |  |  |         setDisabled(true) | 
 |  |  |         const res = await request.post(`/loc/init`, formData); | 
 |  |  |         if (res?.data?.code === 200) { | 
 |  |  |             setOpen(false); | 
 |  |  | 
 |  |  |         } else { | 
 |  |  |             notify(res.data.msg); | 
 |  |  |         } | 
 |  |  |         setDisabled(false) | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <Dialog open={open} maxWidth="md" fullWidth> | 
 |  |  |             <DialogCloseButton onClose={handleClose} /> | 
 |  |  |             <DialogTitle>{translate('toolbar.locInit')}</DialogTitle> | 
 |  |  |             <DialogContent sx={{ mt: 2 }}> | 
 |  |  |                 <Box component="form" sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> | 
 |  |  |                     <Grid container spacing={2}> | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.areaId")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.areaId} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |             <Form onSubmit={handleSubmit} defaultValues={filterValues}> | 
 |  |  |                 <DialogCloseButton onClose={handleClose} /> | 
 |  |  |                 <DialogTitle>{translate('toolbar.locInit')}</DialogTitle> | 
 |  |  |                 <DialogContent sx={{ mt: 2 }}> | 
 |  |  |                     <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> | 
 |  |  |                         <Grid container spacing={2}> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <ReferenceInput | 
 |  |  |                                     source="warehouseId" | 
 |  |  |                                     reference="warehouse" | 
 |  |  |                                 > | 
 |  |  |                                     <AutocompleteInput | 
 |  |  |                                         debounce | 
 |  |  |                                         label="table.field.loc.warehouseId" | 
 |  |  |                                         optionText="name" | 
 |  |  |                                         onChange={(value) => handleChange(value, 'warehouseId')} | 
 |  |  |                                         value={formData.warehouseId} | 
 |  |  |                                         validate={[required()]} | 
 |  |  |                                         filterToQuery={(val) => ({ name: val })} | 
 |  |  |                                     /> | 
 |  |  |                                 </ReferenceInput> | 
 |  |  |  | 
 |  |  |                             </Grid> | 
 |  |  |  | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <ReferenceInput | 
 |  |  |                                     source="areaId" | 
 |  |  |                                     reference="warehouseAreas" | 
 |  |  |                                     filter={{ warehouseId: formData.warehouseId }} | 
 |  |  |                                 > | 
 |  |  |                                     <AutocompleteInput | 
 |  |  |                                         label="table.field.loc.areaId" | 
 |  |  |                                         optionText="name" | 
 |  |  |                                         onChange={(value) => handleChange(value, 'areaId')} | 
 |  |  |                                         value={formData.areaId} | 
 |  |  |                                         validate={[required()]} | 
 |  |  |                                         filterToQuery={(val) => ({ name: val })} | 
 |  |  |                                     /> | 
 |  |  |                                 </ReferenceInput> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <ReferenceArrayInput source="typeIds" reference="locType" > | 
 |  |  |                                     <SelectArrayInput label="table.field.loc.type" validate={[required()]} onChange={(e) => handleChange(e.target.value, 'typeIds')} /> | 
 |  |  |                                 </ReferenceArrayInput> | 
 |  |  |                                 {/* <ReferenceArrayInput source="typeIds" reference="dictData" filter={{}}> | 
 |  |  |                                     <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} validate={[required()]} /> | 
 |  |  |                                 </ReferenceArrayInput> */} | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.startRow")} | 
 |  |  |                                     name="startRow" | 
 |  |  |                                     value={formData.startRow} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'startRow')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.startBay")} | 
 |  |  |                                     name="startBay" | 
 |  |  |                                     value={formData.startBay} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'startBay')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.startLev")} | 
 |  |  |                                     name="startLev" | 
 |  |  |                                     value={formData.startLev} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'startLev')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.endRow")} | 
 |  |  |                                     name="endRow" | 
 |  |  |                                     value={formData.endRow} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'endRow')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.endBay")} | 
 |  |  |                                     name="endBay" | 
 |  |  |                                     value={formData.endBay} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'endBay')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={translate("table.field.loc.endLev")} | 
 |  |  |                                     name="endLev" | 
 |  |  |                                     value={formData.endLev} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'endLev')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={"table.field.loc.channel"} | 
 |  |  |                                     name="channel" | 
 |  |  |                                     value={formData.channel} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'channel')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                             <Grid item xs={4}> | 
 |  |  |                                 <TextInput | 
 |  |  |                                     label={"table.field.loc.startChannel"} | 
 |  |  |                                     name="startChannel" | 
 |  |  |                                     value={formData.startChannel} | 
 |  |  |                                     onChange={(e) => handleChange(+e.target.value, 'startChannel')} | 
 |  |  |                                     size="small" | 
 |  |  |                                     type="number" | 
 |  |  |                                     validate={[required()]} | 
 |  |  |                                 /> | 
 |  |  |                             </Grid> | 
 |  |  |                         </Grid> | 
 |  |  |                     </Box> | 
 |  |  |                 </DialogContent> | 
 |  |  |                 <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> | 
 |  |  |                     <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}> | 
 |  |  |                         <Button disabled={disabled} type="submit" variant="contained" startIcon={<SaveIcon />} > | 
 |  |  |                             {translate('toolbar.confirm')} | 
 |  |  |                         </Button> | 
 |  |  |                     </Box> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.locType")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.locType} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.type")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.type} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.startBay")} | 
 |  |  |                                 name="type" | 
 |  |  |                                 value={formData.startBay} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.startLev")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.startLev} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.startRow")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.startRow} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.endBay")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.endBay} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.endLev")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.endLev} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |                         <Grid item xs={4}> | 
 |  |  |                             <TextField | 
 |  |  |                                 label={translate("table.field.loc.endRow")} | 
 |  |  |                                 name="wkType" | 
 |  |  |                                 value={formData.endRow} | 
 |  |  |                                 onChange={handleChange} | 
 |  |  |                                 variant="outlined" | 
 |  |  |                                 size="small" | 
 |  |  |                                 validate={required()} | 
 |  |  |                             /> | 
 |  |  |                         </Grid> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                     </Grid> | 
 |  |  |                 </Box> | 
 |  |  |             </DialogContent> | 
 |  |  |             <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> | 
 |  |  |                 <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}> | 
 |  |  |                     <Button onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}> | 
 |  |  |                         确认 | 
 |  |  |                     </Button> | 
 |  |  |                 </Box> | 
 |  |  |             </DialogActions> | 
 |  |  |                 </DialogActions> | 
 |  |  |             </Form> | 
 |  |  |         </Dialog> | 
 |  |  |     ); | 
 |  |  | } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | export default InitModal; |