|  |  | 
 |  |  | import SaveIcon from '@mui/icons-material/Save'; | 
 |  |  | import request from '@/utils/request'; | 
 |  |  | import { Add, Edit, Delete } from '@mui/icons-material'; | 
 |  |  | import _, { set } from 'lodash'; | 
 |  |  | import { DataGrid, useGridApiRef, GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF, getGridDateOperators, useGridApiContext } from '@mui/x-data-grid'; | 
 |  |  | import { LocalizationProvider, DatePicker, DateTimePicker } from '@mui/x-date-pickers'; | 
 |  |  | import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; | 
 |  |  | 
 |  |  |     const translate = useTranslate(); | 
 |  |  |     const notify = useNotify(); | 
 |  |  |     const refresh = useRefresh(); | 
 |  |  |     const [page, setPage] = useState(0); | 
 |  |  |     const [pageSize, setPageSize] = useState(100); | 
 |  |  |     const [totalRowCount, setTotalRowCount] = useState(0); | 
 |  |  |     const [disabled, setDisabled] = useState(false) | 
 |  |  |     const [loading, setLoading] = useState(false); | 
 |  |  |     const [createDialog, setCreateDialog] = useState(false); | 
 |  |  |     const tableRef = useRef(); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |         if (open && record !== 0) { | 
 |  |  |             requestGetBody() | 
 |  |  |         } | 
 |  |  |         setDisabled(false) | 
 |  |  |     }, [open]) | 
 |  |  |         requestGetBody() | 
 |  |  |         // setDisabled(false) | 
 |  |  |     }, [open, page, pageSize]) | 
 |  |  |  | 
 |  |  |     const handleClose = (event, reason) => { | 
 |  |  |         if (reason !== "backdropClick") { | 
 |  |  | 
 |  |  |     const handleSubmit = async () => { | 
 |  |  |         setFinally() | 
 |  |  |         setDisabled(true) | 
 |  |  |         const parmas = { | 
 |  |  |             "purchaseId": record, | 
 |  |  |             "items": tabelData, | 
 |  |  |         } | 
 |  |  |         const res = await request.post(`/asnOrder/purchases/save`, parmas); | 
 |  |  |         if (res?.data?.code === 200) { | 
 |  |  |             notify(res.data.msg); | 
 |  |  |         } else { | 
 |  |  |             notify(res.data.msg); | 
 |  |  |         } | 
 |  |  |         // const parmas = { | 
 |  |  |         //     "purchaseId": record, | 
 |  |  |         //     "items": tabelData, | 
 |  |  |         // } | 
 |  |  |         // const res = await request.post(`/asnOrder/purchases/save`, parmas); | 
 |  |  |         // if (res?.data?.code === 200) { | 
 |  |  |         //     notify(res.data.msg); | 
 |  |  |         // } else { | 
 |  |  |         //     notify(res.data.msg); | 
 |  |  |         // } | 
 |  |  |         setOpen(false); | 
 |  |  |         refresh(); | 
 |  |  |         resetData() | 
 |  |  | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     const requestGetBody = async () => { | 
 |  |  |         const res = await request.post(`warehouse/stock/page`, { matnrCode: record }); | 
 |  |  |         if (res?.data?.code === 200) { | 
 |  |  |             setTableData(res.data.data.records) | 
 |  |  |         } else { | 
 |  |  |             notify(res.data.msg); | 
 |  |  |         setLoading(true); | 
 |  |  |         try { | 
 |  |  |             const res = await request.post(`warehouse/stock/info`, { page: page + 1, pageSize: pageSize, stock: record, aggType: record?.aggType }); | 
 |  |  |             if (res?.data?.code === 200) { | 
 |  |  |                 setTableData(res.data.data.records) | 
 |  |  |                 setTotalRowCount(res.data.data.total) | 
 |  |  |             } else { | 
 |  |  |                 notify(res.data.msg); | 
 |  |  |             } | 
 |  |  |         } catch (error) { | 
 |  |  |  | 
 |  |  |         } finally { | 
 |  |  |             setLoading(false); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     const [selectedRows, setSelectedRows] = useState([]); | 
 |  |  | 
 |  |  |                 <DialogContent sx={{ mt: 2 }}> | 
 |  |  |                     <Box></Box> | 
 |  |  |                     <Box sx={{ mt: 2 }}> | 
 |  |  |                         <AsnOrderModalTable tabelData={tabelData} | 
 |  |  |                         <AsnOrderModalTable | 
 |  |  |                             tabelData={tabelData} | 
 |  |  |                             setTableData={setTableData} | 
 |  |  |                             record={record} | 
 |  |  |                             page={page} | 
 |  |  |                             pageSize={pageSize} | 
 |  |  |                             loading={loading} | 
 |  |  |                             setPage={setPage} | 
 |  |  |                             setPageSize={setPageSize} | 
 |  |  |                             totalRowCount={totalRowCount} | 
 |  |  |                             selectedRows={selectedRows} | 
 |  |  |                             setSelectedRows={setSelectedRows} | 
 |  |  |                             tableRef={tableRef} /> | 
 |  |  | 
 |  |  |     ); | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | const AsnOrderModalTable = ({ tabelData, setTableData, record, selectedRows, setSelectedRows, tableRef }) => { | 
 |  |  | const AsnOrderModalTable = ({ tabelData, setTableData, record, selectedRows, setSelectedRows, tableRef, page, pageSize, totalRowCount, setPageSize, setPage, loading }) => { | 
 |  |  |     const translate = useTranslate(); | 
 |  |  |     const notify = useNotify(); | 
 |  |  |  | 
 |  |  |     const [columns, setColumns] = useState([ | 
 |  |  |         { | 
 |  |  |             field: 'matnrCode', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.matnrCode'), | 
 |  |  |             field: 'warehouse$', | 
 |  |  |             headerName: translate('table.field.warehouseStock.warehouse'), | 
 |  |  |             width: 130, | 
 |  |  |             editable: false, | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'matnrName', | 
 |  |  |             field: 'matnrCode', | 
 |  |  |             headerName: translate('table.field.warehouseStock.matnrCode'), | 
 |  |  |             width: 130, | 
 |  |  |             editable: false, | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'maktx', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.maktx'), | 
 |  |  |             width: 250, | 
 |  |  |             editable: false, | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'splrName', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.splrName') + "*", | 
 |  |  |             field: 'locCode', | 
 |  |  |             headerName: translate('table.field.warehouseStock.locCode'), | 
 |  |  |             minWidth: 150, | 
 |  |  |             flex: 1, | 
 |  |  |             editable: false, | 
 |  |  | 
 |  |  |             ), | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'platItemId', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.platItemId') + "*", | 
 |  |  |             field: 'batch', | 
 |  |  |             headerName: translate('table.field.warehouseStock.batch'), | 
 |  |  |             minWidth: 100, | 
 |  |  |             flex: 1, | 
 |  |  |             editable: false, | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'anfme', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.anfme') + "*", | 
 |  |  |             headerName: translate('table.field.warehouseStock.anfme'), | 
 |  |  |             type: 'number', | 
 |  |  |             minWidth: 100, | 
 |  |  |             flex: 1, | 
 |  |  | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'qty', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.qty') + "*", | 
 |  |  |             headerName: translate('table.field.warehouseStock.qty'), | 
 |  |  |             type: 'number', | 
 |  |  |             minWidth: 100, | 
 |  |  |             flex: 1, | 
 |  |  | 
 |  |  |         }, | 
 |  |  |         { | 
 |  |  |             field: 'unit', | 
 |  |  |             headerName: translate('table.field.asnOrderItem.stockUnit'), | 
 |  |  |             headerName: translate('table.field.warehouseStock.unit'), | 
 |  |  |             minWidth: 100, | 
 |  |  |             flex: 1, | 
 |  |  |             editable: false, | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <div style={{ height: 400, width: '100%' }}> | 
 |  |  |         <div style={{ height: 500, width: '100%' }}> | 
 |  |  |             <DataGrid | 
 |  |  |                 apiRef={tableRef} | 
 |  |  |                 rows={tabelData} | 
 |  |  |                 columns={columns} | 
 |  |  |                 disableRowSelectionOnClick | 
 |  |  |                 getRowId={(row) => row.id} | 
 |  |  |                 disableColumnFilter | 
 |  |  |                 disableColumnSelector | 
 |  |  |                 disableColumnSorting | 
 |  |  |                 rowCount={totalRowCount} | 
 |  |  |                 paginationMode="server" | 
 |  |  |                 page={page} | 
 |  |  |                 pageSize={pageSize} | 
 |  |  |                 onPageChange={(newPage) => { | 
 |  |  |                     setPage(newPage) | 
 |  |  |                 }} | 
 |  |  |                 onPageSizeChange={(newPageSize) => { | 
 |  |  |                     setPageSize(newPageSize) | 
 |  |  |                 }} | 
 |  |  |                 disableMultipleColumnsSorting | 
 |  |  |                 processRowUpdate={processRowUpdate} | 
 |  |  |                 initialState={{ | 
 |  |  | 
 |  |  |                         }, | 
 |  |  |                     }, | 
 |  |  |                 }} | 
 |  |  |                 pageSizeOptions={[10, 25, 50, 100]} | 
 |  |  |                 editMode="row" | 
 |  |  |                 pageSizeOptions={[15, 25, 50, 100]} | 
 |  |  |                 checkboxSelection | 
 |  |  |                 onRowSelectionModelChange={handleSelectionChange} | 
 |  |  |                 selectionModel={selectedRows} | 
 |  |  |                 loading={loading} | 
 |  |  |                 sx={{ | 
 |  |  |                     '& .MuiDataGrid-cell input': { | 
 |  |  |                         border: '1px solid #ccc' |