fixed bug
This commit is contained in:
@@ -32,29 +32,48 @@ const validationSchema = object({
|
||||
province_id: number().required("لطفا استان را وارد کنید!!!"),
|
||||
city_id: number().required("لطفا شهرستان را وارد کنید!!!"),
|
||||
axis_name: string().required("لطفا نام محور را وارد کنید!!!"),
|
||||
driver_name: string().required("لطفا نام و نام خانوادگی را وارد کنید!!!"),
|
||||
driver_name: string().when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.required("لطفا نام و نام خانوادگی را وارد کنید!!!"),
|
||||
}),
|
||||
phone_number: string()
|
||||
.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
|
||||
.required("لطفا تلفن همراه را وارد کنید!!!"),
|
||||
national_code: mixed()
|
||||
.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
|
||||
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
|
||||
.required("لطفا کد ملی را وارد کنید!!!"),
|
||||
.when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
|
||||
.required("لطفا تلفن همراه را وارد کنید!!!"),
|
||||
}),
|
||||
national_code: mixed().when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
|
||||
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
|
||||
.required("لطفا کد ملی را وارد کنید!!!"),
|
||||
}),
|
||||
start_point: mixed()
|
||||
.test("start-point-required", "لطفاً نقطه تصادف را مشخص کنید!", function (value) {
|
||||
return !!value;
|
||||
})
|
||||
.required("لطفاً نقطه تصادف را مشخص کنید!"),
|
||||
plate_part1: mixed()
|
||||
.test("max", "2رقم", (value) => value.toString().length === 2)
|
||||
.required("plate_part1 الزامیست"),
|
||||
plate_part2: mixed().required("plate_part2 الزامیست"),
|
||||
plate_part3: mixed()
|
||||
.test("max", "3رقم", (value) => value.toString().length === 3)
|
||||
.required("plate_part3الزامیست"),
|
||||
plate_part4: mixed()
|
||||
.test("max", "2رقم", (value) => value.toString().length === 2)
|
||||
.required("plate_part4الزامیست"),
|
||||
.when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.test("max", "2رقم", (value) => value.toString().length === 2)
|
||||
.required("plate_part1 الزامیست"),
|
||||
}),
|
||||
plate_part2: mixed().when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.required("plate_part2 الزامیست"),
|
||||
}),
|
||||
plate_part3: mixed().when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.test("max", "3رقم", (value) => value.toString().length === 3)
|
||||
.required("plate_part3الزامیست"),
|
||||
}),
|
||||
|
||||
plate_part4: mixed().when('isForeign', {
|
||||
is: "0",
|
||||
then: (schema) => schema.test("max", "2رقم", (value) => value.toString().length === 2)
|
||||
.required("plate_part4الزامیست"),
|
||||
}),
|
||||
damage_picture1: mixed().nullable().required("لطفا عکس تصادف را بارگذاری کنید!"),
|
||||
damage_picture2: mixed().nullable().required("لطفا عکس تصادف را بارگذاری کنید!"),
|
||||
police_serial: string().when("radio_button", {
|
||||
@@ -75,6 +94,7 @@ const validationSchema = object({
|
||||
|
||||
const CreateFormContent = ({ setOpen, SubmitDamage, defaultData }) => {
|
||||
const defaultValues = {
|
||||
isForeign: defaultData.isForeign,
|
||||
accident_date: defaultData.accident_date,
|
||||
accident_time: defaultData.accident_time,
|
||||
accident_type: defaultData.accident_type,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Controller, useWatch } from "react-hook-form";
|
||||
import { Grid, Stack, TextField } from "@mui/material";
|
||||
import { Grid, Stack, TextField, ToggleButton, ToggleButtonGroup } from "@mui/material";
|
||||
import MuiDatePicker from "@/core/components/MuiDatePicker";
|
||||
import MuiTimePicker from "@/core/components/MuiTimePicker";
|
||||
import SelectBox from "@/core/components/SelectBox";
|
||||
@@ -11,104 +11,129 @@ import LogesticController from "./LogesticController";
|
||||
|
||||
const DamageInfo = ({ control, setValue, errors }) => {
|
||||
const StartPoint = useWatch({ control, name: "start_point" });
|
||||
const IsForeign = useWatch({ control, name: "isForeign" });
|
||||
|
||||
return (
|
||||
<Stack>
|
||||
<LogesticController control={control} />
|
||||
<Grid sx={{ mt: 2 }} container spacing={2}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="driver_name"
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<PersianTextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
<Stack sx={{ mt: 2 }} alignItems={'center'} justifyContent={'center'}>
|
||||
<Controller
|
||||
name="isForeign"
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<ToggleButtonGroup
|
||||
value={field.value}
|
||||
exclusive
|
||||
onChange={(event, newAlignment) => field.onChange(newAlignment)}
|
||||
>
|
||||
<ToggleButton value="0">
|
||||
ناوگان داخلی
|
||||
</ToggleButton>
|
||||
<ToggleButton value="1">
|
||||
ناوگان خارجی
|
||||
</ToggleButton>
|
||||
</ToggleButtonGroup>
|
||||
)}
|
||||
/>
|
||||
</Stack>
|
||||
{IsForeign == "0" && (
|
||||
<>
|
||||
<Grid sx={{ mt: 2 }} container spacing={2}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="driver_name"
|
||||
onChange={field.onChange}
|
||||
label="نام و نام خانوادگی راننده"
|
||||
placeholder={"نام و نام خانوادگی فارسی را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<PersianTextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
name="driver_name"
|
||||
onChange={field.onChange}
|
||||
label="نام و نام خانوادگی راننده"
|
||||
placeholder={"نام و نام خانوادگی فارسی را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="national_code"
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<TextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="national_code"
|
||||
type={"tel"}
|
||||
inputProps={{
|
||||
inputMode: "number",
|
||||
min: 0,
|
||||
pattern: "[0-9]*",
|
||||
}}
|
||||
onChange={(event) => {
|
||||
const inputValue = event.target.value;
|
||||
if (isNaN(Number(inputValue))) {
|
||||
return;
|
||||
}
|
||||
field.onChange(inputValue);
|
||||
}}
|
||||
label="کد ملی راننده"
|
||||
placeholder={"کد ملی راننده را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<TextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
name="national_code"
|
||||
type={"tel"}
|
||||
inputProps={{
|
||||
inputMode: "number",
|
||||
min: 0,
|
||||
pattern: "[0-9]*",
|
||||
}}
|
||||
onChange={(event) => {
|
||||
const inputValue = event.target.value;
|
||||
if (isNaN(Number(inputValue))) {
|
||||
return;
|
||||
}
|
||||
field.onChange(inputValue);
|
||||
}}
|
||||
label="کد ملی راننده"
|
||||
placeholder={"کد ملی راننده را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid sx={{ mt: 2 }} container spacing={2}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="phone_number"
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<TextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid sx={{ mt: 2 }} container spacing={2}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<Controller
|
||||
name="phone_number"
|
||||
type={"tel"}
|
||||
inputProps={{
|
||||
inputMode: "number",
|
||||
min: 0,
|
||||
pattern: "[0-9]*",
|
||||
}}
|
||||
onChange={(event) => {
|
||||
const inputValue = event.target.value;
|
||||
if (isNaN(Number(inputValue))) {
|
||||
return;
|
||||
}
|
||||
field.onChange(inputValue);
|
||||
}}
|
||||
label="شماره موبایل راننده"
|
||||
placeholder={"شماره موبایل راننده را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
control={control}
|
||||
render={({ field, fieldState: { error } }) => (
|
||||
<TextField
|
||||
value={field.value}
|
||||
variant="outlined"
|
||||
name="phone_number"
|
||||
type={"tel"}
|
||||
inputProps={{
|
||||
inputMode: "number",
|
||||
min: 0,
|
||||
pattern: "[0-9]*",
|
||||
}}
|
||||
onChange={(event) => {
|
||||
const inputValue = event.target.value;
|
||||
if (isNaN(Number(inputValue))) {
|
||||
return;
|
||||
}
|
||||
field.onChange(inputValue);
|
||||
}}
|
||||
label="شماره موبایل راننده"
|
||||
placeholder={"شماره موبایل راننده را وارد کنید"}
|
||||
fullWidth
|
||||
size="small"
|
||||
error={error}
|
||||
helperText={error?.message}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<PlateNumber control={control} />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid item xs={12} md={6}>
|
||||
<PlateNumber control={control} />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</>
|
||||
)}
|
||||
<Grid sx={{ mt: 1 }} container spacing={2}>
|
||||
<Grid item xs={12} md={4}>
|
||||
<Controller
|
||||
|
||||
@@ -22,10 +22,13 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => {
|
||||
formData.append("province_id", result.province_id);
|
||||
formData.append("city_id", result.city_id);
|
||||
formData.append("axis_name", result.axis_name);
|
||||
formData.append("driver_name", result.driver_name);
|
||||
formData.append("driver_phone_number", result.phone_number);
|
||||
formData.append("driver_national_code", result.national_code);
|
||||
formData.append("plaque", PlateNumber);
|
||||
formData.append("is_foreign", result.isForeign);
|
||||
if (result.isForeign == '0') {
|
||||
formData.append("driver_name", result.driver_name);
|
||||
formData.append("driver_phone_number", result.phone_number);
|
||||
formData.append("driver_national_code", result.national_code);
|
||||
formData.append("plaque", PlateNumber);
|
||||
}
|
||||
formData.append("damage_picture1", result.damage_picture1);
|
||||
formData.append("damage_picture2", result.damage_picture2);
|
||||
formData.append("lat", result.start_point.lat);
|
||||
@@ -51,9 +54,10 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => {
|
||||
mutate();
|
||||
setOpen(false);
|
||||
})
|
||||
.catch(() => {});
|
||||
.catch(() => { });
|
||||
};
|
||||
const defaultData = {
|
||||
isForeign: "0",
|
||||
accident_date: "",
|
||||
accident_time: "",
|
||||
accident_type: "",
|
||||
|
||||
@@ -21,7 +21,11 @@ const OperatorList = () => {
|
||||
const { data: userPermissions } = usePermissions();
|
||||
const hasCountryPermission = userPermissions?.includes("show-receipt");
|
||||
const { user } = useAuth();
|
||||
|
||||
const foreginOptions = [
|
||||
{ value: "", label: "همه ناوگان ها" },
|
||||
{ value: 0, label: "داخلی" },
|
||||
{ value: 1, label: "خارجی" },
|
||||
];
|
||||
const statusOptions = [
|
||||
{ value: "", label: "همه وضعیت ها" },
|
||||
{ value: 0, label: "بدون اقدام" },
|
||||
@@ -158,8 +162,8 @@ const OperatorList = () => {
|
||||
props.dependencyFieldValue?.value === ""
|
||||
? "empty"
|
||||
: loadingCityList
|
||||
? "loading"
|
||||
: props.filterParameters.value
|
||||
? "loading"
|
||||
: props.filterParameters.value
|
||||
}
|
||||
columnSelectOption={getColumnSelectOptions}
|
||||
/>
|
||||
@@ -215,6 +219,25 @@ const OperatorList = () => {
|
||||
grow: false,
|
||||
size: 120,
|
||||
},
|
||||
{
|
||||
accessorKey: "is_foreign",
|
||||
header: "نوع ناوگان",
|
||||
id: "is_foreign",
|
||||
enableColumnFilter: true,
|
||||
datatype: "numeric",
|
||||
filterMode: "equals",
|
||||
grow: false,
|
||||
size: 100,
|
||||
columnSelectOption: () => {
|
||||
return foreginOptions.map((status) => ({
|
||||
value: status.value,
|
||||
label: status.label,
|
||||
}));
|
||||
},
|
||||
Cell: ({ row }) => {
|
||||
return <Typography variant={"body2"}>{row.original.is_foreign == "0" ? "داخلی" : "خارجی"}</Typography>;
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "plaque",
|
||||
header: "پلاک",
|
||||
@@ -225,7 +248,7 @@ const OperatorList = () => {
|
||||
enableSorting: false,
|
||||
grow: false,
|
||||
size: 100,
|
||||
Cell: ({ renderedCellValue }) => <ShowPlate plate={renderedCellValue} />,
|
||||
Cell: ({ row, renderedCellValue }) => row.original.is_foreign == "0" ? <ShowPlate plate={renderedCellValue} /> : '',
|
||||
},
|
||||
{
|
||||
accessorKey: "accident_type",
|
||||
|
||||
@@ -23,10 +23,10 @@ const RowActions = ({ row, mutate }) => {
|
||||
<RegisterInsurance mutate={mutate} row={row} rowId={row.getValue("id")} />
|
||||
)}
|
||||
{[0, 1, 2].includes(row.original?.status) && <SendToInsurance mutate={mutate} rowId={row.getValue("id")} />}
|
||||
{hasEditPermission && [0, 1, 2].includes(row.original?.status) && (
|
||||
{hasEditPermission && [0].includes(row.original?.status) && (
|
||||
<EditForm row={row} mutate={mutate} rowId={row.getValue("id")} />
|
||||
)}
|
||||
{hasDeletePermission && <DeleteDialog mutate={mutate} rowId={row.getValue("id")} />}
|
||||
{(hasDeletePermission && [0].includes(row.original?.status)) && <DeleteDialog mutate={mutate} rowId={row.getValue("id")} />}
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -18,30 +18,111 @@ const ReportLists = ({ data, specialFilter }) => {
|
||||
size: 50,
|
||||
},
|
||||
{
|
||||
accessorKey: "tedade",
|
||||
header: "تعداد کل",
|
||||
id: "tedade",
|
||||
header: "تعداد خسارات ثبت شده",
|
||||
id: 'countAll',
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
grow: false,
|
||||
size: 50,
|
||||
muiTableBodyCellProps: {
|
||||
sx: {
|
||||
textAlign: "center",
|
||||
borderLeft: "1px solid #e1e1e1",
|
||||
py: 0,
|
||||
"&:first-of-type": {
|
||||
borderLeft: "unset",
|
||||
columns: [
|
||||
{
|
||||
accessorKey: "tedade",
|
||||
header: "کل",
|
||||
id: "tedade",
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
grow: false,
|
||||
size: 50,
|
||||
muiTableBodyCellProps: {
|
||||
sx: {
|
||||
textAlign: "center",
|
||||
borderLeft: "1px solid #e1e1e1",
|
||||
py: 0,
|
||||
"&:first-of-type": {
|
||||
borderLeft: "unset",
|
||||
},
|
||||
},
|
||||
},
|
||||
Cell: ({ renderedCellValue }) => {
|
||||
return (renderedCellValue / 1).toLocaleString();
|
||||
},
|
||||
},
|
||||
},
|
||||
Cell: ({ renderedCellValue }) => {
|
||||
return (renderedCellValue / 1).toLocaleString();
|
||||
},
|
||||
{
|
||||
accessorKey: "egdam",
|
||||
header: "در دست اقدام",
|
||||
id: "egdam",
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
grow: false,
|
||||
size: 50,
|
||||
muiTableBodyCellProps: {
|
||||
sx: {
|
||||
textAlign: "center",
|
||||
borderLeft: "1px solid #e1e1e1",
|
||||
py: 0,
|
||||
"&:first-of-type": {
|
||||
borderLeft: "unset",
|
||||
},
|
||||
},
|
||||
},
|
||||
Cell: ({ renderedCellValue }) => {
|
||||
return (renderedCellValue / 1).toLocaleString();
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "pardakht",
|
||||
header: "در حال پرداخت",
|
||||
id: "pardakht",
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
grow: false,
|
||||
size: 50,
|
||||
muiTableBodyCellProps: {
|
||||
sx: {
|
||||
textAlign: "center",
|
||||
borderLeft: "1px solid #e1e1e1",
|
||||
py: 0,
|
||||
"&:first-of-type": {
|
||||
borderLeft: "unset",
|
||||
},
|
||||
},
|
||||
},
|
||||
Cell: ({ renderedCellValue }) => {
|
||||
return (renderedCellValue / 1).toLocaleString();
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "khatm",
|
||||
header: "خاتمه یافته",
|
||||
id: "khatm",
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
grow: false,
|
||||
size: 50,
|
||||
muiTableBodyCellProps: {
|
||||
sx: {
|
||||
textAlign: "center",
|
||||
borderLeft: "1px solid #e1e1e1",
|
||||
py: 0,
|
||||
"&:first-of-type": {
|
||||
borderLeft: "unset",
|
||||
},
|
||||
},
|
||||
},
|
||||
Cell: ({ renderedCellValue }) => {
|
||||
return (renderedCellValue / 1).toLocaleString();
|
||||
},
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
header: "تعداد نحوه شناسایی خسارت",
|
||||
id: 'police_rah_All',
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
datatype: "text",
|
||||
@@ -152,7 +233,7 @@ const ReportLists = ({ data, specialFilter }) => {
|
||||
columns: [
|
||||
{
|
||||
accessorKey: "vasel_shode_final",
|
||||
header: "فیش",
|
||||
header: "فاکتور",
|
||||
id: "vasel_shode_final",
|
||||
enableColumnFilter: false,
|
||||
enableSorting: false,
|
||||
|
||||
Reference in New Issue
Block a user