refactored explanation field on create flow

road missions operator cartable
This commit is contained in:
2026-06-22 12:03:39 +03:30
parent 188c7c45af
commit 40f80fac3a
4 changed files with 33 additions and 15 deletions

View File

@@ -4,6 +4,9 @@ import SelectBox from "@/core/components/SelectBox";
const ItemSelectField = ({ control, setValue }) => { const ItemSelectField = ({ control, setValue }) => {
const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems(); const { itemsList, loadingItemsList, errorItemsList } = useRoadItemGetItems();
function getItemName(val) {
return itemsList.find((item) => item.id === val)?.name;
}
return ( return (
<Controller <Controller
@@ -18,14 +21,14 @@ const ItemSelectField = ({ control, setValue }) => {
schema={{ name: "name", value: "id" }} schema={{ name: "name", value: "id" }}
error={errorItemsList} error={errorItemsList}
helperText={error?.message} helperText={error?.message}
onChange={() => { onChange={(value) => {
field.onChange; field.onChange(value);
setValue("explanation", getItemName(value));
setValue("sub_item_id", ""); setValue("sub_item_id", "");
}} }}
/> />
)} )}
/> />
); );
}; };
export default ItemSelectField export default ItemSelectField;

View File

@@ -2,10 +2,16 @@ import useRoadItemGetSubItems from "@/lib/hooks/useRoadItemGetISubtems";
import { Controller } from "react-hook-form"; import { Controller } from "react-hook-form";
import SelectBox from "@/core/components/SelectBox"; import SelectBox from "@/core/components/SelectBox";
const SubItemSelectField = ({ control, watch }) => { const SubItemSelectField = ({ control, watch, setValue, getValues }) => {
const itemId = watch("item_id"); const itemId = watch("item_id");
const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId); const { subItemsList, loadingSubItemsList, errorSubItemsList } = useRoadItemGetSubItems(itemId);
function createExplanation(val) {
const currentExplanation = getValues("explanation");
const selectedItem = subItemsList.find((item) => item.id === val)?.name;
return `${currentExplanation}-${selectedItem}`;
}
return ( return (
<Controller <Controller
control={control} control={control}
@@ -19,7 +25,10 @@ const SubItemSelectField = ({ control, watch }) => {
schema={{ name: "name", value: "id" }} schema={{ name: "name", value: "id" }}
error={errorSubItemsList} error={errorSubItemsList}
helperText={error?.message} helperText={error?.message}
onChange={field.onChange} onChange={(val) => {
field.onChange(val);
setValue("explanation", createExplanation(val));
}}
/> />
)} )}
/> />

View File

@@ -8,17 +8,16 @@ import { yupResolver } from "@hookform/resolvers/yup";
import { ExitToApp } from "@mui/icons-material"; import { ExitToApp } from "@mui/icons-material";
import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material"; import { Box, Button, DialogActions, DialogContent, Grid, Stack } from "@mui/material";
import { Controller, useForm } from "react-hook-form"; import { Controller, useForm } from "react-hook-form";
import { array, number, object, string } from "yup"; import { array, object, string } from "yup";
import ItemSelectField import ItemSelectField from "./ItemSelectField";
from "./ItemSelectField"; import SubItemSelectField from "./SubItemSelectField";
import SubItemSelectField
from "./SubItemSelectField";
const validationSchema = object({ const validationSchema = object({
explanation: string().required("موضوع را مشخص کنید!"),
end_point: string().required("مقصد را مشخص کنید!"), end_point: string().required("مقصد را مشخص کنید!"),
region: string().required("محور ماموریت را مشخص کنید!"), region: string().required("محور ماموریت را مشخص کنید!"),
category_id: string().required("نوع ماموریت را مشخص کنید!"), category_id: string().required("نوع ماموریت را مشخص کنید!"),
item_id: string().required("موضوع را مشخص کنید!"),
sub_item_id: string().required("اقدام انجام شده را مشخص کنید!"),
requested_machines: array().min(1, "نوع خودرو را مشخص کنید!").required("نوع خودرو را مشخص کنید!"), requested_machines: array().min(1, "نوع خودرو را مشخص کنید!").required("نوع خودرو را مشخص کنید!"),
road_observed_id: string().when("category_id", { road_observed_id: string().when("category_id", {
is: "3", is: "3",
@@ -39,7 +38,7 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => {
road_observed_id: allData.road_observed_id, road_observed_id: allData.road_observed_id,
}; };
const { control, handleSubmit, watch, setValue } = useForm({ const { control, handleSubmit, watch, setValue, getValues } = useForm({
defaultValues, defaultValues,
resolver: yupResolver(validationSchema), resolver: yupResolver(validationSchema),
mode: "all", mode: "all",
@@ -60,7 +59,12 @@ const GetItemInfo = ({ allData, setAllData, handlePrev, setTabState }) => {
<ItemSelectField control={control} watch={watch} setValue={setValue} /> <ItemSelectField control={control} watch={watch} setValue={setValue} />
</Grid> </Grid>
<Grid item xs={12} sm={6}> <Grid item xs={12} sm={6}>
<SubItemSelectField control={control} watch={watch} /> <SubItemSelectField
control={control}
watch={watch}
setValue={setValue}
getValues={getValues}
/>
</Grid> </Grid>
<Grid item xs={12} sm={6}> <Grid item xs={12} sm={6}>
<Controller <Controller

View File

@@ -44,6 +44,8 @@ const Create = ({ mutate }) => {
start_date: result.start_date, start_date: result.start_date,
end_date: result.end_date, end_date: result.end_date,
}), }),
item_id: result.item_id,
sub_item_id: result.sub_item_id,
}, },
hasSidebarUpdate: true, hasSidebarUpdate: true,
}) })