From ad705232b85b1484b08e9a6072294ba5f261a9eb Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 18 八月 2025 16:34:18 +0800
Subject: [PATCH] 仓库,库区ERP同步接口优化
---
rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx | 239 ++++++++++++++++++++++++++++++++---------------------------
1 files changed, 128 insertions(+), 111 deletions(-)
diff --git a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
index 1d66d19..4052be8 100644
--- a/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
+++ b/rsf-admin/src/page/stockManage/locRevise/SelectLocsRevise.jsx
@@ -16,19 +16,12 @@
} 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, useGetOne } 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': {
@@ -37,79 +30,75 @@
'& .RaDatagrid-row': {
cursor: 'auto'
},
- '& .column-name': {
- },
'& .opt': {
width: 180
},
}));
-
-
const SelectLocsRevise = (props) => {
- const { open, setOpen, data, setData } = props;
- const translate = useTranslate();
- const refresh = useRefresh();
- const notify = useNotify();
-
+ const { open, setOpen, locRevise } = props;
const handleClose = (event, reason) => {
if (reason !== "backdropClick") {
setOpen(false);
}
};
-
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
- })
- }
-
const handleSubmit = () => {
- const hasarr = data.map(el => +el.matnrId)
- const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id)));
+ const selectedData = tableData.filter(item => selectedRows.includes(item.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,
+ locCode: 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]);
- setOpen(false);
- reset();
+ }));
+
+ saveReviseLog(value);
};
- const filters = [
- <SearchInput source="condition" alwaysOn />,
- ]
+ const saveReviseLog = async (values) => {
+ const parmas = {
+ reviseId: locRevise,
+ items: values,
+ }
+ const res = await request.post(`/reviseLog/items/save`, parmas);
+ if (res?.data?.code === 200) {
+ setOpen(false);
+ refresh()
+ } else {
+ notify(res.data.msg);
+ }
+ }
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,
@@ -118,12 +107,10 @@
if (res?.data?.code === 200) {
setTableData(res.data.data.records);
setRowCount(res.data?.data?.total);
-
} else {
notify(res.data.msg);
}
setIsLoading(false)
-
};
useEffect(() => {
@@ -193,14 +180,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 +195,10 @@
<AsnWareModalTable
tableData={tableData}
setTableData={setTableData}
- dyFields={dyFields}
page={page}
rowCount={rowCount}
setPage={setPage}
isLoading={isLoading}
- setDyFields={setDyFields}
selectedRows={selectedRows}
setSelectedRows={setSelectedRows}
/>
@@ -233,69 +218,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