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