update create & edit for /vehicle route

This commit is contained in:
maxim 2025-02-21 21:56:33 +03:00
parent a989b80642
commit 3a912e5494
3 changed files with 62 additions and 32 deletions

View File

@ -4,3 +4,8 @@ export const MEDIA_TYPES = [
{label: 'Фото', value: 1}, {label: 'Фото', value: 1},
{label: 'Видео', value: 2}, {label: 'Видео', value: 2},
] ]
export const VEHICLE_TYPES = [
{label: 'Трамвай', value: 1},
{label: 'Троллейбус', value: 2},
]

View File

@ -1,8 +1,10 @@
import {Autocomplete, Box, TextField} from '@mui/material' import {Autocomplete, Box, TextField, FormControl, InputLabel, Select, MenuItem, Typography} from '@mui/material'
import {Create, useAutocomplete} from '@refinedev/mui' import {Create, useAutocomplete} from '@refinedev/mui'
import {useForm} from '@refinedev/react-hook-form' import {useForm} from '@refinedev/react-hook-form'
import {Controller} from 'react-hook-form' import {Controller} from 'react-hook-form'
import {VEHICLE_TYPES} from '../../lib/constants'
export const VehicleCreate = () => { export const VehicleCreate = () => {
const { const {
saveButtonProps, saveButtonProps,
@ -30,23 +32,33 @@ export const VehicleCreate = () => {
fullWidth fullWidth
InputLabelProps={{shrink: true}} InputLabelProps={{shrink: true}}
type="number" type="number"
label={'Номер рейса'} label="Номер рейса"
name="tail_number" name="tail_number"
/> />
<TextField
{...register('type', { <FormControl fullWidth margin="normal" error={!!errors.type}>
required: 'Это поле является обязательным', <InputLabel id="vehicle-type-label">Выберите тип</InputLabel>
valueAsNumber: true, <Select
})} labelId="vehicle-type-label"
error={!!(errors as any)?.type} label="Выберите тип"
helperText={(errors as any)?.type?.message} {...register('type', {
margin="normal" required: 'Это поле является обязательным',
fullWidth valueAsNumber: true,
InputLabelProps={{shrink: true}} })}
type="number" defaultValue=""
label={'Тип'} >
name="type" {VEHICLE_TYPES.map((option) => (
/> <MenuItem key={option.value} value={option.value}>
{option.label}
</MenuItem>
))}
</Select>
{errors.type && (
<Typography variant="caption" color="error">
{!!(errors as any)?.message}
</Typography>
)}
</FormControl>
<Controller <Controller
control={control} control={control}

View File

@ -1,8 +1,10 @@
import {Autocomplete, Box, TextField} from '@mui/material' import {Autocomplete, Box, TextField, FormControl, InputLabel, Select, MenuItem, Typography} from '@mui/material'
import {Edit, useAutocomplete} from '@refinedev/mui' import {Edit, useAutocomplete} from '@refinedev/mui'
import {useForm} from '@refinedev/react-hook-form' import {useForm} from '@refinedev/react-hook-form'
import {Controller} from 'react-hook-form' import {Controller} from 'react-hook-form'
import {VEHICLE_TYPES} from '../../lib/constants'
export const VehicleEdit = () => { export const VehicleEdit = () => {
const { const {
saveButtonProps, saveButtonProps,
@ -29,28 +31,39 @@ export const VehicleEdit = () => {
fullWidth fullWidth
InputLabelProps={{shrink: true}} InputLabelProps={{shrink: true}}
type="number" type="number"
label={'Номер рейса'} label="Номер рейса"
name="tail_number" name="tail_number"
/> />
<TextField
{...register('type', { <FormControl fullWidth margin="normal" error={!!errors.type}>
required: 'Это поле является обязательным', <InputLabel id="vehicle-type-label">Выберите тип</InputLabel>
valueAsNumber: true, <Select
})} labelId="vehicle-type-label"
error={!!(errors as any)?.type} label="Выберите тип"
helperText={(errors as any)?.type?.message} {...register('type', {
margin="normal" required: 'Это поле является обязательным',
fullWidth valueAsNumber: true,
InputLabelProps={{shrink: true}} })}
type="number" defaultValue=""
label={'Тип'} >
name="type" {VEHICLE_TYPES.map((option) => (
/> <MenuItem key={option.value} value={option.value}>
{option.label}
</MenuItem>
))}
</Select>
{errors.type && (
<Typography variant="caption" color="error">
{!!(errors as any)?.message}
</Typography>
)}
</FormControl>
<Controller <Controller
control={control} control={control}
name="city_id" name="city_id"
rules={{required: 'Это поле является обязательным'}} rules={{required: 'Это поле является обязательным'}}
defaultValue={null}
render={({field}) => ( render={({field}) => (
<Autocomplete <Autocomplete
{...cityAutocompleteProps} {...cityAutocompleteProps}