From bd26cd9c33c3e097f15d47105ea969b4e10aa333 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 05 八月 2025 13:02:16 +0800
Subject: [PATCH] 新增库存调整弹框

---
 rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx |  204 +++++++++++++++++++++++++++-----------------------
 1 files changed, 111 insertions(+), 93 deletions(-)

diff --git a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
index 1d66d19..d9b25a2 100644
--- a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
@@ -16,19 +16,13 @@
 } from '@mui/material';
 
 import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_ITEM_PAGE_SIZE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import { useTranslate, useNotify, useRefresh, DatagridConfigurable} from 'react-admin';
 import DialogCloseButton from "../../components/DialogCloseButton";
-import {
-    useTranslate, useNotify, useRefresh, List, FilterButton, NumberField,
-    DateField, ReferenceInput, AutocompleteInput, TextInput, DatagridConfigurable,
-    BooleanField, SearchInput,
-} from 'react-admin';
 import TreeSelectInput from "@/page/components/TreeSelectInput";
 import { Add, Edit, Delete, Save } from '@mui/icons-material';
 import SaveIcon from '@mui/icons-material/Save';
 import { DataGrid } from '@mui/x-data-grid';
 import request from '@/utils/request';
-
-
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -44,14 +38,8 @@
     },
 }));
 
-
-
 const SelectLocsRevise = (props) => {
     const { open, setOpen, data, setData } = props;
-    const translate = useTranslate();
-    const refresh = useRefresh();
-    const notify = useNotify();
-
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
             setOpen(false);
@@ -59,25 +47,28 @@
     };
 
     const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_revise_type')) || [];
-    const [formData, setFormData] = useState({});
-    const [tableData, setTableData] = useState([]);
-    const [dyFields, setDyFields] = useState([]);
-    const [selectedRows, setSelectedRows] = useState([]);
     const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE });
-    const [rowCount, setRowCount] = useState(0);
+    const [formData, setFormData] = useState({ useStatus: 'F', code: null });
+    const [selectedRows, setSelectedRows] = useState([]);
     const [isLoading, setIsLoading] = useState(false);
+    const [tableData, setTableData] = useState([]);
+    const [rowCount, setRowCount] = useState(0);
+    const translate = useTranslate();
+    const refresh = useRefresh();
+    const notify = useNotify();
+
     const handleChange = (e) => {
         const { name, value } = e.target;
         setFormData(() => ({
+            ...formData,
             [name]: value
         }));
     };
 
     const reset = () => {
         setFormData({
-            name: '',
             code: '',
-            groupId: 0
+            useStatus: 'F',
         })
     }
 
@@ -85,17 +76,18 @@
         const hasarr = data.map(el => +el.matnrId)
         const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id)));
         const value = selectedData.map((el => {
-            const dynamicFields = dyFields.reduce((acc, item) => {
-                acc[item.fields] = el['extendFields']?.[item.fields] || '';
-                return acc;
-            }, {});
             return {
-                matnrId: el.id,
-                maktx: el.name,
-                matnrCode: el.code,
-                stockUnit: el.stockUnit || '',
-                purUnit: el.purchaseUnit || '',
-                ...dynamicFields
+                id: el.id,
+                code: el.code,
+                areaId: el.areaId,
+                barcode: el.barcode || '',
+                channel: el.channel || '',
+                col: el.col,
+                lev: el.lev,
+                row: el.row,
+                type: el.type,
+                useStatus: el.useStatus,
+                warehouseId: el.warehouseId,
             }
         }))
         setData([...data, ...value]);
@@ -103,13 +95,9 @@
         reset();
     };
 
