From 4ecb4bd2c087c742acc06bee3438a50661636b38 Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Thu, 15 Feb 2024 15:54:19 +0330 Subject: [PATCH] excel export for bank management page --- public/locales/fa/app.json | 7 +- .../bank-management/Buttons/printExcel.jsx | 68 +++++++++++++++++++ .../dashboard/bank-management/TableToobar.jsx | 13 ++++ .../dashboard/bank-management/index.jsx | 5 +- src/core/data/apiRoutes.js | 1 + 5 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 src/components/dashboard/bank-management/Buttons/printExcel.jsx create mode 100644 src/components/dashboard/bank-management/TableToobar.jsx diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 9208e6a..e86110a 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -64,7 +64,7 @@ "edit-profile": "ویرایش پروفایل", "loan-history": "کارتابل نظارت", "loan-history-province": "کارتابل نظارت استانی", - "reserve-loan" : "وام های رزرو" + "reserve-loan": "وام های رزرو" }, "secondary": { "passenger-office": "توزیع درخواست", @@ -416,7 +416,7 @@ "print_report": "چاپ گزارش کارشناسی", "max_amount": "حداکثر مبلغ پیشنهادی {value} میلیون ریال می باشد", "excel_report": "گزارش اکسل", - "reserve-loan-title" : "رزرو وام", + "reserve-loan-title": "رزرو وام", "description-reserve-loan-first": "آیا از رزرو وام به کد یکتا", "description-reserve-loan-second": "اطمینان دارید؟", "button-reserve-cancel": "بستن", @@ -440,7 +440,8 @@ "national_id": "کد ملی", "proposed_amount": "مبلغ پیشنهادی", "bank_loan_amount": "مبلغ وام بانک", - "navgan_id": "کد ناوگان" + "navgan_id": "کد ناوگان", + "excel_report": "گزارش اکسل" }, "UserManagement": { "name": "نام", diff --git a/src/components/dashboard/bank-management/Buttons/printExcel.jsx b/src/components/dashboard/bank-management/Buttons/printExcel.jsx new file mode 100644 index 0000000..bf2f09f --- /dev/null +++ b/src/components/dashboard/bank-management/Buttons/printExcel.jsx @@ -0,0 +1,68 @@ +import {Button, CircularProgress} from "@mui/material"; +import {useTranslations} from "next-intl"; +import {useMemo, useState} from "react"; +import useRequest from "@/lib/app/hooks/useRequest"; +import {EXPORT_BANK_MANAGEMENT} from "@/core/data/apiRoutes"; +import moment from "jalali-moment"; +import FileSaver from 'file-saver'; +import DescriptionIcon from '@mui/icons-material/Description'; + +const PrintExcel = ({table}) => { + const t = useTranslations(); + const [loading, setLoading] = useState(false) + const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}}) + const {columnFilters, columnFilterFns, sorting} = table.getState() + const columns = table.getAllColumns() + + const filterParams = useMemo(() => { + const params = new URLSearchParams(); + const filters = columnFilters.map((filter) => { + let datatype; + for (const i in columns) { + if (columns[i].id == filter.id) { + datatype = columns[i].columnDef.datatype; + } + } + return { + ...filter, fn: columnFilterFns[filter.id], datatype: datatype, + }; + }); + params.set("start", '0'); + params.set("filters", JSON.stringify(filters ?? [])); + params.set("sorting", JSON.stringify(sorting ?? [])); + return params; + }, [columnFilters, columnFilterFns, sorting, columns,]); + + + const clickHandler = () => { + setLoading(true) + requestServer(`${EXPORT_BANK_MANAGEMENT}?${filterParams}`, 'get', { + auth: true, + notification: false, + requestOptions: {responseType: 'blob'} + }).then((response) => { + const filename = `گزارش کارتابل نظارت بانک تاریخ_${moment().format('jYYYY_jMM_jDD')}.xlsx`; + FileSaver.saveAs(response.data, filename); + }).catch(() => { + }).finally(() => { + setLoading(false) + }) + } + + + return ( + + ) +} + +export default PrintExcel \ No newline at end of file diff --git a/src/components/dashboard/bank-management/TableToobar.jsx b/src/components/dashboard/bank-management/TableToobar.jsx new file mode 100644 index 0000000..8de0761 --- /dev/null +++ b/src/components/dashboard/bank-management/TableToobar.jsx @@ -0,0 +1,13 @@ +import {Stack} from "@mui/material"; +import PrintExcel from "@/components/dashboard/bank-management/Buttons/printExcel"; + +const TableToolbar = ({table}) => { + + return ( + + + + ) +} + +export default TableToolbar \ No newline at end of file diff --git a/src/components/dashboard/bank-management/index.jsx b/src/components/dashboard/bank-management/index.jsx index 94fa758..137dc43 100644 --- a/src/components/dashboard/bank-management/index.jsx +++ b/src/components/dashboard/bank-management/index.jsx @@ -5,6 +5,7 @@ import moment from "jalali-moment"; import DataTable from "@/core/components/DataTable"; import TableRowActions from "@/components/dashboard/bank-management/TableRowActions"; import {GET_BANK_STATEMENT} from "@/core/data/apiRoutes"; +import TableToolbar from "@/components/dashboard/bank-management/TableToobar"; function DashboardBankManagementComponent() { const t = useTranslations(); @@ -183,8 +184,8 @@ function DashboardBankManagementComponent() { tableUrl={GET_BANK_STATEMENT} columns={columns} selectableRow={false} - // enableCustomToolbar={true} - // CustomToolbar={TableToolbar} + enableCustomToolbar={true} + CustomToolbar={TableToolbar} enableLastUpdate={true} sorting={[{ id: 'score', desc: false diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index 3c3adb3..315e775 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -255,6 +255,7 @@ export const DELETE_ADMIN_SETTING = BASE_URL + "/dashboard/settings/delete" //bank statement export const GET_BANK_STATEMENT = BASE_URL + "/dashboard/bank_referred_loans" export const RESEND_BANK_STATEMENT = BASE_URL + "/dashboard/bank_referred_loans/send" +export const EXPORT_BANK_MANAGEMENT = BASE_URL + "/dashboard/bank_referred_loans/export" // loan statistics export const GET_LOAN_STATISTICS = BASE_URL + "/dashboard/reports/navgan/statistics"