From 61e8382caf798f4d20078297c85a63884041329d Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 21 四月 2025 15:16:27 +0800
Subject: [PATCH] 新增DO单据
---
/dev/null | 173 --------------
rsf-admin/src/page/orders/delivery/DeliveryCreate.jsx | 6
rsf-admin/src/page/orders/delivery/DeliveryItemEdit.jsx | 204 +++++++++++++++++
rsf-admin/src/page/orders/delivery/index.jsx | 0
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java | 32 ++
rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx | 47 ++-
rsf-admin/src/page/orders/delivery/DeliveryList.jsx | 23 -
rsf-admin/src/page/ResourceContent.js | 3
rsf-admin/src/page/orders/delivery/DeliveryItemCreate.jsx | 15
rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx | 157 +++++++++++++
rsf-admin/src/page/orders/delivery/DeliveryPanel.jsx | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java | 5
12 files changed, 450 insertions(+), 217 deletions(-)
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index 2d9e7be..256cf8a 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -41,6 +41,7 @@
import task from './task';
import taskLog from './histories/taskLog';
import stock from './orders/stock';
+import delivery from './orders/delivery';
const ResourceContent = (node) => {
switch (node.component) {
@@ -118,6 +119,8 @@
return taskLog;
case 'stock':
return stock;
+ case 'delivery':
+ return delivery;
default:
return {
list: ListGuesser,
diff --git a/rsf-admin/src/page/delivery/DeliveryEdit.jsx b/rsf-admin/src/page/delivery/DeliveryEdit.jsx
deleted file mode 100644
index 090e940..0000000
--- a/rsf-admin/src/page/delivery/DeliveryEdit.jsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const DeliveryEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <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.delivery.code"
- source="code"
- parse={v => v}
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.delivery.platId"
- source="platId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.delivery.type"
- source="type"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.delivery.wkType"
- source="wkType"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.delivery.source"
- source="source"
- parse={v => v}
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.delivery.anfme"
- source="anfme"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.delivery.qty"
- source="qty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.delivery.workQty"
- source="workQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.delivery.platCode"
- source="platCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <DateInput
- label="table.field.delivery.startTime"
- source="startTime"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <DateInput
- label="table.field.delivery.endTime"
- source="endTime"
- />
- </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>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default DeliveryEdit;
diff --git a/rsf-admin/src/page/delivery/DeliveryItemEdit.jsx b/rsf-admin/src/page/delivery/DeliveryItemEdit.jsx
deleted file mode 100644
index f903642..0000000
--- a/rsf-admin/src/page/delivery/DeliveryItemEdit.jsx
+++ /dev/null
@@ -1,173 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const DeliveryItemEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <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}>
- <NumberInput
- label="table.field.deliveryItem.deliveryId"
- source="deliveryId"
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.platItemId"
- source="platItemId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.matnrCode"
- source="matnrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.matnrName"
- source="matnrName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.fieldsIndex"
- source="fieldsIndex"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.unit"
- source="unit"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.deliveryItem.anfme"
- source="anfme"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.deliveryItem.qty"
- source="qty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.deliveryItem.nromQty"
- source="nromQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.deliveryItem.printQty"
- source="printQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.splrName"
- source="splrName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.splrCode"
- source="splrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.deliveryItem.splrBatch"
- source="splrBatch"
- parse={v => v}
- />
- </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>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default DeliveryItemEdit;
diff --git a/rsf-admin/src/page/delivery/DeliveryCreate.jsx b/rsf-admin/src/page/orders/delivery/DeliveryCreate.jsx
similarity index 97%
rename from rsf-admin/src/page/delivery/DeliveryCreate.jsx
rename to rsf-admin/src/page/orders/delivery/DeliveryCreate.jsx
index 15106f0..eeccfba 100644
--- a/rsf-admin/src/page/delivery/DeliveryCreate.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryCreate.jsx
@@ -27,9 +27,9 @@
Grid,
Box,
} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import StatusSelectInput from "../../components/StatusSelectInput";
+import MemoInput from "../../components/MemoInput";
const DeliveryCreate = (props) => {
const { open, setOpen } = props;
diff --git a/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx b/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx
new file mode 100644
index 0000000..0f80dae
--- /dev/null
+++ b/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx
@@ -0,0 +1,157 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Edit,
+ SimpleForm,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+ DeleteButton,
+} from 'react-admin';
+import { useWatch, useFormContext } from "react-hook-form";
+import { Stack, Grid, Box, Typography } from '@mui/material';
+import * as Common from '@/utils/common';
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import EditBaseAside from "../../components/EditBaseAside";
+import CustomerTopToolBar from "../../components/EditTopToolBar";
+import MemoInput from "../../components/MemoInput";
+import StatusSelectInput from "../../components/StatusSelectInput";
+import DeliveryItemList from "./DeliveryItemList";
+
+const FormToolbar = () => {
+ const { getValues } = useFormContext();
+
+ return (
+ <Toolbar sx={{ justifyContent: 'end' }}>
+ <SaveButton />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ )
+}
+
+const DeliveryEdit = () => {
+ const translate = useTranslate();
+ const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_order_type')) || [];
+ const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
+
+ return (
+ <>
+ <Edit
+ redirect="list"
+ mutationMode={EDIT_MODE}
+ actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
+ >
+ <SimpleForm
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ >
+ <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={16} md={10}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.delivery.code"
+ source="code"
+ parse={v => v}
+ autoFocus
+ />
+ <TextInput
+ label="table.field.delivery.platId"
+ source="platId"
+ parse={v => v}
+ />
+ <AutocompleteInput
+ choices={dicts}
+ optionText="label"
+ label="table.field.asnOrder.type"
+ source="type"
+ optionValue="value"
+ parse={v => v}
+ readOnly
+ />
+ <AutocompleteInput
+ choices={business}
+ optionText="label"
+ label="table.field.asnOrder.wkType"
+ source="wkType"
+ optionValue="value"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.delivery.source"
+ source="source"
+ parse={v => v}
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.delivery.anfme"
+ source="anfme"
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.delivery.qty"
+ source="qty"
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.delivery.workQty"
+ source="workQty"
+ validate={required()}
+ />
+ <TextInput
+ label="table.field.delivery.platCode"
+ source="platCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <DateInput
+ label="table.field.delivery.startTime"
+ source="startTime"
+ />
+ <DateInput
+ label="table.field.delivery.endTime"
+ source="endTime"
+ />
+ </Stack>
+ </Grid>
+ <Grid item xs={8} md={2}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
+ </Grid>
+ </SimpleForm>
+ </Edit >
+ <Grid>
+ <Box mt="2em"></Box>
+ <DeliveryItemList />
+ </Grid>
+ </>
+ )
+}
+
+export default DeliveryEdit;
diff --git a/rsf-admin/src/page/delivery/DeliveryItemCreate.jsx b/rsf-admin/src/page/orders/delivery/DeliveryItemCreate.jsx
similarity index 94%
rename from rsf-admin/src/page/delivery/DeliveryItemCreate.jsx
rename to rsf-admin/src/page/orders/delivery/DeliveryItemCreate.jsx
index 59c04d7..c9c4eb4 100644
--- a/rsf-admin/src/page/delivery/DeliveryItemCreate.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryItemCreate.jsx
@@ -27,12 +27,12 @@
Grid,
Box,
} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import StatusSelectInput from "../../components/StatusSelectInput";
+import MemoInput from "../../components/MemoInput";
const DeliveryItemCreate = (props) => {
- const { open, setOpen } = props;
+ const { open, setOpen, record } = props;
const translate = useTranslate();
const notify = useNotify();
@@ -84,11 +84,12 @@
</DialogTitle>
<DialogContent sx={{ mt: 2 }}>
<Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
+ <Grid item xs={6} display="flex" gap={1} sx={{display : "none"}}>
+ <NumberInput
label="table.field.deliveryItem.deliveryId"
source="deliveryId"
- autoFocus
+ defaultValue={record?.id}
+ readOnly
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
diff --git a/rsf-admin/src/page/orders/delivery/DeliveryItemEdit.jsx b/rsf-admin/src/page/orders/delivery/DeliveryItemEdit.jsx
new file mode 100644
index 0000000..4eb91dc
--- /dev/null
+++ b/rsf-admin/src/page/orders/delivery/DeliveryItemEdit.jsx
@@ -0,0 +1,204 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Edit,
+ SimpleForm,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+
+ Form,
+ DeleteButton,
+ useGetOne,
+ EditBase,
+} from 'react-admin';
+import { useWatch, useFormContext } from "react-hook-form";
+import { Stack, Grid, Box, Typography, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
+import * as Common from '@/utils/common';
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import EditBaseAside from "../../components/EditBaseAside";
+import CustomerTopToolBar from "../../components/EditTopToolBar";
+import MemoInput from "../../components/MemoInput";
+import StatusSelectInput from "../../components/StatusSelectInput";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import { Visibility } from "@mui/icons-material";
+
+const FormToolbar = () => {
+ const { getValues } = useFormContext();
+
+ return (
+ <Toolbar sx={{ justifyContent: 'space-between' }}>
+ <SaveButton />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ )
+}
+
+const DeliveryItemEdit = (props) => {
+ const { open, setOpen, record } = props;
+ const translate = useTranslate();
+
+ const handleClose = (event, reason) => {
+ if (reason !== "backdropClick") {
+ setOpen(false);
+ }
+ };
+ const { data, isPending, } = useGetOne('deliveryItem', { id: record?.id });
+ if (data == null || data == undefined) { return }
+
+ return (
+ <>
+ <Dialog
+ open={open}
+ onClose={handleClose}
+ aria-labelledby="form-dialog-title"
+ fullWidth
+ disableRestoreFocus
+ maxWidth="lg">
+ <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 }}>
+ <EditBase
+ resource={'deliveryItem'}
+ id={record?.id}
+ mutationMode={EDIT_MODE}
+ // actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
+ >
+ <Form
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ // validate={(values) => { }}
+ >
+ <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={16} md={10}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.deliveryItem.deliveryId"
+ source="deliveryId"
+ autoFocus
+ />
+ <TextInput
+ label="table.field.deliveryItem.platItemId"
+ source="platItemId"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.deliveryItem.matnrCode"
+ source="matnrCode"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.deliveryItem.matnrName"
+ source="matnrName"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.deliveryItem.fieldsIndex"
+ source="fieldsIndex"
+ parse={v => v}
+ />
+
+ <TextInput
+ label="table.field.deliveryItem.unit"
+ source="unit"
+ parse={v => v}
+ />
+ <NumberInput
+ label="table.field.deliveryItem.anfme"
+ source="anfme"
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.deliveryItem.qty"
+ source="qty"
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.deliveryItem.nromQty"
+ source="nromQty"
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.deliveryItem.printQty"
+ source="printQty"
+ validate={required()}
+ />
+ <TextInput
+ label="table.field.deliveryItem.splrName"
+ source="splrName"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.deliveryItem.splrCode"
+ source="splrCode"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.deliveryItem.splrBatch"
+ source="splrBatch"
+ parse={v => v}
+ />
+ </Stack>
+ </Grid>
+ <Grid item xs={8} md={2}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
+ </Grid>
+ <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>
+ </EditBase >
+ </DialogContent>
+ </Dialog>
+ </>
+
+
+ )
+}
+
+export default DeliveryItemEdit;
diff --git a/rsf-admin/src/page/delivery/DeliveryItemList.jsx b/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
similarity index 82%
rename from rsf-admin/src/page/delivery/DeliveryItemList.jsx
rename to rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
index 25a58a1..3cfd440 100644
--- a/rsf-admin/src/page/delivery/DeliveryItemList.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
@@ -31,18 +31,20 @@
ReferenceArrayInput,
AutocompleteInput,
DeleteButton,
+ useGetOne,
+ useGetRecordId,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
import DeliveryItemCreate from "./DeliveryItemCreate";
-import DeliveryItemPanel from "./DeliveryItemPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
+import EmptyData from "../../components/EmptyData";
+import MyCreateButton from "../../components/MyCreateButton";
+import MyExportButton from '../../components/MyExportButton';
+import PageDrawer from "../../components/PageDrawer";
+import MyField from "../../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
+import DeliveryItemEdit from "./DeliveryItemEdit";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -91,13 +93,16 @@
const DeliveryItemList = () => {
const translate = useTranslate();
-
+ const doId = useGetRecordId();
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
-
+ const [editDialog, setEditDialog] = useState(false);
+ const [select, setSelect] = useState({});
+ const { data: dicts, isPending, error } = useGetOne('delivery', { id: doId });
return (
<Box display="flex">
<List
+ resource="deliveryItem"
sx={{
flexGrow: 1,
transition: (theme) =>
@@ -109,6 +114,7 @@
title={"menu.deliveryItem"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
filters={filters}
+ filter={{deliveryId: doId}}
sort={{ field: "create_time", order: "desc" }}
actions={(
<TopToolbar>
@@ -123,10 +129,13 @@
<StyledDatagrid
preferenceKey='deliveryItem'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <DeliveryItemPanel />}
+ rowClick={(id, resource, record) => {
+ setSelect(record)
+ setEditDialog(true)
+ }}
+ expand={false}
expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
+ omit={['id', 'createTime','deliveryId','fieldsIndex','qty', 'printQty', 'nromQty', 'createBy', 'memo']}
>
<NumberField source="id" />
<NumberField source="deliveryId" label="table.field.deliveryItem.deliveryId" />
@@ -142,26 +151,26 @@
<TextField source="splrName" label="table.field.deliveryItem.splrName" />
<TextField source="splrCode" label="table.field.deliveryItem.splrCode" />
<TextField source="splrBatch" label="table.field.deliveryItem.splrBatch" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
<DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
</WrapperField>
</StyledDatagrid>
</List>
+ <DeliveryItemEdit
+ open={editDialog}
+ setOpen={setEditDialog}
+ record={select}
+ />
<DeliveryItemCreate
open={createDialog}
setOpen={setCreateDialog}
+ record={dicts}
/>
<PageDrawer
title='DeliveryItem Detail'
diff --git a/rsf-admin/src/page/delivery/DeliveryList.jsx b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx
similarity index 90%
rename from rsf-admin/src/page/delivery/DeliveryList.jsx
rename to rsf-admin/src/page/orders/delivery/DeliveryList.jsx
index a9235f9..5d7dfae 100644
--- a/rsf-admin/src/page/delivery/DeliveryList.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx
@@ -36,11 +36,11 @@
import { styled } from '@mui/material/styles';
import DeliveryCreate from "./DeliveryCreate";
import DeliveryPanel from "./DeliveryPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
+import EmptyData from "../../components/EmptyData";
+import MyCreateButton from "../../components/MyCreateButton";
+import MyExportButton from '../../components/MyExportButton';
+import PageDrawer from "../../components/PageDrawer";
+import MyField from "../../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
@@ -60,9 +60,8 @@
const filters = [
<SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
+ <DateInput label='common.time.after' source="timeStart" />,
+ <DateInput label='common.time.before' source="timeEnd" />,
<TextInput source="code" label="table.field.delivery.code" />,
<TextInput source="platId" label="table.field.delivery.platId" />,
<TextInput source="type" label="table.field.delivery.type" />,
@@ -74,7 +73,6 @@
<TextInput source="platCode" label="table.field.delivery.platCode" />,
<DateInput source="startTime" label="table.field.delivery.startTime" />,
<DateInput source="endTime" label="table.field.delivery.endTime" />,
-
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
label="common.field.status"
@@ -89,7 +87,6 @@
const DeliveryList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
@@ -122,15 +119,15 @@
preferenceKey='delivery'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
rowClick={(id, resource, record) => false}
- expand={() => <DeliveryPanel />}
+ expand={false}
expandSingle={true}
omit={['id', 'createTime', 'createBy', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy','createTime']}
>
<NumberField source="id" />
<TextField source="code" label="table.field.delivery.code" />
<TextField source="platId" label="table.field.delivery.platId" />
- <TextField source="type" label="table.field.delivery.type" />
- <TextField source="wkType" label="table.field.delivery.wkType" />
+ <TextField source="type$" label="table.field.delivery.type" />
+ <TextField source="wkType$" label="table.field.delivery.wkType" />
<TextField source="source" label="table.field.delivery.source" />
<NumberField source="anfme" label="table.field.delivery.anfme" />
<NumberField source="qty" label="table.field.delivery.qty" />
diff --git a/rsf-admin/src/page/delivery/DeliveryPanel.jsx b/rsf-admin/src/page/orders/delivery/DeliveryPanel.jsx
similarity index 98%
rename from rsf-admin/src/page/delivery/DeliveryPanel.jsx
rename to rsf-admin/src/page/orders/delivery/DeliveryPanel.jsx
index 056aa96..9243f6a 100644
--- a/rsf-admin/src/page/delivery/DeliveryPanel.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryPanel.jsx
@@ -4,7 +4,7 @@
useTranslate,
useRecordContext,
} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
+import PanelTypography from "../../components/PanelTypography";
import * as Common from '@/utils/common'
const DeliveryPanel = () => {
diff --git a/rsf-admin/src/page/delivery/index.jsx b/rsf-admin/src/page/orders/delivery/index.jsx
similarity index 100%
rename from rsf-admin/src/page/delivery/index.jsx
rename to rsf-admin/src/page/orders/delivery/index.jsx
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java
index 30cba35..6403956 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java
@@ -1,7 +1,12 @@
package com.vincent.rsf.server.manager.entity;
import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.*;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.service.DictDataService;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -203,6 +208,31 @@
// null // 澶囨敞
// );
+
+ public String getType$(){
+ if (Cools.isEmpty(this.type)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE).eq(DictData::getValue, this.type));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
+ public String getWkType$(){
+ if (Cools.isEmpty(this.wkType)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE).eq(DictData::getValue, this.wkType));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
public String getStartTime$(){
if (Cools.isEmpty(this.startTime)){
return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
index 94c834d..05b6fc6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
@@ -40,6 +40,9 @@
@ApiModelProperty(value= "涓诲崟鏍囪瘑")
private Long deliveryId;
+ @ApiModelProperty("涓诲崟缂栫爜")
+ private String deliveryCode;
+
/**
* erp鏄庣粏鏍囪瘑
*/
@@ -213,6 +216,8 @@
// null // 澶囨敞
// );
+
+
public String getStatus$(){
if (null == this.status){ return null; }
switch (this.status){
--
Gitblit v1.9.1