commit
954f696044
@ -3,14 +3,14 @@ import {
|
||||
BrowserRouter as Router,
|
||||
Route,
|
||||
Routes,
|
||||
Navigate,
|
||||
Navigate
|
||||
} from "react-router-dom";
|
||||
|
||||
import { getNotification } from "@redux/outstaffingSlice";
|
||||
|
||||
import Auth from "./pages/Auth/Auth";
|
||||
import CatalogSpecialists from "@pages/CatalogSpecialists/CatalogSpecialists";
|
||||
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro"
|
||||
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro";
|
||||
import { CompanyInfo } from "@pages/CompanyInfo/CompanyInfo";
|
||||
import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth";
|
||||
import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration";
|
||||
@ -57,7 +57,7 @@ import "./assets/fonts/stylesheet.css";
|
||||
import "bootstrap/dist/css/bootstrap.min.css";
|
||||
|
||||
const App = () => {
|
||||
const notification = useSelector(getNotification)
|
||||
const notification = useSelector(getNotification);
|
||||
return (
|
||||
<>
|
||||
<Router>
|
||||
@ -65,10 +65,22 @@ 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="/tracker-registration" element={<TrackerRegistration />} />
|
||||
<Route
|
||||
exact
|
||||
path="/tracker-registration"
|
||||
element={<TrackerRegistration />}
|
||||
/>
|
||||
<Route exact path="/company" element={<CompanyInfo />} />
|
||||
<Route exact path="/registration-setting" element={<RegistrationSetting />} />
|
||||
<Route exact path="/catalog-specialists" element={<CatalogSpecialists />} />
|
||||
<Route
|
||||
exact
|
||||
path="/registration-setting"
|
||||
element={<RegistrationSetting />}
|
||||
/>
|
||||
<Route
|
||||
exact
|
||||
path="/catalog-specialists"
|
||||
element={<CatalogSpecialists />}
|
||||
/>
|
||||
|
||||
<Route exact path="/worker/:id" element={<FreeDevelopers />} />
|
||||
<Route
|
||||
@ -113,18 +125,26 @@ const App = () => {
|
||||
<Route exact path="catalog" element={<Home />} />
|
||||
<Route exact path="calendar" element={<ProfileCalendar />} />
|
||||
<Route exact path="calendar/report" element={<ReportForm />} />
|
||||
<Route exact path="calendar/view/:date/:id" element={<ViewReport />} />
|
||||
<Route
|
||||
exact
|
||||
path="calendar/view/:date/:id"
|
||||
element={<ViewReport />}
|
||||
/>
|
||||
<Route exact path="summary" element={<Summary />} />
|
||||
<Route exact path="tracker" element={<Tracker />} />
|
||||
<Route exact path="statistics/:id" element={<Statistics/>}/>
|
||||
<Route exact path="statistics/:id" element={<Statistics />} />
|
||||
<Route exact path="payouts" element={<Payouts />} />
|
||||
<Route exact path="settings" element={<PartnerSettings />} />
|
||||
<Route exact path="requests" element={<PartnerRequests />} />
|
||||
<Route exact path="add-request" element={<PartnerAddRequest />} />
|
||||
<Route exact path="edit-request" element={<PartnerAddRequest />} />
|
||||
<Route exact path="bid" element={<PartnerBid />} />
|
||||
<Route exact path="requests-add" element={<PartnerAddRequest />} />
|
||||
<Route exact path="requests-edit" element={<PartnerAddRequest />} />
|
||||
<Route exact path="requests-bid" element={<PartnerBid />} />
|
||||
<Route exact path="employees" element={<PartnerCategories />} />
|
||||
<Route exact path="employees/report/:uuid" element={<PartnerEmployeeReport />} />
|
||||
<Route
|
||||
exact
|
||||
path="employees/report/:uuid"
|
||||
element={<PartnerEmployeeReport />}
|
||||
/>
|
||||
<Route exact path="treaties" element={<PartnerTreaties />} />
|
||||
<Route exact path="quiz">
|
||||
<Route index element={<QuizPage />} />
|
||||
@ -139,7 +159,6 @@ const App = () => {
|
||||
/>
|
||||
</Route>
|
||||
|
||||
|
||||
<Route exact path="profile-candidate/:id">
|
||||
<Route index element={<ProfileCandidate />} />
|
||||
</Route>
|
||||
@ -147,9 +166,7 @@ const App = () => {
|
||||
<Route path="*" element={<Navigate to="/auth" replace />} />
|
||||
</Routes>
|
||||
</Router>
|
||||
{notification.show &&
|
||||
<Notification />
|
||||
}
|
||||
{notification.show && <Notification />}
|
||||
</>
|
||||
);
|
||||
};
|
@ -79,8 +79,8 @@ const Calendar = () => {
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</section>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
.calendar {
|
||||
margin-bottom: 40px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__header {
|
||||
display: flex;
|
||||
@ -136,10 +135,6 @@
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 2rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 575.98px) {
|
||||
|
@ -3,7 +3,6 @@
|
||||
margin: 10px 0;
|
||||
background-color: #f9f9f9;
|
||||
padding: 20px 30px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__header {
|
||||
display: flex;
|
||||
|
@ -233,8 +233,8 @@ const Candidate = () => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -148,12 +148,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 2.5rem !important;
|
||||
position: relative;
|
||||
z-index: -2;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 375.98px) {
|
||||
|
@ -6,7 +6,6 @@
|
||||
border-radius: 44px;
|
||||
color: white;
|
||||
font-style: normal;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
border: none;
|
||||
transition: 0.5s;
|
||||
|
||||
|
@ -8,7 +8,7 @@ export const Loader = ({ width = 50, height = 50, style }) => {
|
||||
<div className="loader">
|
||||
<SVGLoader
|
||||
type="Circles"
|
||||
color={style ? style : `#fff`}
|
||||
color={style ? style : `green`}
|
||||
height={height}
|
||||
width={width}
|
||||
/>
|
||||
|
@ -5,7 +5,6 @@
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
//&:hover {
|
||||
// path {
|
||||
// fill: #6aaf5c;
|
||||
|
@ -18,7 +18,6 @@
|
||||
}
|
||||
|
||||
&__empty {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
|
@ -92,8 +92,8 @@ export const FreeDevelopers = () => {
|
||||
</BaseButton>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
.free-dev {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background-color: #f1f1f1;
|
||||
|
@ -77,7 +77,6 @@
|
||||
line-height: 32px;
|
||||
color: #1458dd;
|
||||
margin: 0;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@ -780,7 +779,6 @@
|
||||
|
||||
.react-datepicker__current-month {
|
||||
font-size: 18px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
@ -823,7 +821,6 @@
|
||||
.react-datepicker__day {
|
||||
font-size: 16px;
|
||||
width: 35px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
border-radius: 50px;
|
||||
padding: 7px;
|
||||
}
|
||||
@ -832,7 +829,6 @@
|
||||
font-size: 18px;
|
||||
width: 35px;
|
||||
font-weight: 500;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
}
|
||||
|
||||
.react-datepicker__triangle {
|
||||
|
@ -30,6 +30,7 @@ import { useNotification } from "@hooks/useNotification";
|
||||
|
||||
import { getCorrectDate } from "@components/Calendar/calendarHelper";
|
||||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
import ModalLayout from "@components/Common/ModalLayout/ModalLayout";
|
||||
|
||||
import arrowRight from "assets/icons/arrows/arrowRightCreateTask.svg";
|
||||
@ -90,6 +91,7 @@ export const TrackerModal = ({
|
||||
const [deadLineDate, setDeadLineDate] = useState("");
|
||||
const [datePickerOpen, setDatePickerOpen] = useState(false);
|
||||
const [startDate, setStartDate] = useState(new Date());
|
||||
const [loader, setLoader] = useState(false);
|
||||
|
||||
const priority = [
|
||||
{
|
||||
@ -138,6 +140,8 @@ export const TrackerModal = ({
|
||||
return;
|
||||
}
|
||||
|
||||
setLoader(true);
|
||||
|
||||
apiRequest("/task/create-task", {
|
||||
method: "POST",
|
||||
data: {
|
||||
@ -158,6 +162,7 @@ export const TrackerModal = ({
|
||||
text: "Задача с таким именем уже существует",
|
||||
type: "error"
|
||||
});
|
||||
setLoader(false);
|
||||
} else {
|
||||
for (let i = 0; i < taskTags.length; i++) {
|
||||
apiRequest("/mark/attach", {
|
||||
@ -185,9 +190,11 @@ export const TrackerModal = ({
|
||||
setDescriptionTicket("");
|
||||
setSelectedExecutorTask("Выберите исполнителя");
|
||||
setSelectedPriority(null);
|
||||
setLoader(false);
|
||||
});
|
||||
} else {
|
||||
setActive(false);
|
||||
setLoader(false);
|
||||
setValueTicket("");
|
||||
setDescriptionTicket("");
|
||||
dispatch(setProjectBoardFetch(projectBoard.id));
|
||||
@ -703,9 +710,13 @@ export const TrackerModal = ({
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<BaseButton styles={"button-add"} onClick={createTicket}>
|
||||
Создать
|
||||
</BaseButton>
|
||||
{loader ? (
|
||||
<Loader style={"green"} />
|
||||
) : (
|
||||
<BaseButton styles={"button-add"} onClick={createTicket}>
|
||||
Создать
|
||||
</BaseButton>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
@ -172,7 +172,8 @@
|
||||
|
||||
.executor {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
column-gap: 5px;
|
||||
align-items: center;
|
||||
&:hover {
|
||||
font-weight: 600;
|
||||
}
|
||||
@ -650,7 +651,6 @@
|
||||
|
||||
.react-datepicker__current-month {
|
||||
font-size: 18px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
text-transform: capitalize;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
@ -694,7 +694,6 @@
|
||||
.react-datepicker__day {
|
||||
font-size: 16px;
|
||||
width: 35px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
border-radius: 50px;
|
||||
padding: 7px;
|
||||
}
|
||||
@ -703,7 +702,6 @@
|
||||
font-size: 18px;
|
||||
width: 35px;
|
||||
font-weight: 500;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
}
|
||||
|
||||
.react-datepicker__triangle {
|
||||
|
@ -45,6 +45,7 @@ export const Navigation = () => {
|
||||
partner: [
|
||||
{
|
||||
path: "/catalog",
|
||||
active: "candidate",
|
||||
name: "Каталог"
|
||||
},
|
||||
{
|
||||
@ -53,6 +54,7 @@ export const Navigation = () => {
|
||||
},
|
||||
{
|
||||
path: "/employees",
|
||||
active: "calendar",
|
||||
name: "Персонал"
|
||||
},
|
||||
{
|
||||
@ -80,7 +82,12 @@ export const Navigation = () => {
|
||||
key={index}
|
||||
end
|
||||
to={link.path === "/Quiz" ? link.path : `/profile${link.path}`}
|
||||
className={currentPath.includes(link.path) ? "active" : ""}
|
||||
className={
|
||||
currentPath.includes(link.path) ||
|
||||
currentPath.includes(link.active)
|
||||
? "active"
|
||||
: ""
|
||||
}
|
||||
>
|
||||
{link.name}
|
||||
</NavLink>
|
||||
|
@ -5,7 +5,7 @@
|
||||
position: fixed;
|
||||
bottom: 25px;
|
||||
right: 25px;
|
||||
z-index: 20;
|
||||
z-index: 10000;
|
||||
|
||||
&__info {
|
||||
display: flex;
|
||||
|
@ -1,7 +1,3 @@
|
||||
body {
|
||||
font-family: "LabGrotesque", sans-serif !important;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px !important;
|
||||
}
|
||||
@ -9,7 +5,6 @@ body {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
padding-top: 23px;
|
||||
|
||||
&__title {
|
||||
|
@ -1,12 +1,15 @@
|
||||
.profile__calendar {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
margin-top: 23px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
margin-top: 0;
|
||||
|
@ -3,6 +3,8 @@
|
||||
height: 80px;
|
||||
background: #e1fccf;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&__head {
|
||||
background: #e1fccf;
|
||||
|
@ -135,7 +135,7 @@ export const ProjectTicket = ({ project, index }) => {
|
||||
<img src={edit}></img>
|
||||
<p>редактировать</p>
|
||||
</div>
|
||||
<div onClick={copyProjectLink(project.id)}>
|
||||
<div onClick={() => copyProjectLink(project.id)}>
|
||||
<img src={link}></img>
|
||||
<p>скопировать ссылку</p>
|
||||
</div>
|
||||
|
@ -1,8 +1,6 @@
|
||||
.report-form {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
@ -430,7 +428,6 @@
|
||||
|
||||
.react-datepicker__current-month {
|
||||
font-size: 14px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
@ -442,13 +439,11 @@
|
||||
.react-datepicker__day {
|
||||
font-size: 14px;
|
||||
width: 35px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
}
|
||||
|
||||
.react-datepicker__day-name {
|
||||
font-size: 14px;
|
||||
width: 35px;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
}
|
||||
|
||||
.react-datepicker__triangle {
|
||||
|
@ -6,15 +6,13 @@ body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||
sans-serif;
|
||||
font-family: "LabGrotesque", sans-serif !important;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
|
||||
monospace;
|
||||
}
|
||||
|
||||
|
@ -91,10 +91,10 @@ const Auth = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
</div>
|
||||
<SideBar />
|
||||
<Footer />
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
@ -1,10 +1,10 @@
|
||||
.auth-partners {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
||||
&__background {
|
||||
background-color: #f1f1f1;
|
||||
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ export const AuthForCandidate = () => {
|
||||
resetModal={setModalReset}
|
||||
title="Войти, если есть доступ"
|
||||
description="Если вы получили доступ, пройдя
|
||||
2 шага для входа или хотите узнать
|
||||
2 шага для входа, или хотите узнать
|
||||
свои результаты в кабинете"
|
||||
/>
|
||||
<div className="auth-candidate__start">
|
||||
|
@ -1,5 +1,4 @@
|
||||
.auth-candidate {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background-color: #f1f1f1;
|
||||
@ -62,8 +61,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
@ -90,12 +90,10 @@ export const Blog = () => {
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
|
||||
<div className="blog__load-more">
|
||||
<button>Загрузить еще</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
|
@ -200,9 +200,9 @@ const CatalogSpecialists = () => {
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<SideBar />
|
||||
<Footer />
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
@ -1,8 +1,8 @@
|
||||
.catalog-specialists {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__wrapper {
|
||||
padding-top: 24px;
|
||||
|
@ -103,8 +103,8 @@ export const CompanyInfo = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
.company-info {
|
||||
&__content {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
padding-top: 60px;
|
||||
|
||||
|
@ -96,8 +96,8 @@ const FormPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -124,10 +124,6 @@
|
||||
right: 2.5rem;
|
||||
}
|
||||
|
||||
.form-page footer {
|
||||
margin-top: 6rem !important;
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.form-page {
|
||||
&__separator {
|
||||
|
@ -2,9 +2,7 @@
|
||||
|
||||
.frequently-asked-question {
|
||||
background: #f5f5f5;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
.frequently-asked-questions {
|
||||
background: #f5f5f5;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
@ -69,9 +69,9 @@ const Home = () => {
|
||||
<h2 className="catalog__title">Каталог специалистов</h2>
|
||||
<Outstaffing />
|
||||
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} />
|
||||
<Footer />
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
@ -49,13 +49,14 @@ export const PartnerAddRequest = () => {
|
||||
const [inputs, setInputs] = useState({ title: "", description: "" });
|
||||
|
||||
if (
|
||||
currentUrl[0] === "/profile/edit-request" &&
|
||||
currentUrl[0] === "/profile/requests-edit" &&
|
||||
!Object.keys(partnerRequestInfo).length
|
||||
) {
|
||||
return <Navigate to="/profile/requests" replace />;
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
initListeners();
|
||||
apiRequest(`/profile/positions-list`).then((el) =>
|
||||
setSpecializationList(el)
|
||||
);
|
||||
@ -68,7 +69,7 @@ export const PartnerAddRequest = () => {
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
currentUrl[0] === "/profile/edit-request" &&
|
||||
currentUrl[0] === "/profile/requests-edit" &&
|
||||
Object.keys(partnerRequestInfo).length
|
||||
) {
|
||||
setInputs({
|
||||
@ -101,7 +102,7 @@ export const PartnerAddRequest = () => {
|
||||
};
|
||||
|
||||
const handler = () => {
|
||||
if (currentUrl[0] === "/profile/edit-request") {
|
||||
if (currentUrl[0] === "/profile/requests-edit") {
|
||||
apiRequest("/request/update-request", {
|
||||
method: "PUT",
|
||||
data: {
|
||||
@ -141,6 +142,31 @@ export const PartnerAddRequest = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const initListeners = () => {
|
||||
document.addEventListener("click", closeByClickingOut);
|
||||
};
|
||||
|
||||
const closeByClickingOut = (event) => {
|
||||
const path = event.path || (event.composedPath && event.composedPath());
|
||||
|
||||
if (
|
||||
event &&
|
||||
!path.find(
|
||||
(div) =>
|
||||
div.classList &&
|
||||
(div.classList.contains("form__block__section__selects") ||
|
||||
div.classList.contains("form__block__dropDown") ||
|
||||
div.classList.contains("form__block__skills") ||
|
||||
div.classList.contains("form__block__section__select"))
|
||||
)
|
||||
) {
|
||||
setOpenSkillsSelect(false);
|
||||
setOpenSpecializationListOpen(false);
|
||||
setOpenLevelList(false);
|
||||
setOpenCountList(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="partner-add-request">
|
||||
<ProfileHeader />
|
||||
@ -154,7 +180,7 @@ export const PartnerAddRequest = () => {
|
||||
name: `${
|
||||
editRequest ? "Редактирование заявки" : "Создание новой заявки"
|
||||
}`,
|
||||
link: "/profile/add-request"
|
||||
link: "/profile/requests-add"
|
||||
}
|
||||
]}
|
||||
/>
|
@ -1,8 +1,8 @@
|
||||
.partner-add-request {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
@ -314,10 +314,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
|
||||
&__info {
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
|
@ -107,7 +107,10 @@ export const PartnerBid = () => {
|
||||
links={[
|
||||
{ name: "Главная", link: "/profile" },
|
||||
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
|
||||
{ name: "Просмотр заявки - PHP разработчик", link: "/profile/bid" }
|
||||
{
|
||||
name: "Просмотр заявки - PHP разработчик",
|
||||
link: "/profile/requests-bid"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
<h2 className="partner-bid__title">Страница заявки </h2>
|
||||
@ -117,7 +120,7 @@ export const PartnerBid = () => {
|
||||
<div className="partner-bid__qualification">
|
||||
<h3>{requestInfo.title}</h3>
|
||||
<div className="partner-bid__qualification__buttons">
|
||||
<Link to="/profile/edit-request">Редактировать</Link>
|
||||
<Link to="/profile/requests-edit">Редактировать</Link>
|
||||
<img
|
||||
src={deleteBtn}
|
||||
alt="delete"
|
||||
|
@ -1,11 +1,13 @@
|
||||
.partner-bid {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
@ -536,8 +538,4 @@
|
||||
background: #52b709;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,13 @@
|
||||
.employee-report {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
.partner-employees {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__title {
|
||||
color: #000000;
|
||||
@ -167,15 +167,13 @@
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ export const PartnerRequests = () => {
|
||||
return (
|
||||
<Link
|
||||
key={index}
|
||||
to={"/profile/bid"}
|
||||
to={"/profile/requests-bid"}
|
||||
className="partner-requests__section__item"
|
||||
onClick={() => {
|
||||
dispatch(setPartnerRequestId(item.id));
|
||||
@ -85,7 +85,7 @@ export const PartnerRequests = () => {
|
||||
параметры: количество сотрудников, стек, уровень специалиста
|
||||
</p>
|
||||
<BaseButton>
|
||||
<Link to={"/profile/add-request"}>
|
||||
<Link to={"/profile/requests-add"}>
|
||||
<span>+</span>
|
||||
Создать запрос
|
||||
</Link>
|
||||
@ -100,7 +100,7 @@ export const PartnerRequests = () => {
|
||||
<img src={cursorImg} alt="cursor" />
|
||||
<p>У вас ещё нет запросов на сотрудников</p>
|
||||
<BaseButton>
|
||||
<Link to={"/profile/add-request"}>
|
||||
<Link to={"/profile/requests-add"}>
|
||||
<span>+</span>
|
||||
Создать запрос
|
||||
</Link>
|
||||
|
@ -1,11 +1,13 @@
|
||||
.partner-requests {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
@ -352,8 +354,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
.settings {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background: #f1f1f1;
|
||||
|
||||
.info-personal__title {
|
||||
color: #000000;
|
||||
@ -12,7 +12,9 @@
|
||||
}
|
||||
|
||||
&__page {
|
||||
min-height: 750px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
max-width: 1160px !important;
|
||||
margin-top: 23px;
|
||||
}
|
||||
@ -129,7 +131,10 @@
|
||||
}
|
||||
|
||||
.partner-settings {
|
||||
margin-bottom: 110px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&__body {
|
||||
display: flex;
|
||||
|
@ -1,8 +1,8 @@
|
||||
.treaties {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__title {
|
||||
font-weight: 700;
|
||||
@ -378,15 +378,13 @@
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
.partner-categories {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__title {
|
||||
color: #000000;
|
||||
@ -144,15 +144,13 @@
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,15 @@ import React from "react";
|
||||
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { Footer } from "@components/common/Footer/Footer";
|
||||
|
||||
export const Payouts = () => {
|
||||
return (
|
||||
<div className="payouts">
|
||||
<ProfileHeader />
|
||||
<Navigation />
|
||||
<div className="container"></div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,8 +1,8 @@
|
||||
.profile {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__title {
|
||||
font-weight: 700;
|
||||
@ -48,92 +48,17 @@
|
||||
@media (max-width: 1175px) {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
// .item {
|
||||
// max-width: 353px;
|
||||
// width: 100%;
|
||||
// padding: 35px 45px 15px 30px;
|
||||
// background: #FFFFFF;
|
||||
// border-radius: 12px;
|
||||
// text-decoration: none;
|
||||
// cursor: pointer;
|
||||
// transition: all 0.3s ease;
|
||||
|
||||
// &:hover {
|
||||
// box-shadow: 6px 5px 20px rgb(87 98 80 / 21%);
|
||||
// transform: scale(1.02);
|
||||
// }
|
||||
|
||||
// @media (max-width: 1175px) {
|
||||
// width: 48%;
|
||||
// max-width: none;
|
||||
// }
|
||||
|
||||
// @media (max-width: 925px) {
|
||||
// width: 100%;
|
||||
// padding: 15px 25px;
|
||||
// }
|
||||
|
||||
// &__about {
|
||||
// display: flex;
|
||||
// column-gap: 20px;
|
||||
// align-items: center;
|
||||
// margin-bottom: 30px;
|
||||
|
||||
// @media (max-width: 925px) {
|
||||
// margin-bottom: 15px;
|
||||
// }
|
||||
|
||||
// h3 {
|
||||
// color: #000000;
|
||||
// font-weight: 500;
|
||||
// font-size: 18px;
|
||||
// line-height: 22px;
|
||||
// max-width: 125px;
|
||||
// margin-bottom: 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
// &__info {
|
||||
// display: flex;
|
||||
// justify-content: space-between;
|
||||
// align-items: center;
|
||||
|
||||
// p {
|
||||
// font-weight: 700;
|
||||
// font-size: 12px;
|
||||
// line-height: 20px;
|
||||
// color: #000000;
|
||||
// margin-bottom: 0;
|
||||
|
||||
// span {
|
||||
// color: #52B709;
|
||||
// font-weight: 700;
|
||||
// }
|
||||
// }
|
||||
// &Link {
|
||||
// width: 48px;
|
||||
// height: 48px;
|
||||
// background: #DDEEC6;
|
||||
// border-radius: 50px;
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
margin-top: 23px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
}
|
||||
|
@ -1,166 +1,159 @@
|
||||
.profile-candidate{
|
||||
background: #F1F1F1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
//max-width: 1200px;
|
||||
&__container{
|
||||
max-width: 1160px;
|
||||
margin: 0 auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
padding: 0 15px;
|
||||
}
|
||||
&__title{
|
||||
margin: 0 0 31px 0;
|
||||
}
|
||||
&__row{
|
||||
display: flex;
|
||||
gap: 30px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
// &__column{
|
||||
// flex: 1 1 60%;
|
||||
// }
|
||||
&__tests{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
flex: 1 1 60%;
|
||||
gap: 30px;
|
||||
}
|
||||
&__cards{
|
||||
display: flex;
|
||||
gap: 29px;
|
||||
width: 100%;
|
||||
@media (max-width: 660px) {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
&__head-bottom{
|
||||
margin: 0 0 27px 0;
|
||||
//max-width: 1160px;
|
||||
}
|
||||
|
||||
|
||||
.profile-candidate {
|
||||
background: #f1f1f1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
&__container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
padding: 0 15px;
|
||||
}
|
||||
&__title {
|
||||
margin: 0 0 31px 0;
|
||||
}
|
||||
&__row {
|
||||
display: flex;
|
||||
gap: 30px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
// &__column{
|
||||
// flex: 1 1 60%;
|
||||
// }
|
||||
&__tests {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
flex: 1 1 60%;
|
||||
gap: 30px;
|
||||
}
|
||||
&__cards {
|
||||
display: flex;
|
||||
gap: 29px;
|
||||
width: 100%;
|
||||
@media (max-width: 660px) {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
&__head-bottom {
|
||||
margin: 0 0 27px 0;
|
||||
//max-width: 1160px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.instructions-candidate{
|
||||
flex: 1 1 auto;
|
||||
background: #FFFFFF;
|
||||
border-radius: 12px;
|
||||
&__container{
|
||||
padding: 40px 18px 32px 36px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 29px;
|
||||
@media (max-width: 660px) {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
&__note{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 22px;
|
||||
&:not(:last-child){
|
||||
margin: 0 0 30px 0;
|
||||
}
|
||||
|
||||
}
|
||||
&__icon{
|
||||
width: 25px;
|
||||
height: 30px;
|
||||
}
|
||||
&__title{
|
||||
color: #52B709;
|
||||
font-weight: 900;
|
||||
font-size: 14px;
|
||||
line-height: 171%;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
&__text{
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 200%;
|
||||
color: #000000;
|
||||
max-width: 235px;
|
||||
span{
|
||||
color: #406128;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
.instructions-candidate {
|
||||
flex: 1 1 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
&__container {
|
||||
padding: 40px 18px 32px 36px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 29px;
|
||||
@media (max-width: 660px) {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
&__note {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 22px;
|
||||
&:not(:last-child) {
|
||||
margin: 0 0 30px 0;
|
||||
}
|
||||
}
|
||||
&__icon {
|
||||
width: 25px;
|
||||
height: 30px;
|
||||
}
|
||||
&__title {
|
||||
color: #52b709;
|
||||
font-weight: 900;
|
||||
font-size: 14px;
|
||||
line-height: 171%;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
&__text {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 200%;
|
||||
color: #000000;
|
||||
max-width: 235px;
|
||||
span {
|
||||
color: #406128;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info-candidate{
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
padding: 20px 45px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 47px;
|
||||
@media (max-width:560px) {
|
||||
padding: 20px;
|
||||
}
|
||||
&__img{
|
||||
flex: 0 0 88px;
|
||||
height: 88px;
|
||||
img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
&__info{
|
||||
width: 100%;
|
||||
}
|
||||
&__title{
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 200%;
|
||||
color: #000000;
|
||||
margin: 0 0 12px 0;
|
||||
}
|
||||
.info-candidate {
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
padding: 20px 45px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 47px;
|
||||
@media (max-width: 560px) {
|
||||
padding: 20px;
|
||||
}
|
||||
&__img {
|
||||
flex: 0 0 88px;
|
||||
height: 88px;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
&__info {
|
||||
width: 100%;
|
||||
}
|
||||
&__title {
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 200%;
|
||||
color: #000000;
|
||||
margin: 0 0 12px 0;
|
||||
}
|
||||
|
||||
&__decor{
|
||||
background: #52B709;
|
||||
border-radius: 12px;
|
||||
height: 8px;
|
||||
width: 60%;
|
||||
}
|
||||
&__decor {
|
||||
background: #52b709;
|
||||
border-radius: 12px;
|
||||
height: 8px;
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom-head{
|
||||
margin: 0 0 40px 0;
|
||||
height: 66px;
|
||||
background: #FFF;
|
||||
&__container{
|
||||
max-width: 1160px;
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
&__img{
|
||||
flex: 0 0 37px;
|
||||
height: 37px;
|
||||
img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
&__title{
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
line-height: 178%;
|
||||
color: #807777;
|
||||
}
|
||||
.bottom-head {
|
||||
margin: 0 0 40px 0;
|
||||
height: 66px;
|
||||
background: #fff;
|
||||
&__container {
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
&__img {
|
||||
flex: 0 0 37px;
|
||||
height: 37px;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
&__title {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
line-height: 178%;
|
||||
color: #807777;
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import { apiRequest } from "@api/request";
|
||||
|
||||
import CategoriesItem from "@components/CategoriesItem/CategoriesItem";
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
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";
|
||||
@ -27,7 +28,8 @@ import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg";
|
||||
import "./quiz-page.scss";
|
||||
|
||||
export const QuizPage = () => {
|
||||
const [questionnaires, setQuestionnaires] = useState(null);
|
||||
const [questionnaires, setQuestionnaires] = useState([]);
|
||||
const [loader, setLoader] = useState(false);
|
||||
const dispatch = useDispatch();
|
||||
const [personalInfoItems] = useState([
|
||||
{
|
||||
@ -102,8 +104,12 @@ export const QuizPage = () => {
|
||||
const [selectedCategory, setSetSelectedCategory] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setLoader(true);
|
||||
apiRequest(`/user-questionnaire/questionnaires-list?user_id=${userId}`)
|
||||
.then((res) => setQuestionnaires(res))
|
||||
.then((res) => {
|
||||
setQuestionnaires(res);
|
||||
setLoader(false);
|
||||
})
|
||||
.catch((e) => console.log(e));
|
||||
}, []);
|
||||
|
||||
@ -122,7 +128,9 @@ export const QuizPage = () => {
|
||||
<div className="quiz-page__title main-title">
|
||||
{!selectedCategory ? "Тестирование" : "Замена специализации"}
|
||||
</div>
|
||||
{!selectedCategory && (
|
||||
{loader ? (
|
||||
<Loader />
|
||||
) : (
|
||||
<>
|
||||
{/*<div className="quiz-page__specialization">*/}
|
||||
{/* <SelectedCategory setSelectedCategory={setSetSelectedCategory} />*/}
|
@ -7,6 +7,7 @@ import { selectedTest } from "@redux/quizSlice";
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
import { Footer } from "@components/Common/Footer/Footer";
|
||||
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";
|
||||
@ -23,16 +24,19 @@ export const QuizReportPage = () => {
|
||||
navigate("/Quiz");
|
||||
}
|
||||
|
||||
const [testInfo, setTestInfo] = useState({});
|
||||
const [loader, setLoader] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setLoader(true);
|
||||
apiRequest(
|
||||
`/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${params.uuid}`
|
||||
).then((res) => {
|
||||
setTestInfo(res);
|
||||
setLoader(false);
|
||||
});
|
||||
}, []);
|
||||
|
||||
const [testInfo, setTestInfo] = useState({});
|
||||
|
||||
return (
|
||||
<div className="quiz-report-page">
|
||||
<ProfileHeader />
|
||||
@ -46,13 +50,19 @@ export const QuizReportPage = () => {
|
||||
{ name: "Отчет по тестированию", link: "/profile/quiz" }
|
||||
]}
|
||||
/>
|
||||
<div className="quiz-report-page__title main-title">
|
||||
Отчет по тестированию позиции {testInfo.questionnaire_title}
|
||||
</div>
|
||||
<div className="quiz-report-page__report-quiz">
|
||||
<QuizReport info={testInfo} />
|
||||
</div>
|
||||
<AlertResult info={testInfo} />
|
||||
{loader ? (
|
||||
<Loader />
|
||||
) : (
|
||||
<>
|
||||
<div className="quiz-report-page__title main-title">
|
||||
Отчет по тестированию позиции {testInfo.questionnaire_title}
|
||||
</div>
|
||||
<div className="quiz-report-page__report-quiz">
|
||||
<QuizReport info={testInfo} />
|
||||
</div>
|
||||
<AlertResult info={testInfo} />
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
@ -1,13 +1,12 @@
|
||||
.quiz-page {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&__container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 23px auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
@ -64,9 +63,7 @@
|
||||
|
||||
.interjacent-page-quiz {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@ -79,7 +76,7 @@
|
||||
}
|
||||
|
||||
&__container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
margin: 23px auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
@ -96,14 +93,12 @@
|
||||
|
||||
.passing-tests-page {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&__container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
margin: 23px auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
@ -136,14 +131,13 @@
|
||||
|
||||
.quiz-report-page {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&__container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 23px auto 42px auto;
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
|
@ -1,5 +1,4 @@
|
||||
.registration-candidate {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
position: relative;
|
||||
background-color: #f1f1f1;
|
||||
|
||||
@ -188,8 +187,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 80px;
|
||||
}
|
||||
}
|
||||
|
@ -212,8 +212,8 @@ export const RegistrationSetting = () => {
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,6 +1,5 @@
|
||||
.registration-setting {
|
||||
&__content {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
color: #000000;
|
||||
padding: 50px 0 0;
|
||||
|
@ -105,7 +105,10 @@ const Statistics = () => {
|
||||
<div className="statistics-header__menu">
|
||||
<h1>Статистика проекта</h1>
|
||||
<img src={link} alt="#" />
|
||||
<span className="return-text" onClick={copyProjectLink("62")}>
|
||||
<span
|
||||
className="return-text"
|
||||
onClick={() => copyProjectLink("62")}
|
||||
>
|
||||
ссылка на проект
|
||||
</span>
|
||||
</div>
|
||||
|
@ -1,9 +1,8 @@
|
||||
.statistics {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
position: relative;
|
||||
|
||||
&-header {
|
||||
display: flex;
|
||||
|
@ -1,8 +1,8 @@
|
||||
.summary {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
&__content {
|
||||
display: flex;
|
||||
@ -509,12 +509,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
.tracker {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
position: relative;
|
||||
|
||||
.container {
|
||||
@ -18,14 +18,6 @@
|
||||
margin-top: 23px;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
|
||||
.row {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
&__title {
|
||||
font-weight: 700;
|
||||
font-size: 22px;
|
||||
@ -34,9 +26,9 @@
|
||||
}
|
||||
|
||||
&__tabs {
|
||||
min-height: 600px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
&__head {
|
||||
display: flex;
|
||||
|
@ -38,8 +38,8 @@ export const TrackerAuth = () => {
|
||||
<ModalReset setModalReset={setModalReset} />
|
||||
</ModalLayout>
|
||||
)}
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,10 +1,16 @@
|
||||
.tracker-auth {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
background-color: #f1f1f1;
|
||||
|
||||
&__content {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
|
||||
color: #000000;
|
||||
padding: 50px 0 0;
|
||||
min-height: 100vh;
|
||||
|
||||
@media (max-width: 1375px) {
|
||||
padding-top: 100px;
|
||||
@ -25,7 +31,7 @@
|
||||
margin-bottom: 46px;
|
||||
color: #000000;
|
||||
span {
|
||||
color: #52B709;
|
||||
color: #52b709;
|
||||
position: relative;
|
||||
img {
|
||||
position: absolute;
|
||||
|
@ -102,8 +102,8 @@ export const TrackerIntro = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,7 +1,6 @@
|
||||
.tracker-intro {
|
||||
background-color: #f1f1f1;
|
||||
&__content {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
color: #000000;
|
||||
|
||||
@media (max-width: 1375px) {
|
||||
|
@ -149,8 +149,8 @@ export const TrackerRegistration = () => {
|
||||
/>
|
||||
</ModalLayout>
|
||||
)}
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
@ -1,6 +1,5 @@
|
||||
.tracker-registration {
|
||||
&__content {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
background-color: #f1f1f1;
|
||||
color: #000000;
|
||||
padding: 50px 0 0;
|
||||
|
@ -269,8 +269,8 @@ export const ViewReport = () => {
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
@ -1,11 +1,13 @@
|
||||
.view-report {
|
||||
background: #f1f1f1;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
|
||||
.container {
|
||||
max-width: 1160px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
margin-top: 23px;
|
||||
|
||||
@media (max-width: 570px) {
|
||||
@ -424,12 +426,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 70px;
|
||||
|
||||
@media (max-width: 575px) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,34 +2,33 @@ export function createMarkup(text) {
|
||||
return { __html: text.split("</p>").join("</p>") };
|
||||
}
|
||||
|
||||
// export function transformHtml(text) {
|
||||
// let startHtml = {
|
||||
// __html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>"),
|
||||
// };
|
||||
// startHtml = startHtml.__html.filter(
|
||||
// (el) => (el !== null && el !== "") || el === 0
|
||||
// );
|
||||
// const finalHtml = startHtml.map(
|
||||
// (item) =>
|
||||
// `<div class='experience__block'>
|
||||
// <div class="summary__sections__head">
|
||||
// <h3>Описание опыта работы</h3>
|
||||
// <button>Редактировать</button>
|
||||
// </div>
|
||||
// <div class="experience__content">${item.split("<h3>")[0]}</div>
|
||||
// </div>`
|
||||
// );
|
||||
// return { __html: finalHtml.join("") };
|
||||
// }
|
||||
//
|
||||
// export const setToken = () => {
|
||||
// const url = new URL(window.location.href);
|
||||
// const urlT = url.searchParams.get("token");
|
||||
// urlT ? sessionStorage.setItem('token', 'Bearer ' + urlT) : '';
|
||||
// const tParam = urlT || sessionStorage.getItem('token');
|
||||
// return tParam ? {"Authorization": tParam} : false
|
||||
//
|
||||
// };
|
||||
export function transformHtml(text) {
|
||||
let startHtml = {
|
||||
__html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>")
|
||||
};
|
||||
startHtml = startHtml.__html.filter(
|
||||
(el) => (el !== null && el !== "") || el === 0
|
||||
);
|
||||
const finalHtml = startHtml.map(
|
||||
(item) =>
|
||||
`<div class='experience__block'>
|
||||
<div class="summary__sections__head">
|
||||
<h3>Описание опыта работы</h3>
|
||||
<button>Редактировать</button>
|
||||
</div>
|
||||
<div class="experience__content">${item.split("<h3>")[0]}</div>
|
||||
</div>`
|
||||
);
|
||||
return { __html: finalHtml.join("") };
|
||||
}
|
||||
|
||||
export const setToken = () => {
|
||||
const url = new URL(window.location.href);
|
||||
const urlT = url.searchParams.get("token");
|
||||
urlT ? sessionStorage.setItem("token", "Bearer " + urlT) : "";
|
||||
const tParam = urlT || sessionStorage.getItem("token");
|
||||
return tParam ? { Authorization: tParam } : false;
|
||||
};
|
||||
|
||||
export const getToken = () => {
|
||||
const tParam = `Bearer ${localStorage.getItem("auth_token")}`;
|
||||
|
Loading…
Reference in New Issue
Block a user