From e918d4fa4f5065b51be706f21da6793c378c9aaf Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 16 八月 2025 17:05:05 +0800
Subject: [PATCH] 接口文档修改

---
 rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx |  356 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 208 insertions(+), 148 deletions(-)

diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx
index 36f977a..efc0ff6 100644
--- a/rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx
@@ -5,21 +5,36 @@
     DateInput,
     ReferenceInput,
     AutocompleteInput,
+    SelectColumnsButton,
+    DatagridConfigurable,
     Toolbar,
     required,
     useNotify,
     DeleteButton,
+    BooleanField,
+    EditButton,
+    WrapperField,
     SaveButton,
     SimpleForm,
+    NumberField,
     useRefresh,
+    TextField,
+    DateField,
     CreateBase,
+    TopToolbar,
+    FilterButton,
+    ReferenceField,
+    SearchInput,
+    List,
+    Create,
+    useGetOne,
+    useRecordContext,
 } from 'react-admin';
 import {
     Dialog,
     DialogActions,
     DialogContent,
     DialogTitle,
-    TextField,
     IconButton,
     MenuItem,
     Tooltip,
@@ -27,8 +42,11 @@
     Button,
     Stack,
     Grid,
+    Card,
     Box,
+    CardContent,
 } from '@mui/material';
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 import ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber';
 import DialogCloseButton from "../../components/DialogCloseButton.jsx";
 import WarehouseSelect from "../../components/WarehouseSelect.jsx";
@@ -36,19 +54,28 @@
 import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
 import ConfirmButton from "../../components/ConfirmButton";
 import { Add, Edit, Delete } from '@mui/icons-material';
+import SelectLocsRevise from "./SelectLocsRevise.jsx";
 import DictSelect from "../../components/DictSelect";
 import SaveIcon from '@mui/icons-material/Save';
 import { styled } from '@mui/material/styles';
+import { redirect } from "react-router";
 import request from '@/utils/request';
 import _, { set } from 'lodash';
 
-const StyledSimpleForm = styled(SimpleForm)(({ theme }) => ({
-    '& .MuiToolbar-root-RaToolbar-root': {
-        '& .RaToolbar-defaultToolbar': {
-            justifyContent: 'flex-end',
-        }
-    }
 
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+    '& .css-1vooibu-MuiSvgIcon-root': {
+        height: '.9em'
+    },
+    '& .RaDatagrid-row': {
+        cursor: 'auto'
+    },
+    '& .column-name': {
+    },
+    '& .opt': {
+        width: 200
+    },
 }));
 
 
@@ -59,53 +86,55 @@
     const refresh = useRefresh();
     const translate = useTranslate();
     const [tabelData, setTableData] = useState([]);
+    const [locRevise, setLocRevise] = useState();
     const [disabled, setDisabled] = useState(false);
+    const [isVisible, setIsVisible] = useState("none");
     const [selectedRows, setSelectedRows] = useState([]);
     const [createDialog, setCreateDialog] = useState(false);
     const [formData, setFormData] = useState({ type: '0', orgAreaId: null, tarAreaId: null, exceTime: null, code: null });
     const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_revise_type')) || [];
 
