LFFE-25 print passenger boss and machinery expert

This commit is contained in:
AmirHossein Mahmoodi
2023-11-14 15:55:59 +03:30
parent 380eaf37be
commit e09e174558
18 changed files with 275 additions and 168 deletions

View File

@@ -19,6 +19,7 @@
"routing_to": "در حال انتقال به صفحه",
"data_not_found": "اطلاعاتی یافت نشد!",
"btn_print": "چاپ",
"print_loading": "درحال پردازش اطلاعات ...",
"button_back_to_previous": "بازگشت به صفحه قبل",
"header": {
"open_profile": "پروفایل",
@@ -209,7 +210,6 @@
"upload_file_required": "وارد کردن صورت جلسه کارگروه استانی الزامیست",
"upload_file_unit": "فایل بارگذاری شده باید حداکثر 2Mb باشد",
"upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
"print_appraisal_confirmation": "چاپ تاییدیه ارزیابی",
"print_final_credit_amount": "چاپ صورت جلسه تعیین مبلغ نهایی"
},
"RefahiProvinceManager": {
@@ -308,7 +308,8 @@
"upload_file": "گزارش کارشناسی را بارگذاری کنید",
"upload_file_required": "وارد کردن گزارش کارشناسی الزامیست",
"upload_file_unit": "فایل بارگذاری شده باید حداکثر 2Mb باشد",
"upload_file_format": "فرمت قابل قبول : png,jpg,pdf"
"upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
"print_report": "چاپ گزارش کارشناسی ماشین آلات"
},
"UserManagement": {
"name": "نام",

View File

@@ -0,0 +1,48 @@
import PrintIcon from "@mui/icons-material/Print";
import {Button, CircularProgress} from "@mui/material";
import {useTranslations} from "next-intl";
import {useRouter} from "next/router";
import {useState} from "react";
import useRequest from "@/lib/app/hooks/useRequest";
import {GET_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
import usePrint from "@/lib/app/hooks/usePrint";
const PrintReport = () => {
const t = useTranslations();
const router = useRouter()
const [loading, setLoading] = useState(false)
const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}})
const {setPrintPage, setPrintTitle} = usePrint()
const clickHandler = () => {
setLoading(true)
const params = new URLSearchParams();
params.set("start", '0');
params.set("filters", '[]');
params.set("sorting", '[]');
requestServer(`${GET_MACHINARY_OFFICE}?${params}`, 'get').then((response) => {
const _data = response.data.data
setPrintPage(_data.length)
setPrintTitle(t('MachinaryOffice.print_report'))
sessionStorage.setItem('report-print', JSON.stringify(_data))
router.push('/dashboard/machinery-expert/prints/report')
}).catch(() => {
setLoading(false)
})
}
return (
<Button
color="primary"
variant="contained"
size="small"
disabled={loading}
sx={{textTransform: "unset", alignSelf: "center"}}
startIcon={loading ? <CircularProgress size={18} color="inherit"/> : <PrintIcon/>}
onClick={clickHandler}
>
{t("MachinaryOffice.print_report")}
</Button>
)
}
export default PrintReport

View File

