From 5466af6a44f22552d0040adfe63ac2a574b66c74 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 05 八月 2025 14:22:42 +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