verou
2025-03-26 6793162873940b6a34040ab815d6fa2eebfda402
fix:库位批量操作
6个文件已修改
213 ■■■■■ 已修改文件
rsf-admin/src/i18n/en.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/BatchModal.jsx 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/LocList.jsx 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/loc/LocListAside.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -653,6 +653,8 @@
        batchMix: 'batchFiexed',
        batchWarehouse: 'batchWarehouse',
        batchStockLevel: "batchStockLevel",
        batchWarehouseAreas: "batchWarehouseAreas",
        batchLocType: "batchLocType",
    },
};
rsf-admin/src/i18n/zh.js
@@ -657,6 +657,8 @@
        batchStockLevel: "批量ABC分类",
        batchValidWarn: "批量预警",
        batchFlagCheck: "批量免检",
        batchWarehouseAreas: "批量库区",
        batchLocType: "批量库位类型",
    },
};
rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
@@ -55,7 +55,7 @@
import StatusSelectInput from "../../components/StatusSelectInput";
const BatchModal = ({ open, setOpen }) => {
const BatchModal = ({ open, setOpen, fieldType }) => {
    const refresh = useRefresh();
    const translate = useTranslate();
@@ -128,48 +128,48 @@
    }
    return (
        <Dialog open={open} maxWidth="md" fullWidth>
        <Dialog open={open} maxWidth="xs" fullWidth>
            <Form onSubmit={handleSubmit}>
                <DialogCloseButton onClose={handleClose} />
                <DialogTitle>{translate('toolbar.batch')}</DialogTitle>
                <DialogContent sx={{ mt: 2 }}>
                    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
                        <Grid container spacing={2}>
                            <Grid item xs={4}>
                                <ReferenceInput
                                    source="warehouseId"
                                    reference="warehouse"
                                >
                                    <AutocompleteInput
                                        label="table.field.loc.warehouseId"
                                        optionText="name"
                                        onChange={(value) => handleChange(value, 'warehouseId')}
                                        value={formData.warehouseId}
                                        filterToQuery={(val) => ({ name: val })}
                                    />
                                </ReferenceInput>
                            {fieldType === 'warehouseId' &&
                                <Grid item xs={6}>
                                    <ReferenceInput
                                        source="warehouseId"
                                        reference="warehouse"
                                    >
                                        <AutocompleteInput
                                            label="table.field.loc.warehouseId"
                                            optionText="name"
                                            value={formData.warehouseId}
                                            filterToQuery={(val) => ({ name: val })}
                                        />
                                    </ReferenceInput>
                                </Grid>
                            }
                            {fieldType === 'areaId' &&
                                <Grid item xs={6}>
                                    <ReferenceInput
                                        source="areaId"
                                        reference="warehouseAreas"
                                    >
                                        <AutocompleteInput
                                            label="table.field.loc.areaId"
                                            optionText="name"
                                            onChange={(value) => handleChange(value, 'areaId')}
                                            value={formData.areaId}
                                            filterToQuery={(val) => ({ name: val })}
                                        />
                                    </ReferenceInput>
                            </Grid>
                            <Grid item xs={4}>
                                <ReferenceInput
                                    source="areaId"
                                    reference="warehouseAreas"
                                    filter={{ warehouseId: formData.warehouseId }}
                                >
                                    <AutocompleteInput
                                        label="table.field.loc.areaId"
                                        optionText="name"
                                        onChange={(value) => handleChange(value, 'areaId')}
                                        value={formData.areaId}
                                        filterToQuery={(val) => ({ name: val })}
                                    />
                                </ReferenceInput>
                            </Grid>
                            <Grid item xs={4}>
                                {/* <DictionarySelect
                                </Grid>
                            }
                            {fieldType === 'typeIds' &&
                                <Grid item xs={6}>
                                    {/* <DictionarySelect
                                    label={translate("table.field.loc.type")}
                                    name="type"
                                    value={formData.type}
@@ -177,19 +177,21 @@
                                    size="small"
                                    dictTypeCode="sys_loc_type"
                                /> */}
                                <ReferenceArrayInput source="typeIds" reference="locType" >
                                    <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
                                </ReferenceArrayInput>
                            </Grid>
                                    <ReferenceArrayInput source="typeIds" reference="locType" >
                                        <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
                                    </ReferenceArrayInput>
                                </Grid>
                            }
                            <Grid item xs={4}>
                                <StatusSelectInput
                                    onChange={(e) => handleChange(e.target.value, 'status')}
                                    defaultValue={''}
                                    require={false}
                                />
                            </Grid>
                            {fieldType === 'status' &&
                                <Grid item xs={6}>
                                    <StatusSelectInput
                                        onChange={(e) => handleChange(e.target.value, 'status')}
                                        defaultValue={''}
                                        require={false}
                                    />
                                </Grid>
                            }
                        </Grid>
                    </Box>
rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -85,7 +85,6 @@
        source="warehouseId"
        label="table.field.loc.warehouseId"
        reference="warehouse"
        alwaysOn
    >
        <AutocompleteInput
            label="table.field.loc.warehouseId"
@@ -97,7 +96,6 @@
        source="areaId"
        label="table.field.loc.areaId"
        reference="warehouseAreas"
        alwaysOn
    >
        <AutocompleteInput
            label="table.field.loc.areaId"
@@ -194,14 +192,16 @@
                    </TopToolbar>
                )}
                perPage={DEFAULT_PAGE_SIZE}
                aside={<LocListAside />}
            >
                <StyledDatagrid
                    preferenceKey='loc'
                    align="left"
                    bulkActionButtons={
                        <>
                            <BatchButton />
                            <BatchWateButton />
                            <BatchAreasButton />
                            <BatchLocTypeButton />
                            <BatchStatusButton />
                            <BindButton />
                            <SubzoneButton />
                            <BulkDeleteButton />
@@ -298,7 +298,7 @@
    )
}
const BatchButton = () => {
const BatchWateButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
@@ -306,16 +306,88 @@
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batch"}>
            <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();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <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'}
            />
        </>
rsf-admin/src/page/basicInfo/loc/LocListAside.jsx
@@ -62,8 +62,15 @@
    }
    const handleNodeSelect = (event, nodeId) => {
        console.log(nodeId);
        // setFilters({ groupId: nodeId });
        const row = apiRef.current.getItem(nodeId);
        console.log(row);
        if (row.type === 'warehouseId') {
            // setFilters({ warehouseId: row.id ,areaId:''});
        } else if (row.type === 'areaId') {
            // setFilters({ areaId: row.id ,warehouseId:''});
        }
    };
    const handleSearch = (e) => {
        setCondition(e.target.value)
rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx
@@ -252,8 +252,8 @@
            <RichTreeView
                expansionTrigger="iconContainer"
                checkboxSelection
                multiSelect
                // checkboxSelection
                // multiSelect
                items={matnrTree}
                apiRef={apiRef}
                getItemId={(item) => item.id}
@@ -388,17 +388,17 @@
            <RichTreeView
                expansionTrigger="iconContainer"
                checkboxSelection
                multiSelect
                items={locTree}
                apiRef={apiRef}
                selectedItems={selectedItems}
                getItemId={(item) => item.id}
                getItemLabel={(item) => item.name}
                defaultExpandedItems={['grid']}
                onSelectedItemsChange={handleSelectedItemsChange}
                onItemSelectionToggle={handleItemSelectionToggle}
                onItemClick={handleNodeSelect}
                onItemSelectionToggle={handleItemSelectionToggle}
                // checkboxSelection
                // multiSelect
                selectedItems={selectedItems}
                onSelectedItemsChange={handleSelectedItemsChange}
            />
            <BindLocModal