DESKTOP-LMJ82IJ\Eno
2025-04-13 766c38fe0e8a7ba9ae62b5d6113e13b9df2707db
rsf-admin/src/page/system/dicts/dictType/DictDataEdit.jsx
New file
@@ -0,0 +1,166 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import {
    Edit,
    SimpleForm,
    Form,
    FormDataConsumer,
    useTranslate,
    TextInput,
    NumberInput,
    BooleanInput,
    DateInput,
    SelectInput,
    ReferenceInput,
    ReferenceArrayInput,
    AutocompleteInput,
    SaveButton,
    Toolbar,
    Labeled,
    NumberField,
    required,
    useRecordContext,
    DeleteButton,
    useNotify,
    useRedirect,
    useEditContext,
    EditBase,
    useGetOne,
} from 'react-admin';
import { useWatch, useFormContext } from "react-hook-form";
import { Stack, Grid, Box, Typography, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
import DialogCloseButton from "../../../components/DialogCloseButton";
import EditBaseAside from "../../../components/EditBaseAside";
import MemoInput from "../../../components/MemoInput";
import StatusSelectInput from "../../../components/StatusSelectInput";
const EditToolbar = () => {
    const form = useFormContext();
    const { record, isPending } = useEditContext();
    const redirect = useRedirect();
    return (
        <Toolbar sx={{ justifyContent: 'end' }}>
            <SaveButton type="button" mutationOptions={{
                onSuccess: () => {
                    redirect('/dictType/' + record?.dictTypeId)
                }
            }} />
            <DeleteButton mutationMode="optimistic" />
        </Toolbar>
    )
}
const DictDataEdit = (props) => {
    const { open, setOpen, record } = props;
    const translate = useTranslate();
    const handleClose = (event, reason) => {
        if (reason !== "backdropClick") {
            setOpen(false);
        }
    };
    const {data, isPending, } = useGetOne('dictData', {id: record?.id});
    if (data == null || data == undefined) {return}
    return (
        <>
            <Edit
                id={record?.id}
                resource="dictData"
                mutationMode={EDIT_MODE}
            >
                <Dialog
                    open={open}
                    onClose={handleClose}
                    aria-labelledby="form-dialog-title"
                    fullWidth
                    disableRestoreFocus
                    maxWidth="md"
                >
                    <Form>
                        <DialogTitle id="form-dialog-title" sx={{
                            position: 'sticky',
                            top: 0,
                            backgroundColor: 'background.paper',
                            zIndex: 1000
                        }}
                        >
                            {translate('update.title')}
                            <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
                                <DialogCloseButton onClose={handleClose} />
                            </Box>
                        </DialogTitle>
                        <DialogContent sx={{ mt: 2 }}>
                            <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
                                <Grid item xs={12} md={8}>
                                    <Typography variant="h6" gutterBottom>
                                        {translate('common.edit.title.main')}
                                    </Typography>
                                    <Stack direction='row' gap={2}>
                                        <TextInput
                                            label="table.field.dictData.dictTypeId"
                                            source="dictTypeId"
                                            readOnly
                                            defaultValue={record?.id}
                                            parse={v => v}
                                            validate={required()}
                                        />
                                    </Stack>
                                    <Stack direction='row' gap={2}>
                                        <TextInput
                                            label="table.field.dictData.dictTypeCode"
                                            source="dictTypeCode"
                                            defaultValue={record?.code}
                                            readOnly
                                            parse={v => v}
                                            validate={required()}
                                        />
                                    </Stack>
                                    <Stack direction='row' gap={2}>
                                        <TextInput
                                            label="table.field.dictData.value"
                                            source="value"
                                            parse={v => v}
                                            validate={required()}
                                        />
                                    </Stack>
                                    <Stack direction='row' gap={2}>
                                        <TextInput
                                            label="table.field.dictData.label"
                                            source="label"
                                            validate={required()}
                                            parse={v => v}
                                        />
                                    </Stack>
                                    <Stack direction='row' gap={2}>
                                        <NumberInput
                                            label="table.field.dictData.sort"
                                            source="sort"
                                        />
                                    </Stack>
                                </Grid>
                                <Grid item xs={12} md={4}>
                                    <Typography variant="h6" gutterBottom>
                                        {translate('common.edit.title.common')}
                                    </Typography>
                                    <StatusSelectInput />
                                    <Box mt="2em" />
                                    <MemoInput />
                                </Grid>
                            </Grid>
                        </DialogContent>
                        <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
                            <Toolbar sx={{ width: '100%', justifyContent: 'end' }}  >
                                <SaveButton type="button" mutationOptions={{
                                    onSuccess: () => {
                                        setOpen(false)
                                    }
                                }} />
                            </Toolbar>
                        </DialogActions>
                    </Form>
                </Dialog>
            </Edit >
        </>
    )
}
export default DictDataEdit;