From 1eb89c7c822d04d016484eb8df6982dc54eb7676 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sat, 31 May 2025 14:50:00 +0330 Subject: [PATCH] fixed bug --- .../create/Forms/CreateFormContent.jsx | 52 +++-- .../Actions/create/Forms/DamageInfo.jsx | 203 ++++++++++-------- .../operator/Actions/create/Forms/index.jsx | 14 +- .../damages/operator/OperatorList.jsx | 31 ++- .../damages/operator/RowActions/index.jsx | 4 +- .../dashboard/damages/report/ReportLists.jsx | 111 ++++++++-- 6 files changed, 284 insertions(+), 131 deletions(-) diff --git a/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx b/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx index 2123236..3d71438 100644 --- a/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx +++ b/src/components/dashboard/damages/operator/Actions/create/Forms/CreateFormContent.jsx @@ -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, diff --git a/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx b/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx index 7f823a5..8f61860 100644 --- a/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx +++ b/src/components/dashboard/damages/operator/Actions/create/Forms/DamageInfo.jsx @@ -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 ( - - - ( - + ( + field.onChange(newAlignment)} + > + + ناوگان داخلی + + + ناوگان خارجی + + + )} + /> + + {IsForeign == "0" && ( + <> + + + ( + + )} /> - )} - /> - - - ( - + + { - 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 } }) => ( + { + 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 }} + /> + )} /> - )} - /> - - - - - ( - + + + + { - 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 } }) => ( + { + 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 }} + /> + )} /> - )} - /> - - - - - + + + + + + + )} { 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: "", diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx index 584be1b..9cdd314 100644 --- a/src/components/dashboard/damages/operator/OperatorList.jsx +++ b/src/components/dashboard/damages/operator/OperatorList.jsx @@ -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 {row.original.is_foreign == "0" ? "داخلی" : "خارجی"}; + }, + }, { accessorKey: "plaque", header: "پلاک", @@ -225,7 +248,7 @@ const OperatorList = () => { enableSorting: false, grow: false, size: 100, - Cell: ({ renderedCellValue }) => , + Cell: ({ row, renderedCellValue }) => row.original.is_foreign == "0" ? : '', }, { accessorKey: "accident_type", diff --git a/src/components/dashboard/damages/operator/RowActions/index.jsx b/src/components/dashboard/damages/operator/RowActions/index.jsx index f146c12..8f93004 100644 --- a/src/components/dashboard/damages/operator/RowActions/index.jsx +++ b/src/components/dashboard/damages/operator/RowActions/index.jsx @@ -23,10 +23,10 @@ const RowActions = ({ row, mutate }) => { )} {[0, 1, 2].includes(row.original?.status) && } - {hasEditPermission && [0, 1, 2].includes(row.original?.status) && ( + {hasEditPermission && [0].includes(row.original?.status) && ( )} - {hasDeletePermission && } + {(hasDeletePermission && [0].includes(row.original?.status)) && } ); }; diff --git a/src/components/dashboard/damages/report/ReportLists.jsx b/src/components/dashboard/damages/report/ReportLists.jsx index c961bf2..42abbb1 100644 --- a/src/components/dashboard/damages/report/ReportLists.jsx +++ b/src/components/dashboard/damages/report/ReportLists.jsx @@ -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,