skyouc
3 天以前 27f59f44345d044967e2048f09dbd704f90ce3db
rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
@@ -1,180 +1,203 @@
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 WarehouseAreasCreate = (props) => {
    const { open, setOpen } = props;
  const { open, setOpen } = props;
    const translate = useTranslate();
    const notify = useNotify();
  const translate = useTranslate();
  const notify = useNotify();
  const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_ware_areas_type')) || [];
  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 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="md" // '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.warehouseAreas.uuid"
                                        source="uuid"
                                        parse={v => v}
                                        autoFocus
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.warehouseAreas.name"
                                        source="name"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.warehouseAreas.code"
                                        source="code"
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <ReferenceInput
                                        source="shipperId"
                                        reference="shipper"
                                    >
                                        <AutocompleteInput
                                            label="table.field.warehouseAreas.shipperId"
                                            optionText="name"
                                            filterToQuery={(val) => ({ name: val })}
                                        />
                                    </ReferenceInput>
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <NumberInput
                                        label="table.field.warehouseAreas.supplierId"
                                        source="supplierId"
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <SelectInput
                                        label="table.field.warehouseAreas.flagMinus"
                                        source="flagMinus"
                                        choices={[
                                            { id: 0, name: '否' },
                                            { id:  1, name: '是' },
                                        ]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <SelectInput
                                        label="table.field.warehouseAreas.flagLabelMange"
                                        source="flagLabelMange"
                                        choices={[
                                            { id: 0, name: ' 否' },
                                            { id:  1, name: ' 是' },
                                        ]}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                    <SelectInput
                                        label="table.field.warehouseAreas.flagMix"
                                        source="flagMix"
                                        choices={[
                                            { id: 0, name: '否' },
                                            { id:  1, name: '是' },
                                        ]}
                                    />
                                </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={12} display="flex" gap={1}>
                  <TextInput
                    label="table.field.warehouseAreas.name"
                    source="name"
                    validate={[required()]}
                    parse={(v) => v}
                  />
                  <TextInput
                    label="table.field.warehouseAreas.code"
                    source="code"
                    validate={[required()]}
                    parse={(v) => v}
                  />
                  <AutocompleteInput
                    choices={dicts}
                    optionText="label"
                    label="table.field.asnOrder.type"
                    source="type"
                    optionValue="value"
                    parse={v => v}
                  />
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <ReferenceInput
                    source="warehouseId"
                    reference="warehouse"
                  >
                    <AutocompleteInput
                      label="table.field.warehouseAreas.wareId"
                      optionText="name"
                      validate={[required()]}
                      filterToQuery={(val) => ({ name: val })}
                    />
                  </ReferenceInput>
                                <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>
        </>
    )
}
                  <ReferenceInput source="shipperId" reference="companys" filter={{ type: 'shipper' }}>
                    <AutocompleteInput
                      label="table.field.warehouseAreas.shipperId"
                      optionText="name"
                      filterToQuery={(val) => ({ name: val })}
                    />
                  </ReferenceInput>
                  <ReferenceInput source="supplierId" reference="companys" filter={{ type: 'supplier' }}>
                    <AutocompleteInput
                      label="table.field.warehouseAreas.supplierId"
                      optionText="name"
                      filterToQuery={(val) => ({ name: val })}
                    />
                  </ReferenceInput>
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <SelectInput
                    label="table.field.warehouseAreas.flagMinus"
                    source="flagMinus"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                  <SelectInput
                    label="table.field.warehouseAreas.flagLabelMange"
                    source="flagLabelMange"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: " 否" },
                      { id: 1, name: " 是" },
                    ]}
                  />
                  <SelectInput
                    label="table.field.warehouseAreas.flagMix"
                    source="flagMix"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                </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>
    </>
  );
};
export default WarehouseAreasCreate;