-    const setFinally = () => {
-        const rows = tableRef.current.state.editRows;
-        for (const key in rows) {
-            const find = tabelData.find(item => item.matnrId === +key);
-            find.anfme = rows[key].anfme.value;
-        }
-        setTableData([...tabelData]);
+
+    const FormToolbar = () => {
+        return (
+            <Toolbar sx={{ justifyContent: 'flex-end' }}>
+                <SaveButton disabled={disabled} />
+                <DeleteButton mutationMode="optimistic" />
+            </Toolbar>
+        )
     }
+    // const handleSubmit = async () => {
+    //     setFinally()
+    //     setDisabled(true)
 
-    const handleSubmit = async () => {
-        setFinally()
-        setDisabled(true)
+    //     if (orderId == null || orderId == undefined) {
+    //         const parmas = {
+    //             "revise": formData,
+    //             "items": tabelData,
+    //         }
 
-        if (orderId == null || orderId == undefined) {
-            const parmas = {
-                "revise": formData,
-                "items": tabelData,
-            }
+    //         const res = await request.post(`/transfer/items/save`, parmas);
+    //         if (res?.data?.code === 200) {
+    //             setOpen(false);
+    //         } else {
+    //             notify(res.data.msg);
+    //         }
+    //     } else {
+    //         const parmas = {
+    //             "transfer": formData,
+    //             "items": tabelData,
+    //         }
+    //         const res = await request.post(`/transfer/items/update`, parmas);
+    //         if (res?.data?.code === 200) {
+    //             setOpen(false);
+    //         } else {
+    //             notify(res.data.msg);
+    //         }
+    //     }
+    //     setDisabled(false)
+    //     refresh();
 
-            const res = await request.post(`/transfer/items/save`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-            } else {
-                notify(res.data.msg);
-            }
-        } else {
-            const parmas = {
-                "transfer": formData,
-                "items": tabelData,
-            }
-            const res = await request.post(`/transfer/items/update`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-            } else {
-                notify(res.data.msg);
-            }
-        }
-        setDisabled(false)
-        refresh();
-
-    };
+    // };
 
     const handleDeleteItem = () => {
         const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId));
