From b0932123072a837e376e64de2c3417f045462cc3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 08 四月 2025 17:27:32 +0800
Subject: [PATCH] 新增PDA一键收货功能
---
rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx | 366 ++++++++++++++++++++++++++++------------------------
1 files changed, 196 insertions(+), 170 deletions(-)
diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
index 33ac76b..ea0d05f 100644
--- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
+++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
@@ -1,187 +1,213 @@
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 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}
- validate={[required()]}
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.warehouseAreas.name"
- source="name"
- validate={[required()]}
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.warehouseAreas.code"
- source="code"
- validate={[required()]}
- 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"
- validate={[required()]}
- 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"
- validate={[required()]}
- choices={[
- { id: 0, name: '鍚�' },
- { id: 1, name: '鏄�' },
- ]}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <SelectInput
- label="table.field.warehouseAreas.flagLabelMange"
- source="flagLabelMange"
- validate={[required()]}
- choices={[
- { id: 0, name: ' 鍚�' },
- { id: 1, name: ' 鏄�' },
- ]}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <SelectInput
- label="table.field.warehouseAreas.flagMix"
- source="flagMix"
- validate={[required()]}
- 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={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.warehouseAreas.uuid"
+ source="uuid"
+ parse={(v) => v}
+ validate={[required()]}
+ autoFocus
+ />
+ </Grid> */}
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.warehouseAreas.name"
+ source="name"
+ validate={[required()]}
+ parse={(v) => v}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.warehouseAreas.code"
+ source="code"
+ validate={[required()]}
+ parse={(v) => v}
+ />
+ </Grid>
+ <Grid item xs={6} 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>
+ <Grid item xs={6} display="flex" gap={1}>
+ <ReferenceInput source="shipperId" reference="companys" filter={{ type: 'shipper' }}>
+ <AutocompleteInput
+ label="table.field.warehouseAreas.shipperId"
+ optionText="name"
+ filterToQuery={(val) => ({ name: val })}
+ />
+ </ReferenceInput>
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <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={6} display="flex" gap={1}>
+ <SelectInput
+ label="table.field.warehouseAreas.flagMinus"
+ source="flagMinus"
+ validate={[required()]}
+ choices={[
+ { id: 0, name: "鍚�" },
+ { id: 1, name: "鏄�" },
+ ]}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <SelectInput
+ label="table.field.warehouseAreas.flagLabelMange"
+ source="flagLabelMange"
+ validate={[required()]}
+ choices={[
+ { id: 0, name: " 鍚�" },
+ { id: 1, name: " 鏄�" },
+ ]}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <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>
- </>
- )
-}
+ <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;
--
Gitblit v1.9.1