From 4496b9019ba423dd1c51c719bcc0a5938d90fff9 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 22 四月 2025 17:33:18 +0800
Subject: [PATCH] #修改优化  1. DO单明细编码优化  2. DO单明细新增优化  3. 出库单新增单据增加新单据功能

---
 rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 171 insertions(+), 0 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx b/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx
new file mode 100644
index 0000000..ec66955
--- /dev/null
+++ b/rsf-admin/src/page/orders/outStock/OutOrderCreate.jsx
@@ -0,0 +1,171 @@
+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 OutOrderCreate = (props) => {
+    const { open, setOpen } = props;
+    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')) || [];
+    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 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="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
+                >
+                    <Form
+                        resource="outStock"
+                    >
+                        <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={12} display="flex" gap={1}>
+                                    <TextInput
+                                        label="table.field.asnOrder.poCode"
+                                        source="poCode"
+                                        parse={v => v}
+                                    />
+                                    <NumberInput
+                                        label="table.field.asnOrder.poId"
+                                        source="poId"
+                                    />
+                                    {/* <AutocompleteInput
+                                        choices={dicts}
+                                        optionText="label"
+                                        label="table.field.asnOrder.type"
+                                        source="type"
+                                        optionValue="value"
+                                        validate={required()}
+                                        parse={v => v}
+                                    /> */}
+                                </Grid>
+                                <Grid item xs={12} display="flex" gap={1}>
+                                    <AutocompleteInput
+                                        choices={business}
+                                        optionText="label"
+                                        label="table.field.asnOrder.wkType"
+                                        source="wkType"
+                                        optionValue="value"
+                                        validate={required()}
+                                        parse={v => v}
+                                    />
+                                    <NumberInput
+                                        label="table.field.asnOrder.anfme"
+                                        source="anfme"
+                                        validate={required()}
+                                    />
+                                    <NumberInput
+                                        label="table.field.asnOrder.qty"
+                                        source="qty"
+                                    />
+                                </Grid>
+                                <Grid item xs={12} display="flex" gap={1}>
+                                    <TextInput
+                                        label="table.field.asnOrder.logisNo"
+                                        source="logisNo"
+                                        parse={v => v}
+                                    />
+                                    <DateInput
+                                        label="table.field.asnOrder.arrTime"
+                                        source="arrTime"
+                                    />
+                                    <SelectInput
+                                        label="table.field.asnOrder.rleStatus"
+                                        source="rleStatus"
+                                        choices={[
+                                            { id: 0, name: ' 姝e父' },
+                                            { id: 1, name: ' 宸查噴鏀�' },
+                                        ]}
+                                    />
+                                </Grid>
+                                <Grid item xs={4} 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 OutOrderCreate;

--
Gitblit v1.9.1