diff --git a/public/fontiran.scss b/public/fontiran.scss
index 86d585d..5ee0036 100644
--- a/public/fontiran.scss
+++ b/public/fontiran.scss
@@ -167,3 +167,10 @@ This set of fonts are used in this project under the license: (.....)
url('./fonts/woff/Parastoo-Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/ttf/Parastoo-Bold.ttf') format('truetype');
}
+
+@font-face {
+ font-family: Bnazanin;
+ font-style: normal;
+ font-weight: normal;
+ src: url('./fonts/ttf/BNazanin.ttf') format('truetype');
+}
diff --git a/public/fonts/ttf/BNazanin.ttf b/public/fonts/ttf/BNazanin.ttf
new file mode 100644
index 0000000..4e59251
Binary files /dev/null and b/public/fonts/ttf/BNazanin.ttf differ
diff --git a/public/images/logo.png b/public/images/logo.png
new file mode 100644
index 0000000..075e3fe
Binary files /dev/null and b/public/images/logo.png differ
diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index 87ae5d6..d070036 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -17,6 +17,9 @@
"online_message": "شما به اینترنت وصل هستید",
"offline_message": "اتصال شما به اینترنت قطع شده است",
"routing_to": "در حال انتقال به صفحه",
+ "data_not_found": "اطلاعاتی یافت نشد!",
+ "btn_print": "چاپ",
+ "button_back_to_previous": "بازگشت به صفحه قبل",
"header": {
"open_profile": "پروفایل",
"edit_profile": " پروفایل",
@@ -205,7 +208,9 @@
"upload_file": "صورت جلسه کارگروه استانی را بارگذاری کنید",
"upload_file_required": "وارد کردن صورت جلسه کارگروه استانی الزامیست",
"upload_file_unit": "فایل بارگذاری شده باید حداکثر 2Mb باشد",
- "upload_file_format": "فرمت قابل قبول : png,jpg,pdf"
+ "upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
+ "print_appraisal_confirmation": "چاپ تاییدیه ارزیابی",
+ "print_final_credit_amount": "چاپ صورت جلسه تعیین مبلغ نهایی"
},
"RefahiProvinceManager": {
"name": "نام",
diff --git a/public/print.scss b/public/print.scss
new file mode 100644
index 0000000..990a647
--- /dev/null
+++ b/public/print.scss
@@ -0,0 +1,9 @@
+@media print {
+ body {
+ margin: 0;
+ padding: 0;
+ }
+ @page {
+ size: A4;
+ }
+}
\ No newline at end of file
diff --git a/src/components/layouts/Print/Header/ProfileData.jsx b/src/components/layouts/Print/Header/ProfileData.jsx
new file mode 100644
index 0000000..548378b
--- /dev/null
+++ b/src/components/layouts/Print/Header/ProfileData.jsx
@@ -0,0 +1,18 @@
+import {Avatar, Stack, Typography} from "@mui/material";
+import useUser from "@/lib/app/hooks/useUser";
+
+export default function ProfileData() {
+ const {user} = useUser();
+ return (
+
+
+
+ {user.username}
+
+
+ );
+}
diff --git a/src/components/layouts/Print/Header/ProfileMenu.jsx b/src/components/layouts/Print/Header/ProfileMenu.jsx
new file mode 100644
index 0000000..415d501
--- /dev/null
+++ b/src/components/layouts/Print/Header/ProfileMenu.jsx
@@ -0,0 +1,62 @@
+import {Avatar, IconButton, Menu, Tooltip} from "@mui/material";
+import {useState} from "react";
+import ProfileData from "./ProfileData";
+import ProfileOptions from "./ProfileOptions";
+import {useTranslations} from "next-intl";
+import useUser from "@/lib/app/hooks/useUser";
+
+function ProfileMenu() {
+ const t = useTranslations();
+ const [anchorElUser, setAnchorElUser] = useState(null);
+ const {user} = useUser();
+
+ const handleOpenUserMenu = (event) => {
+ setAnchorElUser(event.currentTarget);
+ };
+ const handleCloseUserMenu = () => {
+ setAnchorElUser(null);
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+ >
+ );
+}
+
+export default ProfileMenu;
diff --git a/src/components/layouts/Print/Header/ProfileOptionLogOut.jsx b/src/components/layouts/Print/Header/ProfileOptionLogOut.jsx
new file mode 100644
index 0000000..2a6cf85
--- /dev/null
+++ b/src/components/layouts/Print/Header/ProfileOptionLogOut.jsx
@@ -0,0 +1,49 @@
+import {Box, Button, MenuItem, Typography} from "@mui/material";
+import MeetingRoomIcon from "@mui/icons-material/MeetingRoom";
+import useUser from "@/lib/app/hooks/useUser";
+import {useTranslations} from "next-intl";
+
+export default function ProfileOptionLogOut({handleCloseUserMenu}) {
+ const t = useTranslations();
+ const {clearToken} = useUser();
+ const handleClickLogOut = () => {
+ handleCloseUserMenu();
+ clearToken();
+ };
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/components/layouts/Print/Header/ProfileOptions.jsx b/src/components/layouts/Print/Header/ProfileOptions.jsx
new file mode 100644
index 0000000..6e7bdba
--- /dev/null
+++ b/src/components/layouts/Print/Header/ProfileOptions.jsx
@@ -0,0 +1,49 @@
+import {Box, MenuItem, Typography} from "@mui/material";
+import {NextLinkComposed} from "@/core/components/LinkRouting";
+import {useTranslations} from "next-intl";
+import headerProfileItems from "@/core/data/headerProfileItems";
+import ProfileOptionLogOut from "./ProfileOptionLogOut";
+
+export default function ProfileOptions({handleCloseUserMenu}) {
+ const t = useTranslations();
+
+ return (
+ <>
+ {headerProfileItems.map((profile_item) => (
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/core/components/PrintablePage.jsx b/src/core/components/PrintablePage.jsx
new file mode 100644
index 0000000..70a264b
--- /dev/null
+++ b/src/core/components/PrintablePage.jsx
@@ -0,0 +1,82 @@
+import {Box, Container, Divider, Grid, Paper, Stack, Typography} from '@mui/material';
+
+const PrintablePage = ({children, header, footer}) => (
+ <>
+
+
+
+
+
+
+
+
+
+ باسمه تعالی
+ جمهوری اسلامی ایران
+ وزارت راه و
+ شهرسازی
+ سازمان
+ راهداری و حمل و نقل جاده
+ ای
+
+
+
+ شماره:
+ تاریخ:
+ پیوست:
+
+
+
+
+ {children}
+
+
+
+
+
+ آدرس: تهران-بلوار
+ کشاورز-خیابان فلسطین جنوبی-خیابان
+ دمشق-پلاک17
+ تلفن: 88-88804379
+ تلفن گویا: 88804400
+ کدپستی: 1416753941
+
+
+ صندوق پستی: 3773-14155
+ پست الکترونیک: info@rmto.ir
+ سایت الکترونیک: www.rmto.ir
+
+
+
+
+
+ >
+);
+
+export default PrintablePage;
\ No newline at end of file
diff --git a/src/layouts/PrintLayout.jsx b/src/layouts/PrintLayout.jsx
new file mode 100644
index 0000000..301a161
--- /dev/null
+++ b/src/layouts/PrintLayout.jsx
@@ -0,0 +1,12 @@
+import WithAuthMiddleware from "@/middlewares/WithAuth";
+import Print from "@/components/layouts/Print";
+
+const PrintLayout = (props) => {
+ return (
+
+
+
+ )
+}
+
+export default PrintLayout
\ No newline at end of file
diff --git a/src/layouts/index.jsx b/src/layouts/index.jsx
index 4d4ed7f..a69d886 100644
--- a/src/layouts/index.jsx
+++ b/src/layouts/index.jsx
@@ -1,8 +1,10 @@
import DashboardLayout from "@/layouts/DashboardLayout";
import {Fragment} from "react";
+import PrintLayout from "@/layouts/PrintLayout";
const layoutList = {
- DashboardLayout
+ DashboardLayout,
+ PrintLayout
}
const Layout = ({layout = {}, children}) => {