From 4c66319211f9f7e496dfc32718dbd7aefed4ca88 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 12 三月 2026 10:46:47 +0800
Subject: [PATCH] 任务管理完结、取消按钮
---
rsf-admin/src/page/orders/check/MatnrInfoModal.jsx | 139 ++++++++++++++++++++++-----------------------
1 files changed, 68 insertions(+), 71 deletions(-)
diff --git a/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
index fa0e5ca..dec6d09 100644
--- a/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
@@ -9,22 +9,18 @@
TextField,
Box,
Button,
- Paper,
- styled
} from '@mui/material';
-import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import { DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import DialogCloseButton from "../../components/DialogCloseButton";
-import { useTranslate, useNotify, useRefresh } from 'react-admin';
+import { useTranslate, useNotify } from 'react-admin';
import request from '@/utils/request';
import { DataGrid } from '@mui/x-data-grid';
import SaveIcon from '@mui/icons-material/Save';
-import TreeSelectInput from "@/page/components/TreeSelectInput";
const MatnrInfoModal = (props) => {
const { open, setOpen, data, setData } = props;
const translate = useTranslate();
const notify = useNotify();
- const refresh = useRefresh();
const handleClose = (event, reason) => {
if (reason !== "backdropClick") {
@@ -41,65 +37,74 @@
const [isLoading, setIsLoading] = useState(false);
const handleChange = (e) => {
const { name, value } = e.target;
- setFormData(() => ({
- [name]: value
- }));
+ setFormData(prev => ({ ...prev, [name]: value }));
};
const reset = () => {
- setFormData({
- name: null,
- code: null,
- groupId: null
- })
+ setFormData({})
}
+ // 娣诲姞鐗╂枡锛氫粠鎬诲簱瀛橀�夛紝澶氶�夊悓鐗╂枡鍒欐暟閲忓彔鍔狅紱涓嬪彂浠诲姟鏃跺啀閫夊叿浣撳簱浣�
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 dynamicFields = dyFields.reduce((acc, item) => {
- acc[item.fields] = el['extendFields']?.[item.fields] || '';
- return acc;
- }, {});
- return {
- matnrId: el.id,
- maktx: el.name,
- matnrCode: el.code,
- stockUnit: el.stockUnit || '',
- purUnit: el.purchaseUnit || '',
- ...dynamicFields
+ const hasarr = (data || []).map(el => +el.matnrId);
+ const selectedLocItems = selectedRows
+ .map(id => tableData.find(row => row.id === id))
+ .filter(Boolean)
+ .filter(row => !hasarr.includes(+row.matnrId));
+ const byMatnr = {};
+ selectedLocItems.forEach(el => {
+ const k = el.matnrId;
+ if (!byMatnr[k]) {
+ const dynamicFields = (dyFields || []).reduce((acc, item) => {
+ acc[item.fields] = el.extendFields?.[item.fields] || '';
+ return acc;
+ }, {});
+ byMatnr[k] = {
+ matnrId: el.matnrId,
+ maktx: el.maktx,
+ matnrCode: el.matnrCode,
+ anfme: 0,
+ stockUnit: el.unit || el.stockUnit || '',
+ purUnit: '',
+ splrBatch: el.splrBatch || '',
+ splrCode: el.splrCode ?? '',
+ splrName: el.splrName ?? '',
+ ...dynamicFields
+ };
}
- }))
- setData([...data, ...value]);
+ byMatnr[k].anfme = (byMatnr[k].anfme || 0) + (el.anfme || 0);
+ });
+ const value = Object.values(byMatnr);
+ setData(prev => [...(prev || []), ...value]);
setOpen(false);
reset();
};
- const getData = async () => {
- setIsLoading(true)
- const res = await request.post(`/matnr/page`, {
+ const getData = async (pageNo) => {
+ setIsLoading(true);
+ const currentPage = pageNo !== undefined ? pageNo : page?.page;
+ const res = await request.post(`/locItem/useO/page`, {
...formData,
- current: page?.page,
- pageSize: page?.pageSize,
+ current: currentPage,
+ pageSize: page?.pageSize ?? DEFAULT_PAGE_SIZE,
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);
}
- setIsLoading(false)
+ setIsLoading(false);
};
useEffect(() => {
- getData();
+ if (open) getData();
}, [open, page]);
const handleSearch = () => {
- getData()
+ setPage(p => ({ ...p, page: 1 }));
+ getData(1);
};
return (
@@ -125,32 +130,31 @@
<DialogContent sx={{ mt: 2 }}>
<Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
<Grid container spacing={2}>
- <Grid item md={4}>
+ <Grid item md={2}>
<TextField
- label={translate('table.field.matnr.name')}
- name="name"
- value={formData.name}
+ label={translate('table.field.locItem.locCode')}
+ name="locCode"
+ value={formData.locCode ?? ''}
onChange={handleChange}
size="small"
/>
</Grid>
- <Grid item md={4}>
+ <Grid item md={2}>
<TextField
- label={translate('table.field.matnr.code')}
- name="code"
- value={formData.code}
+ label={translate('table.field.locItem.maktx')}
+ name="maktx"
+ value={formData.maktx ?? ''}
onChange={handleChange}
size="small"
/>
</Grid>
- <Grid item md={4}>
- <TreeSelectInput
- label="table.field.matnr.groupId"
- value={formData.groupId}
- resource={'matnrGroup'}
- source="groupId"
- name="groupId"
+ <Grid item md={2}>
+ <TextField
+ label={translate('table.field.locItem.matnrCode')}
+ name="matnrCode"
+ value={formData.matnrCode ?? ''}
onChange={handleChange}
+ size="small"
/>
</Grid>
</Grid>
@@ -163,7 +167,6 @@
<Box sx={{ mt: 2, height: 400, width: '100%' }}>
<AsnWareModalTable
tableData={tableData}
- setTableData={setTableData}
dyFields={dyFields}
setDyFields={setDyFields}
page={page}
@@ -188,24 +191,17 @@
export default MatnrInfoModal;
-const AsnWareModalTable = ({ tableData, page, isLoading, pageSize, setPage, rowCount, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, page, isLoading, 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 },
- { field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 },
- { field: 'model', headerName: translate('table.field.matnr.model'), width: 100 },
- { field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 },
- { field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 },
- { field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 },
- { 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: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
+ { field: 'locCode', headerName: translate('table.field.locItem.locCode'), width: 100 },
+ { field: 'matnrCode', headerName: translate('table.field.locItem.matnrCode'), width: 130 },
+ { field: 'maktx', headerName: translate('table.field.locItem.maktx'), width: 250 },
+ { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 },
+ { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100, type: 'number' },
+ { field: 'unit', headerName: translate('table.field.locItem.unit'), width: 80 },
])
@@ -246,6 +242,7 @@
size="small"
rows={tableData}
columns={columns}
+ getRowId={(row) => row.id}
checkboxSelection
onRowSelectionModelChange={handleSelectionChange}
selectionModel={selectedRows}
--
Gitblit v1.9.1