|  |  |  | 
|---|
|  |  |  | useCreateController, | 
|---|
|  |  |  | useListContext, | 
|---|
|  |  |  | useRefresh, | 
|---|
|  |  |  | SelectArrayInput | 
|---|
|  |  |  | } from 'react-admin'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | Dialog, | 
|---|
|  |  |  | 
|---|
|  |  |  | 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": undefined, | 
|---|
|  |  |  | "warehouseId": filterValues.warehouseId, | 
|---|
|  |  |  | "areaId": filterValues.areaId, | 
|---|
|  |  |  | "endBay": undefined, | 
|---|
|  |  |  | "endLev": undefined, | 
|---|
|  |  |  | "endRow": undefined, | 
|---|
|  |  |  | 
|---|
|  |  |  | "startBay": undefined, | 
|---|
|  |  |  | "startLev": undefined, | 
|---|
|  |  |  | "startRow": undefined, | 
|---|
|  |  |  | "type": "" | 
|---|
|  |  |  | "type": "", | 
|---|
|  |  |  | "typeIds": undefined, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleClose = (event, reason) => { | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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> | 
|---|
|  |  |  | <Form onSubmit={handleSubmit}> | 
|---|
|  |  |  | <Form onSubmit={handleSubmit} defaultValues={filterValues}> | 
|---|
|  |  |  | <DialogCloseButton onClose={handleClose} /> | 
|---|
|  |  |  | <DialogTitle>{translate('toolbar.locInit')}</DialogTitle> | 
|---|
|  |  |  | <DialogContent sx={{ mt: 2 }}> | 
|---|
|  |  |  | 
|---|
|  |  |  | <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" | 
|---|
|  |  |  | 
|---|
|  |  |  | filterToQuery={(val) => ({ name: val })} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </ReferenceInput> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <Grid item xs={4}> | 
|---|
|  |  |  | <DictionarySelect | 
|---|
|  |  |  | label={translate("table.field.loc.locType")} | 
|---|
|  |  |  | name="locType" | 
|---|
|  |  |  | value={formData.locType} | 
|---|
|  |  |  | onChange={(e) => handleChange(e.target.value, 'locType')} | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | validate={[required()]} | 
|---|
|  |  |  | dictTypeCode="sys_width_type" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <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}> | 
|---|
|  |  |  | <DictionarySelect | 
|---|
|  |  |  | label={translate("table.field.loc.type")} | 
|---|
|  |  |  | name="type" | 
|---|
|  |  |  | value={formData.type} | 
|---|
|  |  |  | onChange={(e) => handleChange(e.target.value, 'type')} | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | validate={[required()]} | 
|---|
|  |  |  | dictTypeCode="sys_loc_type" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </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.startRow")} | 
|---|
|  |  |  | 
|---|
|  |  |  | 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')} | 
|---|
|  |  |  | 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.endLev")} | 
|---|
|  |  |  | name="endLev" | 
|---|
|  |  |  | value={formData.endLev} | 
|---|
|  |  |  | onChange={(e) => handleChange(+e.target.value, 'endLev')} | 
|---|
|  |  |  | 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")} | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 type="submit" variant="contained" startIcon={<SaveIcon />}> | 
|---|
|  |  |  | 确认 | 
|---|
|  |  |  | <Button disabled={disabled} type="submit" variant="contained" startIcon={<SaveIcon />} > | 
|---|
|  |  |  | {translate('toolbar.confirm')} | 
|---|
|  |  |  | </Button> | 
|---|
|  |  |  | </Box> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </DialogActions> | 
|---|
|  |  |  | </Form> | 
|---|
|  |  |  | </Dialog> | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default InitModal; | 
|---|