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 | 297 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 165 insertions(+), 132 deletions(-) diff --git a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx index ef64347..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, @@ -43,6 +44,7 @@ } 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'; @@ -56,20 +58,24 @@ 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) => { @@ -82,8 +88,7 @@ e.preventDefault(); }; - const handleChange = (e) => { - const { name, value } = e.target; + const handleChange = (value, name) => { setFormData((prevData) => ({ ...prevData, [name]: value @@ -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,137 +104,164 @@ } 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; \ No newline at end of file -- Gitblit v1.9.1