From e427f61669e3d7adae588dd5c0d3d349dfccea58 Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期日, 30 三月 2025 14:53:08 +0800 Subject: [PATCH] feat:收货单修改 --- rsf-admin/src/page/components/TreeSelectInput.jsx | 4 +- rsf-admin/src/page/asnOrder/AsnWareModal.jsx | 25 ++++++------ rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 68 ++++++++++++++++++++++++---------- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index cce1a27..e75c230 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -156,6 +156,13 @@ } } + const [selectedRows, setSelectedRows] = useState([]); + + const handleDeleteItem = () => { + const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId)); + setTableData(newTableData); + } + return ( <> <Dialog @@ -182,7 +189,7 @@ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> <Form> <Grid container spacing={2}> - <Grid item xs={4}> + <Grid item md={4}> <DictSelect label={translate("table.field.asnOrder.type")} value={formData.type} @@ -194,7 +201,7 @@ </Grid> - <Grid item xs={4}> + <Grid item md={4}> <DictSelect label={translate("table.field.asnOrder.wkType")} value={formData.wkType} @@ -210,13 +217,14 @@ <Box sx={{ mt: 2 }}> <Stack direction="row" spacing={2}> <Button variant="contained" onClick={() => setCreateDialog(true)}>鏂板鐗╂枡</Button> - {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} + {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */} + <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} /> </Stack> </Box> <Box sx={{ mt: 2 }}> - <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} ></AsnOrderModalTable> + <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} ></AsnOrderModalTable> </Box> </DialogContent> <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> @@ -241,25 +249,12 @@ export default AsnOrderModal; -const AsnOrderModalTable = ({ tabelData, setTableData, asnId }) => { +const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows }) => { const translate = useTranslate(); const notify = useNotify(); const [columns, setColumns] = useState([ - { - field: 'action', - headerName: '鎿嶄綔', - width: 70, - lockPosition: 'left', - renderCell: (params) => ( - <Tooltip title="Delete"> - <IconButton onClick={() => handleDelete(params.row)}> - <Delete /> - </IconButton> - </Tooltip> - ), - }, { field: 'matnrId', headerName: translate('table.field.asnOrderItem.matnrId'), @@ -343,7 +338,23 @@ editable: true, }, + ]) + + const action = { + field: 'action', + headerName: '鎿嶄綔', + width: 70, + lockPosition: 'left', + renderCell: (params) => ( + <Tooltip title="Delete"> + <IconButton onClick={() => handleDelete(params.row)}> + <Delete /> + </IconButton> + </Tooltip> + ), + + } let cdata = useRef([]); @@ -367,9 +378,9 @@ headerName: el.fieldsAlise, minWidth: 100, flex: 1, - editable: el.unique + editable: true })) - setColumns([...columns, ...cols]) + setColumns([...columns, ...cols, action]) } else { notify(msg); } @@ -394,6 +405,14 @@ }; + + const handleSelectionChange = (ids) => { + setSelectedRows(ids) + + }; + + + return ( <div style={{ height: 400, width: '100%' }}> <DataGrid @@ -407,6 +426,15 @@ disableMultipleColumnsSorting processRowUpdate={processRowUpdate} autoPageSize + editMode="row" + checkboxSelection + onRowSelectionModelChange={handleSelectionChange} + selectionModel={selectedRows} + sx={{ + '& .MuiDataGrid-cell input': { + border: '1px solid #ccc' + }, + }} /> </div> ); diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx index 63b4c63..d4591f8 100644 --- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx @@ -18,7 +18,7 @@ import request from '@/utils/request'; import { DataGrid } from '@mui/x-data-grid'; import SaveIcon from '@mui/icons-material/Save'; -import { use } from "react"; +import TreeSelectInput from "@/page/components/TreeSelectInput"; const AsnWareModal = (props) => { const { open, setOpen, data, setData } = props; @@ -125,34 +125,32 @@ <DialogContent sx={{ mt: 2 }}> <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> <Grid container spacing={2}> - <Grid item xs={4}> + <Grid item md={4}> <TextField label={translate('table.field.matnr.name')} name="name" value={formData.name} onChange={handleChange} - variant="outlined" size="small" /> </Grid> - <Grid item xs={4}> + <Grid item md={4}> <TextField label={translate('table.field.matnr.code')} name="code" value={formData.code} onChange={handleChange} - variant="outlined" size="small" /> </Grid> - <Grid item xs={4}> - <TextField - label={translate('table.field.matnr.groupId')} - name="groupId" + <Grid item md={4}> + <TreeSelectInput + label="table.field.matnr.groupId" value={formData.groupId} + resource={'matnrGroup'} + source="groupId" + name="groupId" onChange={handleChange} - variant="outlined" - size="small" /> </Grid> </Grid> @@ -191,9 +189,10 @@ const notify = useNotify(); const [columns, setColumns] = useState([ - { field: 'id', headerName: 'ID', width: 100 }, - { field: 'name', headerName: translate('table.field.matnr.name'), width: 100 }, + // { 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: 100 }, + { 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 }, diff --git a/rsf-admin/src/page/components/TreeSelectInput.jsx b/rsf-admin/src/page/components/TreeSelectInput.jsx index 2c51cc5..fb5de88 100644 --- a/rsf-admin/src/page/components/TreeSelectInput.jsx +++ b/rsf-admin/src/page/components/TreeSelectInput.jsx @@ -7,7 +7,7 @@ const TreeSelectInput = ({ resource, required, onChange, label, source = 'parentId', value, isTranslate = false, ...rest }) => { const translate = useTranslate(); - const { setValue } = useFormContext(); + const form = useFormContext(); const [filter, setFilter] = React.useState(""); const [treeData, setTreeData] = React.useState([]); @@ -34,7 +34,7 @@ const handleChange = (event) => { const val = event.target.value; setProxyVal(val); - setValue(source, val, { + form?.setValue(source, val, { shouldValidate: true, shouldDirty: true, }); -- Gitblit v1.9.1