diff --git a/.gitignore b/.gitignore index ccfafdc..a59383e 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,6 @@ cypress/screenshots .env .idea package-lock.json -ecosystem.config \ No newline at end of file +ecosystem.config + +public/config.json \ No newline at end of file diff --git a/package.json b/package.json index e44361c..9b8b7b0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@mui/icons-material": "^5.11.16", "@mui/lab": "^5.0.0-alpha.152", "@mui/material": "^5.12.0", - "@witel/webapp-builder": "^1.0.2", + "@witel/webapp-builder": "^1.0.6", "axios": "^1.4.0", "colord": "^2.9.3", "eslint": "8.36.0", diff --git a/public/config.json.example b/public/config.json.example new file mode 100644 index 0000000..59e8e23 --- /dev/null +++ b/public/config.json.example @@ -0,0 +1,36 @@ +{ + "time_lines": { + "navgan_first_page": [ + { + "date": { + "from": "1402/09/01", + "to": "1402/09/10" + }, + "label": { + "primary": "ثبت نام متقاضی", + "secondary": "ثبت نام متقاضیان واجد شرایط" + } + }, + { + "date": { + "from": "1402/09/15", + "to": "1402/11/10" + }, + "label": { + "primary": "صحت سنجی متقاضیان", + "secondary": "بررسی و کارشناسی درخواست ها" + } + }, + { + "date": { + "from": "1402/11/10", + "to": "1402/12/20" + }, + "label": { + "primary": "ارجاع به بانک", + "secondary": "فرآیند معرفی ضامن و پرداخت" + } + } + ] + } +} \ No newline at end of file diff --git a/public/files/راهنما.xlsx b/public/files/راهنما.xlsx new file mode 100644 index 0000000..efbd0bf Binary files /dev/null and b/public/files/راهنما.xlsx differ diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 25a912d..3861668 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -18,6 +18,7 @@ "upload_file_text": "بارگذاری فایل", "online_message": "شما به اینترنت وصل هستید", "offline_message": "اتصال شما به اینترنت قطع شده است", + "routing_to": "در حال انتقال به صفحه", "header": { "open_profile": "پروفایل", "edit_profile": "ویرایش پروفایل", diff --git a/src/components/first/LoanCondition.jsx b/src/components/first/LoanCondition.jsx index 5259679..da19a17 100644 --- a/src/components/first/LoanCondition.jsx +++ b/src/components/first/LoanCondition.jsx @@ -7,9 +7,6 @@ const LoanCondition = () => { return ( - - تخصیص وام - @@ -17,18 +14,22 @@ const LoanCondition = () => { قوانین دریافت وام - - - - + + + - این یکی از محبوب‌ترین انواع وام در ایران است. دلیل این - محبوبیت سرعت آن در پرداخت و سود بسیار پایین آن است. - تنها یک شرط برای اخذ این وام وجود دارد و آن این است که باید به تازگی ازدواج کرده باشید. - همچنین فقط یک بار از این وام می‌توانید استفاده کنید. یعنی این وام فقط یک بار به هر فرد - تعلق می‌گیرد. - محل تامین بودجه آن حساب‌های قرض الحسنه‌ایست که افراد در بانک‌ها باز می‌کنند و مرجع اصلی - آرائه آن، بانک مرکزی است. + + این وام برای اتوبوس تا سقف 700 میلیون تومان + و برای مینی بوس تا سقف 200 میلیون تومان در + نظر گرفته شده است. مبلغ نهایی با توجه به امتیاز و روند کارشناسی در ادارات مربوطه مشخص + میشود. برای اطلاع از شرایط کامل این وام فایل پیوست را مطالعه بفرمایید. @@ -41,7 +42,7 @@ const LoanCondition = () => { color={'white'} download underline="none" - href={'/dist/images/modalrms/Asset%2010.apk'} + href={'/files/راهنما.xlsx'} > دریافت فایل های راهنما diff --git a/src/components/first/LoanDescription/TimeLineDetails.jsx b/src/components/first/LoanDescription/TimeLineDetails.jsx index abfe3d1..02e2fed 100644 --- a/src/components/first/LoanDescription/TimeLineDetails.jsx +++ b/src/components/first/LoanDescription/TimeLineDetails.jsx @@ -1,92 +1,74 @@ import {useTranslations} from "next-intl"; -import { - Timeline, - TimelineConnector, TimelineContent, - TimelineDot, - TimelineItem, - TimelineOppositeContent, - TimelineSeparator -} from "@mui/lab"; -import RepeatIcon from '@mui/icons-material/Repeat'; -import FastfoodIcon from '@mui/icons-material/Fastfood'; -import LaptopMacIcon from '@mui/icons-material/LaptopMac'; -import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -import CallMadeIcon from '@mui/icons-material/CallMade'; -import {CircularProgress, Typography} from "@mui/material"; -import HowToRegIcon from '@mui/icons-material/HowToReg'; -import DoneIcon from '@mui/icons-material/Done'; -import HotelIcon from '@mui/icons-material/Hotel'; +import {useEffect, useState} from "react"; +import {useRequest} from "@witel/webapp-builder"; +import TimelineManager from "@/core/components/timelines/timelineManager"; +import moment from "jalali-moment"; +import {Timeline} from "@mui/lab"; +import {LinearProgress} from "@mui/material"; const TimeLineDetails = () => { const t = useTranslations(); - return( - - - - 10 دی - - - - - - - - - - ثبت نام متقاضی - - ثبت نام متقاضیان واجد شرایط - - - - - 10 بهمن - - - - - - - - - - - صحت سنجی متقاضیان - - بررسی و کارشناسی درخواست ها - - - - - 10 اسفند - - - - - - - - - - ارجاع به بانک - - فرآیند معرفی ضامن و پرداخت - - - + const request = useRequest({notification: false, auth: false}) + const [timeLineList, setTimeLineList] = useState([]) + const [loading, setLoading] = useState(true) + + useEffect(() => { + setLoading(true) + request(process.env.NEXT_PUBLIC_CONFIG_APP_URL, 'get').then(res => { + let tempArr = [] + for (const timeLine of res.data.time_lines.navgan_first_page) { + let temp = {} + temp['label'] = timeLine.label + temp['date'] = moment(timeLine.date.from, 'jYYYY/jMM/jDD').locale('fa').format('jD jMMMM') + const fromDate = moment(timeLine.date.from, 'jYYYY/jMM/jDD') + const toDate = moment(timeLine.date.to, 'jYYYY/jMM/jDD') + const today = moment() + if (today.isBetween(fromDate, toDate, null, '[]')) { + temp['status'] = 'in progress' + } else if (today.isAfter(toDate, null)) { + temp['status'] = 'done' + } else if (today.isBefore(fromDate, null)) { + temp['status'] = 'open' + } + tempArr.push(temp) + } + setTimeLineList(tempArr) + setLoading(false) + }).catch(() => { + setLoading(false) + }) + }, []); + + return ( + <> + {loading ? ( + + ) : ( + + {timeLineList.map((timeLine, index) => ( + + )) + } + + )} + ) + // return ( + // + // + // + // + // + // ) } export default TimeLineDetails \ No newline at end of file diff --git a/src/components/first/LoanDescription/index.jsx b/src/components/first/LoanDescription/index.jsx index d7e57da..a0afd67 100644 --- a/src/components/first/LoanDescription/index.jsx +++ b/src/components/first/LoanDescription/index.jsx @@ -8,27 +8,29 @@ const LoanDescription = () => { - توضیحات دریافت وام + وام نوسازی ناوگان - - وام خرید کالای مهر ایران یا کالا کارت با هدف خرید مایحتاج خانه و کالاهای ضروری زندگی داده - می‌شود. سقف کالا کارت ۱۵۰ میلیون تومان و سود آن ۴ درصد است. - با دریافت کالا کارت می‌توانید وسایل موردنیازتان را از فروشگاه‌های طرف قرارداد - این فروشگاه‌ها با نام گلدیران در شهرهای تهران، شیراز، اهواز، نور، اصفهان، تبریز، ساری و رشت - فعالیت می‌کنند. - طبق قوانین جدید و در راستای حمایت از طرح افزایش جمیعت، مبلغ آن برای زوجینی که مرد زیر ۲۵ سال - و زن زیر ۲۳ سال داشته باشد، 440 میلیون یا ۲۲۰ - میلیون به ازای هر نفر است. - در این قانون هریک از زوجین که شرایط آن‌ها در این قانون نگنجد، - مبلغ تغییر کرده و به زوج 400 میلیون وام تعلق - خواهد گرفت. - حداکثر زمان بازپرداخت وام خرید کالا ۲۴ ماه است و برای گرفتن آن به یک ضامن رسمی احتیاج دارید. + + این وام براساس تبصره 18 قانون بودجه می باشد. در + قانون + بودجه این تبصره اینگونه بیان شده است: + به منظور رشد و پیشرفت استان های کشور از طریق ارتقای بهره وری و توسعه، سرمایه گذاری ها، + تکمیل واحدهای نیمه تمام و ظرفیت های خالی بنگاه های تولیدی بر پایه آمایش سرزمین و همچنین + حمایت از طرح(پروژهای) دانش بنیان و پیشران و بسط و عدالت سرزمینی منابع زیر جهت ایجاد و افزایش + تولید، اشتغال و کارآفرینی و ارتقای رشد اقتصادی اختصاص می یابد. + + + در این راستا سازمان راهداری و حمل و نقل جاده ای به منظور بهبود کیفیت حمل و نقل بین شهری و + افزایش ظرفیت ترابری اقدام به اعطای وام به ناوگان های + مسافربری برای + بازسازی و تعمیرات میکند. diff --git a/src/components/first/LoanRegister.jsx b/src/components/first/LoanRegister.jsx index c4a08e1..76ce8e7 100644 --- a/src/components/first/LoanRegister.jsx +++ b/src/components/first/LoanRegister.jsx @@ -14,9 +14,10 @@ const LoanRegister = () => { - - برای استفاده از تسهیلات این سامانه و دریافت وام می بایست ابتدا وارد سامانه شوید و یا - اگر ثبت نام نکرده اید ثبت نام کنید + + وام نوسازی ناوگان به هدف رشد و پیشرفت استان های کشور از طریق ارتقای بهره وری و توسعه + اعطا میشود. برای استفاده از تسهیلات این سامانه و درخواست وام می بایست ابتدا وارد + سامانه شوید. diff --git a/src/core/components/timelines/DoneTimeLine.jsx b/src/core/components/timelines/DoneTimeLine.jsx new file mode 100644 index 0000000..c2e2b3e --- /dev/null +++ b/src/core/components/timelines/DoneTimeLine.jsx @@ -0,0 +1,35 @@ +import { + TimelineConnector, + TimelineContent, + TimelineDot, + TimelineItem, + TimelineOppositeContent, + TimelineSeparator +} from "@mui/lab"; +import DoneIcon from "@mui/icons-material/Done"; +import {Typography} from "@mui/material"; + +const DoneTimeLine = ({date, primaryLabel, secondaryLabel, position}) => { + return ( + + {date} + + + + + {position !== 'end' && } + + + {primaryLabel} + {secondaryLabel} + + + ) +} + +export default DoneTimeLine \ No newline at end of file diff --git a/src/core/components/timelines/InProgressTimeLine.jsx b/src/core/components/timelines/InProgressTimeLine.jsx new file mode 100644 index 0000000..2b210d9 --- /dev/null +++ b/src/core/components/timelines/InProgressTimeLine.jsx @@ -0,0 +1,33 @@ +import { + TimelineConnector, + TimelineContent, + TimelineDot, + TimelineItem, + TimelineOppositeContent, + TimelineSeparator +} from "@mui/lab"; +import {CircularProgress, Typography} from "@mui/material"; + +const InProgressTimeLine = ({date, primaryLabel, secondaryLabel, position}) => { + return ( + + {date} + + + + + {position !== 'end' && } + + + {primaryLabel} + {secondaryLabel} + + + ) +} + +export default InProgressTimeLine \ No newline at end of file diff --git a/src/core/components/timelines/OpenTimeLine.jsx b/src/core/components/timelines/OpenTimeLine.jsx new file mode 100644 index 0000000..b203ea2 --- /dev/null +++ b/src/core/components/timelines/OpenTimeLine.jsx @@ -0,0 +1,34 @@ +import { + TimelineConnector, + TimelineContent, + TimelineDot, + TimelineItem, + TimelineOppositeContent, + TimelineSeparator +} from "@mui/lab"; +import CallMadeIcon from "@mui/icons-material/CallMade"; +import {Typography} from "@mui/material"; + +const OpenTimeLine = ({date, primaryLabel, secondaryLabel, position}) => { + return ( + + {date} + + + + + {position !== 'end' && } + + + {primaryLabel} + {secondaryLabel} + + + ) +} + +export default OpenTimeLine \ No newline at end of file diff --git a/src/core/components/timelines/timelineManager.jsx b/src/core/components/timelines/timelineManager.jsx new file mode 100644 index 0000000..292c3d1 --- /dev/null +++ b/src/core/components/timelines/timelineManager.jsx @@ -0,0 +1,16 @@ +import OpenTimeLine from "@/core/components/timelines/OpenTimeLine"; +import InProgressTimeLine from "@/core/components/timelines/InProgressTimeLine"; +import DoneTimeLine from "@/core/components/timelines/DoneTimeLine"; + +const TimelineManager = (props) => { + switch (props.status) { + case 'open': + return + case 'in progress': + return + case 'done': + return + } +} + +export default TimelineManager \ No newline at end of file diff --git a/src/core/data/sidebarMenu.js b/src/core/data/sidebarMenu.js index 1869bae..5f24a93 100644 --- a/src/core/data/sidebarMenu.js +++ b/src/core/data/sidebarMenu.js @@ -6,27 +6,30 @@ const sidebarMenu = [ [ { key: "sidebar.dashboard", + name: "sidebar.dashboard", type: "page", route: "/dashboard", - icon: , + icon: , selected: false, - permission_name: "all" + permission: "all" }, { key: "sidebar.add-request-loan", + name: "sidebar.add-request-loan", type: "page", route: "/dashboard/navgan/add-request-loan", - icon: , + icon: , selected: false, - permission_name: "can_request_a_new_loan" + permission: "can_request_a_new_loan" }, { key: "sidebar.followUp-loan", + name: "sidebar.followUp-loan", type: "page", route: "/dashboard/navgan/followUp-loan", - icon: , + icon: , selected: false, - permission_name: "all" + permission: "all" }, ], ]; diff --git a/src/layouts/dashboard.jsx b/src/layouts/dashboard.jsx index 945416c..9b1a916 100644 --- a/src/layouts/dashboard.jsx +++ b/src/layouts/dashboard.jsx @@ -1,13 +1,21 @@ -import {DashboardLayout as DashboardLayoutPure} from "@witel/webapp-builder"; +import {DashboardLayout as DashboardLayoutPure, useUser} from "@witel/webapp-builder"; import headerProfileItems from "@/core/data/headerProfileItems"; import sidebarMenu from "@/core/data/sidebarMenu"; import {GET_SIDEBAR_NOTIFICATION} from "@/core/data/apiRoutes"; const DashboardLayout = (props) => { + const {user} = useUser() return ( <> - + ) }