@@ -113,46 +142,32 @@
     }
 
     const newAddClick = () => {
-        if (formData.areaId == null || formData.areaId == undefined) {
-            notify("搴撳尯涓嶈兘涓虹┖锛侊紒", { type: 'error' })
-            return
-        }
         setCreateDialog(true)
     }
 
     const mutationOptions = {
-        onSuccess: (data) => {
-            notify(`鏂囩珷 "${data.title}" 鍒涘缓鎴愬姛`, { type: 'success' });
+        onSuccess: (id) => {
+            setIsVisible("block")
+            setDisabled(true)
+            setLocRevise(id)
+            refresh()
         },
-        onError: (error) => {
-            notify(`鍒涘缓澶辫触: ${error.message}`, { type: 'error' });
-        }
-    };
-
-    const handleChange = (value, name) => {
-        setFormData((prevData) => ({
-            ...prevData,
-            [name]: value
-        }));
     };
 
     return (
         <>
             <Box sx={{ padding: 1 }}>
-                <CreateBase resource="locRevise" mutationOptions={mutationOptions} >
-                    <SimpleForm >
+                <Create
+                    resource="locRevise"
+                    title={false}
+                    // mutationOptions={mutationOptions}
+                     >
+                    <SimpleForm toolbar={<FormToolbar />}>
                         <Grid container spacing={2} sx={{
                             '& .MuiToolbar-root-RaToolbar-root.RaToolbar-defaultToolbar': {
                                 justifyContent: 'flex-end',
                             }
                         }}>
-                            <Grid item md={2}>
-                                <TextInput
-                                    source="code"
-                                    label={translate("table.field.locRevise.code")}
-                                    readOnly
-                                />
-                            </Grid>
                             <Grid item md={2}>
                                 <AutocompleteInput
                                     choices={dicts}
@@ -160,6 +175,7 @@
                                     optionValue="value"
                                     defaultValue="1"
                                     source="type"
+                                    parse={v => v}
                                     label={translate("table.field.transfer.type")}
                                 />
                             </Grid>
@@ -168,6 +184,7 @@
                                     <AutocompleteInput
                                         optionText='name'
                                         optionValue="id"
+                                        parse={v => v}
                                         label={translate("table.field.locRevise.areaName")}
                                     />
                                 </ReferenceInput>
@@ -175,44 +192,87 @@
                             <Grid item md={2}>
                                 <DateInput
                                     source="exceTime"
+                                    parse={v => v}
                                     label="table.field.locRevise.exceTime"
                                 />
                             </Grid>
                         </Grid>
                     </SimpleForm>
-                </CreateBase>
-                <Box sx={{ mt: 2 }}>
-                    <Stack direction="row" spacing={2} sx={{ justifyContent: "flex-end" }}>
-                        <Button variant="contained" onClick={newAddClick} >
-                            {translate('common.action.newAddMats')}
-                        </Button>
-                        <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} />
-                    </Stack>
+                </Create>
+                <Box sx={{ display: isVisible }}>
+                    <Card sx={{ height: 630 }}>
+                        <Box>
+                            <Box sx={{ mt: 2 }}>
+                                <Stack direction="row" spacing={2} sx={{ justifyContent: "flex-start" }}>
+                                    <Button variant="contained" onClick={newAddClick} >
+                                        {translate('common.action.newAddMats')}
+                                    </Button>
+                                    <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} />
+                                </Stack>
+                            </Box>
+                            <Box sx={{ mt: 2 }}>
+                                <List
+                                    sx={{
+                                        flexGrow: 1,
+                                        transition: (theme) =>
+                                            theme.transitions.create(['all'], {
+                                                duration: theme.transitions.duration.enteringScreen,
+                                            }),
+                                    }}
+                                    resource="reviseLog"
+                                    title={"menu.reviseLog"}
+                                    empty={false}
+                                    filters={false}
+                                    sort={{ field: "create_time", order: "desc" }}
+                                    actions={false}
+                                    perPage={DEFAULT_PAGE_SIZE}
+                                >
+                                    <StyledDatagrid
+                                        preferenceKey='reviseLog'
+                                        bulkActionButtons={false}
+                                        rowClick={(id, resource, record) => false}
+                                        expand={false}
+                                        expandSingle={true}
+                                        omit={['id', 'reviseId', 'createTime', 'createBy', 'memo']}
+                                    >
+                                        <NumberField source="id" />
+                                        <NumberField source="reviseId" label="table.field.reviseLog.reviseId" />
+                                        <TextField source="reviseCode" label="table.field.reviseLog.reviseCode" />
+                                        <NumberField source="warehouseId" label="table.field.loc.warehouseId" />
+                                        <NumberField source="areaId" label="table.field.loc.areaId" />
+                                        <NumberField source="type" label="table.field.loc.type" />
+                                        <TextField source="barcode" label="table.field.loc.barcode" />
+                                        <TextField source="useStatus" label="table.field.loc.useStatus" />
+                                        <NumberField source="channel" label="table.field.loc.channel" />
+                                        <NumberField source="row" label="table.field.loc.row" />
+                                        <NumberField source="col" label="table.field.loc.col" />
+                                        <NumberField source="lev" label="table.field.loc.lev" />
+                                        <TextField source="updateBy$" label="common.field.updateBy" />
+                                        <DateField source="updateTime" label="common.field.updateTime" showTime />
+                                        <TextField source="createBy$" label="common.field.createBy" />
+                                        <DateField source="createTime" label="common.field.createTime" showTime />
+                                        <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+                                        <TextField source="memo" label="common.field.memo" sortable={false} />
+                                        <WrapperField cellClassName="opt" label="common.field.opt">
+                                            <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+                                            <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+                                        </WrapperField>
+                                    </StyledDatagrid>
+                                </List>
+                            </Box>
+                        </Box>
+                    </Card>
                 </Box>
-                <Box sx={{ mt: 2 }}>
-                    <TransferTableView
-                        tabelData={tabelData}
-                        setTableData={setTableData}
-                        orderId={orderId}
-                        selectedRows={selectedRows}
-                        setSelectedRows={setSelectedRows}
-                        tableRef={tableRef}>
-                    </TransferTableView>
-                </Box>
-                <Toolbar sx={{ width: '100%', justifyContent: 'flex-start', bgcolor: 'white' }}  >
-                    <Button disabled={disabled} onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}>
-                        {translate('toolbar.confirm')}
-                    </Button>
-                </Toolbar>
-                {/* <CreateBySelectMats
+                <SelectLocsRevise
                     data={tabelData}
                     queryForm={formData}
+                    locRevise={locRevise}
                     open={createDialog}
                     setOpen={setCreateDialog}
                     selectedRows={selectedRows}
                     setSelectedRows={setSelectedRows}
                     setData={setTableData}
-                /> */}
+                />
             </Box>
         </>
     )
