Compare commits
No commits in common. "4603e2dc8b4badce20426c9298786bfd1a2a7b55" and "f1a692f6c532068954e5dd6d06e4f148d1869d2a" have entirely different histories.
4603e2dc8b
...
f1a692f6c5
28
src/App.jsx
28
src/App.jsx
@ -24,7 +24,6 @@ import { PartnerSettings } from "@pages/PartnerSettings/PartnerSettings";
|
||||
import { PartnerTreaties } from "@pages/PartnerTreaties/PartnerTreaties";
|
||||
import { PartnerCategories } from "@pages/PartnerСategories/PartnerСategories";
|
||||
import { Payouts } from "@pages/Payouts/Payouts";
|
||||
import { Forms } from "@pages/Forms/Forms";
|
||||
import { Profile } from "@pages/Profile/Profile";
|
||||
import { ProfileCandidate } from "@pages/ProfileCandidate/ProfileCandidate";
|
||||
import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker";
|
||||
@ -40,23 +39,23 @@ import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth";
|
||||
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro";
|
||||
import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration";
|
||||
import { ViewReport } from "@pages/ViewReport/ViewReport";
|
||||
import { Article } from "@pages/Article/Article";
|
||||
import { Auth } from "@pages/Auth/Auth";
|
||||
import { Blog } from "@pages/Blog/Blog";
|
||||
import { FormPage } from "@pages/FormPage/FormPage";
|
||||
import { Home } from "@pages/Home/Home";
|
||||
import { SingleReportPage } from "@pages/SingleReportPage/SingleReportPage";
|
||||
|
||||
import { TicketFullScreen } from "@components/Modal/Tracker/TicketFullScreen/TicketFullScreen";
|
||||
import { Notification } from "@components/Notification/Notification";
|
||||
import Notification from "@components/Notification/Notification";
|
||||
import { ProfileCalendar } from "@components/ProfileCalendar/ProfileCalendar";
|
||||
import { Calendar } from "@components/Calendar/Calendar";
|
||||
import { Candidate } from "@components/Candidate/Candidate";
|
||||
import { FreeDevelopers } from "@components/FreeDevelopers/FreeDevelopers";
|
||||
import { ReportForm } from "@components/ReportForm/ReportForm";
|
||||
|
||||
import "assets/fonts/stylesheet.css";
|
||||
import "assets/global.scss";
|
||||
import "./assets/fonts/stylesheet.css";
|
||||
import "./assets/global.scss";
|
||||
import Calendar from "./components/Calendar/Calendar";
|
||||
import Candidate from "./components/Candidate/Candidate";
|
||||
import FreeDevelopers from "./components/FreeDevelopers/FreeDevelopers";
|
||||
import ReportForm from "./components/ReportForm/ReportForm";
|
||||
import Article from "./pages/Article/Article";
|
||||
import Auth from "./pages/Auth/Auth";
|
||||
import Blog from "./pages/Blog/Blog";
|
||||
import FormPage from "./pages/FormPage/FormPage";
|
||||
import Home from "./pages/Home/Home";
|
||||
import SingleReportPage from "./pages/SingleReportPage/SingleReportPage";
|
||||
|
||||
const App = () => {
|
||||
const notification = useSelector(getNotification);
|
||||
@ -67,7 +66,6 @@ const App = () => {
|
||||
<Route exact path="/auth" element={<Auth />} />
|
||||
<Route exact path="/tracker-intro" element={<TrackerIntro />} />
|
||||
<Route exact path="/tracker-auth" element={<TrackerAuth />} />
|
||||
<Route exact path="/forms" element={<Forms />} />
|
||||
<Route
|
||||
exact
|
||||
path="/tracker-registration"
|
||||
|
@ -15,7 +15,7 @@ import { currentMonth } from "../../utils/calendarHelper";
|
||||
import CalendarComponent from "./CalendarComponent";
|
||||
import "./calendar.scss";
|
||||
|
||||
export const Calendar = () => {
|
||||
const Calendar = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
return <Navigate to="/profile" replace />;
|
||||
}
|
||||
@ -84,3 +84,5 @@ export const Calendar = () => {
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Calendar;
|
||||
|
@ -28,7 +28,7 @@ import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import "./candidate.scss";
|
||||
|
||||
export const Candidate = () => {
|
||||
const Candidate = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
return <Navigate to="/profile" replace />;
|
||||
}
|
||||
@ -238,3 +238,5 @@ export const Candidate = () => {
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Candidate;
|
||||
|
@ -51,3 +51,5 @@ export const AuthHeader = () => {
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default AuthHeader;
|
||||
|
@ -3,7 +3,7 @@ import { Link } from "react-router-dom";
|
||||
|
||||
import { scrollToForm } from "@utils/helper";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
|
@ -15,7 +15,6 @@ import {
|
||||
caseOfNum,
|
||||
getCorrectRequestDate,
|
||||
getToken,
|
||||
removeLast,
|
||||
urlForLocal
|
||||
} from "@utils/helper";
|
||||
|
||||
@ -631,6 +630,14 @@ export const TicketFullScreen = () => {
|
||||
<img src={tasks} alt="img" />
|
||||
<p>Все мои задачи</p>
|
||||
</Link>
|
||||
<Link
|
||||
to="/profile/tracker"
|
||||
className="tab"
|
||||
onClick={() => toggleTabs(3)}
|
||||
>
|
||||
<img src={archive} alt="img" />
|
||||
<p>Архив</p>
|
||||
</Link>
|
||||
</div>
|
||||
{loader ? (
|
||||
<Loader />
|
||||
@ -805,14 +812,14 @@ export const TicketFullScreen = () => {
|
||||
<div className="workers fullscreen-workers">
|
||||
<div className="workers_box task__info">
|
||||
<div className="workers__creator">
|
||||
Создатель: <p>{removeLast(taskInfo.user?.fio)}</p>
|
||||
Создатель: <p>{taskInfo.user?.fio}</p>
|
||||
</div>
|
||||
|
||||
{taskInfo.executor ? (
|
||||
<>
|
||||
<h5>Исполнитель: </h5>
|
||||
<div className="executor">
|
||||
<p>{removeLast(taskInfo.executor.fio)}</p>
|
||||
<p>{taskInfo.executor.fio}</p>
|
||||
<img
|
||||
src={
|
||||
taskInfo.executor?.avatar
|
||||
@ -851,7 +858,7 @@ export const TicketFullScreen = () => {
|
||||
key={person.user_id}
|
||||
onClick={() => taskExecutor(person)}
|
||||
>
|
||||
<span>{removeLast(person.user.fio)}</span>
|
||||
<span>{person.user.fio}</span>
|
||||
<img
|
||||
src={
|
||||
person.user?.avatar
|
||||
@ -874,7 +881,7 @@ export const TicketFullScreen = () => {
|
||||
{taskInfo.taskUsers.map((member) => {
|
||||
return (
|
||||
<div className="worker" key={member.user_id}>
|
||||
<p>{removeLast(member.fio)}</p>
|
||||
<p>{member.fio}</p>
|
||||
<img
|
||||
src={
|
||||
member?.avatar
|
||||
@ -917,7 +924,7 @@ export const TicketFullScreen = () => {
|
||||
key={person.user_id}
|
||||
onClick={() => addMember(person)}
|
||||
>
|
||||
<span>{removeLast(person.user.fio)}</span>
|
||||
<span>{person.user.fio}</span>
|
||||
<img
|
||||
src={
|
||||
person.user?.avatar
|
||||
|
@ -713,7 +713,7 @@ export const TrackerModal = ({
|
||||
src={urlForLocal(selectedExecutorTask.user.avatar)}
|
||||
alt="avatar"
|
||||
/>
|
||||
<span>{removeLast(selectedExecutorTask.user.fio)}</span>
|
||||
<span>{selectedExecutorTask.user.fio}</span>
|
||||
</>
|
||||
) : (
|
||||
<span>{selectedExecutorTask}</span>
|
||||
|
@ -29,10 +29,10 @@ export const Navigation = () => {
|
||||
path: "/tracker",
|
||||
name: "Трекер"
|
||||
},
|
||||
// {
|
||||
// path: "/payouts",
|
||||
// name: "Выплаты"
|
||||
// },
|
||||
{
|
||||
path: "/payouts",
|
||||
name: "Выплаты"
|
||||
},
|
||||
{
|
||||
path: "/quiz",
|
||||
name: "Тесты"
|
||||
@ -61,10 +61,10 @@ export const Navigation = () => {
|
||||
path: "/tracker",
|
||||
name: "Трекер"
|
||||
},
|
||||
// {
|
||||
// path: "/treaties",
|
||||
// name: "Договоры"
|
||||
// },
|
||||
{
|
||||
path: "/treaties",
|
||||
name: "Договоры"
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки"
|
||||
@ -81,7 +81,7 @@ export const Navigation = () => {
|
||||
<NavLink
|
||||
key={index}
|
||||
end
|
||||
to={link.path === "/quiz" ? link.path : `/profile${link.path}`}
|
||||
to={link.path === "/Quiz" ? link.path : `/profile${link.path}`}
|
||||
className={
|
||||
currentPath.includes(link.path) ||
|
||||
currentPath.includes(link.active)
|
||||
|
@ -286,15 +286,15 @@ export const ProfileCalendarComponent = React.memo(
|
||||
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
|
||||
: `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
|
||||
: activePeriod
|
||||
? "Выберите диапазон на календаре"
|
||||
: "Выбрать диапазон"}
|
||||
? "Выберите диапазон на календаре"
|
||||
: "Выбрать диапазон"}
|
||||
</span>
|
||||
<span>
|
||||
{totalRangeHours
|
||||
? `${totalRangeHours} ${hourOfNum(totalRangeHours)}`
|
||||
: endDate
|
||||
? "0 часов"
|
||||
: ""}
|
||||
? "0 часов"
|
||||
: ""}
|
||||
</span>
|
||||
{endDate && (
|
||||
<BaseButton
|
||||
|
@ -39,10 +39,10 @@ export const ProfileHeader = () => {
|
||||
path: "/tracker",
|
||||
name: "Трекер"
|
||||
},
|
||||
// {
|
||||
// path: "/payouts",
|
||||
// name: "Выплаты"
|
||||
// },
|
||||
{
|
||||
path: "/payouts",
|
||||
name: "Выплаты"
|
||||
},
|
||||
{
|
||||
path: "/quiz",
|
||||
name: "Тесты"
|
||||
@ -69,10 +69,10 @@ export const ProfileHeader = () => {
|
||||
path: "/tracker",
|
||||
name: "Трекер"
|
||||
},
|
||||
// {
|
||||
// path: "/treaties",
|
||||
// name: "Договоры"
|
||||
// },
|
||||
{
|
||||
path: "/treaties",
|
||||
name: "Договоры"
|
||||
},
|
||||
{
|
||||
path: "/settings",
|
||||
name: "Настройки"
|
||||
@ -170,7 +170,7 @@ export const ProfileHeader = () => {
|
||||
<NavLink
|
||||
key={index}
|
||||
end
|
||||
to={link.path === "/quiz" ? link.path : `/profile${link.path}`}
|
||||
to={link.path === "/Quiz" ? link.path : `/profile${link.path}`}
|
||||
className={currentPath.includes(link.path) ? "active" : ""}
|
||||
>
|
||||
{link.name}
|
||||
|
@ -32,7 +32,7 @@ import "./reportForm.scss";
|
||||
|
||||
registerLocale("ru", ru);
|
||||
|
||||
export const ReportForm = () => {
|
||||
const ReportForm = () => {
|
||||
if (localStorage.getItem("role_status") === "18") {
|
||||
return <Navigate to="/profile" replace />;
|
||||
}
|
||||
@ -456,3 +456,5 @@ export const ReportForm = () => {
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default ReportForm;
|
||||
|
@ -47,23 +47,23 @@ export const SideBar = () => {
|
||||
</div>
|
||||
<ul className="auth-body__navigation">
|
||||
<li>
|
||||
<Link to={"/auth"}>Вход</Link>
|
||||
<Link to={"/auth"}>Вход для партнеров</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to={"/profile"}>Личный кабинет</Link>
|
||||
<Link to={"/profile"}>Кабинет разработчика</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to={"/tracker-intro"}>Трекер</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to={"/quiz"}>Тесты</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to={"/forms"}>Формы</Link>
|
||||
<Link to={"/Quiz"}>Тесты</Link>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Школа</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Отрасли</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Контакты</a>
|
||||
</li>
|
||||
|
@ -3,7 +3,7 @@ import { CKEditor } from "@ckeditor/ckeditor5-react";
|
||||
import React, { useState } from "react";
|
||||
|
||||
import { getCorrectDate } from "@utils/calendarHelper";
|
||||
import { removeLast, urlForLocal } from "@utils/helper";
|
||||
import { urlForLocal } from "@utils/helper";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
@ -93,7 +93,7 @@ export const TrackerTaskComment = ({
|
||||
}
|
||||
alt="avatar"
|
||||
/>
|
||||
<p>{removeLast(comment.user.fio)}</p>
|
||||
<p>{comment.user.fio}</p>
|
||||
</div>
|
||||
<div className="comments__list__item__date">
|
||||
<span>{getCorrectDate(comment.created_at)}</span>
|
||||
|
@ -32,7 +32,7 @@ export const HeaderPageTestsQuiz = ({ isVisibilityButton }) => {
|
||||
</div>
|
||||
{isVisibilityButton && (
|
||||
<Link
|
||||
to={"/quiz/instruction"}
|
||||
to={"/Quiz/instruction"}
|
||||
className="quiz-btn quiz-btn_restriction"
|
||||
>
|
||||
Пройти
|
||||
|
@ -44,7 +44,7 @@ export const MyTestsQuiz = ({ listTests }) => {
|
||||
</h3>
|
||||
<div className="item-test__body test-data">
|
||||
<Link
|
||||
to={"/quiz/interjacent"}
|
||||
to={"/Quiz/interjacent"}
|
||||
className="quiz-btn"
|
||||
onClick={() => recordSelectedTest(item)}
|
||||
>
|
||||
|
@ -58,7 +58,7 @@ export const TaskQuiz = ({ timer }) => {
|
||||
text: "Тест успешно пройден",
|
||||
type: "success"
|
||||
});
|
||||
navigate("/quiz");
|
||||
navigate("/Quiz");
|
||||
// if (String(res?.status)[0] !== "2") {
|
||||
// showNotification({
|
||||
// show: true,
|
@ -2,7 +2,7 @@ import React, { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import CardArticle from "@components/CardArticle/CardArticle";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
@ -5,9 +5,10 @@ import { useNavigate } from "react-router-dom";
|
||||
import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
import { AuthBox } from "@components/AuthBox/AuthBox";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import SliderWorkers from "@components/SliderWorkers/SliderWorkers";
|
||||
|
||||
import arrow from "assets/icons/arrows/arrow__login_page.png";
|
||||
import text from "assets/images/Body_Text.png";
|
||||
@ -18,7 +19,7 @@ import cross from "assets/images/cross.png";
|
||||
|
||||
import "./auth.scss";
|
||||
|
||||
export const Auth = () => {
|
||||
const Auth = () => {
|
||||
const isAuth = useSelector(selectAuth);
|
||||
let navigate = useNavigate();
|
||||
|
||||
@ -33,6 +34,11 @@ export const Auth = () => {
|
||||
return (
|
||||
<section className="auth-partners">
|
||||
<AuthHeader />
|
||||
<SliderWorkers
|
||||
title={"Свободные разработчики"}
|
||||
titleInfo={"для Вашей команды"}
|
||||
subTitle={true}
|
||||
/>
|
||||
<div className="auth-partners__background">
|
||||
<img className="auth-partners__vector" src={vector} alt="" />
|
||||
<img className="auth-partners__vector-black" src={vectorBlack} alt="" />
|
||||
@ -92,3 +98,5 @@ export const Auth = () => {
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Auth;
|
||||
|
@ -6,7 +6,7 @@ import { selectAuth } from "@redux/outstaffingSlice";
|
||||
|
||||
import AuthBlock from "@components/AuthBlock/AuthBlock";
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import ModalResetPassword from "@components/Modal/ModalResetPassword/ModalResetPassword";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import CardArticle from "@components/CardArticle/CardArticle";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
@ -2,7 +2,7 @@ import React, { useState } from "react";
|
||||
|
||||
import CatalogPersonCard from "@components/CatalogPersonCard/CatalogPersonCard";
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
|
@ -23,7 +23,7 @@ import rectangle from "assets/images/rectangle_secondPage.png";
|
||||
|
||||
import "./formPage.scss";
|
||||
|
||||
export const FormPage = () => {
|
||||
const FormPage = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
return <Navigate to="/profile" replace />;
|
||||
}
|
||||
@ -101,3 +101,5 @@ export const FormPage = () => {
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default FormPage;
|
||||
|
@ -1,21 +0,0 @@
|
||||
import React from "react";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
import "./forms.scss";
|
||||
|
||||
export const Forms = () => {
|
||||
return (
|
||||
<div className="forms">
|
||||
<AuthHeader />
|
||||
<SideBar />
|
||||
<div className="container">
|
||||
<br />
|
||||
<h1>Здесь будут формы</h1>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,13 +0,0 @@
|
||||
.forms {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
background: #f1f1f1;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useNavigate, useParams } from "react-router";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import { FrequentlyAskedQuestionsItem } from "@components/FrequentlyAskedQuestionsItem/FrequentlyAskedQuestionsItem";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
|
@ -13,7 +13,7 @@ import Outstaffing from "@components/Outstaffing/Outstaffing";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
|
||||
export const Home = () => {
|
||||
const Home = () => {
|
||||
if (localStorage.getItem("role_status") !== "18") {
|
||||
return <Navigate to="/profile" replace />;
|
||||
}
|
||||
@ -75,3 +75,5 @@ export const Home = () => {
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
|
@ -15,6 +15,7 @@ import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
|
||||
|
||||
import cursorImg from "assets/icons/cursorImg.svg";
|
||||
|
||||
@ -113,6 +114,16 @@ export const PartnerRequests = () => {
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="partner-requests__no-items__free-employees">
|
||||
<SliderWorkers
|
||||
title={"Свободные разработчики"}
|
||||
titleInfo={"в нашей базе"}
|
||||
/>
|
||||
<p className="catalog-link">
|
||||
Перейти в полный <Link to={"/profile/catalog"}>КАТАЛОГ</Link>{" "}
|
||||
сотрудников
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
@ -183,7 +183,7 @@ export const PartnerSettings = () => {
|
||||
использования персональных данных
|
||||
</span>
|
||||
</div>
|
||||
{/* <div className="partner-settings__report">
|
||||
<div className="partner-settings__report">
|
||||
<h3 className="settings__title">Документы и отчеты</h3>
|
||||
<p className="settings__label">Изменить провадера ЭДО</p>
|
||||
|
||||
@ -221,7 +221,7 @@ export const PartnerSettings = () => {
|
||||
Нажимая "Сохранить", вы соглашаетесь с Правилами обработки и
|
||||
использования персональных данных
|
||||
</span>
|
||||
</div> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -45,12 +45,12 @@ export const Profile = () => {
|
||||
title: "Трекер времени",
|
||||
description: "Сколько времени занимает<br/> выполнение задач"
|
||||
},
|
||||
// {
|
||||
// path: "profile/payouts",
|
||||
// img: paymentIcon,
|
||||
// title: "Выплаты",
|
||||
// description: "У вас <span>подтвержден</span><br/> статус самозанятого"
|
||||
// },
|
||||
{
|
||||
path: "profile/payouts",
|
||||
img: paymentIcon,
|
||||
title: "Выплаты",
|
||||
description: "У вас <span>подтвержден</span><br/> статус самозанятого"
|
||||
},
|
||||
{
|
||||
path: "profile/settings",
|
||||
img: settingIcon,
|
||||
@ -78,12 +78,12 @@ export const Profile = () => {
|
||||
title: "Трекер времени",
|
||||
description: "Контроль времени и<br/> выполнение задач"
|
||||
},
|
||||
// {
|
||||
// path: "profile/treaties",
|
||||
// img: paymentIcon,
|
||||
// title: "Договоры и отчетность",
|
||||
// description: "Ключевые условия<br/> договора"
|
||||
// },
|
||||
{
|
||||
path: "profile/treaties",
|
||||
img: paymentIcon,
|
||||
title: "Договоры и отчетность",
|
||||
description: "Ключевые условия<br/> договора"
|
||||
},
|
||||
{
|
||||
path: "profile/settings",
|
||||
img: settingIcon,
|
||||
|
@ -457,6 +457,14 @@ export const ProjectTracker = () => {
|
||||
<img src={tasks} alt="img" />
|
||||
<p>Все мои задачи</p>
|
||||
</Link>
|
||||
<Link
|
||||
to="/profile/tracker"
|
||||
className="tab"
|
||||
onClick={() => dispatch(setToggleTab(3))}
|
||||
>
|
||||
<img src={archive} alt="img" />
|
||||
<p>Архив</p>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="tracker__tabs__content">
|
||||
<TrackerModal
|
||||
@ -560,7 +568,7 @@ export const ProjectTracker = () => {
|
||||
</div>
|
||||
{selectedExecutor ? (
|
||||
<div className="tasks__head__executor-selected">
|
||||
<p>{removeLast(selectedExecutor.user.fio)}</p>
|
||||
<p>{selectedExecutor.user.fio}</p>
|
||||
<img
|
||||
className="avatar"
|
||||
src={
|
||||
|
@ -25,7 +25,7 @@ export const PassingTests = () => {
|
||||
expiryTimestamp: moment(),
|
||||
autoStart: false,
|
||||
onExpire: () => {
|
||||
navigate("/quiz");
|
||||
navigate("/Quiz");
|
||||
}
|
||||
});
|
||||
|
||||
@ -84,8 +84,8 @@ export const PassingTests = () => {
|
||||
<ProfileBreadcrumbs
|
||||
links={[
|
||||
{ name: "Главная", link: "/profile-candidate" },
|
||||
{ name: "Тестирование", link: "quiz" },
|
||||
{ name: "Прохождение тестов", link: "/quiz/test" }
|
||||
{ name: "Тестирование", link: "/Quiz" },
|
||||
{ name: "Прохождение тестов", link: "/Quiz/test" }
|
||||
]}
|
||||
/>
|
||||
<div className="passing-tests-page__title main-title">
|
||||
|
@ -122,7 +122,7 @@ export const QuizPage = () => {
|
||||
<ProfileBreadcrumbs
|
||||
links={[
|
||||
{ name: "Главная", link: "/profile-candidate" },
|
||||
{ name: "Тестирование", link: "/quiz" }
|
||||
{ name: "Тестирование", link: "/Quiz" }
|
||||
]}
|
||||
/>
|
||||
<div className="quiz-page__title main-title">
|
||||
|
@ -21,7 +21,7 @@ export const QuizReportPage = () => {
|
||||
|
||||
let navigate = useNavigate();
|
||||
if (!test) {
|
||||
navigate("/quiz");
|
||||
navigate("/Quiz");
|
||||
}
|
||||
|
||||
const [testInfo, setTestInfo] = useState({});
|
||||
|
@ -4,7 +4,7 @@ import { Link } from "react-router-dom";
|
||||
import { useFormValidation } from "@hooks/useFormValidation";
|
||||
import { useNotification } from "@hooks/useNotification";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
import StepsForCandidate from "@components/StepsForCandidate/StepsForCandidate";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
|
@ -24,7 +24,7 @@ const tasks = [
|
||||
}
|
||||
];
|
||||
|
||||
export const SingleReportPage = () => {
|
||||
const SingleReportPage = () => {
|
||||
const navigate = useNavigate();
|
||||
|
||||
return (
|
||||
@ -108,3 +108,5 @@ export const SingleReportPage = () => {
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default SingleReportPage;
|
||||
|
@ -112,6 +112,14 @@ const Statistics = () => {
|
||||
<img src={tasks} alt="img" />
|
||||
<p>Все мои задачи</p>
|
||||
</Link>
|
||||
<Link
|
||||
to="/profile/tracker"
|
||||
className="tab"
|
||||
onClick={() => toggleTabs(3)}
|
||||
>
|
||||
<img src={archive} alt="img" />
|
||||
<p>Архив</p>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="tracker__tabs__content">
|
||||
<div className="tracker__tabs__content__wrapper statistics-body">
|
||||
@ -145,7 +153,7 @@ const Statistics = () => {
|
||||
<div className="project-info__creator">
|
||||
<span className="return-text">Создатель проекта:</span>
|
||||
<div>
|
||||
<p>{projectInfo?.owner_info?.fio}</p>
|
||||
<p>{projectInfo?.owner_info?.fio}</p>{" "}
|
||||
<img
|
||||
src={
|
||||
projectInfo?.owner_info?.avatar
|
||||
|
@ -161,6 +161,13 @@ export const Tracker = () => {
|
||||
<img src={tasks} alt="img" />
|
||||
<p>Все мои задачи</p>
|
||||
</div>
|
||||
<div
|
||||
className={tab === 3 ? "tab active-tab" : "tab"}
|
||||
onClick={() => toggleTabs(3)}
|
||||
>
|
||||
<img src={archive} alt="img" />
|
||||
<p>Архив</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className={`tracker__tabs__content`}>
|
||||
<div
|
||||
@ -319,6 +326,103 @@ export const Tracker = () => {
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className={
|
||||
tab === 3
|
||||
? "tracker__tabs__content__archive active__content"
|
||||
: "tracker__tabs__content__projects"
|
||||
}
|
||||
>
|
||||
<div className="archive__tasks">
|
||||
<div className="archive__title">
|
||||
<h3>Архив задач:</h3>
|
||||
<p>
|
||||
{`${filterCompleteTasks.length}
|
||||
${caseOfNum(filterCompleteTasks.length, "tasks")}`}
|
||||
</p>
|
||||
|
||||
<div className="archive__tasks-period">
|
||||
<div className="buttons-month">
|
||||
<button>
|
||||
<img src={arrowViewReport} alt="<"></img>
|
||||
</button>
|
||||
<button>
|
||||
<img src={arrowViewReport} alt=">"></img>
|
||||
</button>
|
||||
</div>
|
||||
<div className="month-period">
|
||||
<h2>Сентябрь,</h2>
|
||||
<h3>2023</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div className="archive__tasks__search">
|
||||
<img src={search} alt="search" />
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Найти задачу"
|
||||
onChange={(event) => filterArchiveTasks(event)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{loader && <Loader style="green" />}
|
||||
|
||||
<ArchiveTableTracker
|
||||
loader={loader}
|
||||
filterCompleteTasks={filterCompleteTasks}
|
||||
/>
|
||||
</div>
|
||||
<div className="archive__projects">
|
||||
<div className="archive__projects-title">
|
||||
<h3>Архив проектов:</h3>
|
||||
<p>
|
||||
{`${
|
||||
projects?.filter((project) => project.status === 10).length
|
||||
}
|
||||
${caseOfNum(
|
||||
projects?.filter((project) => project.status === 10)
|
||||
.length,
|
||||
"projects"
|
||||
)}`}
|
||||
</p>
|
||||
</div>
|
||||
<div className="archive__tasks-wrapper">
|
||||
{Boolean(
|
||||
projects?.filter((project) => project.status === 10).length
|
||||
) ? (
|
||||
projects?.map((project, index) => {
|
||||
return project.status === 10 ? (
|
||||
<div
|
||||
className="archive__complete-task-project"
|
||||
key={index}
|
||||
>
|
||||
<div className="archive__complete-task__description">
|
||||
<p className="project-title-archive">
|
||||
{project.name}
|
||||
</p>
|
||||
<p className="date">{project.date}</p>
|
||||
</div>
|
||||
<div className="archive__complete-task__creator">
|
||||
<img src={mockAvatar} alt="#" />
|
||||
<div className="creator-title">
|
||||
<h4>Создатель проекта:</h4>
|
||||
<p>{"Василий Тарасов"}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
""
|
||||
);
|
||||
})
|
||||
) : (
|
||||
<div className="archive__no-item-project">
|
||||
<img src={archiveTrackerProjects} alt="#" />
|
||||
<p>В архиве проектов нет</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import AuthBlock from "@components/AuthBlock/AuthBlock";
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import { ModalReset } from "@components/Modal/ModalReset/ModalReset";
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
import { NavLink } from "react-router-dom";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import SideBar from "@components/SideBar/SideBar";
|
||||
|
||||
|
@ -4,7 +4,7 @@ import { Navigate } from "react-router-dom";
|
||||
import { useFormValidation } from "@hooks/useFormValidation";
|
||||
import { useNotification } from "@hooks/useNotification";
|
||||
|
||||
import { AuthHeader } from "@components/Common/AuthHeader/AuthHeader";
|
||||
import AuthHeader from "@components/Common/AuthHeader/AuthHeader";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
import { ModalTrackerRegistration } from "@components/Modal/ModalTrackerRegistration/ModalTrackerRegistration";
|
||||
|
Loading…
Reference in New Issue
Block a user