Ryan
2025-04-03 313f0515b65ab69e6e811c199f4b33eb630509f3
rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -33,7 +33,7 @@
    DeleteButton,
    useRefresh,
    Button,
    useList
    useList,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -55,6 +55,8 @@
import request from '@/utils/request';
import DiscountIcon from '@mui/icons-material/Discount';
import LinkIcon from '@mui/icons-material/Link';
import InitModal from "./InitModal";
import LocListAside from "./LocListAside";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -73,14 +75,40 @@
    },
    '& .RaDatagrid-rowCell': {
        textAlign: 'left'
    }
    },
    '& .type .MuiTypography-root': {
        whiteSpace: 'nowrap',
        overflow: 'hidden',
        textOverflow: 'ellipsis',
        display: 'block',
        width: '200px',
    },
}));
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <TextInput source="warehouseId$" label="table.field.loc.warehouseId" />,
    <TextInput source="areaId$" label="table.field.loc.areaId" />,
    <ReferenceInput
        source="warehouseId"
        label="table.field.loc.warehouseId"
        reference="warehouse"
    >
        <AutocompleteInput
            label="table.field.loc.warehouseId"
            optionText="name"
            filterToQuery={(val) => ({ name: val })}
        />
    </ReferenceInput>,
    <ReferenceInput
        source="areaId"
        label="table.field.loc.areaId"
        reference="warehouseAreas"
    >
        <AutocompleteInput
            label="table.field.loc.areaId"
            optionText="name"
            filterToQuery={(val) => ({ name: val })}
        />
    </ReferenceInput>,
    <TextInput source="code" label="table.field.loc.code" />,
    <TextInput source="type" label="table.field.loc.type" />,
    <TextInput source="name" label="table.field.loc.name" />,
@@ -117,7 +145,7 @@
    const [createDialog, setCreateDialog] = useState(false);
    const [drawerVal, setDrawerVal] = useState(false);
    const [initDialog, setInitDialog] = useState(false);
    return (
        <Box display="flex">
@@ -131,7 +159,33 @@
                    marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                }}
                title={"menu.loc"}
                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
                empty={<EmptyData
                    children={
                        <Box sx={{ gap: 2, display: 'flex' }}>
                            <Button
                                variant="contained"
                                color="primary"
                                sx={{
                                    fontSize: '1em',
                                    mt: 2
                                }}
                                onClick={() => { setCreateDialog(true) }}>
                                {translate('create.empty.button')}
                            </Button>
                            <Button
                                variant="contained"
                                color="primary"
                                sx={{
                                    fontSize: '1em',
                                    mt: 2
                                }}
                                onClick={() => { setInitDialog(true) }}>
                                {translate('toolbar.locInit')}
                            </Button>
                        </Box>
                    }
                    onClick={() => { }} />}
                filters={filters}
                sort={{ field: "create_time", order: "desc" }}
                actions={(
@@ -144,13 +198,17 @@
                    </TopToolbar>
                )}
                perPage={DEFAULT_PAGE_SIZE}
                aside={<LocListAside />}
            >
                <StyledDatagrid
                    preferenceKey='loc'
                    align="left"
                    bulkActionButtons={
                        <>
                            <BatchButton />
                            <BatchWateButton />
                            <BatchAreasButton />
                            <BatchLocTypeButton />
                            <BatchStatusButton />
                            <BindButton />
                            <SubzoneButton />
                            <BulkDeleteButton />
@@ -163,7 +221,7 @@
                    <NumberField source="warehouseId$" label="table.field.loc.warehouseId" />
                    <NumberField source="areaId$" label="table.field.loc.areaId" />
                    <TextField source="code" label="table.field.loc.code" />
                    <TextField source="typeIds$" label="table.field.loc.type" />
                    <TextField source="typeIds$" label="table.field.loc.type" cellClassName="type" />
                    {/* <TextField source="name" label="table.field.loc.name" /> */}
                    {/* <NumberField source="flagLogic" label="table.field.loc.flagLogic" />
                    <TextField source="fucAtrrs" label="table.field.loc.fucAtrrs" />
@@ -210,6 +268,11 @@
                setDrawerVal={setDrawerVal}
            >
            </PageDrawer>
            <InitModal
                open={initDialog}
                setOpen={setInitDialog}
            />
        </Box>
    )
}
@@ -242,7 +305,30 @@
    )
}
const BatchButton = () => {
const BatchWateButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchWarehouse"}>
                <EditIcon />
            </Button>
            <BatchModal
                open={createDialog}
                setOpen={setCreateDialog}
                fieldType={'warehouseId'}
            />
        </>
    )
}
const BatchAreasButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
@@ -252,13 +338,62 @@
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batch"}>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchWarehouseAreas"}>
                <EditIcon />
            </Button>
            <BatchModal
                open={createDialog}
                setOpen={setCreateDialog}
                fieldType={'areaId'}
            />
        </>
    )
}
const BatchLocTypeButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchLocType"}>
                <EditIcon />
            </Button>
            <BatchModal
                open={createDialog}
                setOpen={setCreateDialog}
                fieldType={'typeIds'}
            />
        </>
    )
}
const BatchStatusButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchStatus"}>
                <EditIcon />
            </Button>
            <BatchModal
                open={createDialog}
                setOpen={setCreateDialog}
                fieldType={'status'}
            />
        </>