From c99ccf370df6d868397b06d720dba6842b9bb161 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 11 四月 2025 14:49:37 +0800 Subject: [PATCH] no message --- rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx | 167 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 119 insertions(+), 48 deletions(-) diff --git a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx index 5d1eeb6..bf4c274 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx @@ -3,7 +3,9 @@ import { useTranslate, useRecordContext, - useNotify + useNotify, + useRefresh, + useListContext, } from 'react-admin'; import PanelTypography from "../components/PanelTypography"; import * as Common from '@/utils/common' @@ -11,7 +13,9 @@ import request from '@/utils/request'; import debounce from 'lodash/debounce'; import { DataGrid } from '@mui/x-data-grid'; -const AsnOrderPanel = () => { +import PrintModal from './PrintModal'; +import PrintIcon from '@mui/icons-material/Print'; +const AsnOrderPanel = ({ billReload }) => { const record = useRecordContext(); if (!record) return null; const translate = useTranslate(); @@ -24,7 +28,6 @@ debouncedHttp({ maktx }); }, [asnId, maktx]); - const http = async (parmas) => { const res = await request.post('/asnOrderItem/page', { ...parmas, asnId }); if (res?.data?.code === 200) { @@ -34,23 +37,13 @@ } } + + useEffect(() => { + billReload.current = http + }, []); + + const debouncedHttp = useMemo(() => debounce(http, 300), []); - - const StyledTableRow = styled(TableRow)(({ theme }) => ({ - "& .MuiButtonBase-root.": { - padding: "0px 0px", - }, - })); - - const StyledTableCell = styled(TableCell)(({ theme }) => ({ - "& .MuiButtonBase-root": { - padding: "0px 0px", - }, - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", - maxWidth: 600, - })); const columns = [ { @@ -59,36 +52,39 @@ }, { field: 'asnCode', - headerName: translate('table.field.asnOrderItem.asnCode') + headerName: translate('table.field.asnOrderItem.asnCode'), + width: 150, }, + // { + // field: 'poDetlId', + // headerName: translate('table.field.asnOrderItem.poDetlId') + // }, { - field: 'poDetlId', - headerName: translate('table.field.asnOrderItem.poDetlId') - }, - { - field: 'poDetlCode', + field: 'poCode', headerName: translate('table.field.asnOrderItem.poDetlCode') }, { - field: 'matnrId', - headerName: translate('table.field.asnOrderItem.matnrId') + field: 'matnrCode', + headerName: translate('table.field.asnOrderItem.matnrCode'), + width: 150, }, { field: 'maktx', - headerName: translate('table.field.asnOrderItem.maktx') + headerName: translate('table.field.asnOrderItem.maktx'), + width: 200, }, { field: 'anfme', - headerName: translate('table.field.asnOrderItem.anfme') + headerName: translate('table.field.asnOrderItem.purQty') }, { field: 'stockUnit', headerName: translate('table.field.asnOrderItem.stockUnit') }, - { - field: 'purQty', - headerName: translate('table.field.asnOrderItem.purQty') - }, + // { + // field: 'purQty', + // headerName: translate('table.field.asnOrderItem.purQty') + // }, { field: 'purUnit', headerName: translate('table.field.asnOrderItem.purUnit') @@ -96,6 +92,10 @@ { field: 'qty', headerName: translate('table.field.asnOrderItem.qty') + }, + { + field: 'splrBatch', + headerName: translate('table.field.asnOrderItem.splrBatch') }, { field: 'splrCode', @@ -106,13 +106,28 @@ headerName: translate('table.field.asnOrderItem.splrName') }, { - field: 'barcode', - headerName: translate('table.field.asnOrderItem.barcode') + field: 'trackCode', + headerName: translate('table.field.asnOrderItem.barcode'), + width: 150 + }, + { + field: 'prodTime', + headerName: translate('table.field.asnOrderItem.prodTime') }, { field: 'packName', headerName: translate('table.field.asnOrderItem.packName') - }] + }, + { + field: 'action', + headerName: '鎿嶄綔', + width: 70, + lockPosition: 'left', + renderCell: (params) => ( + <PrintButton rows={[params.row.id]} /> + ), + + },] const [selectedRows, setSelectedRows] = useState([]); @@ -124,41 +139,43 @@ setMaktx(value) } - const wakbarcode = () => { - - } - - const wakprint = () => { - - } - return ( <Box sx={{ position: 'relative', padding: '5px 10px' }}> - <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '4px', alignItems: 'center' }}> - <TextField value={maktx} onChange={(e) => maktxChange(e.target.value)} label="鎼滅储鐗╂枡" variant="outlined" sx={{ width: '300px' }} /> + <TextField value={maktx} onChange={(e) => maktxChange(e.target.value)} label="鎼滅储鐗╂枡" sx={{ width: '300px' }} size="small" /> <div style={{ display: 'flex', gap: '10px' }}> - <Button variant="contained" onClick={wakbarcode}>鐢熸垚鏉$爜</Button> - <Button variant="contained" onClick={wakprint}>鎵撳嵃</Button> + <PrintsButton rows={selectedRows} /> </div> </div> <DataGrid + sx={{ width: 'calc(100vw - 280px)' }} size="small" rows={rows} columns={columns} + disableRowSelectionOnClick checkboxSelection onRowSelectionModelChange={handleSelectionChange} selectionModel={selectedRows} disableColumnMenu={true} disableColumnSorting disableMultipleColumnsSorting + columnHeaderHeight={40} + rowHeight={42} + initialState={{ + pagination: { + paginationModel: { + pageSize: 10, + }, + }, + }} + pageSizeOptions={[10, 25, 50]} /> </Box > @@ -166,3 +183,57 @@ }; export default AsnOrderPanel; + +const PrintsButton = ({ rows }) => { + const record = useRecordContext(); + const { resource, selectedIds } = useListContext(); + const notify = useNotify(); + const refresh = useRefresh(); + const translate = useTranslate(); + + const [createDialog, setCreateDialog] = useState(false); + + const modalChange = () => { + if (rows?.length === 0) { + notify('璇烽�夋嫨鐗╂枡'); + return; + } else { + setCreateDialog(true) + } + + } + + return ( + <> + <Button size="small" color="secondary" onClick={modalChange} startIcon={<PrintIcon />}>{translate("toolbar.batchPrint")}</Button> + + <PrintModal + open={createDialog} + setOpen={setCreateDialog} + rows={rows} + /> + </> + ) +} + +const PrintButton = ({ rows }) => { + const record = useRecordContext(); + + const notify = useNotify(); + const refresh = useRefresh(); + + const [createDialog, setCreateDialog] = useState(false); + const translate = useTranslate(); + + return ( + <> + <Button size="small" color="secondary" onClick={() => setCreateDialog(true)} startIcon={<PrintIcon />}>{translate("toolbar.print")}</Button> + + <PrintModal + open={createDialog} + setOpen={setCreateDialog} + rows={rows} + /> + </> + ) +} -- Gitblit v1.9.1