@@ -332,20 +392,20 @@
     const notify = useNotify();
     const [columns, setColumns] = useState([
         {
-            field: 'maktx',
-            headerName: translate('table.field.outStockItem.maktx'),
-            width: 250,
+            field: 'code',
+            headerName: translate('table.field.locItem.locCode'),
+            width: 100,
             editable: false,
         },
         {
-            field: 'matnrCode',
-            headerName: translate('table.field.outStockItem.matnrCode'),
+            field: 'areaId',
+            headerName: translate('table.field.loc.areaId'),
             width: 130,
             editable: false,
         },
         {
-            field: 'anfme',
-            headerName: translate('table.field.outStockItem.anfme'),
+            field: 'type',
+            headerName: translate('table.field.loc.type'),
             type: 'number',
             minWidth: 100,
             flex: 1,
@@ -353,8 +413,8 @@
             valueFormatter: (val) => val < 0 ? 0 : val,
         },
         {
-            field: 'splrCode',
-            headerName: translate('table.field.outStockItem.splrCode'),
+            field: 'warehouseId',
+            headerName: translate('table.field.loc.warehouseId'),
             minWidth: 100,
             flex: 1,
             editable: true,
@@ -363,8 +423,8 @@
             ),
         },
         {
-            field: 'splrName',
-            headerName: translate('table.field.outStockItem.splrName') + "*",
+            field: 'useStatus',
+            headerName: translate('table.field.loc.useStatus') + "*",
             minWidth: 100,
             flex: 1,
             editable: true,
@@ -373,18 +433,32 @@
             ),
         },
         {
-            field: 'batch',
-            headerName: translate('table.field.outStockItem.splrBatch'),
+            field: 'channel',
+            headerName: translate('table.field.loc.channel'),
             minWidth: 100,
             flex: 1,
             editable: true,
         },
         {
-            field: 'stockUnit',
-            headerName: translate('table.field.outStockItem.stockUnit'),
+            field: 'row',
+            headerName: translate('table.field.loc.row'),
             minWidth: 100,
             flex: 1,
-            editable: true,
+            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,
         },
     ])
 
@@ -404,49 +478,39 @@
 
     let cdata = useRef([]);
 
-    useEffect(() => {
-        if (extendColumns == undefined || extendColumns.length < 1) {
-            getDynamicFields();
-        }
-    }, []);
+    // useEffect(() => {
+    //     if (extendColumns == undefined || extendColumns.length < 1) {
+    //         getDynamicFields();
+    //     }
+    // }, []);
 
     useEffect(() => {
         cdata.current = tabelData
     }, [tabelData]);
 
 
-    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: false
-            }))
-            setColumns([...columns, ...cols, action])
-            setExtendColumns(cols);
-        } else {
-            notify(msg);
-        }
-    }
-
+    // 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: false
+    //         }))
+    //         setColumns([...columns, ...cols, action])
+    //         setExtendColumns(cols);
+    //     } else {
+    //         notify(msg);
+    //     }
+    // }
 
     const handleDelete = (row) => {
         const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
         setTableData(newData);
-    };
-
-
-    const processRowUpdate = (newRow, oldRow) => {
-        const rows = tabelData.map((r) =>
-            r.matnrId === newRow.matnrId ? { ...newRow } : r
-        )
-        setTableData(rows)
-        return newRow;
     };
 
     const handleSelectionChange = (ids) => {
@@ -454,11 +518,7 @@
     };
 
     tableRef.current = useGridApiRef();
-
     const tableIds = tabelData.map(map => map.id);
-    // setSelectedRows(tableIds);
-    // // console.log(selectedRows);
-
 
     return (
         <Box>
@@ -480,7 +540,7 @@
                 rowSelectionModel={tableIds}
                 onRowSelectionModelChange={handleSelectionChange}
                 sx={{
-                    height: 580,
+                    height: 500,
                     '& .MuiDataGrid-cell input': {
                         border: '1px solid #ccc'
                     },

--
Gitblit v1.9.1