From c44cdd8db1e6691e2b2d6a915f37e956d2ed4b60 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 15 七月 2025 10:18:17 +0800 Subject: [PATCH] 盘点单导入功能优化 --- rsf-admin/src/page/basicInfo/loc/InitModal.jsx | 157 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 92 insertions(+), 65 deletions(-) diff --git a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx index 80c6a2b..38a3297 100644 --- a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx +++ b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx @@ -19,6 +19,7 @@ useCreateController, useListContext, useRefresh, + SelectArrayInput } from 'react-admin'; import { Dialog, @@ -57,12 +58,15 @@ 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, @@ -70,7 +74,8 @@ "startBay": undefined, "startLev": undefined, "startRow": undefined, - "type": "" + "type": "", + "typeIds": undefined, }); const handleClose = (event, reason) => { @@ -91,6 +96,7 @@ }; const handleSubmit = async () => { + setDisabled(true) const res = await request.post(`/loc/init`, formData); if (res?.data?.code === 200) { setOpen(false); @@ -98,12 +104,13 @@ } 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 }}> @@ -111,8 +118,27 @@ <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" @@ -123,56 +149,15 @@ 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" - 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")} @@ -184,31 +169,28 @@ 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")} @@ -220,21 +202,66 @@ 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; \ No newline at end of file -- Gitblit v1.9.1