Переписываю спорные решения

Фикс отправки отчета, проверка на массив в map в Description.js
This commit is contained in:
2023-01-20 16:20:06 +03:00
parent 642a8a9641
commit 56f63dbed2
50 changed files with 34327 additions and 9279 deletions

View File

@ -1,11 +1,11 @@
import React, {useState} from 'react'
import React, {useEffect, useState} from 'react'
import {Link, useNavigate} from 'react-router-dom'
import {useDispatch, useSelector} from 'react-redux'
import {withSwalInstance} from 'sweetalert2-react'
import swal from 'sweetalert2'
import {Loader} from '../Loader/Loader'
import ErrorBoundary from "../../hoc/ErrorBoundary";
import ErrorBoundary from "../../HOC/ErrorBoundary";
import {auth, selectAuth, setUserInfo} from '../../redux/outstaffingSlice'
import {loading} from '../../redux/loaderSlice'
@ -13,7 +13,7 @@ import {setRole} from '../../redux/roleSlice'
import {selectIsLoading} from '../../redux/loaderSlice'
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
import ellipse from '../../images/ellipse.png'
@ -30,7 +30,6 @@ export const AuthBox = ({title, altTitle, roleChangeLink}) => {
const isAuth = useSelector(selectAuth);
const isLoading = useSelector(selectIsLoading);
const {apiRequest} = useRequest();
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
@ -40,6 +39,12 @@ export const AuthBox = ({title, altTitle, roleChangeLink}) => {
navigate('/')
}
useEffect(()=> {
if (!localStorage.getItem('auth_token')) {
dispatch(auth(false))
}
}, []);
const submitHandler = () => {
if (!isLoading) {

View File

@ -8,7 +8,7 @@ import {Footer} from '../Footer/Footer'
import {currentCandidate, selectCurrentCandidate,} from '../../redux/outstaffingSlice'
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
import {createMarkup} from "../../helper";
import arrow from '../../images/right-arrow.png'
@ -33,7 +33,7 @@ const Candidate = () => {
const [activeSnippet, setActiveSnippet] = useState(true);
const {apiRequest} = useRequest();
useEffect(() => {
window.scrollTo(0, 0)

View File

@ -3,11 +3,13 @@ import {useSelector} from 'react-redux'
import {Link} from 'react-router-dom'
import {Loader} from '../Loader/Loader'
import ErrorBoundary from "../../hoc/ErrorBoundary";
import ErrorBoundary from "../../HOC/ErrorBoundary";
import {LEVELS, SKILLS} from '../../constants/constants'
import {selectProfiles, selectFilteredCandidates,} from '../../redux/outstaffingSlice'
import {urlForLocal} from '../../helper'
import male from '../../images/medium_male.png'
import rectangle from '../../images/rectangle_secondPage.png'
@ -20,6 +22,7 @@ const Description = ({onLoadMore, isLoadingMore}) => {
const filteredListArr = useSelector(selectFilteredCandidates);
if (!filteredListArr) {
return (
<section className='description'>
@ -30,7 +33,7 @@ const Description = ({onLoadMore, isLoadingMore}) => {
candidatesListArr.map((el) => (
<div className='row' key={el.id}>
<div className='col-2 col-xs-12'>
<img className='description__img' src={el.photo} alt=''/>
<img className='description__img' src={urlForLocal(el.photo)} alt=''/>
</div>
<div className='col-12 col-xl-6'>
<h3 className='description__title'>
@ -114,7 +117,7 @@ const Description = ({onLoadMore, isLoadingMore}) => {
? filteredListArr.map((el) => (
<div className='row' key={el.id}>
<div className='col-2'>
<img className='description__img' src={el.photo} alt=''/>
<img className='description__img' src={()=>urlForLocal(el?.photo)} alt=''/>
</div>
<div className='col-12 col-xl-6'>
<h3 className='description__title'>

View File

@ -7,7 +7,7 @@ import './form.scss'
import { withSwalInstance } from 'sweetalert2-react'
import swal from 'sweetalert2'
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
const SweetAlert = withSwalInstance(swal);
@ -25,7 +25,6 @@ const Form = () => {
});
const [isFetching, setIsFetching] = useState(false);
const {apiRequest} = useRequest();
const handleChange = (e) => {
const { id, value } = e.target;

View File

@ -7,7 +7,7 @@ import {
filteredCandidates,
} from '../../redux/outstaffingSlice'
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
import './outstaffingBlock.scss'
@ -57,7 +57,6 @@ const OutstaffingBlock = (
const itemsArr = useSelector(selectItems);
const {apiRequest} = useRequest();
const handleBlockClick = (item, id) => {
if (!itemsArr.find((el) => item === el.value)) {

View File

@ -9,12 +9,15 @@ import {ProfileCalendarComponent} from "./ProfileCalendarComponent";
import { Footer } from '../Footer/Footer'
import {ProfileHeader} from "../ProfileHeader/ProfileHeader";
import {useRequest} from "../../hooks/useRequest";
import {urlForLocal} from "../../helper";
import {apiRequest} from "../../api/request";
import { getProfileInfo } from '../../redux/outstaffingSlice'
import {setReportDate} from "../../redux/reportSlice";
import './profileCalendar.scss'
export const ProfileCalendar = () => {
const dispatch = useDispatch();
const profileInfo = useSelector(getProfileInfo);
@ -23,13 +26,12 @@ export const ProfileCalendar = () => {
const [totalHours, setTotalHours] = useState(0);
const [requestDates, setRequestDates] = useState('');
const {apiRequest} = useRequest();
useEffect(() => {
setRequestDates(getReports(moment()))
});
},[]);
useEffect(async () => {
useEffect( () => {
if (!requestDates) {
return
}
@ -57,7 +59,7 @@ export const ProfileCalendar = () => {
<h2 className='summary__title'>Ваши отчеты</h2>
<div className='summary__info'>
<div className='summary__person'>
<img src={profileInfo.photo} className='summary__avatar' alt='avatar'/>
<img src={urlForLocal(profileInfo.photo)} className='summary__avatar' alt='avatar'/>
<p className='summary__name'>{profileInfo.fio} {profileInfo.specification}</p>
</div>
<Link to='/report'>

View File

@ -3,21 +3,21 @@ import {useNavigate, NavLink} from "react-router-dom";
import {useDispatch, useSelector} from "react-redux";
import {Loader} from '../Loader/Loader'
import {apiRequest} from "../../api/request";
import {auth, getProfileInfo, setProfileInfo} from "../../redux/outstaffingSlice";
import {getRole} from "../../redux/roleSlice";
import {urlForLocal} from "../../helper";
import './profileHeader.scss'
import {useRequest} from "../../hooks/useRequest";
export const ProfileHeader = () => {
const navigate = useNavigate();
const dispatch = useDispatch();
const {apiRequest} = useRequest();
const userRole = useSelector(getRole);
const profileInfo = useSelector(getProfileInfo);
@ -61,8 +61,8 @@ export const ProfileHeader = () => {
</nav>
<div className='profileHeader__personalInfo'>
<h3 className='profileHeader__personalInfoName'>{profileInfo.fio}</h3>
<img src={profileInfo.photo} className='profileHeader__personalInfoAvatar' alt='avatar'/>
<h3 className='profileHeader__personalInfoName'>{profileInfo?.fio}</h3>
<img src={profileInfo.photo ? urlForLocal(profileInfo.photo) : ""} className='profileHeader__personalInfoAvatar' alt='avatar'/>
</div>
</div>
</div>

View File

@ -7,7 +7,7 @@ import {currentMonthAndDay} from '../Calendar/calendarHelper'
import {Footer} from "../Footer/Footer";
import {ProfileHeader} from "../ProfileHeader/ProfileHeader";
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
import {getReportDate} from '../../redux/reportSlice'
@ -35,7 +35,6 @@ const getCreatedDate = (day) => {
const ReportForm = () => {
const reportDate = useSelector(getReportDate);
const {apiRequest} = useRequest();
const [isFetching, setIsFetching] = useState(false);
const [reportSuccess, setReportSuccess] = useState(false);

View File

@ -2,7 +2,7 @@ import React, {useState} from 'react'
import {useSelector, useDispatch} from 'react-redux'
import Select from 'react-select'
import {Loader} from '../Loader/Loader'
import {useRequest} from "../../hooks/useRequest";
import {apiRequest} from "../../api/request";
import {
selectedItems,
selectItems,
@ -19,7 +19,6 @@ const TagSelect = () => {
const [searchLoading, setSearchLoading] = useState(false);
const dispatch = useDispatch();
const {apiRequest} = useRequest();
const itemsArr = useSelector(selectItems);
const tagsArr = useSelector(selectTags);

View File

@ -6,9 +6,9 @@ import {BookkeepingFormField} from "../BookkeepingFormField/BookkeepingFormField
import {BookkepingSelect} from '../BookkepingSelect/BookkepingSelect';
import {BookkepingInput} from '../BookkepingInput/BookkepingInput';
import {useRequest} from "../../../../hooks/useRequest";
import "./actContent.css"
import {apiRequest} from "../../../../api/request";
export const ActContent = () => {
@ -16,7 +16,6 @@ export const ActContent = () => {
const [selectedTemplate, setSelectedTemplate] = useState();
const [templatedFields, setTemplatedFields] = useState([]);
const {apiRequest} = useRequest();
useEffect(() => {
apiRequest('/template/get-template-list')

View File

@ -5,7 +5,6 @@ import {BookkeepingFormField} from "../BookkeepingFormField/BookkeepingFormField
import {BookkepingSelect} from '../BookkepingSelect/BookkepingSelect';
import {BookkepingInput} from '../BookkepingInput/BookkepingInput';
import {Link} from "react-router-dom"
import {useRequest} from "../../../../hooks/useRequest";
export const ContractContent = () => {
@ -13,7 +12,6 @@ export const ContractContent = () => {
const [selectedTemplate, setSelectedTemplate] = useState();
const [templatedFields, setTemplatedFields] = useState([]);
const {apiRequest} = useRequest();
useEffect(() => {
apiRequest(`/document/get-document-list`)

View File

@ -1,8 +1,8 @@
import React, {useEffect} from 'react'
import {useDispatch, useSelector} from 'react-redux'
import {selectUserInfo, setQuestionnairesList, setUserInfo} from "../../../redux/quizSlice";
import {useRequest} from "../../../hooks/useRequest";
import './quiz.scss'
import {apiRequest} from "../../../api/request";
export const HeaderQuiz = ({header}) => {
@ -10,7 +10,6 @@ export const HeaderQuiz = ({header}) => {
const userId = localStorage.getItem('id');
const userInfo = useSelector(selectUserInfo);
const {apiRequest} = useRequest();
useEffect(() => {
dispatch(setUserInfo(userId))

View File

@ -5,14 +5,14 @@ import {useEffect, useState} from "react";
import {useSelector} from "react-redux";
import {selectedTest} from "../../../redux/quizSlice";
import {useRequest} from "../../../hooks/useRequest";
import {useRequest} from "../../../HOOks/useRequest";
import {apiRequest} from "../../../api/request";
export const Instruction = () => {
const [countQuestions, setCountQuestions] = useState(null);
const test = useSelector(selectedTest);
const {apiRequest} = useRequest();
useEffect( () => {

View File

@ -1,7 +1,8 @@
import React, {useEffect, useState} from 'react';
import {useDispatch, useSelector} from "react-redux";
import {fetchResultTest, selectedTest, selectResult} from "../../../redux/quizSlice";
import {useRequest} from "../../../hooks/useRequest";
import {useRequest} from "../../../HOOks/useRequest";
import {apiRequest} from "../../../api/request";
export const Results = () => {
@ -9,7 +10,6 @@ export const Results = () => {
const test = useSelector(selectedTest);
const [maxScore, setMaxScore] = useState('');
const dispatch = useDispatch();
const {apiRequest} = useRequest();
useEffect(() => {
dispatch(fetchResultTest(test.uuid));

View File

@ -2,7 +2,7 @@ import React, {useEffect, useState} from 'react'
import {useNavigate} from "react-router-dom"
import {useSelector, useDispatch} from 'react-redux'
import {useRequest} from "../../../hooks/useRequest";
import {useRequest} from "../../../HOOks/useRequest";
import {Progressbar} from './ProgressbarQuiz'
import {GetOptionTask} from './GetOptionTask'
@ -11,6 +11,7 @@ import {
} from './../../../redux/quizSlice'
import './quiz.scss'
import {apiRequest} from "../../../api/request";
export const TaskQuiz = () => {
@ -26,7 +27,6 @@ export const TaskQuiz = () => {
const [inputValue, setInputValue] = useState('');
const [questions, setQuestions] = useState([]);
const {apiRequest} = useRequest();
const id = localStorage.getItem('id');