From cc2984eeb289b54cfa193dde558417c46f309e8f Mon Sep 17 00:00:00 2001 From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com> Date: 星期日, 13 四月 2025 19:32:38 +0800 Subject: [PATCH] #修改 1. 采购单界面优化及修改 --- rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx | 199 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 199 insertions(+), 0 deletions(-) diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx new file mode 100644 index 0000000..07570e0 --- /dev/null +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx @@ -0,0 +1,199 @@ +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, + Form, + useRecordContext, + useGetOne, + DeleteButton, + EditBase, +} from 'react-admin'; +import { useWatch, useFormContext } from "react-hook-form"; +import { Stack, Grid, Box, Typography, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'; +import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; +import DialogCloseButton from "../../components/DialogCloseButton"; +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: 'end' }}> + <SaveButton /> + <DeleteButton mutationMode="optimistic" /> + </Toolbar> + ) +} + +const AsnOrderItemEdit = (props) => { + const { open, setOpen, record } = props; + const translate = useTranslate(); + const handleClose = (event, reason) => { + if (reason !== "backdropClick") { + setOpen(false); + } + }; + const { data, isPending, } = useGetOne('asnOrderItem', { id: record?.id }); + if (data == null || data == undefined) { return } + + return ( + <EditBase + id={record?.id} + resource="asnOrderItem" + mutationMode={EDIT_MODE} + actions={<CustomerTopToolBar />} + > + <Dialog + open={open} + onClose={handleClose} + aria-labelledby="form-dialog-title" + fullWidth + disableRestoreFocus + maxWidth="md" + > + <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 }}> + <Form + shouldUnregister + warnWhenUnsavedChanges + mode="onTouched" + defaultValues={{}} + > + <Grid container width={{ xs: '100%', xl: '100%' }}> + <Grid item xs={24} md={14}> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.asnOrderItem.asnId" + source="asnId" + readOnly + /> + <TextInput + label="table.field.asnOrderItem.asnCode" + source="asnCode" + readOnly + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.poDetlId" + source="poDetlId" + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.poDetlCode" + source="poDetlCode" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.asnOrderItem.matnrId" + source="matnrId" + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.maktx" + source="maktx" + parse={v => v} + /> + <NumberInput + label="table.field.asnOrderItem.anfme" + source="anfme" + validate={required()} + /> + <TextInput + label="table.field.asnOrderItem.stockUnit" + source="stockUnit" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.asnOrderItem.purQty" + source="purQty" + validate={required()} + /> + <TextInput + label="table.field.asnOrderItem.purUnit" + source="purUnit" + parse={v => v} + /> + <NumberInput + label="table.field.asnOrderItem.qty" + source="qty" + /> + <TextInput + label="table.field.asnOrderItem.splrCode" + source="splrCode" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.asnOrderItem.splrName" + source="splrName" + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.qrcode" + source="qrcode" + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.barcode" + source="barcode" + parse={v => v} + /> + <TextInput + label="table.field.asnOrderItem.packName" + source="packName" + parse={v => v} + /> + </Stack> + </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> + </DialogContent> + </Dialog> + </EditBase > + ) +} + +export default AsnOrderItemEdit; -- Gitblit v1.9.1