Дипломная работа: Автоматизация учета рабочего времени сотрудников компании ООО "ВЕЛЕС"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
99
/>
</ExpandingPanel>
andingPanel
collapsed
className="col-xs-12 question"
headerClassName="pb-0"
collapsedIconClassName="fa-plus"
expandedIconClassName="fa-minus"
panelType={EExpandingPanelType.EXPANDING_BLOCK}
header="Статистика пользователей"
>
{map(users, (user: IUser) => {
if (user.role === ERole.USER) {
return (
eact.Fragment>
<div>{user.name}</div>
data={this.getProductivityUser(user)}
/>
</React.Fragment>
)
} else {
return eact.Fragment></React.Fragment>
}
})}
</ExpandingPanel>
)
}
100
}
Задачи
import * as React from 'react';
import {find, capitalize, filter} from 'lodash';
import {LayoutHeader} from '../Header/LayoutHeader';
import {ITask, IUser, ETaskType, DATE_FORMAT, ERole} from
'../../../models/Common';
import moment = require('moment');
import { updateTask, addClient } from '../../../services/services';
import Table from '../../Core/Table/Table';
import {ITableColumns} from '../../Core/Models';
import {SimpleButton} from '../../Core/SimpleButton';
import {EButtonStyle} from '../../Core/Enums';
import {FormGroup} from '../../Core/FormGroup';
/**
* Параметры компонента.
*/
interface IProps {
tasks: ITask[];
users: IUser[];
user: IUser;
isExpert: boolean;
onReloadTasks: () => void;
onDeleteTask: (id: string) => void;
}
/**
* Отображает вопросы по выбранному типу.
*/
export class Tasks extends React.PureComponent<IProps> {
101
getHeader = (task: ITask) => {
const {isExpert, users} = this.props;
let userName = 'Вы';
let taskName = 'Отсутствовал';
switch (task.type) {
case ETaskType.CALL:
taskName = 'Звонок клиенту'
break;
case ETaskType.DOC:
taskName = 'Сделка'
break;
}
if (isExpert) {
const user: IUser = find(users, (userEntity: IUser) => {return
userEntity._id === task.userId});
if (!!user) {
userName = user.name;
} else {
userName = 'Неизвестно';
}
}
return '${capitalize(userName)}: ${taskName}';
}
/**
* Флажок завершить задачу.
*/
handleCheck = (task: ITask) => () => {
updateTask({...task, checked: true}).then(() => {
102
if (task.type === ETaskType.CALL) {
addClient(this.props.user).then(this.props.onReloadTasks);
} else {
this.props.onReloadTasks();
}
});
}
/**
* Конфигурация столбцов таблицы с версиями типологизатора.
*/
static TypologyVersionListTableConfig: ITableColumns = {
version: {
label: 'Статус'
},
status: {
label: 'Заголовок'
},
time: {
label: 'Время'
},
actualizeDate: {
label: 'Описание'
}
}
handleDeleteTask = (id: string) => () => {
this.props.onDeleteTask(id);
}
/**
* Обработчик отображения компонента списка задач.
103
*/
getTasksListComponent = (isToday: boolean = true) => {
const {user} = this.props;
const tasks: ITask[] = this.getTasks(isToday);
const customRowsRender = (data: ITask[]): JSX.Element[] => {
const rows: JSX.Element[] = [];
data.forEach((task: ITask) => {
rows.push(
key={task._id}
>
'red'}'}>
<td className={'${task.checked ? 'green' : isToday ? 'yellow' :
{
task.checked ?
<div><i className="fa fa-check" /> Завершён</div> :
impleButton onClick={this.handleCheck(task)}
label-'Завершить" iconClass="fa-plus" btnStyle={EButtonStyle.QUESTION}/>
}
<td>{thi s.getHeader(task)}</td>
<td>{task.time}</td>
<td>{task.label}</td>
{user.role === ERole.MANAGER &&
<td><SimpleButton
onClick={this.handleDeleteTask(task._id)} label-'Удалить" iconClass="fa-ban"
btnStyle={EButtonStyle.DANGER}/></td>
}
Источник: https://baza.diplomsite.ru/previewfile/2431