DESKTOP-LMJ82IJ\Eno
2025-04-13 cc2984eeb289b54cfa193dde558417c46f309e8f
rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx
@@ -1,161 +1,186 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import {
    CreateBase,
    useTranslate,
    TextInput,
    NumberInput,
    BooleanInput,
    DateInput,
    SaveButton,
    SelectInput,
    ReferenceInput,
    ReferenceArrayInput,
    AutocompleteInput,
    Toolbar,
    required,
    useDataProvider,
    useNotify,
    Form,
    useCreateController,
} from 'react-admin';
  CreateBase,
  useTranslate,
  TextInput,
  NumberInput,
  BooleanInput,
  DateInput,
  SaveButton,
  SelectInput,
  ReferenceInput,
  ReferenceArrayInput,
  AutocompleteInput,
  Toolbar,
  required,
  useDataProvider,
  useNotify,
  Form,
  useCreateController,
} from "react-admin";
import {
    Dialog,
    DialogActions,
    DialogContent,
    DialogTitle,
    Stack,
    Grid,
    Box,
} from '@mui/material';
  Dialog,
  DialogActions,
  DialogContent,
  DialogTitle,
  Stack,
  Grid,
  Box,
} from "@mui/material";
import DialogCloseButton from "../../components/DialogCloseButton";
import StatusSelectInput from "../../components/StatusSelectInput";
import MemoInput from "../../components/MemoInput";
const SerialRuleCreate = (props) => {
    const { open, setOpen } = props;
  const { open, setOpen } = props;
    const translate = useTranslate();
    const notify = useNotify();
  const translate = useTranslate();
  const notify = useNotify();
    const handleClose = (event, reason) => {
        if (reason !== "backdropClick") {
            setOpen(false);
        }
    };
  const handleClose = (event, reason) => {
    if (reason !== "backdropClick") {
      setOpen(false);
    }
  };
    const handleSuccess = async (data) => {
        setOpen(false);
        notify('common.response.success');
    };
  const handleSuccess = async (data) => {
    setOpen(false);
    notify("common.response.success");
  };
  const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_task_reset_type')) || [];
    const handleError = async (error) => {
        notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
    };
  const handleError = async (error) => {
    notify(error.message || "common.response.fail", {
      type: "error",
      messageArgs: { _: error.message },
    });
  };
    return (
        <>
            <CreateBase
                record={{}}
                transform={(data) => {
                    return data;
                }}
                mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
  return (
    <>
      <CreateBase
        record={{}}
        transform={(data) => {
          return data;
        }}
        mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
      >
        <Dialog
          open={open}
          onClose={handleClose}
          aria-labelledby="form-dialog-title"
          fullWidth
          disableRestoreFocus
          maxWidth="xl" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
        >
          <Form>
            <DialogTitle
              id="form-dialog-title"
              sx={{
                position: "sticky",
                top: 0,
                backgroundColor: "background.paper",
                zIndex: 1000,
              }}
            >
                <Dialog
                    open={open}
                    onClose={handleClose}
                    aria-labelledby="form-dialog-title"
                    fullWidth
                    disableRestoreFocus
                    maxWidth="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
                >
                    <Form>
                        <DialogTitle id="form-dialog-title" sx={{
                            position: 'sticky',
                            top: 0,
                            backgroundColor: 'background.paper',
                            zIndex: 1000
                        }}
                        >
                            {translate('create.title')}
                            <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
                                <DialogCloseButton onClose={handleClose} />
                            </Box>
                        </DialogTitle>
                        <DialogContent sx={{ mt: 2 }}>
                            <Grid container rowSpacing={2} columnSpacing={2}>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.code"
                                        source="code"
                                        parse={v => v}
                                        autoFocus
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.name"
                                        source="name"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.delimit"
                                        source="delimit"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.reset"
                                        source="reset"
                                        parse={v => v}
                                        validate={required()}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.resetDep"
                                        source="resetDep"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.currValue"
                                        source="currValue"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.serialRule.lastCode"
                                        source="lastCode"
                                        parse={v => v}
                                    />
                                </Grid>
              {translate("create.title")}
              <Box
                sx={{ position: "absolute", top: 8, right: 8, zIndex: 1001 }}
              >
                <DialogCloseButton onClose={handleClose} />
              </Box>
            </DialogTitle>
            <DialogContent sx={{ mt: 2 }}>
              <Grid container rowSpacing={2} columnSpacing={2}>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.code"
                    source="code"
                    parse={(v) => v}
                    autoFocus
                  />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.name"
                    source="name"
                    parse={(v) => v}
                  />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.delimit"
                    source="delimit"
                    parse={(v) => v}
                  />
                </Grid>
                {/* <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.reset"
                    source="reset"
                    parse={(v) => v}
                    validate={required()}
                  />
                </Grid> */}
                <Grid item xs={6} display="flex" gap={1}>
                  <AutocompleteInput
                    choices={dicts}
                    optionText="label"
                    label="table.field.serialRule.reset"
                    source="reset"
                    optionValue="value"
                    parse={v => v}
                    validate={[required()]} />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.resetDep"
                    source="resetDep"
                    parse={(v) => v}
                  />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.currValue"
                    source="currValue"
                    parse={(v) => v}
                  />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <TextInput
                    label="table.field.serialRule.lastCode"
                    source="lastCode"
                    parse={(v) => v}
                  />
                </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>
                        </DialogContent>
                        <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
                            <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }}  >
                                <SaveButton />
                            </Toolbar>
                        </DialogActions>
                    </Form>
                </Dialog>
            </CreateBase>
        </>
    )
}
                <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>
            </DialogContent>
            <DialogActions
              sx={{
                position: "sticky",
                bottom: 0,
                backgroundColor: "background.paper",
                zIndex: 1000,
              }}
            >
              <Toolbar sx={{ width: "100%", justifyContent: "space-between" }}>
                <SaveButton />
              </Toolbar>
            </DialogActions>
          </Form>
        </Dialog>
      </CreateBase>
    </>
  );
};
export default SerialRuleCreate;