Compare commits
2 Commits
9fd94e0adf
...
efa3fdf65e
| Author | SHA1 | Date | |
|---|---|---|---|
| efa3fdf65e | |||
| 16699ef2e2 |
@@ -10,7 +10,8 @@ import {
|
|||||||
RequestNumber,
|
RequestNumber,
|
||||||
SubmitActions,
|
SubmitActions,
|
||||||
getDraftDeleteHandler,
|
getDraftDeleteHandler,
|
||||||
useRequestSubmit
|
useRequestSubmit,
|
||||||
|
FormNotice
|
||||||
} from '../../shared/ui';
|
} from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
composeRemoveRowRule,
|
composeRemoveRowRule,
|
||||||
@@ -44,7 +45,16 @@ import {
|
|||||||
dataListTitle,
|
dataListTitle,
|
||||||
dataListTitleForListId
|
dataListTitleForListId
|
||||||
} from '../../shared/listTitles';
|
} from '../../shared/listTitles';
|
||||||
import { FORM_ID, IFormData, EMPTY_DATA, SetField, IOrganizationRecord, primaryPosition } from './model';
|
import {
|
||||||
|
FORM_ID,
|
||||||
|
IFormData,
|
||||||
|
EMPTY_DATA,
|
||||||
|
SetField,
|
||||||
|
IOrganizationRecord,
|
||||||
|
primaryPosition,
|
||||||
|
NOTICE_TITLE,
|
||||||
|
NOTICE_ITEMS
|
||||||
|
} from './model';
|
||||||
import { saveDismissalRequest, dismissalApprovalService } from './submit';
|
import { saveDismissalRequest, dismissalApprovalService } from './submit';
|
||||||
import { loadDismissalRequest } from './load';
|
import { loadDismissalRequest } from './load';
|
||||||
import { RequestSection } from './sections/RequestSection';
|
import { RequestSection } from './sections/RequestSection';
|
||||||
@@ -374,6 +384,8 @@ const DismissalForm: React.FC<IRequestFormProps> = ({
|
|||||||
)}
|
)}
|
||||||
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
||||||
|
|
||||||
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
|
|
||||||
<FormModeProvider readOnly={readOnly}>
|
<FormModeProvider readOnly={readOnly}>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
</FormModeProvider>
|
</FormModeProvider>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|||||||
import { useState, useEffect, useMemo, useCallback } from 'react';
|
import { useState, useEffect, useMemo, useCallback } from 'react';
|
||||||
import type { WebPartContext } from '@microsoft/sp-webpart-base';
|
import type { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||||
import styles from './DismissalView.module.scss';
|
import styles from './DismissalView.module.scss';
|
||||||
import { Alert, FormCard, InitiatorLine, FormModeProvider, PrintButton } from '../../shared/ui';
|
import { Alert, FormCard, InitiatorLine, FormModeProvider, PrintButton, FormNotice } from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
ApproverService,
|
ApproverService,
|
||||||
DecisionPanel,
|
DecisionPanel,
|
||||||
@@ -28,7 +28,7 @@ import {
|
|||||||
dataListTitleForListId
|
dataListTitleForListId
|
||||||
} from '../../shared/listTitles';
|
} from '../../shared/listTitles';
|
||||||
import { parseRoute } from '../../shared/routing';
|
import { parseRoute } from '../../shared/routing';
|
||||||
import { FORM_ID, IFormData, EMPTY_DATA, SetField } from './model';
|
import { FORM_ID, IFormData, EMPTY_DATA, SetField, NOTICE_TITLE, NOTICE_ITEMS } from './model';
|
||||||
import { loadDismissalRequest } from './load';
|
import { loadDismissalRequest } from './load';
|
||||||
import { dismissalApprovalService, updateAssetsAcceptor } from './submit';
|
import { dismissalApprovalService, updateAssetsAcceptor } from './submit';
|
||||||
import { loadClearanceRequest } from '../Clearance/load';
|
import { loadClearanceRequest } from '../Clearance/load';
|
||||||
@@ -285,6 +285,7 @@ const DismissalView: React.FC<IDismissalViewProps> = ({ context, itemId, formKey
|
|||||||
}
|
}
|
||||||
headerRight={status ? <StatusBadge status={status} /> : undefined}
|
headerRight={status ? <StatusBadge status={status} /> : undefined}
|
||||||
>
|
>
|
||||||
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
<FormModeProvider readOnly>
|
<FormModeProvider readOnly>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
</FormModeProvider>
|
</FormModeProvider>
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ RequestTypeId» в `docs/forms.md`). Тип заведён в админке app
|
|||||||
- **Комментарий** (`Comment`) — необязательный свободный текст. Причины увольнения
|
- **Комментарий** (`Comment`) — необязательный свободный текст. Причины увольнения
|
||||||
отдельного поля нет: в шаблоне формулировка фиксированная («по собственному желанию»).
|
отдельного поля нет: в шаблоне формулировка фиксированная («по собственному желанию»).
|
||||||
- **Заголовок элемента** (`Title`): `Заявление на увольнение — {ФИО} — дд.мм.гггг`.
|
- **Заголовок элемента** (`Title`): `Заявление на увольнение — {ФИО} — дд.мм.гггг`.
|
||||||
|
- **Примечание** (с 10-29, `FormNotice`, тексты `NOTICE_TITLE`/`NOTICE_ITEMS` в `model.ts`) — плашка
|
||||||
|
вверху формы и просмотра про срок уведомления по ст. 56 ТК РК. Текст от HR, дословно; на печать не идёт.
|
||||||
|
|
||||||
## Совместители: организации таблицей, удаление синхронизировано с маршрутом
|
## Совместители: организации таблицей, удаление синхронизировано с маршрутом
|
||||||
Сотрудник может числиться сразу в НЕСКОЛЬКИХ компаниях (совместительство).
|
Сотрудник может числиться сразу в НЕСКОЛЬКИХ компаниях (совместительство).
|
||||||
|
|||||||
@@ -149,3 +149,18 @@ export const EMPTY_DATA: IFormData = {
|
|||||||
export const EMPLOYEE_PLACEHOLDER = 'Начните вводить Ф.И.О. сотрудника…';
|
export const EMPLOYEE_PLACEHOLDER = 'Начните вводить Ф.И.О. сотрудника…';
|
||||||
/** Заявление нужно подавать не позднее чем за столько месяцев до последнего рабочего дня. */
|
/** Заявление нужно подавать не позднее чем за столько месяцев до последнего рабочего дня. */
|
||||||
export const MIN_NOTICE_MONTHS = 1;
|
export const MIN_NOTICE_MONTHS = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Примечание вверху формы и просмотра (см. shared/ui/FormNotice). Текст — от HR,
|
||||||
|
* дословно. «Не менее чем за один месяц» — это MIN_NOTICE_MONTHS: поменяли срок —
|
||||||
|
* поправьте и текст.
|
||||||
|
*/
|
||||||
|
export const NOTICE_TITLE = 'Примечание';
|
||||||
|
export const NOTICE_ITEMS: string[] = [
|
||||||
|
'Срок уведомления. Согласно п. 1 ст. 56 Трудового кодекса РК, работник вправе по своей инициативе ' +
|
||||||
|
'расторгнуть трудовой договор, уведомив работодателя письменно не менее чем за один месяц, за исключением ' +
|
||||||
|
'случаев, предусмотренных п. 3 этой статьи. Если трудовым договором установлен более длительный срок ' +
|
||||||
|
'уведомления, применяется срок из трудового договора.',
|
||||||
|
'Увольнение до истечения срока уведомления. Дата увольнения раньше чем через месяц с даты подачи заявления ' +
|
||||||
|
'возможна только по согласованию с работодателем, либо в случаях, предусмотренных п. 3 ст. 56 ТК РК.'
|
||||||
|
];
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import {
|
|||||||
SubmitActions,
|
SubmitActions,
|
||||||
getDraftDeleteHandler,
|
getDraftDeleteHandler,
|
||||||
useRequestSubmit,
|
useRequestSubmit,
|
||||||
LeaveNotice
|
FormNotice
|
||||||
} from '../../shared/ui';
|
} from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
composeRemoveRowRule,
|
composeRemoveRowRule,
|
||||||
@@ -335,7 +335,7 @@ const UnpaidLeaveForm: React.FC<IRequestFormProps> = ({
|
|||||||
)}
|
)}
|
||||||
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
||||||
|
|
||||||
<LeaveNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
|
|
||||||
<FormModeProvider readOnly={readOnly}>
|
<FormModeProvider readOnly={readOnly}>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
FormModeProvider,
|
FormModeProvider,
|
||||||
PrintSplitButton,
|
PrintSplitButton,
|
||||||
OrgLetterhead,
|
OrgLetterhead,
|
||||||
LeaveNotice,
|
FormNotice,
|
||||||
PrintSignature
|
PrintSignature
|
||||||
} from '../../shared/ui';
|
} from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
@@ -170,7 +170,7 @@ const UnpaidLeaveView: React.FC<IUnpaidLeaveViewProps> = ({ context, itemId, for
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<LeaveNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
<FormModeProvider readOnly>
|
<FormModeProvider readOnly>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
</FormModeProvider>
|
</FormModeProvider>
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ export const SUBSTITUTE_PLACEHOLDER = 'Начните вводить Ф.И.О.
|
|||||||
*/
|
*/
|
||||||
export const MIN_NOTICE_DAYS = 14;
|
export const MIN_NOTICE_DAYS = 14;
|
||||||
|
|
||||||
/** Памятка вверху формы и просмотра (см. shared/ui/LeaveNotice). Текст — по просьбе HR. */
|
/** Памятка вверху формы и просмотра (см. shared/ui/FormNotice). Текст — по просьбе HR. */
|
||||||
export const NOTICE_TITLE = 'Памятка';
|
export const NOTICE_TITLE = 'Памятка';
|
||||||
export const NOTICE_ITEMS: string[] = [
|
export const NOTICE_ITEMS: string[] = [
|
||||||
'После согласования заявления его необходимо распечатать с портала (кнопка «Печать» на странице заявки), ' +
|
'После согласования заявления его необходимо распечатать с портала (кнопка «Печать» на странице заявки), ' +
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import {
|
|||||||
SubmitActions,
|
SubmitActions,
|
||||||
getDraftDeleteHandler,
|
getDraftDeleteHandler,
|
||||||
useRequestSubmit,
|
useRequestSubmit,
|
||||||
LeaveNotice
|
FormNotice
|
||||||
} from '../../shared/ui';
|
} from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
composeRemoveRowRule,
|
composeRemoveRowRule,
|
||||||
@@ -354,7 +354,7 @@ const VacationForm: React.FC<IRequestFormProps> = ({
|
|||||||
)}
|
)}
|
||||||
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
{submit.error && <Alert variant="err">{submit.error}</Alert>}
|
||||||
|
|
||||||
<LeaveNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
|
|
||||||
<FormModeProvider readOnly={readOnly}>
|
<FormModeProvider readOnly={readOnly}>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
FormModeProvider,
|
FormModeProvider,
|
||||||
PrintSplitButton,
|
PrintSplitButton,
|
||||||
OrgLetterhead,
|
OrgLetterhead,
|
||||||
LeaveNotice,
|
FormNotice,
|
||||||
PrintSignature
|
PrintSignature
|
||||||
} from '../../shared/ui';
|
} from '../../shared/ui';
|
||||||
import {
|
import {
|
||||||
@@ -229,7 +229,7 @@ const VacationView: React.FC<IVacationViewProps> = ({ context, itemId, formKey,
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<LeaveNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
<FormNotice title={NOTICE_TITLE} items={NOTICE_ITEMS} />
|
||||||
<FormModeProvider readOnly>
|
<FormModeProvider readOnly>
|
||||||
<RequestSection {...sectionProps} />
|
<RequestSection {...sectionProps} />
|
||||||
</FormModeProvider>
|
</FormModeProvider>
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ export const MIN_NOTICE_DAYS = 7;
|
|||||||
export const MAX_DAYS = 24;
|
export const MAX_DAYS = 24;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Примечание вверху формы и просмотра (см. shared/ui/LeaveNotice). Текст — от HR,
|
* Примечание вверху формы и просмотра (см. shared/ui/FormNotice). Текст — от HR,
|
||||||
* дословно. «Одну календарную неделю» — это MIN_NOTICE_DAYS: поменяли срок — поправьте и текст.
|
* дословно. «Одну календарную неделю» — это MIN_NOTICE_DAYS: поменяли срок — поправьте и текст.
|
||||||
* Правило про часть не менее 14 дней только показываем, а не проверяем: форма не знает,
|
* Правило про часть не менее 14 дней только показываем, а не проверяем: форма не знает,
|
||||||
* брал ли сотрудник уже часть отпуска.
|
* брал ли сотрудник уже часть отпуска.
|
||||||
|
|||||||
+5
-4
@@ -1,6 +1,6 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Alert } from '@tnsu/ui-kit';
|
import { Alert } from '@tnsu/ui-kit';
|
||||||
import styles from './LeaveNotice.module.scss';
|
import styles from './FormNotice.module.scss';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
/** Заголовок плашки, например «Примечание» или «Памятка». */
|
/** Заголовок плашки, например «Примечание» или «Памятка». */
|
||||||
@@ -10,12 +10,13 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Плашка с правилами для заявлений на отпуск (трудовой и без содержания).
|
* Плашка с правилами вверху формы и её просмотра — «Примечание», «Памятка»
|
||||||
* Тексты у форм разные, поэтому приходят из model.ts каждой формы.
|
* (отпуск, отпуск без содержания, увольнение). Тексты у форм разные — от
|
||||||
|
* кадров, дословно, — поэтому приходят из model.ts каждой формы.
|
||||||
* Вариант warn, а не info: нейтральная плашка терялась на фоне формы.
|
* Вариант warn, а не info: нейтральная плашка терялась на фоне формы.
|
||||||
* На печать не выводится — это подсказка для сотрудника, а не часть заявления.
|
* На печать не выводится — это подсказка для сотрудника, а не часть заявления.
|
||||||
*/
|
*/
|
||||||
export const LeaveNotice: React.FC<Props> = ({ title, items }) => {
|
export const FormNotice: React.FC<Props> = ({ title, items }) => {
|
||||||
if (items.length === 0) return null;
|
if (items.length === 0) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -60,6 +60,6 @@ export { issueLabels } from './FieldIssues/fieldIssues';
|
|||||||
export { getDraftDeleteHandler } from './SubmitActions/getDraftDeleteHandler';
|
export { getDraftDeleteHandler } from './SubmitActions/getDraftDeleteHandler';
|
||||||
export { InitiatorLine } from './InitiatorLine/InitiatorLine';
|
export { InitiatorLine } from './InitiatorLine/InitiatorLine';
|
||||||
export type { IInitiatorLineProps } from './InitiatorLine/InitiatorLine';
|
export type { IInitiatorLineProps } from './InitiatorLine/InitiatorLine';
|
||||||
export { LeaveNotice } from './LeaveNotice/LeaveNotice';
|
export { FormNotice } from './FormNotice/FormNotice';
|
||||||
export { useRequestSubmit } from './useRequestSubmit';
|
export { useRequestSubmit } from './useRequestSubmit';
|
||||||
export type { IRequestSubmit, SubmitKind } from './useRequestSubmit';
|
export type { IRequestSubmit, SubmitKind } from './useRequestSubmit';
|
||||||
|
|||||||
Reference in New Issue
Block a user