From 4e598442cb2935463762ee143e103c02d14f55d9 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 21 四月 2025 11:43:22 +0800 Subject: [PATCH] #优化asn单编辑页面 --- rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx | 153 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 141 insertions(+), 12 deletions(-) diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx index 4c89a10..6c2dc38 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx @@ -39,7 +39,9 @@ TableCell, Tooltip, IconButton, - styled + styled, + Select, + MenuItem } from '@mui/material'; @@ -55,6 +57,7 @@ import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; import DictionarySelect from "../../components/DictionarySelect"; import DictSelect from "../../components/DictSelect"; +import "./asnOrder.css"; const AsnOrderModal = (props) => { const { open, setOpen, asnId, billReload } = props; @@ -101,6 +104,7 @@ ...prevData, [name]: value })); + console.log(formData); }; const resetData = () => { @@ -178,7 +182,7 @@ setFormData(res.data.data) } else { notify(res.data.msg); - } + } } const requestGetBody = async () => { @@ -200,7 +204,7 @@ } return ( - <> + <> <Dialog open={open} onClose={handleClose} @@ -209,7 +213,7 @@ fullWidth disableRestoreFocus maxWidth="lg" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' - > + > <DialogTitle id="form-dialog-title" sx={{ position: 'sticky', top: 0, @@ -223,7 +227,7 @@ </DialogTitle> <DialogContent sx={{ mt: 2 }}> <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> - <Form> + <Form defaultValues={formData}> <Grid container spacing={2}> <Grid item md={3}> <DictSelect @@ -282,9 +286,7 @@ {/* {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} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable> </Box> @@ -311,6 +313,123 @@ export default AsnOrderModal; +const SelectInputSplrNameEditCell = (params) => { + const [formData, setFormData] = useState([{}]) + useEffect(() => { + getOptions(); + }, []); + const getOptions = async () => { + const parmas = { + "type": "supplier" + } + const { + data: { code, data, msg }, + } = await request.post("companys/page",parmas); + if (code === 200) { + setFormData(data.records) + console.log(data.records) + } else { + notify(msg); + } + } + + return ( + <Select + value={params.value} + onChange={(e) =>{ + params.api.setEditCellValue({ + id: params.id, + field: params.field, + value: e.target.value, + }) + // 鎵惧埌閫変腑鐨勪緵搴斿晢璁板綍 + const selectedSupplier = formData.find(supplier => supplier.name === e.target.value); + + // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁 + if (selectedSupplier) { + params.api.setEditCellValue({ + id: params.id, + field: 'splrCode', + value: selectedSupplier.id, + }); + } + + } + + } + fullWidth + + > + {formData.map(e => { + return( + <MenuItem value={e.name} children={e.name} key={e.id} /> + ); + + })} + + </Select> + ); + }; + + const SelectInputSplrCodeEditCell = (params) => { + const [formData, setFormData] = useState([{}]) + useEffect(() => { + getOptions(); + }, []); + const getOptions = async () => { + const parmas = { + "type": "supplier" + } + const { + data: { code, data, msg }, + } = await request.post("companys/page",parmas); + if (code === 200) { + setFormData(data.records) + console.log(data.records) + } else { + notify(msg); + } + } + + return ( + <Select + value={params.value} + onChange={(e) =>{ + params.api.setEditCellValue({ + id: params.id, + field: params.field, + value: e.target.value, + }) + const selectedSupplier = formData.find(supplier => supplier.id === e.target.value); + + // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁 + if (selectedSupplier) { + params.api.setEditCellValue({ + id: params.id, + field: 'splrName', + value: selectedSupplier.name, + }); + } + } + + } + fullWidth + + > + {formData.map(e => { + return( + <MenuItem value={e.id} children={e.name} key={e.id} /> + ); + + })} + + </Select> + ); + }; + + + + const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => { const translate = useTranslate(); const notify = useNotify(); @@ -331,26 +450,35 @@ }, { field: 'anfme', - headerName: translate('table.field.asnOrderItem.anfme'), + headerName: translate('table.field.asnOrderItem.anfme')+"*", type: 'number', minWidth: 100, flex: 1, editable: true, - valueFormatter: (val) => val < 0 ? 0 : val + valueFormatter: (val) => val < 0 ? 0 : val, + headerClassName: "custom", }, { field: 'splrCode', - headerName: translate('table.field.asnOrderItem.splrCode'), + headerName: translate('table.field.asnOrderItem.splrCode')+"*", minWidth: 100, flex: 1, editable: true, + renderEditCell: (params) => ( + <SelectInputSplrCodeEditCell {...params} /> + ), + headerClassName: "custom", }, { field: 'splrName', - headerName: translate('table.field.asnOrderItem.splrName'), + headerName: translate('table.field.asnOrderItem.splrName')+"*", minWidth: 100, flex: 1, editable: true, + renderEditCell: (params) => ( + <SelectInputSplrNameEditCell {...params} /> + ), + headerClassName: "custom", }, // { // field: 'packName', @@ -367,10 +495,11 @@ // }, { field: 'poCode', - headerName: translate('table.field.asnOrderItem.poDetlCode'), + headerName: translate('table.field.asnOrderItem.poDetlCode')+"*", minWidth: 100, flex: 1, editable: true, + headerClassName: "custom", }, { -- Gitblit v1.9.1