merging
This commit is contained in:
@@ -75,7 +75,8 @@
|
|||||||
"dashboard": "داشبورد",
|
"dashboard": "داشبورد",
|
||||||
"add-request-loan": "درخواست وام",
|
"add-request-loan": "درخواست وام",
|
||||||
"followUp-loan": "پیگیری درخواست",
|
"followUp-loan": "پیگیری درخواست",
|
||||||
"edit-request-loan": "ویرایش درخواست وام"
|
"edit-request-loan": "ویرایش درخواست وام",
|
||||||
|
"show": "نمایش"
|
||||||
},
|
},
|
||||||
"Authorization": {
|
"Authorization": {
|
||||||
"typography_your_login_is_valid_and_you_do_not_need_to_login_again": "شما دسترسی لازم به این صفحه را دارید نیاز به ورود مجدد نیست.",
|
"typography_your_login_is_valid_and_you_do_not_need_to_login_again": "شما دسترسی لازم به این صفحه را دارید نیاز به ورود مجدد نیست.",
|
||||||
@@ -210,26 +211,48 @@
|
|||||||
"error_message_city_id": "لطفا شهر خود را وارد کنید!",
|
"error_message_city_id": "لطفا شهر خود را وارد کنید!",
|
||||||
"add_loan_request_permission": "اکنون امکان ثبت درخواست جدید برای شما مقدور نیست"
|
"add_loan_request_permission": "اکنون امکان ثبت درخواست جدید برای شما مقدور نیست"
|
||||||
},
|
},
|
||||||
"showLoan": {
|
"ShowLoan": {
|
||||||
"show_loan_page": "نمایش وام",
|
"show_loan_page": "نمایش وام | ناوگان",
|
||||||
"text_field_national_code": "کد ملی",
|
"loading_show_component": "درحال دریافت اطلاعات درخواست...",
|
||||||
|
"tel_number_max": "شماره ثابت می بایست 11 رقم باشد",
|
||||||
|
"text_field_national_id": "کد ملی",
|
||||||
"text_field_postal_code": "کد پستی",
|
"text_field_postal_code": "کد پستی",
|
||||||
"text_field_national_card_serial_num": "سریال پشت کارت ملی",
|
"text_field_national_serial_number": "سریال پشت کارت ملی",
|
||||||
"text_field_address": "آدرس",
|
"text_field_address": "آدرس",
|
||||||
"text_field_birth_date": "تاریخ تولد",
|
"text_field_birthday": "تاریخ تولد",
|
||||||
"text_field_navgan_id": "کد ناوگان",
|
"text_field_navgan_id": "کد ناوگان",
|
||||||
"text_field_enter_your_national_code": "کد ملی خود را وارد کنید",
|
"text_field_province_id": "استان",
|
||||||
"text_field_enter_your_postal_code": "کد پستی خود را وارد کنید",
|
"text_field_education_id": "تحصیلات",
|
||||||
"text_field_enter_your_national_card_serial_num": "سریال پشت کارت ملی خود را وارد کنید",
|
"text_field_occupation_id": "شغل",
|
||||||
"text_field_enter_your_address": "آدرس خود را وارد کنید",
|
"text_field_name": "نام کامل مالک",
|
||||||
"text_field_enter_your_birth_date": "تاریخ تولد خود را وارد کنید",
|
"text_field_navgan_type": "نوع ناوگان",
|
||||||
"text_field_enter_your_navgan_id": "کد ناوگان خود را وارد کنید",
|
"text_field_vehicle_type": "نوع وسیله",
|
||||||
"error_message_national_code": "لطفا کد ملی خود را وارد کنید!",
|
"text_field_tel_number": "شماره ثابت (با پیش شماره استان)",
|
||||||
"error_message_postal_code": "لطفا کد پستی خود را وارد کنید!",
|
"text_field_enter_your_national_id": "کد ملی را وارد کنید",
|
||||||
"error_message_national_card_serial_num": "لطفا سریال پشت کارت ملی خود را وارد کنید!",
|
"text_field_enter_your_postal_code": "کد پستی را وارد کنید",
|
||||||
"error_message_address": "لطفا آدرس خود را وارد کنید!",
|
"text_field_enter_your_national_serial_number": "سریال پشت کارت ملی را وارد کنید",
|
||||||
"error_message_birth_date": "لطفا تاریخ تولد خود را وارد کنید!",
|
"text_field_enter_your_address": "آدرس را وارد کنید",
|
||||||
"error_message_navgan_id": "لطفا کد ناوگان خود را وارد کنید!",
|
"text_field_enter_your_tel_number": "شماره ثابت (با پیش شماره استان) خود را وارد کنید",
|
||||||
|
"text_field_enter_your_birthday": "تاریخ تولد را وارد کنید",
|
||||||
|
"text_field_enter_your_navgan_id": "کد ناوگان را وارد کنید",
|
||||||
|
"text_field_enter_your_name": "نام کامل مالک را وارد کنید",
|
||||||
|
"postal_code_max": "کد پستی می بایست 10 رقم باشد",
|
||||||
|
"error_message_postal_code": "لطفا کد پستی را وارد کنید!",
|
||||||
|
"error_message_national_serial_number": "لطفا سریال پشت کارت ملی را وارد کنید!",
|
||||||
|
"error_message_address": "لطفا آدرس را وارد کنید!",
|
||||||
|
"error_message_birthday": "لطفا تاریخ تولد را وارد کنید!",
|
||||||
|
"error_message_navgan_id": "لطفا کد ناوگان را وارد کنید!",
|
||||||
|
"error_message_province_id": "لطفا استان را وارد کنید!",
|
||||||
|
"error_message_city_id": "لطفا شهر خود را وارد کنید!",
|
||||||
|
"error_message_name": "لطفا نام کامل مالک را وارد کنید!",
|
||||||
|
"error_message_date_of_birth": "لطفا تاریخ تولد خود را وارد کنید!",
|
||||||
|
"error_message_navgan_type": "لطفا نوع ناوگان را وارد کنید!",
|
||||||
|
"error_message_vehicle_type": "لطفا نوع وسیله را وارد کنید!",
|
||||||
|
"error_message_fixed_number": "لطفا تلفن ثابت را وارد کنید!",
|
||||||
|
"error_message_tel_number": "لطفا شماره ثابت (با پیش شماره استان) خود را وارد کنید!",
|
||||||
|
"error_message_occupation_id": "لطفا کد شغل (با توجه به مستندات ارائه شده) را به درستی وارد کنید!",
|
||||||
|
"error_message_education_id": "لطفا تحصیلات (با توجه به مستندات ارائه شده) را به درستی وارد کنید!",
|
||||||
|
"cityList_empty": "شهر یافت نشد",
|
||||||
"button_submit": "ویرایش"
|
"button_submit": "ویرایش"
|
||||||
},
|
},
|
||||||
"EditLoanRequest": {
|
"EditLoanRequest": {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import {Box, Chip, Divider} from "@mui/material";
|
import {Box, Chip, Divider} from "@mui/material";
|
||||||
import {useTranslations} from "next-intl";
|
import {useTranslations} from "next-intl";
|
||||||
import AddFormComponent from "@/components/dashboard/navgan/add-request-loan/forms/AddForm";
|
import AddFormComponent from "@/components/dashboard/navgan/add-request-loan/forms/AddForm";
|
||||||
|
import {CenterLayout, useUser} from "@witel/webapp-builder";
|
||||||
|
|
||||||
const LoanRequestComponent = () => {
|
const LoanRequestComponent = () => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|||||||
658
src/components/dashboard/navgan/show/form/UpdateForm.jsx
Normal file
658
src/components/dashboard/navgan/show/form/UpdateForm.jsx
Normal file
@@ -0,0 +1,658 @@
|
|||||||
|
import StyledForm from "@/core/components/StyledForm";
|
||||||
|
import {Box, Button, Chip, Divider, Stack, TextField} from "@mui/material";
|
||||||
|
import {Field, Formik} from "formik";
|
||||||
|
import {useTranslations} from "next-intl";
|
||||||
|
import EditIcon from '@mui/icons-material/Edit';
|
||||||
|
import * as Yup from "yup";
|
||||||
|
import SelectBox from "@/core/components/SelectBox";
|
||||||
|
import PlateNumber from "@/core/components/PlateNumber";
|
||||||
|
import MuiDatePicker from "@/core/components/MuiDatePicker";
|
||||||
|
import moment from "jalali-moment";
|
||||||
|
import useProvince from "@/lib/app/hooks/useProvince";
|
||||||
|
import useCities from "@/lib/app/hooks/useCities";
|
||||||
|
import UseEducations from "@/lib/app/hooks/useEducations";
|
||||||
|
import useOccupations from "@/lib/app/hooks/useOccupations";
|
||||||
|
import {UPDATE_LOAN} from "@/core/data/apiRoutes";
|
||||||
|
import {useRequest} from "@witel/webapp-builder";
|
||||||
|
import {useRouter} from "next/router";
|
||||||
|
import {useEffect} from "react";
|
||||||
|
|
||||||
|
const UpdateForm = ({LoanDetails, LoanId}) => {
|
||||||
|
const t = useTranslations();
|
||||||
|
const provinceStates = useProvince();
|
||||||
|
const router = useRouter()
|
||||||
|
const citiesStates = useCities();
|
||||||
|
const educationStates = UseEducations();
|
||||||
|
const occupationStates = useOccupations();
|
||||||
|
const requestServer = useRequest();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
citiesStates.setProvinceID(LoanDetails.province_id)
|
||||||
|
}, [provinceStates]);
|
||||||
|
|
||||||
|
// initial values
|
||||||
|
const initialValues = {
|
||||||
|
national_id: LoanDetails.national_id,
|
||||||
|
postal_code: LoanDetails.postal_code,
|
||||||
|
national_serial_number: LoanDetails.national_serial_number,
|
||||||
|
address: LoanDetails.address,
|
||||||
|
birthday: moment(LoanDetails.birthday),
|
||||||
|
navgan_id: LoanDetails.navgan_id,
|
||||||
|
province_id: LoanDetails.province_id,
|
||||||
|
city_id: LoanDetails.city_id,
|
||||||
|
name: LoanDetails.name,
|
||||||
|
navgan_type: LoanDetails.navgan_type,
|
||||||
|
vehicle_type: LoanDetails.vehicle_type,
|
||||||
|
telephone_number: LoanDetails.telephone_number,
|
||||||
|
plate_part1: LoanDetails.plate_number.split("-")[0],
|
||||||
|
plate_part2: LoanDetails.plate_number.split("-")[1],
|
||||||
|
plate_part3: LoanDetails.plate_number.split("-")[2],
|
||||||
|
plate_part4: LoanDetails.plate_number.split("-")[3],
|
||||||
|
education_id: LoanDetails.education_id,
|
||||||
|
occupation_id: LoanDetails.occupation_id,
|
||||||
|
};
|
||||||
|
// end initial values
|
||||||
|
|
||||||
|
// validation
|
||||||
|
const validationSchema = Yup.object().shape({
|
||||||
|
postal_code: Yup.mixed()
|
||||||
|
.test("max", `${t("ShowLoan.postal_code_max")}`, (value) => value.toString().length === 10)
|
||||||
|
.required(
|
||||||
|
t("ShowLoan.error_message_postal_code")
|
||||||
|
),
|
||||||
|
address: Yup.string().required(t("ShowLoan.error_message_address")),
|
||||||
|
province_id: Yup.string().required(t("ShowLoan.error_message_province_id")),
|
||||||
|
city_id: Yup.string().required(t("ShowLoan.error_message_city_id")),
|
||||||
|
telephone_number: Yup.mixed()
|
||||||
|
.test("max", `${t("ShowLoan.tel_number_max")}`, (value) => {
|
||||||
|
const stringValue = String(value);
|
||||||
|
return stringValue.length === 11
|
||||||
|
})
|
||||||
|
.required(t("ShowLoan.error_message_tel_number")),
|
||||||
|
occupation_id: Yup.string().required(t("ShowLoan.error_message_occupation_id")),
|
||||||
|
education_id: Yup.string().required(t("ShowLoan.error_message_education_id")),
|
||||||
|
birthday: Yup.string().required(t("ShowLoan.error_message_date_of_birth")),
|
||||||
|
|
||||||
|
});
|
||||||
|
// end validation
|
||||||
|
|
||||||
|
// submit
|
||||||
|
const handleSubmit = async (values, props) => {
|
||||||
|
props.setSubmitting(true)
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append("postal_code", values.postal_code);
|
||||||
|
formData.append("address", values.address);
|
||||||
|
formData.append("province_id", values.province_id);
|
||||||
|
formData.append("city_id", values.city_id);
|
||||||
|
formData.append("telephone_number", values.telephone_number);
|
||||||
|
formData.append("occupation_id", values.occupation_id);
|
||||||
|
formData.append("education_id", values.education_id);
|
||||||
|
formData.append("national_serial_number", values.national_serial_number);
|
||||||
|
formData.append("birthday", values.birthday.locale('en').format("YYYY-MM-DD"));
|
||||||
|
await requestServer(UPDATE_LOAN + LoanId, "post", {
|
||||||
|
auth: true, notification: true, data: formData
|
||||||
|
}).then(() => {
|
||||||
|
router.push("/dashboard/navgan/followUp-loan")
|
||||||
|
}).catch(() => {
|
||||||
|
}).finally(() => {
|
||||||
|
props.setSubmitting(false)
|
||||||
|
})
|
||||||
|
|
||||||
|
};
|
||||||
|
// end submit
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Box sx={{width: "80%", my: 2}}>
|
||||||
|
<Divider>
|
||||||
|
<Chip
|
||||||
|
label={t("ShowLoan.show_loan_page")}
|
||||||
|
/>
|
||||||
|
</Divider>
|
||||||
|
</Box>
|
||||||
|
<Formik
|
||||||
|
initialValues={initialValues}
|
||||||
|
onSubmit={handleSubmit}
|
||||||
|
validationSchema={validationSchema}
|
||||||
|
>
|
||||||
|
{(props) => (
|
||||||
|
<Stack
|
||||||
|
spacing={2}
|
||||||
|
sx={{
|
||||||
|
p: 1,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<StyledForm sx={{width: "100%"}}>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="national_id"
|
||||||
|
disabled
|
||||||
|
variant="standard"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_national_id")}
|
||||||
|
placeholder={t("ShowLoan.text_field_enter_your_national_id")}
|
||||||
|
type={'tel'}
|
||||||
|
error={!!(props.touched.national_id && props.errors.national_id)}
|
||||||
|
fullWidth
|
||||||
|
helperText={props.touched.national_id ? props.errors.national_id : null}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="name"
|
||||||
|
disabled
|
||||||
|
variant="standard"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_name")}
|
||||||
|
placeholder={t(
|
||||||
|
"ShowLoan.text_field_enter_your_name"
|
||||||
|
)}
|
||||||
|
type={"text"}
|
||||||
|
error={!!(props.touched.name && props.errors.name)}
|
||||||
|
fullWidth
|
||||||
|
helperText={
|
||||||
|
props.touched.name
|
||||||
|
? props.errors.name
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="navgan_id"
|
||||||
|
disabled
|
||||||
|
variant="standard"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_navgan_id")}
|
||||||
|
placeholder={t(
|
||||||
|
"ShowLoan.text_field_enter_your_navgan_id"
|
||||||
|
)}
|
||||||
|
type={'tel'}
|
||||||
|
error={!!(props.touched.navgan_id && props.errors.navgan_id)}
|
||||||
|
fullWidth
|
||||||
|
helperText={
|
||||||
|
props.touched.navgan_id
|
||||||
|
? props.errors.navgan_id
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<SelectBox
|
||||||
|
name="navgan_type"
|
||||||
|
label={t("ShowLoan.text_field_navgan_type")}
|
||||||
|
size="small"
|
||||||
|
disabled
|
||||||
|
variant="standard"
|
||||||
|
selectType="navgan_type"
|
||||||
|
schema={{value: "value", name: "name"}}
|
||||||
|
selectors={[
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
value: "روستایی",
|
||||||
|
name: "روستایی"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
value: "عمومی",
|
||||||
|
name: "عمومی"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
value: "منطقه آزاد",
|
||||||
|
name: "منطقه آزاد"
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
|
||||||
|
select={props.values.navgan_type}
|
||||||
|
handleChange={(event) => {
|
||||||
|
props.setFieldValue('navgan_type', event.target.value)
|
||||||
|
}}
|
||||||
|
setFieldTouched={props.setFieldTouched}
|
||||||
|
error={props.touched.navgan_type && Boolean(props.errors.navgan_type)}
|
||||||
|
helperText={props.touched.navgan_type && props.errors.navgan_type}
|
||||||
|
onBlur={props.handleBlur("navgan_type")}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<PlateNumber formik={props} disabled={true}/>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<SelectBox
|
||||||
|
name="vehicle_type"
|
||||||
|
label={t("ShowLoan.text_field_vehicle_type")}
|
||||||
|
size="small"
|
||||||
|
disabled
|
||||||
|
variant="standard"
|
||||||
|
selectType="vehicle_type"
|
||||||
|
schema={{value: "value", name: "name"}}
|
||||||
|
selectors={[
|
||||||
|
{
|
||||||
|
id: 0,
|
||||||
|
value: "اتوبوس",
|
||||||
|
name: "اتوبوس"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
value: "مینی بوس",
|
||||||
|
name: "مینی بوس"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
value: "سواری",
|
||||||
|
name: "سواری"
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
|
||||||
|
select={props.values.vehicle_type}
|
||||||
|
handleChange={(event) => props.setFieldValue('vehicle_type', event.target.value)}
|
||||||
|
error={props.touched.vehicle_type && Boolean(props.errors.vehicle_type)}
|
||||||
|
helperText={props.touched.vehicle_type && props.errors.vehicle_type}
|
||||||
|
onBlur={props.handleBlur("vehicle_type")}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="national_serial_number"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_national_serial_number")}
|
||||||
|
placeholder={t(
|
||||||
|
"ShowLoan.text_field_enter_your_national_serial_number"
|
||||||
|
)}
|
||||||
|
type={"text"}
|
||||||
|
error={!!(props.touched.national_serial_number && props.errors.national_serial_number)}
|
||||||
|
fullWidth
|
||||||
|
helperText={
|
||||||
|
props.touched.national_serial_number
|
||||||
|
? props.errors.national_serial_number
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MuiDatePicker
|
||||||
|
formik={props}
|
||||||
|
disableFuture={true}
|
||||||
|
error={props.touched.birthday && Boolean(props.errors.birthday)}
|
||||||
|
helperText={props.touched.birthday && props.errors.birthday}
|
||||||
|
onBlur={props.handleBlur("birthday")}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="postal_code"
|
||||||
|
variant="outlined"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_postal_code")}
|
||||||
|
placeholder={t(
|
||||||
|
"ShowLoan.text_field_enter_your_postal_code"
|
||||||
|
)}
|
||||||
|
type={'tel'}
|
||||||
|
error={!!(props.touched.postal_code && props.errors.postal_code)}
|
||||||
|
fullWidth
|
||||||
|
helperText={
|
||||||
|
props.touched.postal_code
|
||||||
|
? props.errors.postal_code
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{provinceStates.provinceList.length !== 0 ?
|
||||||
|
<SelectBox
|
||||||
|
name="province_id"
|
||||||
|
label={t("ShowLoan.text_field_province_id")}
|
||||||
|
size="small"
|
||||||
|
selectType="province_id"
|
||||||
|
schema={{value: "value", name: "name"}}
|
||||||
|
isLoading={provinceStates.isLoadingProvinceList}
|
||||||
|
errorEcured={provinceStates.errorProvinceList}
|
||||||
|
selectors={provinceStates.provinceList}
|
||||||
|
select={props.values.province_id}
|
||||||
|
handleChange={(event) => {
|
||||||
|
props.setFieldValue('province_id', event.target.value);
|
||||||
|
citiesStates.setProvinceID(event.target.value)
|
||||||
|
props.setFieldTouched("city_id", false, false);
|
||||||
|
props.setFieldValue("city_id", "")
|
||||||
|
}}
|
||||||
|
setFieldTouched={props.setFieldTouched}
|
||||||
|
error={props.touched.province_id && Boolean(props.errors.province_id)}
|
||||||
|
helperText={props.touched.province_id && props.errors.province_id}
|
||||||
|
onBlur={props.handleBlur("province_id")}
|
||||||
|
/> : <Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
variant="outlined"
|
||||||
|
disabled
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_province_id")}
|
||||||
|
value={t("text_field_loading")}
|
||||||
|
type={"text"}
|
||||||
|
/>}
|
||||||
|
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{citiesStates.cityList.length !== 0 ?
|
||||||
|
<SelectBox
|
||||||
|
name="city_id"
|
||||||
|
label={citiesStates.cityList.length === 0 ? `${t("ShowLoan.cityList_empty")}` : citiesStates.cityTextField}
|
||||||
|
size="small"
|
||||||
|
selectType="city_id"
|
||||||
|
disabled={citiesStates.cityList.length === 0}
|
||||||
|
selectors={citiesStates.cityList}
|
||||||
|
select={props.values.city_id}
|
||||||
|
schema={{value: "value", name: "name"}}
|
||||||
|
handleChange={(event) => props.setFieldValue('city_id', event.target.value)}
|
||||||
|
setFieldTouched={props.setFieldTouched}
|
||||||
|
error={props.touched.city_id && Boolean(props.errors.city_id)}
|
||||||
|
helperText={props.touched.city_id && props.errors.city_id}
|
||||||
|
onBlur={props.handleBlur("city_id")}
|
||||||
|
/> : <Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
variant="outlined"
|
||||||
|
disabled
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.cityList_empty")}
|
||||||
|
value={t("text_field_loading")}
|
||||||
|
type={"text"}
|
||||||
|
/>}
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<TextField
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="telephone_number"
|
||||||
|
variant="outlined"
|
||||||
|
type={'tel'}
|
||||||
|
size="small"
|
||||||
|
value={props.values.telephone_number}
|
||||||
|
onChange={props.handleChange}
|
||||||
|
label={t("ShowLoan.text_field_tel_number")}
|
||||||
|
placeholder={t(
|
||||||
|
"ShowLoan.text_field_enter_your_tel_number"
|
||||||
|
)}
|
||||||
|
fullWidth
|
||||||
|
onBlur={props.handleBlur("telephone_number")}
|
||||||
|
error={props.touched.telephone_number && Boolean(props.errors.telephone_number)}
|
||||||
|
helperText={props.touched.telephone_number && props.errors.telephone_number}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{educationStates.educationsList.length !== 0 ?
|
||||||
|
<SelectBox
|
||||||
|
name="education_id"
|
||||||
|
label={t("ShowLoan.text_field_education_id")}
|
||||||
|
size="small"
|
||||||
|
isLoading={educationStates.isLoadingEducationsList}
|
||||||
|
errorEcured={educationStates.errorEducationsList}
|
||||||
|
selectType="education_id"
|
||||||
|
selectors={educationStates.educationsList}
|
||||||
|
select={props.values.education_id}
|
||||||
|
schema={{value: "id", name: "title"}}
|
||||||
|
handleChange={(event) => {
|
||||||
|
props.setFieldValue('education_id', event.target.value)
|
||||||
|
}}
|
||||||
|
setFieldTouched={props.setFieldTouched}
|
||||||
|
error={props.touched.education_id && Boolean(props.errors.education_id)}
|
||||||
|
helperText={props.touched.education_id && props.errors.education_id}
|
||||||
|
onBlur={props.handleBlur("education_id")}
|
||||||
|
/> : <Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
variant="outlined"
|
||||||
|
disabled
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_education_id")}
|
||||||
|
value={t("text_field_loading")}
|
||||||
|
type={"text"}
|
||||||
|
/>}
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{occupationStates.occupationsList.length !== 0 ?
|
||||||
|
<SelectBox
|
||||||
|
name="occupation_id"
|
||||||
|
label={t("ShowLoan.text_field_occupation_id")}
|
||||||
|
size="small"
|
||||||
|
isLoading={occupationStates.isLoadingOccupationsList}
|
||||||
|
errorEcured={occupationStates.errorOccupationsList}
|
||||||
|
selectType="occupation_id"
|
||||||
|
selectors={occupationStates.occupationsList}
|
||||||
|
select={props.values.occupation_id}
|
||||||
|
schema={{value: "id", name: "title"}}
|
||||||
|
handleChange={(event) => {
|
||||||
|
props.setFieldValue('occupation_id', event.target.value)
|
||||||
|
}}
|
||||||
|
setFieldTouched={props.setFieldTouched}
|
||||||
|
error={props.touched.occupation_id && Boolean(props.errors.occupation_id)}
|
||||||
|
helperText={props.touched.occupation_id && props.errors.occupation_id}
|
||||||
|
onBlur={props.handleBlur("occupation_id")}
|
||||||
|
/> : <Field
|
||||||
|
as={TextField}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
variant="outlined"
|
||||||
|
disabled
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_occupation_id")}
|
||||||
|
value={t("text_field_loading")}
|
||||||
|
type={"text"}
|
||||||
|
/>}
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "start",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mx: {xs: 0, sm: 2},
|
||||||
|
my: 2,
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Field
|
||||||
|
as={TextField}
|
||||||
|
multiline
|
||||||
|
rows={4}
|
||||||
|
sx={{width: "100%"}}
|
||||||
|
name="address"
|
||||||
|
variant="outlined"
|
||||||
|
size="small"
|
||||||
|
label={t("ShowLoan.text_field_address")}
|
||||||
|
placeholder={t("ShowLoan.text_field_enter_your_address")}
|
||||||
|
type={"text"}
|
||||||
|
error={!!(props.touched.address && props.errors.address)}
|
||||||
|
fullWidth
|
||||||
|
helperText={props.touched.address ? props.errors.address : null}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: {xs: "column", sm: "row"},
|
||||||
|
alignItems: "center",
|
||||||
|
mx: "auto",
|
||||||
|
width: {xs: "100%", sm: "30%", md: "25%"},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
fullWidth
|
||||||
|
type="submit"
|
||||||
|
variant="contained"
|
||||||
|
size="large"
|
||||||
|
sx={{mt: 2}}
|
||||||
|
endIcon={<EditIcon/>}
|
||||||
|
disabled={props.isSubmitting || !props.dirty || !props.isValid}
|
||||||
|
>
|
||||||
|
{t("ShowLoan.button_submit")}
|
||||||
|
</Button>
|
||||||
|
</Box>
|
||||||
|
</StyledForm>
|
||||||
|
</Stack>
|
||||||
|
)}
|
||||||
|
</Formik>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default UpdateForm;
|
||||||
@@ -1,263 +1,34 @@
|
|||||||
import StyledForm from "@/core/components/StyledForm";
|
import UpdateForm from "@/components/dashboard/navgan/show/form/UpdateForm";
|
||||||
import {Box, Button, Stack, TextField} from "@mui/material";
|
import {useEffect, useState} from "react";
|
||||||
import {Field, Formik} from "formik";
|
import {GET_LOAN_DETAILS} from "@/core/data/apiRoutes";
|
||||||
|
import {useRouter} from "next/router";
|
||||||
|
import {SvgLoading, useRequest} from "@witel/webapp-builder";
|
||||||
|
import {Stack, Typography} from "@mui/material";
|
||||||
import {useTranslations} from "next-intl";
|
import {useTranslations} from "next-intl";
|
||||||
import EditIcon from '@mui/icons-material/Edit';
|
|
||||||
import * as Yup from "yup";
|
|
||||||
|
|
||||||
const ShowLoanForm = () => {
|
const ShowLoanForm = () => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
const {query} = useRouter();
|
||||||
|
const requestServer = useRequest({auth: true, notification: false});
|
||||||
|
const [LoanDetails, setLoanDetails] = useState({});
|
||||||
|
|
||||||
// initial values
|
useEffect(() => {
|
||||||
const initialValues = {
|
requestServer(GET_LOAN_DETAILS + query.id, 'get', {auth: true, notification: false}).then(({data}) => {
|
||||||
national_code: "0312288875",
|
setLoanDetails(data.data);
|
||||||
postal_code: "326585475",
|
}).catch(() => {
|
||||||
national_card_serial_num: "0312288875",
|
})
|
||||||
address: "تهران - ثنایی - مطهری ساختمان مهتاب",
|
}, []);
|
||||||
birth_date: "10/25/44",
|
|
||||||
navgan_id: "14575"
|
|
||||||
};
|
|
||||||
// end initial values
|
|
||||||
|
|
||||||
// validation
|
|
||||||
const validationSchema = Yup.object().shape({
|
|
||||||
national_code: Yup.string().required(t("showLoan.error_message_national_code")),
|
|
||||||
postal_code: Yup.string().required(t("showLoan.error_message_postal_code")),
|
|
||||||
national_card_serial_num: Yup.string().required(t("showLoan.error_message_national_card_serial_num")),
|
|
||||||
address: Yup.string().required(t("showLoan.error_message_address")),
|
|
||||||
birth_date: Yup.string().required(t("showLoan.error_message_birth_date")),
|
|
||||||
navgan_id: Yup.string().required(t("showLoan.error_message_navgan_id")),
|
|
||||||
});
|
|
||||||
// end validation
|
|
||||||
|
|
||||||
// submit
|
|
||||||
const handleSubmit = async (values, props) => {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append("national_code", values.national_code);
|
|
||||||
formData.append("postal_code", values.postal_code);
|
|
||||||
formData.append("national_card_serial_num", values.national_card_serial_num);
|
|
||||||
formData.append("address", values.address);
|
|
||||||
formData.append("birth_date", values.birth_date);
|
|
||||||
formData.append("navgan_id", values.navgan_id);
|
|
||||||
};
|
|
||||||
// end submit
|
|
||||||
|
|
||||||
|
if (Object.keys(LoanDetails).length === 0) {
|
||||||
|
return (
|
||||||
|
<Stack sx={{alignItems: "center", justifyContent: "center"}} spacing={3}>
|
||||||
|
<SvgLoading height={150} width={150}/>
|
||||||
|
<Typography>{t("ShowLoan.loading_show_component")}</Typography>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Formik
|
<UpdateForm LoanDetails={LoanDetails} LoanId={query.id}/>
|
||||||
initialValues={initialValues}
|
|
||||||
onSubmit={handleSubmit}
|
|
||||||
validationSchema={validationSchema}
|
|
||||||
>
|
|
||||||
{(props) => (
|
|
||||||
<Stack
|
|
||||||
spacing={2}
|
|
||||||
sx={{
|
|
||||||
p: 1,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<StyledForm sx={{width: "100%"}}>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
display: "flex",
|
|
||||||
flexDirection: {xs: "column", sm: "row"},
|
|
||||||
alignItems: "start",
|
|
||||||
justifyContent: "center",
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="national_code"
|
|
||||||
disabled
|
|
||||||
variant="standard"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_national_code")}
|
|
||||||
placeholder={t("showLoan.text_field_enter_your_national_code")}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.national_code && props.errors.national_code)}
|
|
||||||
fullWidth
|
|
||||||
helperText={props.touched.national_code ? props.errors.national_code : null}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="birth_date"
|
|
||||||
disabled
|
|
||||||
variant="standard"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_birth_date")}
|
|
||||||
placeholder={t(
|
|
||||||
"showLoan.text_field_enter_your_birth_date"
|
|
||||||
)}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.birth_date && props.errors.birth_date)}
|
|
||||||
fullWidth
|
|
||||||
helperText={
|
|
||||||
props.touched.birth_date
|
|
||||||
? props.errors.birth_date
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="national_card_serial_num"
|
|
||||||
disabled
|
|
||||||
variant="standard"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_national_card_serial_num")}
|
|
||||||
placeholder={t(
|
|
||||||
"showLoan.text_field_enter_your_national_card_serial_num"
|
|
||||||
)}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.national_card_serial_num && props.errors.national_card_serial_num)}
|
|
||||||
fullWidth
|
|
||||||
helperText={
|
|
||||||
props.touched.national_card_serial_num
|
|
||||||
? props.errors.national_card_serial_num
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
display: "flex",
|
|
||||||
flexDirection: {xs: "column", sm: "row"},
|
|
||||||
alignItems: "start",
|
|
||||||
justifyContent: "center",
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="address"
|
|
||||||
variant="outlined"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_address")}
|
|
||||||
placeholder={t("showLoan.text_field_enter_your_address")}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.address && props.errors.address)}
|
|
||||||
fullWidth
|
|
||||||
helperText={props.touched.address ? props.errors.address : null}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="postal_code"
|
|
||||||
variant="outlined"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_postal_code")}
|
|
||||||
placeholder={t(
|
|
||||||
"showLoan.text_field_enter_your_postal_code"
|
|
||||||
)}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.postal_code && props.errors.postal_code)}
|
|
||||||
fullWidth
|
|
||||||
helperText={
|
|
||||||
props.touched.postal_code
|
|
||||||
? props.errors.postal_code
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
my: 2,
|
|
||||||
width: "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Field
|
|
||||||
as={TextField}
|
|
||||||
sx={{width: "100%"}}
|
|
||||||
name="navgan_id"
|
|
||||||
variant="outlined"
|
|
||||||
size="small"
|
|
||||||
label={t("showLoan.text_field_navgan_id")}
|
|
||||||
placeholder={t(
|
|
||||||
"showLoan.text_field_enter_your_navgan_id"
|
|
||||||
)}
|
|
||||||
type={"text"}
|
|
||||||
error={!!(props.touched.navgan_id && props.errors.navgan_id)}
|
|
||||||
fullWidth
|
|
||||||
helperText={
|
|
||||||
props.touched.navgan_id
|
|
||||||
? props.errors.navgan_id
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
mx: {xs: 0, sm: 2},
|
|
||||||
display: "flex",
|
|
||||||
justifyContent: "end"
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Button
|
|
||||||
fullWidth
|
|
||||||
type="submit"
|
|
||||||
variant="contained"
|
|
||||||
size="large"
|
|
||||||
sx={{
|
|
||||||
mt: 2,
|
|
||||||
width: "fit-content",
|
|
||||||
display: "flex",
|
|
||||||
}}
|
|
||||||
endIcon={<EditIcon/>}
|
|
||||||
disabled={props.isSubmitting}
|
|
||||||
>
|
|
||||||
{t("showLoan.button_submit")}
|
|
||||||
</Button>
|
|
||||||
</Box>
|
|
||||||
</StyledForm>
|
|
||||||
</Stack>
|
|
||||||
)}
|
|
||||||
</Formik>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import {Box, Chip, Divider} from "@mui/material";
|
|
||||||
import {useTranslations} from "next-intl";
|
import {useTranslations} from "next-intl";
|
||||||
import {CenterLayout, useUser} from "@witel/webapp-builder";
|
import {CenterLayout, useUser} from "@witel/webapp-builder";
|
||||||
import ShowLoanForm from "@/components/dashboard/navgan/show/form";
|
import ShowLoanForm from "@/components/dashboard/navgan/show/form";
|
||||||
@@ -9,15 +8,6 @@ const ShowLoan = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<CenterLayout>
|
<CenterLayout>
|
||||||
<Box sx={{width: "80%", my: 2}}>
|
|
||||||
<Divider>
|
|
||||||
<Chip
|
|
||||||
label={`${t("showLoan.show_loan_page")} | ${
|
|
||||||
user.type_name
|
|
||||||
}`}
|
|
||||||
/>
|
|
||||||
</Divider>
|
|
||||||
</Box>
|
|
||||||
<ShowLoanForm/>
|
<ShowLoanForm/>
|
||||||
</CenterLayout>
|
</CenterLayout>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -69,10 +69,10 @@ export default function PickerWithButtonField({formik, disabled}) {
|
|||||||
>
|
>
|
||||||
<LocalizationProvider dateAdapter={AdapterDateFnsJalali}>
|
<LocalizationProvider dateAdapter={AdapterDateFnsJalali}>
|
||||||
<ButtonDatePicker
|
<ButtonDatePicker
|
||||||
label={formik.values.birthday === "" ? null : formik.values.birthday
|
label={formik.values.birthday
|
||||||
.locale("fa")
|
.locale("fa")
|
||||||
.format("YYYY/MM/DD")}
|
.format("YYYY/MM/DD")}
|
||||||
value={formik.values.birthday === "" ? null : formik.values.birthday.toDate()}
|
value={formik.values.birthday.toDate()}
|
||||||
formik={formik}
|
formik={formik}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onChange={(newValue) => {
|
onChange={(newValue) => {
|
||||||
|
|||||||
@@ -13,14 +13,15 @@ function SelectBox({
|
|||||||
disabled,
|
disabled,
|
||||||
helperText,
|
helperText,
|
||||||
isLoading,
|
isLoading,
|
||||||
errorEcured
|
errorEcured,
|
||||||
|
variant = "outlined"
|
||||||
}) {
|
}) {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormControl
|
<FormControl
|
||||||
disabled={disabled || false}
|
disabled={disabled || false}
|
||||||
variant={"outlined"}
|
variant={variant}
|
||||||
fullWidth
|
fullWidth
|
||||||
size="small"
|
size="small"
|
||||||
error={error}
|
error={error}
|
||||||
|
|||||||
@@ -18,4 +18,7 @@ export const GET_CITIES_LIST = BASE_URL + "/cities";
|
|||||||
export const GET_EDUCATIONS_LIST = BASE_URL + "/education";
|
export const GET_EDUCATIONS_LIST = BASE_URL + "/education";
|
||||||
export const GET_OCCUPATIONS_LIST = BASE_URL + "/occupations";
|
export const GET_OCCUPATIONS_LIST = BASE_URL + "/occupations";
|
||||||
|
|
||||||
|
export const GET_LOAN_DETAILS = BASE_URL + "/navgan/loan/details/"
|
||||||
|
export const UPDATE_LOAN = BASE_URL + "/navgan/loan/update/"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ const DashboardLayout = (props) => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<DashboardLayoutPure
|
<DashboardLayoutPure
|
||||||
middlewares={{list: [UserInfo], props: {...middlewaresProps,loginUrl:'/login'}}}
|
middlewares={{list: [UserInfo], props: {...middlewaresProps, loginUrl: '/login'}}}
|
||||||
user_introduction={user.phone_number}
|
user_introduction={user.phone_number}
|
||||||
headerProfileItems={headerProfileItems}
|
headerProfileItems={headerProfileItems}
|
||||||
headerSubtitle={`${t('today')} ${moment().locale('fa').format('LL')}`}
|
headerSubtitle={`${t('today')} ${moment().locale('fa').format('LL')}`}
|
||||||
sidebarMenu={sidebarMenu}
|
sidebarMenu={sidebarMenu}
|
||||||
urlNotification={GET_SIDEBAR_NOTIFICATION}
|
urlNotification={GET_SIDEBAR_NOTIFICATION}
|
||||||
BC_segmentsToRemove={['navgan']}
|
BC_segmentsToRemove={['navgan', '[id]']}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import ShowLoan from "@/components/dashboard/navgan/show";
|
import ShowLoan from "@/components/dashboard/navgan/show";
|
||||||
|
import {globalServerProps} from "@/core/utils/globalServerProps";
|
||||||
|
|
||||||
export default function ShowLoanRequest() {
|
export default function ShowLoanRequest() {
|
||||||
return (
|
return (
|
||||||
@@ -11,10 +12,8 @@ export async function getServerSideProps({req, locale}) {
|
|||||||
const {isBot} = parse(req.headers["user-agent"]);
|
const {isBot} = parse(req.headers["user-agent"]);
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
messages: (await import(`&/locales/${locale}/app.json`)).default,
|
...await globalServerProps({req, locale}),
|
||||||
title: "showLoan.show_loan_page",
|
title: "ShowLoan.show_loan_page",
|
||||||
isBot,
|
|
||||||
locale,
|
|
||||||
layout: {name: 'DashboardLayout'}
|
layout: {name: 'DashboardLayout'}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user