Несколько условий шага, объединяемых через И/ИЛИ (#16)
Tests / frontend-test (push) Successful in 47s
Tests / backend-test (push) Successful in 2m12s

<html>
<body>
<!--StartFragment-->
GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors
--

<!--EndFragment-->
</body>
</html>[GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors](http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/commit/572749b4d7cc11bc8e1ef4184a93f18a14b710ab)

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/16
This commit was merged in pull request #16.
This commit is contained in:
2026-08-25 07:04:44 +00:00
parent e4a6cb8167
commit ba48ed1a0e
27 changed files with 1622 additions and 413 deletions
+20 -4
View File
@@ -4,7 +4,7 @@
//
// Строки с подстановкой оформлены функциями, чтобы шаблон и данные не разъезжались.
import { ComparisonOperator, HeadType, ProjectRole, RouteStepStatus } from './models';
import { ComparisonOperator, ConditionsLogic, HeadType, ProjectRole, RouteStepStatus } from './models';
import { pluralRu } from './utils/plural';
// ---- Подписи enum'ов ----
@@ -32,7 +32,8 @@ export const headTypeLabels: Record<HeadType, string> = {
[HeadType.DirectionHead]: 'Руководитель направления',
[HeadType.DirectorTansu]: 'Директор Tansu',
[HeadType.ManagingDirectorTansu]: 'Управляющий директор Tansu',
[HeadType.DepartmentHead]: 'Руководитель указанного отдела'
[HeadType.DepartmentHead]: 'Руководитель указанного отдела',
[HeadType.CompanyDirectors]: 'Директора компаний инициатора'
};
export const comparisonOperatorLabels: Record<ComparisonOperator, string> = {
@@ -55,6 +56,17 @@ export const comparisonOperatorSymbols: Record<ComparisonOperator, string> = {
[ComparisonOperator.NotContains]: 'не содержит'
};
export const conditionsLogicLabels: Record<ConditionsLogic, string> = {
[ConditionsLogic.And]: 'И (выполняются все условия)',
[ConditionsLogic.Or]: 'ИЛИ (достаточно одного условия)'
};
/** Как условия шага склеиваются в одну строку в колонке «Условие» таблицы шагов. */
export const conditionsLogicJoiners: Record<ConditionsLogic, string> = {
[ConditionsLogic.And]: ' И ',
[ConditionsLogic.Or]: ' ИЛИ '
};
export const texts = {
common: {
home: 'Главная',
@@ -330,11 +342,15 @@ export const texts = {
conditionOperationLabel: 'Оператор сравнения',
conditionValueLabel: 'Значение',
conditionValuePlaceholder: 'Например, 1000',
conditionLogicLabel: 'Логика объединения условий',
conditionAdd: 'Добавить условие',
conditionRemove: 'Удалить условие',
validationOrderNo: 'Порядковый номер шага обязателен.',
validationExecutor: 'Выберите сотрудника-исполнителя.',
validationPosition: 'Укажите должность.',
validationCondition: 'Заполните поле списка, оператор и значение условия.',
validationConditionNumber: 'Выбранное поле числовое — значение условия должно быть числом.',
validationCondition: 'В каждом условии заполните поле списка, оператор и значение.',
validationConditionNumber: (fieldName: string): string =>
`Поле «${fieldName}» числовое — значение условия должно быть числом.`,
validationSlaHours: 'SLA укажите целым числом часов (0 и больше) или оставьте поле пустым.',
deleteTitle: 'Удалить шаг?',
deleteText: (orderNo: number): string => `Шаг #${orderNo} будет удалён безвозвратно.`