| | |
| | | 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, |
| | |
| | | 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 CheckCircleIcon from '@mui/icons-material/CheckCircle'; |
| | | 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': { |
| | |
| | | ] |
| | | |
| | | const OutOrderModal = (props) => { |
| | | const { open, setOpen, preview, setPreview, record } = props; |
| | | const translate = useTranslate(); |
| | | const [params, setParams] = useState({}); |
| | | const [select, setSelect] = 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(); |
| | | 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 ( |
| | |
| | | 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 |
| | | /> |
| | |
| | | <TextInput |
| | | source="maktx" |
| | | label="table.field.deliveryItem.matnrName" |
| | | defaultValue={params?.maktx} |
| | | value={formValues?.maktx ?? ''} |
| | | onChange={handleChange} |
| | | resettable |
| | | /> |
| | |
| | | <TextInput |
| | | source="matnrCode" |
| | | label="table.field.deliveryItem.matnrCode" |
| | | defaultValue={params?.matnrCode} |
| | | value={formValues?.matnrCode ?? ''} |
| | | resettable |
| | | onChange={handleChange} /> |
| | | </Stack> |
| | |
| | | <TextInput |
| | | source="splrName" |
| | | label="table.field.deliveryItem.splrName" |
| | | defaultValue={params?.splrName} |
| | | value={formValues?.splrName ?? ''} |
| | | resettable |
| | | onChange={handleChange} /> |
| | | </Stack> |
| | |
| | | </DialogTitle> |
| | | <Grid container rowSpacing={2} columnSpacing={2}> |
| | | <DialogContent> |
| | | <Grid item sx={24}> |
| | | <Grid item> |
| | | <List |
| | | resource="/deliveryItem/filters" |
| | | sx={{ |