| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
 | | 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 WaveCreate = (props) => { |  |     const { open, setOpen } = props; |  |   |  |     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> |  |                         <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.wave.code" |  |                                         source="code" |  |                                         parse={v => v} |  |                                         autoFocus |  |                                     /> |  |                                 </Grid> |  |                                 <Grid item xs={6} display="flex" gap={1}> |  |                                     <SelectInput |  |                                         label="table.field.wave.type" |  |                                         source="type" |  |                                         choices={[ |  |                                             { id: 0, name: '手动' }, |  |                                             { id: 1, name: '自动' }, |  |                                         ]} |  |                                     /> |  |                                 </Grid> |  |                                 <Grid item xs={6} display="flex" gap={1}> |  |                                     <SelectInput |  |                                         label="table.field.wave.exceStatus" |  |                                         source="exceStatus" |  |                                         choices={[ |  |                                             { id: 0, name: '初始化' }, |  |                                             { id: 1, name: '生成任务' }, |  |                                             { id: 2, name: '任务播种' }, |  |                                             { id: 3, name: '完成' }, |  |                                         ]} |  |                                     /> |  |                                 </Grid> |  |                                 <Grid item xs={6} display="flex" gap={1}> |  |                                     <NumberInput |  |                                         label="table.field.wave.anfme" |  |                                         source="anfme" |  |                                     /> |  |                                 </Grid> |  |                                 <Grid item xs={6} display="flex" gap={1}> |  |                                     <NumberInput |  |                                         label="table.field.wave.qty" |  |                                         source="qty" |  |                                     /> |  |                                 </Grid> |  |                                 <Grid item xs={6} display="flex" gap={1}> |  |                                     <NumberInput |  |                                         label="table.field.wave.orderNum" |  |                                         source="orderNum" |  |                                     /> |  |                                 </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 WaveCreate; | 
 |