-    const filters = [
-        <SearchInput source="condition" alwaysOn />,
-    ]
-
     const getData = async () => {
         setIsLoading(true)
-        const res = await request.post(`/locItem/page`, {
+        const res = await request.post(`/loc/page`, {
             ...formData,
             current: page?.page,
             pageSize: page?.pageSize,
@@ -193,14 +181,14 @@
                             <Grid item md={4}>
                                 <TextField
                                     label={translate('table.field.locItem.locCode')}
-                                    name="locCode"
-                                    value={formData.name}
+                                    name="code"
+                                    value={formData.code}
                                     onChange={handleChange}
                                     size="small"
                                 />
                             </Grid>
                             <Grid item md={2} sx={{ margin: 'auto' }}>
-                                <Button variant="contained" onClick={handleSearch}>鎼滅储</Button>
+                                <Button variant="contained" onClick={handleSearch}>{translate("toolbar.query")}</Button>
                             </Grid>
                         </Grid>
                     </Box>
@@ -208,12 +196,10 @@
                         <AsnWareModalTable
                             tableData={tableData}
                             setTableData={setTableData}
-                            dyFields={dyFields}
                             page={page}
                             rowCount={rowCount}
                             setPage={setPage}
                             isLoading={isLoading}
-                            setDyFields={setDyFields}
                             selectedRows={selectedRows}
                             setSelectedRows={setSelectedRows}
                         />
@@ -233,69 +219,101 @@
 
 export default SelectLocsRevise;
 
-const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows }) => {
     const translate = useTranslate();
     const notify = useNotify();
 
     const [columns, setColumns] = useState([
-        // { field: 'id', headerName: 'ID', width: 100 },
-        { field: 'locCode', headerName: translate('table.field.locItem.locCode'), width: 150 },
-        { field: 'matnrCode', headerName: translate('table.field.locItem.matnrCode'), width: 200 },
-        { field: 'maktx', headerName: translate('table.field.locItem.maktx'), width: 300 },
-        { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 },
-        { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100 },
-        { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
+        {
+            field: 'code',
+            headerName: translate('table.field.locItem.locCode'),
+            width: 110,
+            editable: false,
+        },
+        {
+            field: 'warehouseId$',
+            headerName: translate('table.field.loc.warehouseId'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'areaId$',
+            headerName: translate('table.field.loc.areaId'),
+            width: 130,
+            editable: false,
+        },
+        {
+            field: 'typeIds$',
+            headerName: translate('table.field.loc.type'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'barcode',
+            headerName: translate('table.field.loc.barcode'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'useStatus$',
+            headerName: translate('table.field.loc.useStatus') + "*",
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'channel',
+            headerName: translate('table.field.loc.channel'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'row',
+            headerName: translate('table.field.loc.row'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'col',
+            headerName: translate('table.field.loc.col'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        {
+            field: 'lev',
+            headerName: translate('table.field.loc.lev'),
+            minWidth: 100,
+            flex: 1,
+            editable: false,
+        },
+        // {
+        //     field: 'action',
+        //     headerName: '鎿嶄綔',
+        //     width: 140,
+        //     lockPosition: 'left',
+        //     renderCell: (params) => (
+        //         <Tooltip title="Delete">
+        //             <IconButton onClick={() => handleDelete(params.row)}>
+        //                 <Delete />
+        //             </IconButton>
+        //             <IconButton onClick={() => handleDelete(params.row)}>
+        //                 <Save />
+        //             </IconButton>
+        //         </Tooltip>
+        //     ),
+        // }
     ])
-
-    const action = {
-        field: 'action',
-        headerName: '鎿嶄綔',
-        width: 140,
-        lockPosition: 'left',
-        renderCell: (params) => (
-            <Tooltip title="Delete">
-                <IconButton onClick={() => handleDelete(params.row)}>
-                    <Delete />
-                </IconButton>
-                <IconButton onClick={() => handleDelete(params.row)}>
-                    <Save />
-                </IconButton>
-            </Tooltip>
-        ),
-    }
 
 
     const handleSelectionChange = (ids) => {
         setSelectedRows(ids)
     };
-
-    useEffect(() => {
-        if (dyFields.length < 1) {
-            getDynamicFields();
-        }
-    }, []);
-
-    const getDynamicFields = async () => {
-        const {
-            data: { code, data, msg },
-        } = await request.get("/fields/enable/list");
-        if (code === 200) {
-            const cols = data.map(el => ({
-                field: el.fields,
-                headerName: el.fieldsAlise,
-                minWidth: 100,
-                flex: 1,
-                editable: el.unique,
-                valueGetter: (value, row) => {
-                    return row.extendFields?.[el.fields] || '';
-                },
-            }))
-            setDyFields(data)
-            setColumns([...columns, ...cols, action])
-        } else {
-            notify(msg);
-        }
-    }
 
     return (
         <div style={{ width: '100%' }}>

--
Gitblit v1.9.1