#
vincentlu
3 天以前 44153e246cc041180f8544e05d81f5432b14a808
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
import React from "react";
import {
    Edit,
    SimpleForm,
    useTranslate,
    TextInput,
    NumberInput,
    SaveButton,
    Toolbar,
    required,
    DeleteButton,
} from 'react-admin';
import { Stack, Grid, Box, Typography, Divider } from '@mui/material';
import { EDIT_MODE } from '@/config/setting';
import EditBaseAside from "../components/EditBaseAside";
import CustomerTopToolBar from "../components/EditTopToolBar";
import MemoInput from "../components/MemoInput";
import StatusSelectInput from "../components/StatusSelectInput";
import ScopeField from "./ScopeField";
import CronField from "./CronField";
import { DEFAULT_SCOPE_TYPE } from "./guaranteeConstants";
 
const FormToolbar = () => {
    return (
        <Toolbar sx={{ justifyContent: 'space-between' }}>
            <SaveButton />
            <DeleteButton mutationMode="optimistic" />
        </Toolbar>
    )
}
 
const GuaranteeEditForm = () => {
    const translate = useTranslate();
 
    return (
        <SimpleForm
            shouldUnregister
            warnWhenUnsavedChanges
            toolbar={<FormToolbar />}
            mode="onTouched"
            defaultValues={{}}
        >
            <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
                <Grid item xs={12} md={7}>
                    <Typography variant="h6" gutterBottom>
                        {translate('common.edit.title.main')}
                    </Typography>
                    <Stack spacing={2}>
                        <TextInput
                            label="table.field.guarantee.name"
                            source="name"
                            parse={v => v}
                            validate={[required()]}
                            autoFocus
                        />
                        <ScopeField />
                        <CronField waitForValue />
                    </Stack>
                </Grid>
                <Grid item xs={12} md={5}>
                    <Typography variant="h6" gutterBottom>
                        {translate('common.edit.title.common')}
                    </Typography>
                    <Stack spacing={2}>
                        <StatusSelectInput />
                        <NumberInput
                            label="table.field.guarantee.requiredCount"
                            source="requiredCount"
                            validate={[required()]}
                            min={1}
                        />
                        <NumberInput
                            label="table.field.guarantee.minSoc"
                            source="minSoc"
                            validate={[required()]}
                            min={1}
                            max={100}
                        />
                        <NumberInput
                            label="table.field.guarantee.leadTime"
                            source="leadTime"
                            validate={[required()]}
                            min={1}
                        />
                        <Divider />
                        <MemoInput />
                    </Stack>
                </Grid>
            </Grid>
        </SimpleForm>
    )
}
 
const GuaranteeEditWrapper = () => (
    <Edit
        redirect="list"
        mutationMode={EDIT_MODE}
        actions={<CustomerTopToolBar />}
        aside={<EditBaseAside />}
        transform={(data) => ({
            ...data,
            cronExpr: (data.cronExpr || '').trim(),
            scopeValue: data.scopeType === DEFAULT_SCOPE_TYPE ? null : data.scopeValue,
        })}
    >
        <GuaranteeEditForm />
    </Edit>
);
 
export default GuaranteeEditWrapper;