#
whycq
2025-02-24 7a671b62b0a1388c9933a0d9bd698a6eb8b048ed
rsf-admin/src/page/basicInfo/matnr/MatnrCreate.jsx
@@ -26,16 +26,53 @@
    Stack,
    Grid,
    Box,
    Tabs,
    Tab,
} from '@mui/material';
import PropTypes from 'prop-types';
import DialogCloseButton from "@/page/components/DialogCloseButton";
import StatusSelectInput from "@/page/components/StatusSelectInput";
import MemoInput from "@/page/components/MemoInput";
import { tr } from "date-fns/locale";
function CustomTabPanel(props) {
    const { children, value, index, ...other } = props;
    return (
        <div
            role="tabpanel"
            hidden={value !== index}
            id={`simple-tabpanel-${index}`}
            aria-labelledby={`simple-tab-${index}`}
            {...other}
        >
            {value === index && <Box sx={{ p: 3 }}>{children}</Box>}
        </div>
    );
}
CustomTabPanel.propTypes = {
    children: PropTypes.node,
    index: PropTypes.number.isRequired,
    value: PropTypes.number.isRequired,
};
function a11yProps(index) {
    return {
        id: `simple-tab-${index}`,
        'aria-controls': `simple-tabpanel-${index}`,
    };
}
const MatnrCreate = (props) => {
    const { open, setOpen } = props;
    const translate = useTranslate();
    const notify = useNotify();
    const [value, setValue] = React.useState(0);
    const handleChange = (event, newValue) => {
        setValue(newValue);
    };
    const handleClose = (event, reason) => {
        if (reason !== "backdropClick") {
@@ -50,6 +87,19 @@
    const handleError = async (error) => {
        notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
    };
    const validateForm = (values) => {
        const errors = {};
        if (!values.shipperId) {
            errors.shipperId = translate('form.matnr.shipper');
        }
        if (!values.groupId) {
            errors.groupId = translate('form.matnr.groupId');
        }
        if (!values.name) {
            errors.name = translate('form.matnr.name');
        }
        return errors;
    };
    return (
@@ -69,7 +119,7 @@
                    disableRestoreFocus
                    maxWidth="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
                >
                    <Form>
                    <Form validate={validateForm}>
                        <DialogTitle id="form-dialog-title" sx={{
                            position: 'sticky',
                            top: 0,
@@ -83,10 +133,17 @@
                            </Box>
                        </DialogTitle>
                        <DialogContent sx={{ mt: 2 }}>
                            <Tabs value={value} onChange={handleChange} aria-label="basic tabs example">
                                <Tab label={translate('page.matnr.title.basic')} {...a11yProps(0)} />
                                <Tab label={translate('page.matnr.title.control')} {...a11yProps(1)} />
                                <Tab label={translate('page.matnr.title.batchRole')} {...a11yProps(2)} />
                            </Tabs>
                            <CustomTabPanel value={value} index={0}>
                            <Grid container rowSpacing={2} columnSpacing={2}>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.matnr.name"
                                            validate={[required()]}
                                        source="name"
                                        parse={v => v}
                                        autoFocus
@@ -95,6 +152,7 @@
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.matnr.code"
                                            required
                                        source="code"
                                        parse={v => v}
                                    />
@@ -107,6 +165,7 @@
                                        <AutocompleteInput
                                            label="table.field.matnr.shipperId"
                                            optionText="name"
                                                validate={[required()]}
                                            filterToQuery={(val) => ({ name: val })}
                                        />
                                    </ReferenceInput>
@@ -119,18 +178,7 @@
                                        <AutocompleteInput
                                            label="table.field.matnr.groupId"
                                            optionText="code"
                                            filterToQuery={(val) => ({ code: val })}
                                        />
                                    </ReferenceInput>
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <ReferenceInput
                                        source="rglarId"
                                        reference="rglarId"
                                    >
                                        <AutocompleteInput
                                            label="table.field.matnr.rglarId"
                                            optionText="code"
                                                validate={[required()]}
                                            filterToQuery={(val) => ({ code: val })}
                                        />
                                    </ReferenceInput>
@@ -139,6 +187,7 @@
                                    <TextInput
                                        label="table.field.matnr.erpCode"
                                        source="erpCode"
                                            required
                                        parse={v => v}
                                    />
                                </Grid>
@@ -231,6 +280,20 @@
                                        ]}
                                    />
                                </Grid>
                                    <Grid item xs={6} display="flex" gap={1}>
                                        <StatusSelectInput />
                                    </Grid>
                                    <Grid item xs={12} display="flex" gap={1}>
                                        <Stack direction="column" spacing={1} width={'100%'}>
                                            <MemoInput />
                                        </Stack>
                                    </Grid>
                                </Grid>
                            </CustomTabPanel>
                            <CustomTabPanel value={value} index={1}>
                                <Grid container rowSpacing={2} columnSpacing={2}>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        label="table.field.matnr.safeQty"
@@ -268,21 +331,33 @@
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        <SelectInput
                                        label="table.field.matnr.flagCheck"
                                        source="flagCheck"
                                            choices={[
                                                { id: 0, name: ' 否' },
                                                { id: 1, name: ' 是' },
                                            ]}
                                    />
                                </Grid>
                                </Grid>
                            </CustomTabPanel>
                            <CustomTabPanel value={value} index={2}>
                                <Grid container rowSpacing={2} columnSpacing={2}>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
                                </Grid>
                                <Grid item xs={12} display="flex" gap={1}>
                                    <Stack direction="column" spacing={1} width={'100%'}>
                                        <MemoInput />
                                    </Stack>
                                        <ReferenceInput
                                            source="rglarId"
                                            reference="rglarId"
                                        >
                                            <AutocompleteInput
                                                label="table.field.matnr.rglarId"
                                                optionText="code"
                                                filterToQuery={(val) => ({ code: val })}
                                            />
                                        </ReferenceInput>
                                </Grid>
                            </Grid>
                            </CustomTabPanel>
                        </DialogContent>
                        <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
                            <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }}  >