Compare commits

..

No commits in common. "9cb59b61d6edb5f0bc43a1ae30ad402a9f6246d5" and "16e3a2649d031ab137ea77a6ea0b9fbac1c460a2" have entirely different histories.

4 changed files with 45 additions and 78 deletions

View File

@ -92,13 +92,13 @@ export const PartnerEmployeeReport = () => {
<> <>
<div className="employee-report__info"> <div className="employee-report__info">
<div className="employee-report__name"> <div className="employee-report__name">
<h2>{userInfo?.userCard.fio}</h2> <h2>{userInfo.fio}</h2>
<p>{userInfo?.userCard.position.name}</p> <p>{userInfo.position}</p>
</div> </div>
<div className="employee-report__skills"> <div className="employee-report__skills">
{userInfo?.userCard?.skillValues && {userInfo?.stack &&
userInfo?.userCard?.skillValues.map((skill) => { userInfo.stack.map((skill, index) => {
return <span key={skill.id}>{skill.skill.name}</span>; return <span key={index}>{skill}</span>;
})} })}
</div> </div>
</div> </div>

View File

@ -65,25 +65,23 @@ export const PartnerCategories = () => {
{ {
label: "", label: "",
renderCell: (item) => ( renderCell: (item) => (
<Link to={`/profile/summary/${item.user_id}`}> <img
<img className="table__avatar"
className="table__avatar" src={urlForLocal(item?.employee.avatar)}
src={urlForLocal(item?.employee.avatar)} alt="avatar"
alt="avatar" />
/>
</Link>
) )
}, },
{ {
label: "Данные", label: "Данные",
renderCell: (item) => ( renderCell: (item) => (
<Link className="table__info" to={`/profile/summary/${item.user_id}`}> <div className="table__info">
<p>{item?.employee.fio}</p> <p>{item?.employee.fio}</p>
<span> <span>
{LEVELS[item?.resume.userCard.level]} /{" "} {LEVELS[item?.resume.userCard.level]} /{" "}
{SKILLS[item?.resume.userCard.position_id]} {SKILLS[item?.resume.userCard.position_id]}
</span> </span>
</Link> </div>
) )
// sort: { sortKey: "NAME" } // sort: { sortKey: "NAME" }
}, },

View File

@ -2,7 +2,7 @@ import ClassicEditor from "@ckeditor/ckeditor5-build-classic";
import { CKEditor } from "@ckeditor/ckeditor5-react"; import { CKEditor } from "@ckeditor/ckeditor5-react";
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { useParams } from "react-router-dom"; import { Navigate } from "react-router-dom";
import { getProfileInfo } from "@redux/outstaffingSlice"; import { getProfileInfo } from "@redux/outstaffingSlice";
@ -27,18 +27,19 @@ import avatarMok from "assets/images/avatarMok.webp";
import "./summary.scss"; import "./summary.scss";
export const Summary = () => { export const Summary = () => {
if (localStorage.getItem("role_status") === "18") {
return <Navigate to="/profile" replace />;
}
const profileInfo = useSelector(getProfileInfo); const profileInfo = useSelector(getProfileInfo);
const [openGit, setOpenGit] = useState(false); const [openGit, setOpenGit] = useState(false);
const [gitInfo, setGitInfo] = useState([]); const [gitInfo, setGitInfo] = useState([]);
const [editSummaryOpen, setEditSummaryOpen] = useState(false); const [editSummaryOpen, setEditSummaryOpen] = useState(false);
const [editSkills, setEditSkills] = useState(false); const [editSkills, setEditSkills] = useState(false);
const [userInfo, setUserInfo] = useState({});
const [summary, setSummary] = useState(""); const [summary, setSummary] = useState("");
const [selectedSkills, setSelectedSkills] = useState([]); const [selectedSkills, setSelectedSkills] = useState([]);
const [selectSkillsOpen, setSelectSkillsOpen] = useState(false); const [selectSkillsOpen, setSelectSkillsOpen] = useState(false);
const [skillsList, seSkillsList] = useState([]); const [skillsList, seSkillsList] = useState([]);
const { showNotification } = useNotification(); const { showNotification } = useNotification();
const { id: userId } = useParams();
useEffect(() => { useEffect(() => {
apiRequest( apiRequest(
@ -47,10 +48,8 @@ export const Summary = () => {
}, []); }, []);
useEffect(() => { useEffect(() => {
if (!userId) { setSummary(profileInfo.vc_text);
setSummary(profileInfo.vc_text); setSelectedSkills(profileInfo.skillValues);
setSelectedSkills(profileInfo.skillValues);
}
}, [profileInfo]); }, [profileInfo]);
useEffect(() => { useEffect(() => {
@ -59,22 +58,6 @@ export const Summary = () => {
}); });
}, []); }, []);
useEffect(() => {
if (userId) {
apiRequest(`/resume?userId=${userId}`).then((res) => {
setUserInfo({
photo: res.userCard.photo,
fio: res.userCard.fio,
specification: res.userCard.specification,
level: res.userCard.level_title,
position: res.userCard.position.name
});
setSummary(res.userCard.vc_text);
setSelectedSkills(res.userCard.skillValues);
});
}
}, [userId]);
const addSkill = (skill) => { const addSkill = (skill) => {
const isSkillFound = selectedSkills.some( const isSkillFound = selectedSkills.some(
(item) => item.skill_id == skill.id (item) => item.skill_id == skill.id
@ -150,9 +133,7 @@ export const Summary = () => {
<div className="summary__person"> <div className="summary__person">
<img <img
src={ src={
userId profileInfo?.photo
? urlForLocal(userInfo.photo)
: profileInfo?.photo
? urlForLocal(profileInfo.photo) ? urlForLocal(profileInfo.photo)
: avatarMok : avatarMok
} }
@ -160,18 +141,12 @@ export const Summary = () => {
alt="avatar" alt="avatar"
/> />
<p className="summary__name"> <p className="summary__name">
{userId {profileInfo?.fio || profileInfo?.username}{" "}
? userInfo.fio {profileInfo.specification}
: profileInfo?.fio || profileInfo?.username}{" "}
{userId ? userInfo.specification : profileInfo.specification}
</p> </p>
<hr /> <hr />
<div className="summary__direction"> <div className="summary__direction">Front End</div>
{userId ? userInfo.position : profileInfo?.position?.name} <div className="summary__level">Middle+</div>
</div>
<div className="summary__level">
{userId ? userInfo.level : profileInfo?.level_title}
</div>
</div> </div>
{!openGit && ( {!openGit && (
<button className="summary__git" onClick={() => setOpenGit(true)}> <button className="summary__git" onClick={() => setOpenGit(true)}>
@ -184,19 +159,17 @@ export const Summary = () => {
<div className="summary__skills skills__section"> <div className="summary__skills skills__section">
<div className="summary__sections__head"> <div className="summary__sections__head">
<h3>Основной стек</h3> <h3>Основной стек</h3>
{!userId && ( <button
<button className={editSkills ? "edit" : ""}
className={editSkills ? "edit" : ""} onClick={() => {
onClick={() => { if (editSkills) {
if (editSkills) { setSkills();
setSkills(); }
} setEditSkills(!editSkills);
setEditSkills(!editSkills); }}
}} >
> {editSkills ? "Сохранить" : "Редактировать"}
{editSkills ? "Сохранить" : "Редактировать"} </button>
</button>
)}
</div> </div>
<div className="skills__section__items"> <div className="skills__section__items">
{editSkills ? ( {editSkills ? (
@ -266,19 +239,17 @@ export const Summary = () => {
<div className="experience__block"> <div className="experience__block">
<div className="summary__sections__head"> <div className="summary__sections__head">
<h3>Опыт работы</h3> <h3>Опыт работы</h3>
{!userId && ( <button
<button className={editSummaryOpen ? "edit" : ""}
className={editSummaryOpen ? "edit" : ""} onClick={() => {
onClick={() => { if (editSummaryOpen) {
if (editSummaryOpen) { editSummary();
editSummary(); }
} setEditSummaryOpen(!editSummaryOpen);
setEditSummaryOpen(!editSummaryOpen); }}
}} >
> {editSummaryOpen ? "Сохранить" : "Редактировать"}
{editSummaryOpen ? "Сохранить" : "Редактировать"} </button>
</button>
)}
</div> </div>
{editSummaryOpen ? ( {editSummaryOpen ? (
<CKEditor <CKEditor

View File

@ -20,7 +20,6 @@ import { Profile } from "@pages/Profile/Profile";
import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker"; import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker";
import { Stack } from "@pages/Stack/Stack"; import { Stack } from "@pages/Stack/Stack";
import Statistics from "@pages/Statistics/Statistics"; import Statistics from "@pages/Statistics/Statistics";
import { Summary } from "@pages/Summary/Summary";
import { Tracker } from "@pages/Tracker/Tracker"; import { Tracker } from "@pages/Tracker/Tracker";
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro"; import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro";
import { ViewReport } from "@pages/ViewReport/ViewReport"; import { ViewReport } from "@pages/ViewReport/ViewReport";
@ -65,7 +64,6 @@ export const PartnerPage = () => {
<Route exact path="requests-edit" element={<PartnerAddRequest />} /> <Route exact path="requests-edit" element={<PartnerAddRequest />} />
<Route exact path="requests-bid" element={<PartnerBid />} /> <Route exact path="requests-bid" element={<PartnerBid />} />
<Route exact path="employees" element={<PartnerCategories />} /> <Route exact path="employees" element={<PartnerCategories />} />
<Route exact path="summary/:id" element={<Summary />} />
<Route <Route
exact exact
path="employees/report/:uuid" path="employees/report/:uuid"