From 5817004ce9f72d75016be7a95bf7f5057af081ec Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 26 九月 2025 13:34:32 +0800
Subject: [PATCH] 跑库功能优化

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

diff --git a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
index 1d66d19..4052be8 100644
--- a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
@@ -16,19 +16,12 @@
 } 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, useGetOne } 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': {
@@ -37,79 +30,75 @@
     '& .RaDatagrid-row': {
         cursor: 'auto'
     },
-    '& .column-name': {
-    },
     '& .opt': {
         width: 180
     },
 }));
 
-
-
 const SelectLocsRevise = (props) => {
-    const { open, setOpen, data, setData } = props;
-    const translate = useTranslate();
-    const refresh = useRefresh();
-    const notify = useNotify();
-
+    const { open, setOpen, locRevise } = props;
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
             setOpen(false);
         }
     };
-
     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
-        })
-    }
-
     const handleSubmit = () => {
-        const hasarr = data.map(el => +el.matnrId)
-        const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id)));
+        const selectedData = tableData.filter(item => selectedRows.includes(item.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,
+                locCode: 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]);
-        setOpen(false);
-        reset();
+        }));
+
+        saveReviseLog(value);
     };
 
-    const filters = [
-        <SearchInput source="condition" alwaysOn />,
-    ]
+    const saveReviseLog = async (values) => {
+        const parmas = {
+            reviseId: locRevise,
+            items: values,
+        }
+        const res = await request.post(`/reviseLog/items/save`, parmas);
+        if (res?.data?.code === 200) {
+            setOpen(false);
+            refresh()
+        } else {
+            notify(res.data.msg);
+        }
+    }
 
     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,
@@ -118,12 +107,10 @@
         if (res?.data?.code === 200) {
             setTableData(res.data.data.records);
             setRowCount(res.data?.data?.total);
-
         } else {
             notify(res.data.msg);
         }
         setIsLoading(false)
-
     };
 
     useEffect(() => {
@@ -193,14 +180,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 +195,10 @@
                         <AsnWareModalTable
                             tableData={tableData}
                             setTableData={setTableData}
-                            dyFields={dyFields}
                             page={page}
                             rowCount={rowCount}
                             setPage={setPage}
                             isLoading={isLoading}
-                            setDyFields={setDyFields}
                             selectedRows={selectedRows}
                             setSelectedRows={setSelectedRows}
                         />
@@ -233,69 +218,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