@@ -5,27 +5,16 @@ const Content = ({data}) => {
return (
<>
<PrintablePage key={data.id} header={true} footer={true}>
<Typography sx={{mt: 6}}>
<Typography component={'span'}
sx={{
fontFamily: 'Bnazanin',
fontWeight: 'bold',
fontSize: '1.2rem'
}}> {'اداره کل راهداری و حمل و نقل جاده ای'} </Typography>
<Typography component={'strong'}
sx={{
fontFamily: 'Bnazanin',
fontWeight: 'bold',
fontSize: '1.2rem'
}}> {`استان ${data.province_name}`} </Typography>
</Typography>
<Typography
sx={{
fontFamily: 'Bnazanin',
fontWeight: 'bold'
}}> {'موضوع: تاییدیه ارزیابی و تخصیص اعتبار'} </Typography>
<Typography sx={{fontFamily: 'Bnazanin', mt: 2}}> {'با سلام و احترام'} </Typography>
<Typography textAlign={'justify'} sx={{lineHeight: '1.8'}}>
<Box sx={{mt: 6}}>
<Typography
sx={{
fontFamily: 'Bnazanin',
fontWeight: 'bold',
fontSize: '1.2rem',
textAlign: 'center'
}}> {'گزارش کارشناسی ماشین آلات'} </Typography>
</Box>
<Box textAlign={'justify'} sx={{lineHeight: '1.8', mt: 2}}>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin', pl: 4}}> {'با توجه به نامه شماره'} </Typography>
<Typography component={'span'}
@@ -82,50 +71,22 @@ const Content = ({data}) => {
sx={{fontFamily: 'Bnazanin', fontWeight: 'bold'}}>تهران</Typography>
<Typography
sx={{fontFamily: 'Bnazanin'}}
component={'span'}> {'بازدید بعمل آمد که گزارش بازدید به شرخ ذیل مورد تایید می باشد.'} </Typography>
</Typography>
component={'span'}> {'در جلسه مطرح شد که نتیجه آن به شرح ذیل مورد تایید می باشد.'} </Typography>
</Box>
<Box sx={{border: 1, borderRadius: 1, mt: 3, p: 2}}>
<Typography
sx={{fontFamily: 'Bnazanin'}}> {'* با توجه به یک فقره پیش فاکتور پیوست ارائه شده از تعمیرگاه مجاز'} </Typography>
<Typography textAlign={'justify'} sx={{mt: 2, lineHeight: '1.8'}}>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin'}}> {'اصالت فاکتورهای شماره'} </Typography>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin', fontWeight: 'bold'}}>7563842</Typography>
<Typography
sx={{fontFamily: 'Bnazanin'}}
component={'span'}> {'و صحت اقلام لازم و قیمت آنها جهت نیازمندی بازسازی ناوگان مذکور به مبلغ'} </Typography>
<Typography component={'span'} sx={{
sx={{fontFamily: 'Bnazanin'}}> {'مبلغ پیشنهادی به عدد .............................................. ریال و به حروف ...................................................................... ریال می باشد.'} </Typography>
<Typography
sx={{
lineBreak: 'anywhere',
fontFamily: 'Bnazanin',
fontWeight: 'bold'
}}>{parseInt(2300000000).toLocaleString('en')}</Typography>
<Typography component={'span'} sx={{fontFamily: 'Bnazanin'}}> {'ریال معادل'} </Typography>
<Typography component={'span'} sx={{
fontFamily: 'Bnazanin',
fontWeight: 'bold'
}}>{parseInt(230000000).toLocaleString('en')}</Typography>
}}> {'توضیحات : ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................'} </Typography>
<Stack direction={'row'} justifyContent={'space-between'}>
<Typography
sx={{fontFamily: 'Bnazanin'}}
component={'span'}> {'تومان بابت هزینه کرد تعمیرات ناوگان فوق الذکر مورد تأیید می باشد.'} </Typography>
</Typography>
</Box>
<Stack direction={'row'} sx={{mt: 6}} justifyContent={'space-between'}>
<Typography sx={{fontFamily: 'Bnazanin'}}>رئیس انجمن آقای .......</Typography>
<Typography sx={{fontFamily: 'Bnazanin'}}>انجمن صنفی رانندگان حمل و نقل مسافر
......</Typography>
</Stack>
<Box sx={{border: 1, borderRadius: 1, mt: 8, p: 2}}>
<Typography textAlign={'center'} sx={{fontFamily: 'Bnazanin'}}> {'تعهدنامه'} </Typography>
<Typography textAlign={'justify'} sx={{mt: 1, lineHeight: '1.8'}}>
<Typography component={'span'} sx={{fontFamily: 'Bnazanin'}}> {'اینجانب'} </Typography>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin', fontWeight: 'bold'}}>امیرحسین محمودی</Typography>
sx={{fontFamily: 'Bnazanin'}}> {'نام و نام خانوادگی کارشناس:'} </Typography>
<Typography
component={'span'}
sx={{fontFamily: 'Bnazanin'}}> {'مالک ناوگان اتوبوس | مینی بوس با مشخصات فوق الذکر بدینوسیله تعهد می نمایم مبلغ دریافتی وام را برابر پیش فاکتور ارائه شده صرف تعمیرات و بازسازی ناوگان نمایم و اگر خلاف این ثابت شود برابر مقررات با بنده برخورد شود و حق هیچگونه اعتراضی ندارم.'} </Typography>
<Typography
sx={{fontFamily: 'Bnazanin', textAlign: 'right'}}>تاریخ و امضاء</Typography>
</Typography>
sx={{fontFamily: 'Bnazanin'}}> {'تاریخ و امضاء'} </Typography>
</Stack>
</Box>
</PrintablePage>
</>

View File

@@ -0,0 +1,60 @@
import {useEffect, useState} from "react";
import CenterLayout from "@/layouts/CenterLayout";
import {useTranslations} from "next-intl";
import {Stack, Typography} from "@mui/material";
import Content from "@/components/dashboard/machinary-office/Prints/report/Content";
const ReportComponent = () => {
const t = useTranslations()
const [data, setData] = useState(null)
const [loading, setLoading] = useState(true)
const [isNotData, setIsNotData] = useState(true)
useEffect(() => {
if (sessionStorage.getItem('report-print') === null) {
setLoading(false)
setIsNotData(true)
sessionStorage.setItem('report-print', 'seen')
} else if (sessionStorage.getItem('report-print') === 'seen') {
setLoading(false)
setData(null)
setIsNotData(true)
} else if (data) {
setLoading(false)
sessionStorage.setItem('report-print', 'seen')
setIsNotData(false)
} else {
setLoading(true)
setData(JSON.parse(sessionStorage.getItem('report-print')))
setIsNotData(true)
}
}, [data]);
return (
<Stack sx={{bgcolor: '#efefef', width: isNotData ? '100%' : 'auto', height: isNotData ? '100%' : 'auto'}}>
{loading ? (
<CenterLayout>
<Stack>
<Typography variant={'h5'}>
{t('print_loading')}
</Typography>
</Stack>
</CenterLayout>
) : !data ? (
<CenterLayout>
<Typography variant={'h5'}>
{t('data_not_found')}
</Typography>
</CenterLayout>
) : !data.length ? (
<CenterLayout>
<Typography variant={'h5'}>
{t('data_not_found')}
</Typography>
</CenterLayout>
) : data.map(item => <Content key={item.id} data={item}/>)}
</Stack>
)
}
export default ReportComponent

View File

@@ -0,0 +1,12 @@
import {Stack} from "@mui/material";
import PrintReport from "@/components/dashboard/machinary-office/Buttons/printReport";
const TableToolbar = () => {
return (
<Stack direction={"row"} spacing={2}>
<PrintReport/>
</Stack>
)
}
export default TableToolbar

View File

@@ -6,6 +6,7 @@ import TableRowActions from "./TableRowActions";
import moment from "jalali-moment";
import DataTable from "@/core/components/DataTable";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import TableToolbar from "@/components/dashboard/machinary-office/TableToolbar";
function DashboardMachinaryOfficeComponent() {
const t = useTranslations();
@@ -160,7 +161,8 @@ function DashboardMachinaryOfficeComponent() {
tableUrl={GET_MACHINARY_OFFICE}
columns={columns}
selectableRow={false}
enableCustomToolbar={false}
enableCustomToolbar={true}
CustomToolbar={TableToolbar}
enableLastUpdate={true}
sorting={[{
id: 'id', desc: false

View File

@@ -1,32 +0,0 @@
import PrintIcon from "@mui/icons-material/Print";
import {Button, CircularProgress} from "@mui/material";
import {useTranslations} from "next-intl";
import {useState} from "react";
import {useRouter} from "next/router";
const PrintAppraisalConfirmation = () => {
const t = useTranslations();
const router = useRouter()
const [loading, setLoading] = useState(false)
const clickHandler = () => {
setLoading(true)
sessionStorage.setItem('appraisal-confirmation-print', JSON.stringify([]))
router.push('/dashboard/passenger-boss/prints/appraisal-confirmation')
}
return (
<Button
color="primary"
variant="contained"
size="small"
disabled={loading}
sx={{textTransform: "unset", alignSelf: "center"}}
startIcon={loading ? <CircularProgress size={18} color="inherit"/> : <PrintIcon/>}
onClick={clickHandler}
>
{t("PassengerBoss.print_appraisal_confirmation")}
</Button>
)
}
export default PrintAppraisalConfirmation

View File

@@ -3,15 +3,31 @@ import {Button, CircularProgress} from "@mui/material";
import {useTranslations} from "next-intl";
import {useRouter} from "next/router";
import {useState} from "react";
import useRequest from "@/lib/app/hooks/useRequest";
import {GET_PASSENGER_BOSS} from "@/core/data/apiRoutes";
import usePrint from "@/lib/app/hooks/usePrint";
const PrintFinalCreditAmount = () => {
const t = useTranslations();
const router = useRouter()
const [loading, setLoading] = useState(false)
const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}})
const {setPrintPage, setPrintTitle} = usePrint()
const clickHandler = () => {
setLoading(true)
sessionStorage.setItem('final-credit-amount-print', JSON.stringify([]))
router.push('/dashboard/passenger-boss/prints/final-credit-amount')
const params = new URLSearchParams();
params.set("start", '0');
params.set("filters", '[]');
params.set("sorting", '[]');
requestServer(`${GET_PASSENGER_BOSS}?${params}`, 'get').then((response) => {
const _data = response.data.data
setPrintPage(_data.length)
setPrintTitle(t('PassengerBoss.print_final_credit_amount'))
sessionStorage.setItem('final-credit-amount-print', JSON.stringify(_data))
router.push('/dashboard/passenger-boss/prints/final-credit-amount')
}).catch(() => {
setLoading(false)
})
}
return (

View File

@@ -1,34 +0,0 @@
import {useEffect, useState} from "react";
import CenterLayout from "@/layouts/CenterLayout";
import {useTranslations} from "next-intl";
import {Typography} from "@mui/material";
import Content from "@/components/dashboard/passenger-boss/Prints/appraisal-confirmation/Content";
const AppraisalConfirmationComponent = () => {
const t = useTranslations()
const [data, setData] = useState(null)
useEffect(() => {
if (sessionStorage.getItem('appraisal-confirmation-print') === null) {
sessionStorage.setItem('appraisal-confirmation-print', 'seen')
} else if (sessionStorage.getItem('appraisal-confirmation-print') === 'seen') {
setData(null)
} else if (data) {
sessionStorage.setItem('appraisal-confirmation-print', 'seen')
} else {
setData(JSON.parse(sessionStorage.getItem('appraisal-confirmation-print')))
}
}, [data]);
return (
<>
{!data ? (
<CenterLayout>
<Typography variant={'h5'}>
{t('data_not_found')}
</Typography>
</CenterLayout>
) : data.map(item => <Content key={item.id} data={item}/>)}
</>
)
}
export default AppraisalConfirmationComponent

View File

@@ -5,7 +5,7 @@ const Content = ({data}) => {
return (
<>
<PrintablePage key={data.id} header={true} footer={true}>
<Typography sx={{mt: 6}}>
<Box sx={{mt: 6}}>
<Typography
sx={{
fontFamily: 'Bnazanin',
@@ -13,8 +13,8 @@ const Content = ({data}) => {
fontSize: '1.2rem',
textAlign: 'center'
}}> {'فرم صورتجلسه تعیین مبلغ نهایی اعتبار'} </Typography>
</Typography>
<Typography textAlign={'justify'} sx={{lineHeight: '1.8', mt: 2}}>
</Box>
<Box textAlign={'justify'} sx={{lineHeight: '1.8', mt: 2}}>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin', pl: 4}}> {'با توجه به نامه شماره'} </Typography>
<Typography component={'span'}
@@ -72,7 +72,7 @@ const Content = ({data}) => {
<Typography
sx={{fontFamily: 'Bnazanin'}}
component={'span'}> {'در جلسه مطرح شد که نتیجه آن به شرح ذیل مورد تایید می باشد.'} </Typography>
</Typography>
</Box>
<Box sx={{border: 1, borderRadius: 1, mt: 3, p: 2}}>
<Typography textAlign={'justify'}
sx={{fontFamily: 'Bnazanin'}}> {'با توجه به گزارش واصله از اداره ماشین آلات (نامه در پیوست موجود می باشد) جهت بازسازی ناوگان مذکور مبلغ .............................................. ریال معادل .............................................. تومان مورد تایید می باشد.'} </Typography>
@@ -115,19 +115,6 @@ const Content = ({data}) => {
</Stack>
</Grid>
</Grid>
<Box sx={{border: 1, borderRadius: 1, mt: 8, p: 2}}>
<Typography textAlign={'center'} sx={{fontFamily: 'Bnazanin'}}> {'تعهدنامه'} </Typography>
<Typography textAlign={'justify'} sx={{mt: 1, lineHeight: '1.8'}}>
<Typography component={'span'} sx={{fontFamily: 'Bnazanin'}}> {'اینجانب'} </Typography>
<Typography component={'span'}
sx={{fontFamily: 'Bnazanin', fontWeight: 'bold'}}>امیرحسین محمودی</Typography>
<Typography
component={'span'}
sx={{fontFamily: 'Bnazanin'}}> {'مالک ناوگان اتوبوس | مینی بوس با مشخصات فوق الذکر بدینوسیله تعهد می نمایم مبلغ دریافتی وام را برابر پیش فاکتور ارائه شده صرف تعمیرات و بازسازی ناوگان نمایم و اگر خلاف این ثابت شود برابر مقررات با بنده برخورد شود و حق هیچگونه اعتراضی ندارم.'} </Typography>
<Typography
sx={{fontFamily: 'Bnazanin', textAlign: 'right'}}>تاریخ و امضاء</Typography>
</Typography>
</Box>
</PrintablePage>
</>
)

View File

@@ -1,26 +1,46 @@
import {useEffect, useState} from "react";
import CenterLayout from "@/layouts/CenterLayout";
import {useTranslations} from "next-intl";
import {Typography} from "@mui/material";
import {Stack, Typography} from "@mui/material";
import Content from "@/components/dashboard/passenger-boss/Prints/final-credit-amount/Content";
const FinalCreditAmountComponent = () => {
const t = useTranslations()
const [data, setData] = useState(null)
const [loading, setLoading] = useState(true)
const [isNotData, setIsNotData] = useState(true)
useEffect(() => {
if (sessionStorage.getItem('final-credit-amount-print') === null) {
setLoading(false)
setIsNotData(true)
sessionStorage.setItem('final-credit-amount-print', 'seen')
} else if (sessionStorage.getItem('final-credit-amount-print') === 'seen') {
setLoading(false)
setData(null)
setIsNotData(true)
} else if (data) {
setLoading(false)
sessionStorage.setItem('final-credit-amount-print', 'seen')
setIsNotData(false)
} else {
setLoading(true)
setData(JSON.parse(sessionStorage.getItem('final-credit-amount-print')))
setIsNotData(true)
}
}, [data]);
return (
<>
{!data ? (
<Stack sx={{bgcolor: '#efefef', width: isNotData ? '100%' : 'auto', height: isNotData ? '100%' : 'auto'}}>
{loading ? (
<CenterLayout>
<Stack>
<Typography variant={'h5'}>
{t('print_loading')}
</Typography>
</Stack>
</CenterLayout>
) : !data ? (
<CenterLayout>
<Typography variant={'h5'}>
{t('data_not_found')}
@@ -33,7 +53,7 @@ const FinalCreditAmountComponent = () => {
</Typography>
</CenterLayout>
) : data.map(item => <Content key={item.id} data={item}/>)}
</>
</Stack>
)
}

View File

@@ -1,11 +1,9 @@
import {Stack} from "@mui/material";
import PrintAppraisalConfirmation from "@/components/dashboard/passenger-boss/Buttons/printAppraisalConfirmation";
import PrintFinalCreditAmount from "@/components/dashboard/passenger-boss/Buttons/printFinalCreditAmount";
const TableToolbar = () => {
return (
<Stack direction={"row"} spacing={2}>
<PrintAppraisalConfirmation/>
<PrintFinalCreditAmount/>
</Stack>
)

View File

@@ -1,11 +1,15 @@
import {AppBar, Button, Container, Stack, Toolbar, useTheme} from "@mui/material";
import {AppBar, Button, Container, Stack, Toolbar, Typography, useTheme} from "@mui/material";
import {useTranslations} from "next-intl";
import {useRouter} from "next/router";
import {useState} from "react";
import usePrint from "@/lib/app/hooks/usePrint";
function Header({drawerWidth, handleDrawerToggle}) {
const theme = useTheme();
const t = useTranslations()
const router = useRouter()
const {printDetails} = usePrint()
const [disabled, setDisabled] = useState(false)
return (
<AppBar
@@ -30,12 +34,33 @@ function Header({drawerWidth, handleDrawerToggle}) {
...theme.mixins.toolbar,
}}
>
<Button onClick={() => router.back()} size={'large'} sx={{
<Button onClick={() => {
setDisabled(true);
if (disabled) return
router.back()
}}
size={'large'} sx={{
color: "inherit",
}}>{t('button_back_to_previous')}</Button>
</Stack>
<Stack
alignItems={'center'}
justifyContent={'center'}
sx={{
flex: 1,
position: "relative",
...theme.mixins.toolbar,
}}
spacing={1}
>
<Typography>{printDetails.title}</Typography>
<Typography variant={'body2'}>{'تعداد صفحه:'} {printDetails.count}</Typography>
</Stack>
<Stack direction="row" spacing={4} justifyContent="flex-end" sx={{flex: 1}}>
<Button onClick={() => print()} size={'large'} variant={'contained'}
<Button onClick={() => {
if (disabled) return;
print()
}} size={'large'} variant={'contained'}
color={'secondary'}>{t('btn_print')}</Button>
</Stack>
</Toolbar>

View File

@@ -1,14 +1,12 @@
import Header from "@/components/layouts/Print/Header";
import {Paper, Toolbar} from "@mui/material";
import {Toolbar} from "@mui/material";
const Print = (props) => {
return (
<>
<Header/>
<Toolbar sx={{displayPrint: 'none'}}/>
<Paper elevation={0} sx={{width: '100%', bgcolor: '#efefef'}}>
{props.children}
</Paper>
{props.children}
</>
)
}

View File

@@ -0,0 +1,24 @@
import {createContext, useReducer} from "react";
export const PrintContext = createContext();
const reducer = (state, action) => {
switch (action.type) {
case "SET_PRINT_PAGE":
return {
...state, count: action.count
};
case "SET_PRINT_TITLE":
return {
...state, title: action.title
};
}
};
export const PrintProvider = ({children}) => {
const [printDetails, printDispatch] = useReducer(reducer, {title: '', count: 0});
return (
<PrintContext.Provider value={{printDetails, printDispatch}}>
{children}
</PrintContext.Provider>
);
};

View File

@@ -0,0 +1,18 @@
import {useContext} from "react";
import {PrintContext} from "@/lib/app/contexts/print";
const usePrint = () => {
const {printDetails, printDispatch} = useContext(PrintContext);
const setPrintPage = (count) => {
printDispatch({type: 'SET_PRINT_PAGE', count})
}
const setPrintTitle = (title) => {
printDispatch({type: 'SET_PRINT_TITLE', title})
}
return {printDetails, setPrintPage, setPrintTitle}
};
export default usePrint;

View File

@@ -9,6 +9,7 @@ import {NextIntlProvider} from "next-intl";
import TitlePage from "@/core/components/TitlePage";
import Layout from "@/layouts";
import {ToastProvider} from "@/lib/app/contexts/toast";
import {PrintProvider} from "@/lib/app/contexts/print";
const App = ({Component, pageProps}) => {
@@ -22,9 +23,11 @@ const App = ({Component, pageProps}) => {
<LoadingProvider>
<ToastProvider>
<AppLayout isBot={pageProps.isBot}>
<Layout layout={pageProps.layout}>
<Component {...pageProps} />
</Layout>
<PrintProvider>
<Layout layout={pageProps.layout}>
<Component {...pageProps} />
</Layout>
</PrintProvider>
</AppLayout>
</ToastProvider>
</LoadingProvider>

View File

@@ -1,9 +1,9 @@
import {parse} from "next-useragent";
import AppraisalConfirmationComponent from "@/components/dashboard/passenger-boss/Prints/appraisal-confirmation";
import ReportComponent from "@/components/dashboard/machinary-office/Prints/report";
export default function AppraisalConfirmation() {
export default function Report() {
return (
<AppraisalConfirmationComponent/>
<ReportComponent/>
)
}
@@ -12,7 +12,7 @@ export async function getServerSideProps({req, locale}) {
return {
props: {
messages: (await import(`&/locales/${locale}/app.json`)).default,
title: "Dashboard.passenger_boss_page",
title: "Dashboard.machinary_office_page",
isBot,
locale,
layout: {name: 'PrintLayout'}