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"; 
 | 
import { 
 | 
  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 translate = useTranslate(); 
 | 
  const notify = useNotify(); 
 | 
  
 | 
  const handleClose = (event, reason) => { 
 | 
    if (reason !== "backdropClick") { 
 | 
      setOpen(false); 
 | 
    } 
 | 
  }; 
 | 
  
 | 
  const handleSuccess = async (data) => { 
 | 
    setOpen(false); 
 | 
    notify("common.response.success"); 
 | 
  }; 
 | 
  const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_rule_type')) || []; 
 | 
  
 | 
  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 }} 
 | 
      > 
 | 
        <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, 
 | 
              }} 
 | 
            > 
 | 
              {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: "end" }}> 
 | 
                <SaveButton /> 
 | 
              </Toolbar> 
 | 
            </DialogActions> 
 | 
          </Form> 
 | 
        </Dialog> 
 | 
      </CreateBase> 
 | 
    </> 
 | 
  ); 
 | 
}; 
 | 
  
 | 
export default SerialRuleCreate; 
 |