skyouc
4 天以前 bd26cd9c33c3e097f15d47105ea969b4e10aa333
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%' }}>