From 129882afa114d612b125a8085bfd6e63dee82d54 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 13 六月 2025 14:20:00 +0800
Subject: [PATCH] 出库优化
---
rsf-admin/src/page/orders/outStock/OutStockPublic.jsx | 74 +++++++++++++++++++++++++++---------
1 files changed, 55 insertions(+), 19 deletions(-)
diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
index e63b5a2..60c2172 100644
--- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -69,14 +69,39 @@
const notify = useNotify();
const gridRef = useGridApiRef();
const [rows, setRows] = useState([]);
+ const [fetchRows, setFetchRows] = useState([]);
const translate = useTranslate();
+ const [rowSelectedIds, setRowSelectedIds] = useState([]);
+ const [selectedMatnr, setSelectedMatnr] = useState([]);
const [selectedIds, setSelectedIds] = useState([]);
- const [formData, setFormData] = useState({
- orderId: record?.id,
- waveId: DEFAULT_TYPE
- });
+ const [formData, setFormData] = useState({ orderId: record?.id, waveId: DEFAULT_TYPE });
const [dialog, setDialog] = useState(false);
const [selectedValue, setSelectedValue] = useState({});
+
+ useEffect(() => {
+ if (selectedMatnr.length < 1) {
+ setRows(fetchRows)
+ } else {
+ const mas = fetchRows.filter(item => selectedMatnr.includes(item.matnrCode));
+ setRows(mas)
+ }
+ }, [selectedMatnr])
+
+
+ const handleRowClick = (id, resource, record) => {
+ setRowSelectedIds(prev =>
+ prev.includes(id)
+ ? prev.filter(item => item !== id) // 鍙栨秷閫夋嫨
+ : [...prev, id] // 娣诲姞閫夋嫨
+ );
+
+ //璁剧疆搴撲綅淇℃伅绛涢�夋潯浠�
+ setSelectedMatnr(prev =>
+ prev.includes(record?.matnrCode)
+ ? prev.filter(item => item !== record?.matnrCode) // 鍙栨秷閫夋嫨
+ : [...prev, record?.matnrCode] // 娣诲姞閫夋嫨
+ );
+ };
const handleClickOpen = () => {
setDialog(true);
@@ -85,13 +110,23 @@
const handleClose = (value) => {
setDialog(false);
setSelectedValue(value);
- const newRows = rows.map(item => {
- return selectedIds.includes(item?.id) ? {
- ...item,
- siteNo: value?.site
- } : item
- })
- setRows(newRows);
+ if (selectedIds.length == 0) {
+ const newRows = rows.map(item => {
+ return {
+ ...item,
+ siteNo: value?.site
+ }
+ })
+ setRows(newRows);
+ } else {
+ const newRows = rows.map(item => {
+ return selectedIds.includes(item?.id) ? {
+ ...item,
+ siteNo: value?.site
+ } : item
+ })
+ setRows(newRows);
+ }
};
useEffect(() => {
@@ -107,6 +142,7 @@
const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData });
if (code === 200) {
setRows(data)
+ setFetchRows(data)
} else {
notify(msg);
}
@@ -161,10 +197,12 @@
sx={{ height: "2px", position: 'absolute', top: 0, left: 0, right: 0, }}
/>
<StyledDatagrid
+ storeKey={"outStockPublic"}
preferenceKey='outStockItem'
bulkActionButtons={<></>}
- rowClick={false}
- omit={['id', 'splrName', 'qty', 'poCode', 'workQty']}
+ rowClick={handleRowClick}
+ selectedIds={rowSelectedIds}
+ omit={['id', 'splrName', 'qty', 'poCode',]}
>
<NumberField source="id" />
<TextField source="asnCode" label="table.field.outStockItem.asnCode" />
@@ -181,8 +219,8 @@
</Card>
</Grid>
<Grid item xl={6.3} gap={2}>
- <Card>
- <Box sx={{ height: 500, width: '100%' }}>
+ <Card sx={{ minHeight: 1050, height: 'calc(100% - 10px)', width: '100%' }}>
+ <Box>
<PreviewTable
rows={rows}
gridRef={gridRef}
@@ -223,7 +261,6 @@
}
}, [selectedIds])
-
const baseColumns = [
// { field: 'id', headerName: 'ID', width: 40 },
{ field: 'locCode', headerName: '搴撲綅', width: 110 },
@@ -232,8 +269,7 @@
{ field: 'batch', headerName: '鎵规', width: 90 },
{ field: 'unit', headerName: '鍗曚綅', width: 60 },
{ field: 'outQty', headerName: '鍑哄簱鏁伴噺', width: 110, },
- {
- field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110,
+ { field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110,
renderCell: (params) => (
<OutStockAnfme value={params.value} />
)
@@ -379,6 +415,7 @@
return (
<DataGrid
+ storeKey={"locItemPreview"}
rows={rows}
columns={columns}
slots={{ toolbar: CustomToolBar }}
@@ -393,7 +430,6 @@
/>
)
}
-
//鎻愪氦鎸夐挳
--
Gitblit v1.9.1