fix: убрать заголовок «Заявка», вернуть стиль секции для сумм списания
Tests / frontend-test (pull_request) Successful in 1m10s
Tests / frontend-test (pull_request) Successful in 1m10s
Заменил CollapseSection на FormGrid (без заголовка/иконки) в Clearance, Dismissal, Vacation и UnpaidLeave — заголовок «Заявка» не нёс смысла и полностью убран, а не переименован. В Clearance «Суммы к списанию» вынесены в отдельную CollapseSection — тот же визуальный стиль заголовка, что раньше был у общей «Заявка», вместо самодельной подписи через RequestSection.module.scss (файл удалён как более не нужный).
This commit is contained in:
@@ -55,9 +55,9 @@ RequestTypeId» в `docs/forms.md`). Тип уже зарегистрирова
|
|||||||
заведённых руками, ссылки нет и поле не рендерится.
|
заведённых руками, ссылки нет и поле не рендерится.
|
||||||
|
|
||||||
## Суммы к списанию (согласование)
|
## Суммы к списанию (согласование)
|
||||||
Общий заголовок-подпись «СУММЫ К СПИСАНИЮ» (`RequestSection.module.scss`,
|
Отдельная `CollapseSection title="Суммы к списанию"` (в стиле бывшего общего
|
||||||
`.writeOffLabel`) объединяет визуально ДВЕ РАЗНЫЕ по правам вещи, идущие сразу
|
заголовка формы «Заявка», удалённого — см. `docs/forms.md`) объединяет
|
||||||
за подписью:
|
визуально ДВЕ РАЗНЫЕ по правам вещи:
|
||||||
|
|
||||||
1. **`TrainingAmount`** («Обучение») — доступность КАК И РАНЬШЕ: правит
|
1. **`TrainingAmount`** («Обучение») — доступность КАК И РАНЬШЕ: правит
|
||||||
только КДП (`hrRecordsEditable`, `approverRights.ts`), сумма НЕ блокируется
|
только КДП (`hrRecordsEditable`, `approverRights.ts`), сумма НЕ блокируется
|
||||||
@@ -65,10 +65,10 @@ RequestTypeId» в `docs/forms.md`). Тип уже зарегистрирова
|
|||||||
(не требует комментария решения). Изменилась ТОЛЬКО колонка хранения — пишется
|
(не требует комментария решения). Изменилась ТОЛЬКО колонка хранения — пишется
|
||||||
и читается через `WriteOffTrainingAmount` (`ClearanceView.saveApproverFields`,
|
и читается через `WriteOffTrainingAmount` (`ClearanceView.saveApproverFields`,
|
||||||
`submit.ts.buildItem`, `load.ts`), а не через одноимённую `TrainingAmount` —
|
`submit.ts.buildItem`, `load.ts`), а не через одноимённую `TrainingAmount` —
|
||||||
та осталась в схеме списка неиспользуемой. Заголовок рисуется независимо от
|
та осталась в схеме списка неиспользуемой. Секция видна независимо от
|
||||||
поля (`writeOffEditableKeys && <div>…</div>`, а само поле — БЕЗ этого условия),
|
`writeOffEditableKeys` (само поле — без этого условия), поэтому на форме
|
||||||
поэтому на форме подачи (`ClearanceForm`, `writeOffEditableKeys` не передан)
|
подачи (`ClearanceForm`, `writeOffEditableKeys` не передан) поле видно и без
|
||||||
поле видно и без заголовка.
|
пяти сумм ниже.
|
||||||
2. **5 НЕЗАВИСИМЫХ сумм**, компактной сеткой (короткие подписи, обычная
|
2. **5 НЕЗАВИСИМЫХ сумм**, компактной сеткой (короткие подписи, обычная
|
||||||
2-колоночная сетка секции), колонки `WriteOff{Assets,Ppe,Accountable,Nma,
|
2-колоночная сетка секции), колонки `WriteOff{Assets,Ppe,Accountable,Nma,
|
||||||
Tmc}Amount` (см. `model.ts WRITE_OFF_CATEGORIES`): «ОС», «СИЗ», «Подотчётная
|
Tmc}Amount` (см. `model.ts WRITE_OFF_CATEGORIES`): «ОС», «СИЗ», «Подотчётная
|
||||||
@@ -103,8 +103,9 @@ RequestTypeId» в `docs/forms.md`). Тип уже зарегистрирова
|
|||||||
|
|
||||||
## Секции формы
|
## Секции формы
|
||||||
RequestSection (сотрудник · должность · подразделение · дата расторжения ·
|
RequestSection (сотрудник · должность · подразделение · дата расторжения ·
|
||||||
парковочная карта · карта СКУД · «Суммы к списанию»: обучение + 5 сумм списания
|
парковочная карта · карта СКУД — без заголовка, `FormGrid`) + отдельная
|
||||||
компактно под общим заголовком · ссылка на заявление)
|
CollapseSection «Суммы к списанию» (обучение + 5 сумм списания) + ссылка на
|
||||||
|
заявление
|
||||||
|
|
||||||
## Точки входа
|
## Точки входа
|
||||||
- rptype: `clearance-form`
|
- rptype: `clearance-form`
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
@import '../../../../../styles/design-tokens';
|
|
||||||
|
|
||||||
// Заголовок группы полей ВНУТРИ секции (не отдельная CollapseSection) — нужен
|
|
||||||
// только затем, чтобы 6 сумм к списанию не читались продолжением полей выше
|
|
||||||
// (в частности — не путались с «Обучение: сумма», отдельным полем КДП чуть
|
|
||||||
// выше по форме: без подписи оба «Обучение» рядом выглядели одним и тем же).
|
|
||||||
.writeOffLabel {
|
|
||||||
grid-column: 1 / -1;
|
|
||||||
margin-top: $sp-2;
|
|
||||||
color: $gray-500;
|
|
||||||
font-family: $font-sans;
|
|
||||||
font-size: $fs-overline;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 1.4px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { CollapseSection, FormField, TextInput, MoneyInput, Toggle, PeopleField, OrganizationField, LinkField } from '../../../shared/ui';
|
import { FormGrid, CollapseSection, FormField, TextInput, MoneyInput, Toggle, PeopleField, OrganizationField, LinkField } from '../../../shared/ui';
|
||||||
import { ISectionProps, EMPLOYEE_PLACEHOLDER, WRITE_OFF_CATEGORIES } from '../model';
|
import { ISectionProps, EMPLOYEE_PLACEHOLDER, WRITE_OFF_CATEGORIES } from '../model';
|
||||||
import styles from './RequestSection.module.scss';
|
|
||||||
|
|
||||||
// Подразделение подтягивается автоматически при выборе сотрудника (см.
|
// Подразделение подтягивается автоматически при выборе сотрудника (см.
|
||||||
// ClearanceForm.handleEmployeeChange — SharePoint User Profile) — свободный
|
// ClearanceForm.handleEmployeeChange — SharePoint User Profile) — свободный
|
||||||
@@ -34,7 +33,8 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
writeOffEditableKeys
|
writeOffEditableKeys
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<CollapseSection title="Заявка" icon="people">
|
<>
|
||||||
|
<FormGrid>
|
||||||
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
||||||
<PeopleField
|
<PeopleField
|
||||||
context={context}
|
context={context}
|
||||||
@@ -90,13 +90,16 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
readOnly={hrRecordsEditable ? false : undefined}
|
readOnly={hrRecordsEditable ? false : undefined}
|
||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
{/* Суммы к списанию — TrainingAmount («Обучение: сумма») ПОДВЕДЕНА под
|
</FormGrid>
|
||||||
тот же заголовок, что и 5 сумм ниже, — визуально одна группа «Суммы к
|
{/* Суммы к списанию — своя CollapseSection (тот же стиль заголовка, что
|
||||||
списанию», хотя ДОСТУПНОСТЬ у них РАЗНАЯ:
|
раньше был у общего «Заявка»), объединяет визуально ДВЕ РАЗНЫЕ по
|
||||||
- TrainingAmount — как раньше: правит только КДП (hrRecordsEditable),
|
правам вещи:
|
||||||
без блокировки после ввода; хранится в WriteOffTrainingAmount (не
|
- TrainingAmount («Обучение») — как раньше: правит только КДП
|
||||||
одноимённой колонке, см. IFormData.TrainingAmount), но это деталь
|
(hrRecordsEditable), без блокировки после ввода; хранится в
|
||||||
хранения, на форму не влияет;
|
WriteOffTrainingAmount (не одноимённой колонке, см.
|
||||||
|
IFormData.TrainingAmount), но это деталь хранения, на форму не
|
||||||
|
влияет. Показывается всегда, даже без writeOffEditableKeys (форма
|
||||||
|
подачи).
|
||||||
- WRITE_OFF_CATEGORIES (5 сумм) — заполнить может ЛЮБОЙ активный
|
- WRITE_OFF_CATEGORIES (5 сумм) — заполнить может ЛЮБОЙ активный
|
||||||
согласующий (не только профильный), но как только сумма указана,
|
согласующий (не только профильный), но как только сумма указана,
|
||||||
блокируется НАВСЕГДА для всех, поэтому у незаблокированных
|
блокируется НАВСЕГДА для всех, поэтому у незаблокированных
|
||||||
@@ -105,8 +108,10 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
поля нет: заполнил хоть одну сумму — обязательным становится
|
поля нет: заполнил хоть одну сумму — обязательным становится
|
||||||
СТАНДАРТНЫЙ комментарий решения в DecisionPanel («Ваше решение»),
|
СТАНДАРТНЫЙ комментарий решения в DecisionPanel («Ваше решение»),
|
||||||
см. ClearanceView (commentRequired/commentPlaceholder). У
|
см. ClearanceView (commentRequired/commentPlaceholder). У
|
||||||
TrainingAmount этого правила нет — комментарий не требует. */}
|
TrainingAmount этого правила нет — комментарий не требует. Сама
|
||||||
{writeOffEditableKeys && <div className={styles.writeOffLabel}>Суммы к списанию</div>}
|
секция видна всегда (Обучение доступно и на форме подачи), а 5
|
||||||
|
категорий — только на согласовании (writeOffEditableKeys задан). */}
|
||||||
|
<CollapseSection title="Суммы к списанию" icon="calculator">
|
||||||
<FormField label="Обучение" htmlFor="TrainingAmount">
|
<FormField label="Обучение" htmlFor="TrainingAmount">
|
||||||
<MoneyInput
|
<MoneyInput
|
||||||
id="TrainingAmount"
|
id="TrainingAmount"
|
||||||
@@ -129,6 +134,7 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
</FormField>
|
</FormField>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
</CollapseSection>
|
||||||
{/* Есть только у листов, созданных автоматически по согласованному заявлению
|
{/* Есть только у листов, созданных автоматически по согласованному заявлению
|
||||||
на увольнение (см. forms/Dismissal/createClearance.ts). */}
|
на увольнение (см. forms/Dismissal/createClearance.ts). */}
|
||||||
<LinkField
|
<LinkField
|
||||||
@@ -136,6 +142,6 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
url={data.DismissalUrl}
|
url={data.DismissalUrl}
|
||||||
text="Открыть заявление, по которому создан этот лист"
|
text="Открыть заявление, по которому создан этот лист"
|
||||||
/>
|
/>
|
||||||
</CollapseSection>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { CollapseSection, FormField, TextInput, TextArea, PhoneInput, PeopleField, LinkField } from '../../../shared/ui';
|
import { FormGrid, FormField, TextInput, TextArea, PhoneInput, PeopleField, LinkField } from '../../../shared/ui';
|
||||||
import { ISectionProps, EMPLOYEE_PLACEHOLDER, MIN_NOTICE_MONTHS } from '../model';
|
import { ISectionProps, EMPLOYEE_PLACEHOLDER, MIN_NOTICE_MONTHS } from '../model';
|
||||||
import { isoDatePlusMonths } from '../../../shared/dateUtils';
|
import { isoDatePlusMonths } from '../../../shared/dateUtils';
|
||||||
import { OrganizationsTable } from './OrganizationsTable';
|
import { OrganizationsTable } from './OrganizationsTable';
|
||||||
@@ -28,7 +28,7 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
onRemoveOrganization,
|
onRemoveOrganization,
|
||||||
assetsAcceptorEditable
|
assetsAcceptorEditable
|
||||||
}) => (
|
}) => (
|
||||||
<CollapseSection title="Заявка" icon="document">
|
<FormGrid>
|
||||||
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
||||||
<PeopleField
|
<PeopleField
|
||||||
context={context}
|
context={context}
|
||||||
@@ -91,5 +91,5 @@ export const RequestSection: React.FC<IRequestSectionProps> = ({
|
|||||||
readOnly={assetsAcceptorEditable ? false : true}
|
readOnly={assetsAcceptorEditable ? false : true}
|
||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
</CollapseSection>
|
</FormGrid>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { CollapseSection, FormField, TextInput, TextArea, PeopleField, OrganizationField } from '../../../shared/ui';
|
import { FormGrid, FormField, TextInput, TextArea, PeopleField, OrganizationField } from '../../../shared/ui';
|
||||||
import { ISectionProps, EMPLOYEE_PLACEHOLDER, SUBSTITUTE_PLACEHOLDER, MIN_NOTICE_DAYS } from '../model';
|
import { ISectionProps, EMPLOYEE_PLACEHOLDER, SUBSTITUTE_PLACEHOLDER, MIN_NOTICE_DAYS } from '../model';
|
||||||
import { isoDatePlusDays } from '../../../shared/dateUtils';
|
import { isoDatePlusDays } from '../../../shared/dateUtils';
|
||||||
|
|
||||||
/** Единственная секция формы «Отпуск без содержания»: сотрудник, должность, период, основание, замещающий. */
|
/** Единственная секция формы «Отпуск без содержания»: сотрудник, должность, период, основание, замещающий. */
|
||||||
export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, onEmployeeChange }) => (
|
export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, onEmployeeChange }) => (
|
||||||
<CollapseSection title="Заявка" icon="people">
|
<FormGrid>
|
||||||
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
||||||
<PeopleField
|
<PeopleField
|
||||||
context={context}
|
context={context}
|
||||||
@@ -41,5 +41,5 @@ export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, on
|
|||||||
placeholder={SUBSTITUTE_PLACEHOLDER}
|
placeholder={SUBSTITUTE_PLACEHOLDER}
|
||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
</CollapseSection>
|
</FormGrid>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { CollapseSection, FormField, TextInput, PeopleField, OrganizationField } from '../../../shared/ui';
|
import { FormGrid, FormField, TextInput, PeopleField, OrganizationField } from '../../../shared/ui';
|
||||||
import { ISectionProps, EMPLOYEE_PLACEHOLDER, SUBSTITUTE_PLACEHOLDER, MIN_NOTICE_DAYS } from '../model';
|
import { ISectionProps, EMPLOYEE_PLACEHOLDER, SUBSTITUTE_PLACEHOLDER, MIN_NOTICE_DAYS } from '../model';
|
||||||
import { isoDatePlusDays } from '../../../shared/dateUtils';
|
import { isoDatePlusDays } from '../../../shared/dateUtils';
|
||||||
|
|
||||||
/** Единственная секция формы «Заявка на отпуск»: сотрудник, должность, даты. */
|
/** Единственная секция формы «Заявка на отпуск»: сотрудник, должность, даты. */
|
||||||
export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, onEmployeeChange }) => (
|
export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, onEmployeeChange }) => (
|
||||||
<CollapseSection title="Заявка" icon="people">
|
<FormGrid>
|
||||||
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
<FormField label="Сотрудник" htmlFor="Employee" required full>
|
||||||
<PeopleField
|
<PeopleField
|
||||||
context={context}
|
context={context}
|
||||||
@@ -38,5 +38,5 @@ export const RequestSection: React.FC<ISectionProps> = ({ data, set, context, on
|
|||||||
placeholder={SUBSTITUTE_PLACEHOLDER}
|
placeholder={SUBSTITUTE_PLACEHOLDER}
|
||||||
/>
|
/>
|
||||||
</FormField>
|
</FormField>
|
||||||
</CollapseSection>
|
</FormGrid>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user