From e56277542f60f386a109b1b072a1dbda390588fd Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 11 二月 2026 15:54:29 +0800
Subject: [PATCH] EXISTS 保持一致

---
 rsf-admin/src/page/orders/outStock/OutOrderModal.jsx |  101 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 68 insertions(+), 33 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
index ba39f27..67594a4 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
+++ b/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();
-        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 (

--
Gitblit v1.9.1