chen.lin
2 天以前 e56277542f60f386a109b1b072a1dbda390588fd
rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
@@ -1,10 +1,11 @@
import { Dialog, DialogActions, DialogContent, DialogTitle, Box, LinearProgress } from "@mui/material";
import React, { useState, useRef, useEffect, useMemo } from "react";
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
import {
    List,
    DatagridConfigurable,
    SearchInput,
    TopToolbar,
    Toolbar,
    Button,
    SelectColumnsButton,
    EditButton,
@@ -13,7 +14,6 @@
    ExportButton,
    BulkDeleteButton,
    WrapperField,
    Toolbar,
    useRecordContext,
    useTranslate,
    useNotify,
@@ -39,14 +39,17 @@
    useRefresh,
    useGetList,
} from 'react-admin';
import DialogCloseButton from "../../components/DialogCloseButton";
import { styled } from '@mui/material/styles';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import { Grid, margin, Stack, width } from "@mui/system";
import request from '@/utils/request';
import SaveIcon from '@mui/icons-material/Save';
import debounce from "lodash/debounce";
import DialogCloseButton from "../../components/DialogCloseButton";
import EditableTextField from "../../components/EditableTextField";
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
import { Grid, margin, Stack, width } from "@mui/system";
import SaveIcon from '@mui/icons-material/Save';
import OutOrderPreview from "./OutOrderPreview";
import { styled } from '@mui/material/styles';
import request from '@/utils/request';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -91,31 +94,64 @@
]
const OutOrderModal = (props) => {
    const { open, setOpen, record } = props;
    const translate = useTranslate();
    const [params, setParams] = useState({});
    const { open, setOpen, preview, setPreview, record, initialFormData, saveFormData } = props;
    const [drawerVal, setDrawerVal] = useState(false);
    const [params, setParams] = useState(() => initialFormData?.params ?? {});
    const [select, setSelect] = useState([]);
    const translate = useTranslate();
    const refresh = useRefresh();
    useEffect(() => {
        if (open && initialFormData?.params) {
            setParams(initialFormData.params);
        }
    }, [open, initialFormData?.params]);
    const handleClose = (event, reason) => {
        if (reason !== "backdropClick") {
            setOpen(false);
        }
    };
    useEffect(() => {
        if (open && params && Object.keys(params).length > 0 && saveFormData) {
            saveFormData({ params, formValues: params });
        }
    }, [open, params, saveFormData]);
    const handleFormValuesChange = useCallback((formValues) => {
        if (saveFormData) {
            saveFormData({ params: formValues, formValues });
        }
    }, [saveFormData]);
    const CustomFilter = () => {
        const { filterValues, setFilters, refetch } = useListContext('deliveryItem');
        const [formValues, setFormValues] = useState(filterValues);
        const { filterValues } = useListContext();
        const initialFormValues = initialFormData?.formValues ?? initialFormData?.params ?? params ?? filterValues;
        const [formValues, setFormValues] = useState(initialFormValues || {});
        const initializedRef = useRef(false);
        useEffect(() => {
            if (open && (initialFormData?.formValues || initialFormData?.params) && !initializedRef.current) {
                const init = initialFormData?.formValues ?? initialFormData?.params ?? {};
                setFormValues(init);
                initializedRef.current = true;
            }
            if (!open) initializedRef.current = false;
        }, [open, initialFormData?.formValues, initialFormData?.params]);
        const handleChange = (event) => {
            if (event.target == undefined || event.target == null) { return }
            setFormValues(formValues => ({
            const next = {
                ...formValues,
                [event.target.name]: event.target.value,
            }));
            };
            setFormValues(next);
            handleFormValuesChange(next);
        };
        const handleSubmit = (event) => {
            setParams(formValues)
            setParams(formValues);
            if (saveFormData) saveFormData({ params: formValues, formValues });
        };
        return (
@@ -126,14 +162,14 @@
                            source="condition"
                            label="common.action.search"
                            resettable
                            defaultValue={params?.condition}
                            value={formValues?.condition ?? ''}
                            onChange={handleChange} />
                    </Stack>
                    <Stack>
                        <TextInput
                            source="deliveryCode"
                            label="table.field.deliveryItem.deliveryCode"
                            defaultValue={params?.deliveryCode}
                            value={formValues?.deliveryCode ?? ''}
                            onChange={handleChange}
                            resettable
                        />
@@ -142,7 +178,7 @@
                        <TextInput
                            source="maktx"
                            label="table.field.deliveryItem.matnrName"
                            defaultValue={params?.maktx}
                            value={formValues?.maktx ?? ''}
                            onChange={handleChange}
                            resettable
                        />
@@ -151,7 +187,7 @@
                        <TextInput
                            source="matnrCode"
                            label="table.field.deliveryItem.matnrCode"
                            defaultValue={params?.matnrCode}
                            value={formValues?.matnrCode ?? ''}
                            resettable
                            onChange={handleChange} />
                    </Stack>
@@ -159,7 +195,7 @@
                        <TextInput
                            source="splrName"
                            label="table.field.deliveryItem.splrName"
                            defaultValue={params?.splrName}
                            value={formValues?.splrName ?? ''}
                            resettable
                            onChange={handleChange} />
                    </Stack>
@@ -195,7 +231,7 @@
            </DialogTitle>
            <Grid container rowSpacing={2} columnSpacing={2}>
                <DialogContent>
                    <Grid item sx={24}>
                    <Grid item>
                        <List
                            resource="/deliveryItem/filters"
                            sx={{
@@ -223,11 +259,11 @@
                                />
                                <StyledDatagrid
                                    preferenceKey='deliveryItem'
                                    bulkActionButtons={<AddOutStockButton setOpen={setOpen} />}
                                    bulkActionButtons={<AddOutStockButton setOpen={setOpen} setPreview={setPreview} setSelect={setSelect} />}
                                    rowClick={(id, resource, record) => false}
                                    expand={false}
                                    expandSingle={true}
                                    omit={['id', 'createTime', 'createBy', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy', 'createTime']}
                                    omit={['id', 'createTime', 'createBy', 'memo', 'startTime', 'endTime', 'updateBy', 'createTime']}
                                >
                                    <NumberField source="id" />
                                    <TextField source="deliveryCode" label="table.field.deliveryItem.deliveryCode" />
@@ -235,6 +271,7 @@
                                    <TextField source="maktx" label="table.field.deliveryItem.matnrName" />
                                    <TextField source="unit" label="table.field.deliveryItem.unit" />
                                    <NumberField source="anfme" label="table.field.deliveryItem.anfme" />
                                    <NumberField source="workQty" label="table.field.outStockItem.workQty" />
                                    <TextField source="splrName" label="table.field.deliveryItem.splrName" />
                                    <TextField source="splrBatch" label="table.field.deliveryItem.splrBatch" />
                                    <TextField source="updateBy$" label="common.field.updateBy" />
@@ -249,6 +286,9 @@
                    </Grid>
                </DialogContent>
            </Grid>
            <Grid>
                <OutOrderPreview open={preview} setOpen={setPreview} selectedIds={select} setCloseParent={setOpen} />
            </Grid>
        </Dialog >
    )
}
@@ -256,20 +296,15 @@
export default OutOrderModal;
const AddOutStockButton = (props) => {
    const { setOpen } = props;
    const { setOpen, setPreview, setSelect } = props;
    const { selectedIds, onUnselectItems } = useListContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const confirm = async (event) => {
        const res = await request.post(`/outStock/generate/orders`, { ids: selectedIds });
        if (res?.data?.code === 200) {
            notify(res.data.msg);
        } else {
            notify(res.data.msg);
        }
        refresh();
        setPreview(true)
        setSelect(selectedIds);
        onUnselectItems();
        setOpen(false);
        // refresh();
    }
    return (