From bd26cd9c33c3e097f15d47105ea969b4e10aa333 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 05 八月 2025 13:02:16 +0800 Subject: [PATCH] 新增库存调整弹框 --- rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx | 204 +++++++++++++++++++++++++++----------------------- 1 files changed, 111 insertions(+), 93 deletions(-) diff --git a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx index 1d66d19..d9b25a2 100644 --- a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx @@ -16,19 +16,13 @@ } from '@mui/material'; import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_ITEM_PAGE_SIZE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; +import { useTranslate, useNotify, useRefresh, DatagridConfigurable} from 'react-admin'; import DialogCloseButton from "../../components/DialogCloseButton"; -import { - useTranslate, useNotify, useRefresh, List, FilterButton, NumberField, - DateField, ReferenceInput, AutocompleteInput, TextInput, DatagridConfigurable, - BooleanField, SearchInput, -} from 'react-admin'; import TreeSelectInput from "@/page/components/TreeSelectInput"; import { Add, Edit, Delete, Save } from '@mui/icons-material'; import SaveIcon from '@mui/icons-material/Save'; import { DataGrid } from '@mui/x-data-grid'; import request from '@/utils/request'; - - const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -44,14 +38,8 @@ }, })); - - const SelectLocsRevise = (props) => { const { open, setOpen, data, setData } = props; - const translate = useTranslate(); - const refresh = useRefresh(); - const notify = useNotify(); - const handleClose = (event, reason) => { if (reason !== "backdropClick") { setOpen(false); @@ -59,25 +47,28 @@ }; const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_stock_revise_type')) || []; - const [formData, setFormData] = useState({}); - const [tableData, setTableData] = useState([]); - const [dyFields, setDyFields] = useState([]); - const [selectedRows, setSelectedRows] = useState([]); const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE }); - const [rowCount, setRowCount] = useState(0); + const [formData, setFormData] = useState({ useStatus: 'F', code: null }); + const [selectedRows, setSelectedRows] = useState([]); const [isLoading, setIsLoading] = useState(false); + const [tableData, setTableData] = useState([]); + const [rowCount, setRowCount] = useState(0); + const translate = useTranslate(); + const refresh = useRefresh(); + const notify = useNotify(); + const handleChange = (e) => { const { name, value } = e.target; setFormData(() => ({ + ...formData, [name]: value })); }; const reset = () => { setFormData({ - name: '', code: '', - groupId: 0 + useStatus: 'F', }) } @@ -85,17 +76,18 @@ const hasarr = data.map(el => +el.matnrId) const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id))); const value = selectedData.map((el => { - const dynamicFields = dyFields.reduce((acc, item) => { - acc[item.fields] = el['extendFields']?.[item.fields] || ''; - return acc; - }, {}); return { - matnrId: el.id, - maktx: el.name, - matnrCode: el.code, - stockUnit: el.stockUnit || '', - purUnit: el.purchaseUnit || '', - ...dynamicFields + id: el.id, + code: el.code, + areaId: el.areaId, + barcode: el.barcode || '', + channel: el.channel || '', + col: el.col, + lev: el.lev, + row: el.row, + type: el.type, + useStatus: el.useStatus, + warehouseId: el.warehouseId, } })) setData([...data, ...value]); @@ -103,13 +95,9 @@ reset(); }; - const filters = [ - <SearchInput source="condition" alwaysOn />, - ] - const getData = async () => { setIsLoading(true) - const res = await request.post(`/locItem/page`, { + const res = await request.post(`/loc/page`, { ...formData, current: page?.page, pageSize: page?.pageSize, @@ -193,14 +181,14 @@ <Grid item md={4}> <TextField label={translate('table.field.locItem.locCode')} - name="locCode" - value={formData.name} + name="code" + value={formData.code} onChange={handleChange} size="small" /> </Grid> <Grid item md={2} sx={{ margin: 'auto' }}> - <Button variant="contained" onClick={handleSearch}>鎼滅储</Button> + <Button variant="contained" onClick={handleSearch}>{translate("toolbar.query")}</Button> </Grid> </Grid> </Box> @@ -208,12 +196,10 @@ <AsnWareModalTable tableData={tableData} setTableData={setTableData} - dyFields={dyFields} page={page} rowCount={rowCount} setPage={setPage} isLoading={isLoading} - setDyFields={setDyFields} selectedRows={selectedRows} setSelectedRows={setSelectedRows} /> @@ -233,69 +219,101 @@ export default SelectLocsRevise; -const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => { +const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows }) => { const translate = useTranslate(); const notify = useNotify(); const [columns, setColumns] = useState([ - // { field: 'id', headerName: 'ID', width: 100 }, - { field: 'locCode', headerName: translate('table.field.locItem.locCode'), width: 150 }, - { field: 'matnrCode', headerName: translate('table.field.locItem.matnrCode'), width: 200 }, - { field: 'maktx', headerName: translate('table.field.locItem.maktx'), width: 300 }, - { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 }, - { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100 }, - { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 }, + { + field: 'code', + headerName: translate('table.field.locItem.locCode'), + width: 110, + editable: false, + }, + { + field: 'warehouseId$', + headerName: translate('table.field.loc.warehouseId'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'areaId$', + headerName: translate('table.field.loc.areaId'), + width: 130, + editable: false, + }, + { + field: 'typeIds$', + headerName: translate('table.field.loc.type'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'barcode', + headerName: translate('table.field.loc.barcode'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'useStatus$', + headerName: translate('table.field.loc.useStatus') + "*", + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'channel', + headerName: translate('table.field.loc.channel'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'row', + headerName: translate('table.field.loc.row'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'col', + headerName: translate('table.field.loc.col'), + minWidth: 100, + flex: 1, + editable: false, + }, + { + field: 'lev', + headerName: translate('table.field.loc.lev'), + minWidth: 100, + flex: 1, + editable: false, + }, + // { + // field: 'action', + // headerName: '鎿嶄綔', + // width: 140, + // lockPosition: 'left', + // renderCell: (params) => ( + // <Tooltip title="Delete"> + // <IconButton onClick={() => handleDelete(params.row)}> + // <Delete /> + // </IconButton> + // <IconButton onClick={() => handleDelete(params.row)}> + // <Save /> + // </IconButton> + // </Tooltip> + // ), + // } ]) - - const action = { - field: 'action', - headerName: '鎿嶄綔', - width: 140, - lockPosition: 'left', - renderCell: (params) => ( - <Tooltip title="Delete"> - <IconButton onClick={() => handleDelete(params.row)}> - <Delete /> - </IconButton> - <IconButton onClick={() => handleDelete(params.row)}> - <Save /> - </IconButton> - </Tooltip> - ), - } const handleSelectionChange = (ids) => { setSelectedRows(ids) }; - - useEffect(() => { - if (dyFields.length < 1) { - getDynamicFields(); - } - }, []); - - const getDynamicFields = async () => { - const { - data: { code, data, msg }, - } = await request.get("/fields/enable/list"); - if (code === 200) { - const cols = data.map(el => ({ - field: el.fields, - headerName: el.fieldsAlise, - minWidth: 100, - flex: 1, - editable: el.unique, - valueGetter: (value, row) => { - return row.extendFields?.[el.fields] || ''; - }, - })) - setDyFields(data) - setColumns([...columns, ...cols, action]) - } else { - notify(msg); - } - } return ( <div style={{ width: '100%' }}> -- Gitblit v1.9.1