skyouc
10 天以前 e42c5977ec786eb72af7294e3d3d8bcf4ae47413
rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
@@ -19,6 +19,7 @@
    useCreateController,
    useListContext,
    useRefresh,
    SelectArrayInput
} from 'react-admin';
import {
    Dialog,
@@ -38,7 +39,8 @@
    TableCell,
    Tooltip,
    IconButton,
    styled
    styled,
} from '@mui/material';
@@ -50,11 +52,10 @@
import { Add, Edit, Delete } from '@mui/icons-material';
import _ from 'lodash';
import { DataGrid } from '@mui/x-data-grid';
import StatusSelectInput from "../../components/StatusSelectInput";
const InitModal = ({ open, setOpen }) => {
const BatchModal = ({ open, setOpen, fieldType }) => {
    const refresh = useRefresh();
    const translate = useTranslate();
@@ -62,16 +63,32 @@
    const notify = useNotify();
    const [formData, setFormData] = useState({
        "areaId": undefined,
        "locType": "",
        "type": ""
        "warehouseId": null,
        "areaId": null,
        "type": null,
        'status': null
    });
    const { selectedIds, onUnselectItems } = useListContext();
    const handleClose = (event, reason) => {
        if (reason !== "backdropClick") {
            setOpen(false);
            reset()
            refresh();
            onUnselectItems()
        }
    };
    const reset = () => {
        setFormData({
            "warehouseId": null,
            "areaId": null,
            "type": null,
            "typeIds": null,
            'status': null
        })
    }
    const handleReset = (e) => {
        e.preventDefault();
@@ -80,71 +97,101 @@
    const handleChange = (value, name) => {
        setFormData((prevData) => ({
            ...prevData,
            [name]: ['locType', 'type'].includes(name) ? value : +value
            [name]: value
        }));
        refresh()
    };
    const removeEmptyKeys = (obj) => {
        return _.pickBy(obj, (value) => {
            if (_.isObject(value)) {
                const newObj = removeEmptyKeys(value);
                return !_.isEmpty(newObj);
            }
            return !_.isNil(value) && (_.isNumber(value) ? value !== 0 : !_.isEmpty(value));
        });
    }
    const handleSubmit = async () => {
        const res = await request.post(`/loc/init`, formData);
        const parmas = {
            id: selectedIds,
            loc: removeEmptyKeys(formData)
        }
        const res = await request.post(`/loc/modify`, parmas);
        if (res?.data?.code === 200) {
            setOpen(false);
            refresh();
            handleClose()
        } else {
            notify(res.data.msg);
        }
    }
    return (
        <Dialog open={open} maxWidth="md" fullWidth>
        <Dialog open={open} maxWidth="xs" fullWidth>
            <Form onSubmit={handleSubmit}>
                <DialogCloseButton onClose={handleClose} />
                <DialogTitle>{translate('toolbar.batch')}</DialogTitle>
                <DialogContent sx={{ mt: 2 }}>
                    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
                        <Grid container spacing={2}>
                            <Grid item xs={4}>
                                <ReferenceInput
                                    source="areaId"
                                    reference="warehouseAreas"
                                >
                                    <AutocompleteInput
                                        label="table.field.loc.areaId"
                                        optionText="name"
                                        onChange={(value) => handleChange(value, 'areaId')}
                                        value={formData.areaId}
                                        validate={[required()]}
                                        filterToQuery={(val) => ({ name: val })}
                                    />
                                </ReferenceInput>
                            {fieldType === 'warehouseId' &&
                                <Grid item xs={6}>
                                    <ReferenceInput
                                        source="warehouseId"
                                        reference="warehouse"
                                    >
                                        <AutocompleteInput
                                            label="table.field.loc.warehouseId"
                                            optionText="name"
                                            value={formData.warehouseId}
                                            filterToQuery={(val) => ({ name: val })}
                                        />
                                    </ReferenceInput>
                                </Grid>
                            }
                            {fieldType === 'areaId' &&
                                <Grid item xs={6}>
                                    <ReferenceInput
                                        source="areaId"
                                        reference="warehouseAreas"
                                    >
                                        <AutocompleteInput
                                            label="table.field.loc.areaId"
                                            optionText="name"
                                            onChange={(value) => handleChange(value, 'areaId')}
                                            value={formData.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"
                                />
                            </Grid>
                            <Grid item xs={4}>
                                <DictionarySelect
                                </Grid>
                            }
                            {fieldType === 'typeIds' &&
                                <Grid item xs={6}>
                                    {/* <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>
                                /> */}
                                    <ReferenceArrayInput source="typeIds" reference="locType" >
                                        <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
                                    </ReferenceArrayInput>
                                </Grid>
                            }
                            {fieldType === 'status' &&
                                <Grid item xs={6}>
                                    <StatusSelectInput
                                        onChange={(e) => handleChange(e.target.value, 'status')}
                                        defaultValue={''}
                                        require={false}
                                    />
                                </Grid>
                            }
                        </Grid>
                    </Box>
@@ -152,7 +199,7 @@
                <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 />}>
                            确认
                            {translate('toolbar.confirm')}
                        </Button>
                    </Box>
                </DialogActions>
@@ -161,4 +208,4 @@
    );
}
export default InitModal;
export default BatchModal;