| | |
| | | import { useTranslate, useNotify, useRefresh, DatagridConfigurable, useGetOne } from 'react-admin'; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import { Add, Edit, Delete, Save } from '@mui/icons-material'; |
| | | import QueryStatsIcon from '@mui/icons-material/QueryStats'; |
| | | import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; |
| | | import SelectMatnrInfo from "./SelectMatnrInfo"; |
| | | import SaveIcon from '@mui/icons-material/Save'; |
| | |
| | | } |
| | | }; |
| | | |
| | | const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_revise_type')) || []; |
| | | const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE }); |
| | | const [formData, setFormData] = useState({ locCode: record?.locCode }); |
| | | const [selectedRows, setSelectedRows] = useState([]); |
| | | const [isLoading, setIsLoading] = useState(false); |
| | | const [tableData, setTableData] = useState([]); |
| | | const [openMatnr, setOpenMatnr] = useState(); |
| | | const [dyFields, setDyFields] = useState([]); |
| | | const [rowCount, setRowCount] = useState(0); |
| | | const [formData, setFormData] = useState({ matnrCode: null }); |
| | | const translate = useTranslate(); |
| | | const refresh = useRefresh(); |
| | | const notify = useNotify(); |
| | | const tableRef = useRef() |
| | | |
| | | |
| | | const handleChange = (e) => { |
| | | const { name, value } = e.target; |
| | | setFormData(() => ({ |
| | | ...formData, |
| | | [name]: value |
| | | })); |
| | | }; |
| | | |
| | | const handleSubmit = () => { |
| | | const rows = tableRef.current.getSelectedRows(); |
| | |
| | | batch: el.batch, |
| | | anfme: el.anfme, |
| | | reviseQty: el.reviseQty, |
| | | filedsIndex: el.filedsIndex, |
| | | spec: el.spec, |
| | | model: el.model, |
| | | unit: el.unit, |
| | |
| | | reviseLogId: record?.id, |
| | | items: values, |
| | | } |
| | | console.log(values); |
| | | |
| | | const res = await request.post(`/reviseLogItem/items/save`, parmas); |
| | | if (res?.data?.code === 200) { |
| | |
| | | } |
| | | } |
| | | |
| | | const getData = async () => { |
| | | const getData = async (matnr) => { |
| | | setIsLoading(true) |
| | | console.log(formData); |
| | | |
| | | const res = await request.post(`/locItem/page`, { |
| | | const res = await request.post(`/reviseLogItem/page`, { |
| | | locCode: record?.locCode, |
| | | matnrCode: matnr, |
| | | current: page?.page, |
| | | pageSize: page?.pageSize, |
| | | orderBy: "create_time desc" |
| | |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | getData(); |
| | | if (record != null || record != undefined) { |
| | | getData() |
| | | } |
| | | }, [open, page]); |
| | | |
| | | const handleSearch = () => { |
| | | // getData() |
| | | getData(formData.matnrCode) |
| | | }; |
| | | |
| | | const handleAdd = () => { |
| | | setOpenMatnr(true) |
| | | }; |
| | | |
| | | const handleChange = (e) => { |
| | | const { name, value } = e.target; |
| | | setFormData(() => ({ |
| | | [name]: value |
| | | })); |
| | | }; |
| | | |
| | | return ( |
| | |
| | | </Box> |
| | | </DialogTitle> |
| | | <DialogContent sx={{ mt: 2 }}> |
| | | {/* <Box> |
| | | <List |
| | | sx={{ |
| | | flexGrow: 1, |
| | | marginRight: 1, |
| | | transition: (theme) => |
| | | theme.transitions.create(['all'], { |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | }} |
| | | resource="loc" |
| | | title={"menu.loc"} |
| | | empty={false} |
| | | filter={{ useStatus: 'F' }} |
| | | filters={filters} |
| | | sort={{ field: "'row'" }} |
| | | actions={false} |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | aside={false} |
| | | > |
| | | <StyledDatagrid |
| | | preferenceKey='loc' |
| | | align="left" |
| | | bulkActionButtons={false} |
| | | rowClick={() => false} |
| | | omit={['id', 'areaId', 'type', 'barcode']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="code" label="table.field.locItem.locCode" /> |
| | | </StyledDatagrid> |
| | | </List> |
| | | </Box> */} |
| | | <Box> |
| | | <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3, justifyContent: 'flex-end' }}> |
| | | <Grid item md={12} sx={{ justifyContent: 'flex-end', display: 'flex' }}> |
| | | <Button variant="text" onClick={handleSearch}>{translate("page.whMat.title.add")}</Button> |
| | | <Box sx={{ display: 'flex', justifyContent: 'space-between' }}> |
| | | <Grid container spacing={2}> |
| | | <Grid item md={3}> |
| | | <TextField |
| | | label={translate('table.field.matnr.code')} |
| | | name="matnrCode" |
| | | value={formData.matnrCode} |
| | | onChange={handleChange} |
| | | size="small" |
| | | /> |
| | | </Grid> |
| | | <Grid item md={3} sx={{ display: "flex", margin: 1 }}> |
| | | <Button variant="contained" onClick={handleSearch} startIcon={<QueryStatsIcon />}>{translate("toolbar.query")}</Button> |
| | | </Grid> |
| | | </Grid> |
| | | <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, justifyContent: 'flex-end' }}> |
| | | <Grid item md={8} sx={{ justifyContent: 'flex-end', display: 'flex' }}> |
| | | <Button variant="text" onClick={handleAdd}>{translate("page.whMat.title.add")}</Button> |
| | | </Grid> |
| | | </Box> |
| | | </Box> |
| | | <Box sx={{ mt: 2, height: 600, width: '100%' }}> |
| | | <SelectReviseMatnr |
| | |
| | | export default LocsReviseDetl; |
| | | |
| | | const SelectReviseMatnr = ({ tableData, setTableData, page, isLoading, setPage, rowCount, selectedRows, setSelectedRows, tableRef, setDyFields, dyFields }) => { |
| | | const [dynamicFields, setDynamicFields] = useState([]); |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | const [dynamicFields, setDynamicFields] = useState([]); |
| | | const [columns, setColumns] = useState([ |
| | | { |
| | | field: 'matnrCode', |
| | |
| | | }, |
| | | { |
| | | field: 'reviseQty', |
| | | headerName: translate('table.field.locItem.outQty') + "*", |
| | | headerName: translate('table.field.locItem.reviseQty') + "*", |
| | | minWidth: 100, |
| | | type: 'number', |
| | | flex: 1, |
| | |
| | | } |
| | | |
| | | const handleDelete = (rows) => { |
| | | const tableRows = tableData.filter(item => item.matnrCode != rows.matnrCode); |
| | | let selectRow = tableRef.current.getSortedRows(); |
| | | const tableRows = selectRow.filter(item => item.id != rows.id); |
| | | setTableData(tableRows); |
| | | } |
| | | |