From bb7dd1f513149ecd2887895c807861fdd06a43f6 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 11 二月 2026 15:29:27 +0800
Subject: [PATCH] 展示库存明细
---
rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx | 68 ++++++++++++++++++++++++----------
1 files changed, 48 insertions(+), 20 deletions(-)
diff --git a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
index e51d215..e3d652a 100644
--- a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
@@ -10,7 +10,11 @@
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';
@@ -32,7 +36,7 @@
}
};
- const [formData, setFormData] = useState({});
+ const [formData, setFormData] = useState({ locUseStatus: 'F' });
const [tableData, setTableData] = useState([]);
const [dyFields, setDyFields] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
@@ -41,7 +45,8 @@
const [isLoading, setIsLoading] = useState(false);
const handleChange = (e) => {
const { name, value } = e.target;
- setFormData(() => ({
+ setFormData((prev) => ({
+ ...prev,
[name]: value
}));
};
@@ -50,50 +55,53 @@
setFormData({
name: null,
code: null,
- groupId: 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 () => {
- setIsLoading(true)
- console.log(page);
- const res = await request.post(`/matnr/page`, {
+ setIsLoading(true);
+ const res = await request.post(`/outStock/matnr/page`, {
...formData,
current: page?.page,
pageSize: page?.pageSize,
orderBy: "create_time desc"
});
if (res?.data?.code === 200) {
- setTableData(res.data.data.records);
- setRowCount(res.data?.data?.total);
-
+ setTableData(res.data.data.records || []);
+ setRowCount(res.data?.data?.total ?? 0);
} else {
- notify(res.data.msg);
+ notify(res.data?.msg || '鏌ヨ澶辫触');
}
- setIsLoading(false)
-
+ setIsLoading(false);
};
useEffect(() => {
@@ -145,7 +153,7 @@
size="small"
/>
</Grid>
- <Grid item md={4}>
+ <Grid item md={3}>
<TreeSelectInput
label="table.field.matnr.groupId"
value={formData.groupId}
@@ -154,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>
@@ -195,7 +221,6 @@
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 },
@@ -207,6 +232,9 @@
{ 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 },
])
--
Gitblit v1.9.1