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/MatnrInfoModal.jsx | 95 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 73 insertions(+), 22 deletions(-)
diff --git a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
index 37a571f..e3d652a 100644
--- a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
@@ -10,9 +10,14 @@
Box,
Button,
Paper,
- styled
+ styled,
+ Select,
+ MenuItem,
+ FormControl,
+ InputLabel
} from '@mui/material';
import DialogCloseButton from "../../components/DialogCloseButton";
+import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
import { useTranslate, useNotify, useRefresh } from 'react-admin';
import request from '@/utils/request';
import { DataGrid } from '@mui/x-data-grid';
@@ -31,65 +36,77 @@
}
};
- const [formData, setFormData] = useState({});
+ const [formData, setFormData] = useState({ locUseStatus: 'F' });
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 [isLoading, setIsLoading] = useState(false);
const handleChange = (e) => {
const { name, value } = e.target;
- setFormData(() => ({
+ setFormData((prev) => ({
+ ...prev,
[name]: value
}));
};
const reset = () => {
setFormData({
- name: '',
- code: '',
- groupId: 0
+ name: null,
+ code: null,
+ groupId: null,
+ locUseStatus: 'F'
})
}
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 value = selectedData.map((el => {
+ const hasarr = data.map(el => +el.matnrId);
+ const selectedData = selectedRows
+ .filter((item) => !hasarr.includes(item))
+ .map((id) => tableData.find((row) => row.id === id))
+ .filter(Boolean);
+ const deduped = [...new Map(selectedData.map((s) => [s.id, s])).values()];
+ const value = deduped.map((el, i) => {
const dynamicFields = dyFields.reduce((acc, item) => {
acc[item.fields] = el['extendFields']?.[item.fields] || '';
return acc;
}, {});
return {
+ _rowKey: `new_${Date.now()}_${i}`,
matnrId: el.id,
maktx: el.name,
matnrCode: el.code,
stockUnit: el.stockUnit || '',
purUnit: el.purchaseUnit || '',
...dynamicFields
- }
- }))
+ };
+ });
setData([...data, ...value]);
setOpen(false);
reset();
};
const getData = async () => {
- const res = await request.post(`/matnr/page`, {
+ setIsLoading(true);
+ const res = await request.post(`/outStock/matnr/page`, {
...formData,
- current: 1,
- pageSize: 100,
+ current: page?.page,
+ pageSize: page?.pageSize,
orderBy: "create_time desc"
});
if (res?.data?.code === 200) {
- setTableData(res.data.data.records);
+ setTableData(res.data.data.records || []);
+ setRowCount(res.data?.data?.total ?? 0);
} else {
- notify(res.data.msg);
+ notify(res.data?.msg || '鏌ヨ澶辫触');
}
+ setIsLoading(false);
};
useEffect(() => {
getData();
- }, [open]);
+ }, [open, page]);
const handleSearch = () => {
getData()
@@ -136,7 +153,7 @@
size="small"
/>
</Grid>
- <Grid item md={4}>
+ <Grid item md={3}>
<TreeSelectInput
label="table.field.matnr.groupId"
value={formData.groupId}
@@ -145,6 +162,24 @@
name="groupId"
onChange={handleChange}
/>
+ </Grid>
+ <Grid item md={3}>
+ <FormControl size="small" fullWidth variant="filled">
+ <InputLabel>{translate('table.field.loc.useStatus')}</InputLabel>
+ <Select
+ name="locUseStatus"
+ value={formData.locUseStatus ?? ''}
+ onChange={handleChange}
+ label={translate('table.field.loc.useStatus')}
+ >
+ <MenuItem value="">鍏ㄩ儴</MenuItem>
+ {(JSON.parse(localStorage.getItem('sys_dicts')) || [])
+ .filter((d) => d.dictTypeCode === 'sys_loc_use_stas')
+ .map((d) => (
+ <MenuItem key={d.value} value={d.value}>{d.label}</MenuItem>
+ ))}
+ </Select>
+ </FormControl>
</Grid>
</Grid>
</Box>
@@ -158,6 +193,10 @@
tableData={tableData}
setTableData={setTableData}
dyFields={dyFields}
+ page={page}
+ rowCount={rowCount}
+ setPage={setPage}
+ isLoading={isLoading}
setDyFields={setDyFields}
selectedRows={selectedRows}
setSelectedRows={setSelectedRows}
@@ -177,12 +216,11 @@
export default MatnrInfoModal;
-const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
const translate = useTranslate();
const notify = useNotify();
const [columns, setColumns] = useState([
- // { field: 'id', headerName: 'ID', width: 100 },
{ field: 'name', headerName: translate('table.field.matnr.name'), width: 300 },
{ field: 'code', headerName: translate('table.field.matnr.code'), width: 200 },
{ field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 },
@@ -194,13 +232,15 @@
{ field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
{ field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 },
{ field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 },
+ { field: 'stockQty', headerName: translate('table.field.matnr.stockQty') || '搴撳瓨鏁伴噺', width: 110, type: 'number', valueFormatter: (v) => (v != null ? Number(v) : 0) },
+ { field: 'locUseStatus$', headerName: translate('table.field.loc.useStatus'), width: 120 },
+ { field: 'locCodes$', headerName: translate('table.field.loc.locCode'), width: 180, flex: 1 },
{ field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
])
const handleSelectionChange = (ids) => {
setSelectedRows(ids)
-
};
useEffect(() => {
@@ -241,6 +281,17 @@
disableColumnMenu={true}
disableColumnSorting
disableMultipleColumnsSorting
+ rowCount={rowCount}
+ paginationMode="server"
+ paginationModel={page}
+ onPaginationModelChange={setPage}
+ loading={isLoading}
+ slotProps={{
+ loadingOverlay: {
+ variant: 'linear-progress',
+ noRowsVariant: 'linear-progress',
+ },
+ }}
/>
</div>
);
--
Gitblit v1.9.1