From 8708598a8e75c36dcdd446c634e11bbeaf48ddab Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 07 八月 2025 10:38:50 +0800 Subject: [PATCH] 库存调整功能优化 --- rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx | 98 +++++++++++++++++++++--------------------------- 1 files changed, 43 insertions(+), 55 deletions(-) diff --git a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx index 04602df..ee0a8fa 100644 --- a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx @@ -19,6 +19,7 @@ import { useTranslate, useNotify, useRefresh, DatagridConfigurable, useGetOne } from 'react-admin'; import DialogCloseButton from "../../components/DialogCloseButton"; import { Add, Edit, Delete, Save } from '@mui/icons-material'; +import QueryStatsIcon from '@mui/icons-material/QueryStats'; import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; import SelectMatnrInfo from "./SelectMatnrInfo"; import SaveIcon from '@mui/icons-material/Save'; @@ -44,28 +45,19 @@ } }; - const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_revise_type')) || []; const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE }); - const [formData, setFormData] = useState({ locCode: record?.locCode }); const [selectedRows, setSelectedRows] = useState([]); const [isLoading, setIsLoading] = useState(false); const [tableData, setTableData] = useState([]); const [openMatnr, setOpenMatnr] = useState(); const [dyFields, setDyFields] = useState([]); const [rowCount, setRowCount] = useState(0); + const [formData, setFormData] = useState({ matnrCode: null }); const translate = useTranslate(); const refresh = useRefresh(); const notify = useNotify(); const tableRef = useRef() - - const handleChange = (e) => { - const { name, value } = e.target; - setFormData(() => ({ - ...formData, - [name]: value - })); - }; const handleSubmit = () => { const rows = tableRef.current.getSelectedRows(); @@ -80,6 +72,7 @@ batch: el.batch, anfme: el.anfme, reviseQty: el.reviseQty, + filedsIndex: el.filedsIndex, spec: el.spec, model: el.model, unit: el.unit, @@ -94,7 +87,6 @@ reviseLogId: record?.id, items: values, } - console.log(values); const res = await request.post(`/reviseLogItem/items/save`, parmas); if (res?.data?.code === 200) { @@ -105,12 +97,11 @@ } } - const getData = async () => { + const getData = async (matnr) => { setIsLoading(true) - console.log(formData); - - const res = await request.post(`/locItem/page`, { + const res = await request.post(`/reviseLogItem/page`, { locCode: record?.locCode, + matnrCode: matnr, current: page?.page, pageSize: page?.pageSize, orderBy: "create_time desc" @@ -125,12 +116,24 @@ }; useEffect(() => { - getData(); + if (record != null || record != undefined) { + getData() + } }, [open, page]); const handleSearch = () => { - // getData() + getData(formData.matnrCode) + }; + + const handleAdd = () => { setOpenMatnr(true) + }; + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData(() => ({ + [name]: value + })); }; return ( @@ -155,43 +158,27 @@ </Box> </DialogTitle> <DialogContent sx={{ mt: 2 }}> - {/* <Box> - <List - sx={{ - flexGrow: 1, - marginRight: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - }} - resource="loc" - title={"menu.loc"} - empty={false} - filter={{ useStatus: 'F' }} - filters={filters} - sort={{ field: "'row'" }} - actions={false} - perPage={DEFAULT_PAGE_SIZE} - aside={false} - > - <StyledDatagrid - preferenceKey='loc' - align="left" - bulkActionButtons={false} - rowClick={() => false} - omit={['id', 'areaId', 'type', 'barcode']} - > - <NumberField source="id" /> - <TextField source="code" label="table.field.locItem.locCode" /> - </StyledDatagrid> - </List> - </Box> */} <Box> - <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3, justifyContent: 'flex-end' }}> - <Grid item md={12} sx={{ justifyContent: 'flex-end', display: 'flex' }}> - <Button variant="text" onClick={handleSearch}>{translate("page.whMat.title.add")}</Button> + <Box sx={{ display: 'flex', justifyContent: 'space-between' }}> + <Grid container spacing={2}> + <Grid item md={3}> + <TextField + label={translate('table.field.matnr.code')} + name="matnrCode" + value={formData.matnrCode} + onChange={handleChange} + size="small" + /> + </Grid> + <Grid item md={3} sx={{ display: "flex", margin: 1 }}> + <Button variant="contained" onClick={handleSearch} startIcon={<QueryStatsIcon />}>{translate("toolbar.query")}</Button> + </Grid> </Grid> + <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, justifyContent: 'flex-end' }}> + <Grid item md={8} sx={{ justifyContent: 'flex-end', display: 'flex' }}> + <Button variant="text" onClick={handleAdd}>{translate("page.whMat.title.add")}</Button> + </Grid> + </Box> </Box> <Box sx={{ mt: 2, height: 600, width: '100%' }}> <SelectReviseMatnr @@ -226,9 +213,9 @@ export default LocsReviseDetl; const SelectReviseMatnr = ({ tableData, setTableData, page, isLoading, setPage, rowCount, selectedRows, setSelectedRows, tableRef, setDyFields, dyFields }) => { + const [dynamicFields, setDynamicFields] = useState([]); const translate = useTranslate(); const notify = useNotify(); - const [dynamicFields, setDynamicFields] = useState([]); const [columns, setColumns] = useState([ { field: 'matnrCode', @@ -259,7 +246,7 @@ }, { field: 'reviseQty', - headerName: translate('table.field.locItem.outQty') + "*", + headerName: translate('table.field.locItem.reviseQty') + "*", minWidth: 100, type: 'number', flex: 1, @@ -303,7 +290,8 @@ } const handleDelete = (rows) => { - const tableRows = tableData.filter(item => item.matnrCode != rows.matnrCode); + let selectRow = tableRef.current.getSortedRows(); + const tableRows = selectRow.filter(item => item.id != rows.id); setTableData(tableRows); } -- Gitblit v1.9.1