diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index d037a5c..5a23145 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -637,6 +637,35 @@
"button-revise": "ارسال",
"description": "توضیحات خود را وارد نمائید"
},
+ "ComebackLoanDetailDialog": {
+ "comeback-loan-detail": "علت عودت بانک",
+ "Table_head_loan_id": "کد یکتا وام",
+ "Table_head_comeback_name": "علت عودت",
+ "Table_head_comeback_comment": "توضیحات",
+ "Table_head_comeback_date": "تاریخ"
+ },
+ "BankPaymentDialog": {
+ "bank-payment": "پرداخت بانک",
+ "Table_head_loan_id": "کد یکتا وام",
+ "Table_head_installment_number": "شماره قسط واریز شده",
+ "Table_head_remaining_facility": "تسهیلات باقیمانده",
+ "Table_head_paid_facility": "تسهیلات پرداخت شده",
+ "button-cancel": "بستن",
+ "Table_head_paid_date": "تاریخ"
+ },
+ "ApprovedBankLoanDialog": {
+ "approved-bank-loan": "انعقاد قرارداد بانک",
+ "Table_head_loan_id": "کد یکتا وام",
+ "Table_head_approved_date": "تاریخ تصویب بانک",
+ "Table_head_approved_facility_bank": "مبلغ مصوب تسهیلات سهم بانک",
+ "Table_head_approved_facility_gov": "مبلغ مصوب تسهیلات سهم دولت",
+ "Table_head_approved_facility_person": "مبلغ مصوب تسهیلات سهم متقاضی",
+ "Table_head_contract_date": "تاریخ قرارداد بانک",
+ "Table_head_contract_facility_bank": "مبلغ قرارداد تسهیلات سهم بانک",
+ "Table_head_contract_facility_gov": "مبلغ قرارداد تسهیلات سهم دولت",
+ "Table_head_contract_facility_person": "مبلغ قرارداد تسهیلات سهم متقاضی",
+ "Table_head_due_date": "تاریخ سررسید اول قسط"
+ },
"ReferReasonDialog": {
"refer_reason": "علت ارجاع",
"button-cancel" : "بازگشت",
diff --git a/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/ApprovedBankLoanContent.jsx b/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/ApprovedBankLoanContent.jsx
new file mode 100644
index 0000000..ee27efe
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/ApprovedBankLoanContent.jsx
@@ -0,0 +1,131 @@
+import {
+ Box,
+ DialogContent,
+ LinearProgress,
+ Paper,
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Typography,
+} from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useEffect, useState } from "react";
+import useRequest from "@/lib/app/hooks/useRequest";
+import { GET_APPROVED_BANK_LOAN } from "@/core/data/apiRoutes";
+import moment from "jalali-moment";
+
+const ApprovedBankLoanContent = ({ rowId }) => {
+ const t = useTranslations();
+ const requestServer = useRequest({ auth: true, notification: false });
+ const [ApprovedBankDetail, setApprovedBankDetail] = useState([]);
+ const [isLoading, setIsLoading] = useState(true);
+ const [error, setError] = useState(false);
+ useEffect(() => {
+ requestServer(`${GET_APPROVED_BANK_LOAN}/${rowId}`, "get")
+ .then((res) => {
+ setApprovedBankDetail(res.data.data);
+ setIsLoading(false);
+ })
+ .catch((error) => {
+ setError(true);
+ });
+ }, []);
+
+ return (
+
+ {error ? (
+
+ {t("LoanHistory.Table_history_error")}
+
+ ) : isLoading ? (
+
+ ) : (
+
+
+
+
+
+ {t("ApprovedBankLoanDialog.Table_head_approved_date")}
+
+ {t("ApprovedBankLoanDialog.Table_head_approved_facility_bank")}
+
+
+ {t("ApprovedBankLoanDialog.Table_head_approved_facility_gov")}
+
+
+ {t("ApprovedBankLoanDialog.Table_head_approved_facility_person")}
+
+ {t("ApprovedBankLoanDialog.Table_head_contract_date")}
+
+ {t("ApprovedBankLoanDialog.Table_head_contract_facility_bank")}
+
+
+ {t("ApprovedBankLoanDialog.Table_head_contract_facility_gov")}
+
+
+ {t("ApprovedBankLoanDialog.Table_head_contract_facility_person")}
+
+ {t("ApprovedBankLoanDialog.Table_head_due_date")}
+
+
+
+
+
+ {ApprovedBankDetail.approved_date
+ ? moment(ApprovedBankDetail.approved_date)
+ .locale("fa")
+ .format("HH:mm | yyyy/MM/DD")
+ : null}
+
+ {ApprovedBankDetail.approved_facility_bank}
+ {ApprovedBankDetail.approved_facility_gov}
+ {ApprovedBankDetail.approved_facility_person}
+
+ {ApprovedBankDetail.contract_date
+ ? moment(ApprovedBankDetail.contract_date)
+ .locale("fa")
+ .format("HH:mm | yyyy/MM/DD")
+ : null}
+
+ {ApprovedBankDetail.contract_facility_bank}
+ {ApprovedBankDetail.contract_facility_gov}
+ {ApprovedBankDetail.contract_facility_person}
+
+ {ApprovedBankDetail.due_date
+ ? moment(ApprovedBankDetail.due_date)
+ .locale("fa")
+ .format("HH:mm | yyyy/MM/DD")
+ : null}
+
+
+
+
+
+
+ )}
+
+ );
+};
+export default ApprovedBankLoanContent;
diff --git a/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/index.jsx b/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/index.jsx
new file mode 100644
index 0000000..95aa169
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/ApprovedBankLoan/index.jsx
@@ -0,0 +1,43 @@
+import { Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useState } from "react";
+import GavelIcon from "@mui/icons-material/Gavel";
+import ApprovedBankLoanContent from "./ApprovedBankLoanContent";
+
+const ApprovedBankLoan = ({ rowId }) => {
+ const t = useTranslations();
+ const [openApprovedBankLoanDialog, setOpenApprovedBankLoanDialog] = useState(false);
+ return (
+ <>
+
+ setOpenApprovedBankLoanDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default ApprovedBankLoan;
diff --git a/src/components/dashboard/loan-followup/Form/BankPayment/BankPaymentContent.jsx b/src/components/dashboard/loan-followup/Form/BankPayment/BankPaymentContent.jsx
new file mode 100644
index 0000000..35c3e8c
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/BankPayment/BankPaymentContent.jsx
@@ -0,0 +1,97 @@
+import {
+ Box,
+ DialogContent,
+ LinearProgress,
+ Paper,
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Typography,
+} from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useEffect, useState } from "react";
+import useRequest from "@/lib/app/hooks/useRequest";
+import { GET_BANK_PAYMENT } from "@/core/data/apiRoutes";
+import moment from "jalali-moment";
+
+const BankPaymentContent = ({ rowId }) => {
+ const t = useTranslations();
+ const requestServer = useRequest({ auth: true, notification: false });
+ const [BankPaymentDetail, setBankPaymentDetail] = useState([]);
+ const [isLoading, setIsLoading] = useState(true);
+ const [error, setError] = useState(false);
+ useEffect(() => {
+ requestServer(`${GET_BANK_PAYMENT}/${rowId}`, "get")
+ .then((res) => {
+ setBankPaymentDetail(res.data.data);
+ setIsLoading(false);
+ })
+ .catch((error) => {
+ setError(true);
+ });
+ }, []);
+
+ return (
+
+ {error ? (
+
+ {t("LoanHistory.Table_history_error")}
+
+ ) : isLoading ? (
+
+ ) : (
+
+
+
+
+
+ {t("BankPaymentDialog.Table_head_installment_number")}
+ {t("BankPaymentDialog.Table_head_remaining_facility")}
+ {t("BankPaymentDialog.Table_head_paid_facility")}
+ {t("BankPaymentDialog.Table_head_paid_date")}
+
+
+
+
+ {BankPaymentDetail.installment_number}
+ {BankPaymentDetail.paid_facility}
+ {BankPaymentDetail.remaining_facility}
+
+ {BankPaymentDetail.paid_date
+ ? moment(BankPaymentDetail.paid_date)
+ .locale("fa")
+ .format("HH:mm | yyyy/MM/DD")
+ : null}
+
+
+
+
+
+
+ )}
+
+ );
+};
+export default BankPaymentContent;
diff --git a/src/components/dashboard/loan-followup/Form/BankPayment/index.jsx b/src/components/dashboard/loan-followup/Form/BankPayment/index.jsx
new file mode 100644
index 0000000..8a35acf
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/BankPayment/index.jsx
@@ -0,0 +1,43 @@
+import { Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useState } from "react";
+import PaidIcon from "@mui/icons-material/Paid";
+import BankPaymentContent from "./BankPaymentContent";
+
+const BankPayment = ({ rowId }) => {
+ const t = useTranslations();
+ const [openBankPaymentDialog, setOpenBankPaymentDialog] = useState(false);
+ return (
+ <>
+
+ setOpenBankPaymentDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default BankPayment;
diff --git a/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/ComebackLoanDetailContent.jsx b/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/ComebackLoanDetailContent.jsx
new file mode 100644
index 0000000..c2badb9
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/ComebackLoanDetailContent.jsx
@@ -0,0 +1,95 @@
+import {
+ Box,
+ DialogContent,
+ LinearProgress,
+ Paper,
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Typography,
+} from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useEffect, useState } from "react";
+import useRequest from "@/lib/app/hooks/useRequest";
+import { GET_COMEBACK_LOAN_DETAIL } from "@/core/data/apiRoutes";
+import moment from "jalali-moment";
+
+const ComebackLoanDetailContent = ({ rowId }) => {
+ const t = useTranslations();
+ const requestServer = useRequest({ auth: true, notification: false });
+ const [ComebackLoanDetail, setComebackLoanDetail] = useState([]);
+ const [isLoading, setIsLoading] = useState(true);
+ const [error, setError] = useState(false);
+ useEffect(() => {
+ requestServer(`${GET_COMEBACK_LOAN_DETAIL}/${rowId}`, "get")
+ .then((res) => {
+ setComebackLoanDetail(res.data.data);
+ setIsLoading(false);
+ })
+ .catch((error) => {
+ setError(true);
+ });
+ }, []);
+
+ return (
+
+ {error ? (
+
+ {t("LoanHistory.Table_history_error")}
+
+ ) : isLoading ? (
+
+ ) : (
+
+
+
+
+
+ {t("ComebackLoanDetailDialog.Table_head_comeback_name")}
+ {t("ComebackLoanDetailDialog.Table_head_comeback_comment")}
+ {t("ComebackLoanDetailDialog.Table_head_comeback_date")}
+
+
+
+
+ {ComebackLoanDetail.comeback_name}
+ {ComebackLoanDetail.comeback_comment}
+
+ {ComebackLoanDetail.comeback_date
+ ? moment(ComebackLoanDetail.comeback_date)
+ .locale("fa")
+ .format("HH:mm | yyyy/MM/DD")
+ : null}
+
+
+
+
+
+
+ )}
+
+ );
+};
+export default ComebackLoanDetailContent;
diff --git a/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/index.jsx b/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/index.jsx
new file mode 100644
index 0000000..c83895c
--- /dev/null
+++ b/src/components/dashboard/loan-followup/Form/ComebackLoanDetail/index.jsx
@@ -0,0 +1,43 @@
+import { Button, Dialog, DialogActions, DialogTitle, IconButton, Tooltip } from "@mui/material";
+import { useTranslations } from "next-intl";
+import { useState } from "react";
+import SyncAltIcon from "@mui/icons-material/SyncAlt";
+import ComebackLoanDetailContent from "./ComebackLoanDetailContent";
+
+const ComebackLoanDetail = ({ rowId }) => {
+ const t = useTranslations();
+ const [openComebackLoanDetailDialog, setOpenComebackLoanDetailDialog] = useState(false);
+ return (
+ <>
+
+ setOpenComebackLoanDetailDialog(true)}>
+
+
+
+
+ >
+ );
+};
+export default ComebackLoanDetail;
diff --git a/src/components/dashboard/loan-followup/TableRowActions.jsx b/src/components/dashboard/loan-followup/TableRowActions.jsx
index 20e4b4f..352246d 100644
--- a/src/components/dashboard/loan-followup/TableRowActions.jsx
+++ b/src/components/dashboard/loan-followup/TableRowActions.jsx
@@ -2,12 +2,26 @@ import { Box } from "@mui/material";
import ReferPassengerBoss from "@/components/dashboard/loan-followup/Form/ReferPassengerBoss";
import UserInfoForm from "./Form/UserInfoForm";
import PlanningCouncilForm from "@/components/dashboard/loan-followup/Form/PlanningCouncilForm";
+import ComebackLoanDetail from "@/components/dashboard/loan-followup/Form/ComebackLoanDetail";
+import BankPayment from "@/components/dashboard/loan-followup/Form/BankPayment";
+import ApprovedBankLoan from "@/components/dashboard/loan-followup/Form/ApprovedBankLoan";
const TableRow = ({ row, mutate }) => {
return (
-
+ {[11, 12, 13, 14, 15, 16].includes(row.original.state_id) && (
+
+ )}
+
+ {row.original.state_id === 16 && }
+
+ {row.original.state_id === 15 && }
+
+ {row.original.state_id === 14 || row.original.state_id === 15 ? (
+
+ ) : null}
+
{row.original.state_id === 11 || row.original.state_id === 16 ? (
) : null}
diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js
index 7886e5b..4be881d 100644
--- a/src/core/data/apiRoutes.js
+++ b/src/core/data/apiRoutes.js
@@ -39,6 +39,9 @@ export const EXPORT_PASSENGER_BOSS_DETAILS = BASE_URL + "/dashboard/province_wor
export const GET_LOAN_FOLLOWUP = BASE_URL + "/dashboard/vezarat_loan_tracking/";
export const REFER_LOAN_FOLLOWUP_PASSENGERBOSS = BASE_URL + "/dashboard/vezarat_loan_tracking/refer";
export const GET_HISTORY_COUNCIL = BASE_URL + "/dashboard/vezarat_loan_tracking/planning_council_loan";
+export const GET_COMEBACK_LOAN_DETAIL = BASE_URL + "/dashboard/vezarat_loan_tracking/comeback_loan";
+export const GET_BANK_PAYMENT = BASE_URL + "/dashboard/vezarat_loan_tracking/bank_payment_loan";
+export const GET_APPROVED_BANK_LOAN = BASE_URL + "/dashboard/vezarat_loan_tracking/approved_loan";
//transportation assistance
export const GET_TRANSPORTATION_ASSISTANCE = BASE_URL + "/dashboard/transportation_assistant/show";
diff --git a/src/layouts/MuiLayout.jsx b/src/layouts/MuiLayout.jsx
index 53fe430..0b4066f 100644
--- a/src/layouts/MuiLayout.jsx
+++ b/src/layouts/MuiLayout.jsx
@@ -38,10 +38,10 @@ const MuiLayout = ({ children, isBot }) => {
borderRadius: "4px",
},
" input[type='number']::-webkit-inner-spin-button,input[type='number']::-webkit-outer-spin-button ":
- {
- "-webkit-appearance": "none",
- margin: 0,
- },
+ {
+ "-webkit-appearance": "none",
+ margin: 0,
+ },
" input[type='number']": {
"-moz-appearance": "textfield",
},