Files
request-portal/src/webparts/requestPortal/forms/registry.ts
T
gorbenko.pavel ca1d7512d6 feat: форма «Заявление на увольнение» (hr-dismissal)
Новая форма отдела кадров по бумажному шаблону «Заявление на увольнение ШТАТ»:
сотрудник, должность, структурное и самостоятельное подразделение, последний
рабочий день, контактный телефон, комментарий. По умолчанию заявка на себя, но
можно подать за другого — маршрут резолвится по выбранному сотруднику.

Подразделение подтягивается из профиля (SPS-Department, read-only), должность и
организации — из справочника Employee/ByEmail. Последний рабочий день не может
быть в прошлом; срок предупреждения об увольнении форма не проверяет — дату
согласуют с работодателем.

Перекрёстные ссылки с «Обходным листом»: колонки-гиперссылки ClearanceUrl /
DismissalUrl (только в списках, формы их пока не пишут). Для них в провижинере
появился тип колонки Url, а сам скрипт разбит на два прохода — сначала все
списки, потом колонки: иначе Lookup на список другой формы держится на алфавитном
порядке обхода манифестов.

Списки «Заявление на увольнение 1 — данные» / «… — согласование» созданы на
/sites/requests. Тип заявки в админке approval-route ещё не заведён — до этого
форма откроется, но отправить заявку не даст.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 12:45:17 +05:00

53 lines
2.1 KiB
TypeScript

import * as React from 'react';
import { IRequestFormProps, RequestTypeId } from '../models/types';
type FormComponent = React.ComponentType<IRequestFormProps>;
/**
* Реестр форм: id типа заявки → лениво загружаемая форма.
* Каждая форма — отдельный чанк (React.lazy): в бандл первого экрана не попадает,
* подтягивается только при открытии. Добавить форму = папка + строка здесь.
*/
const formRegistry: Record<string, React.LazyExoticComponent<FormComponent>> = {
'recruiting-selection': React.lazy(
() =>
import(
/* webpackChunkName: 'form-recruiting-selection' */ './RecruitingSelection/RecruitingSelectionForm'
)
),
'recruiting-hire': React.lazy(
() =>
import(/* webpackChunkName: 'form-recruiting-hire' */ './RecruitingHire/RecruitingHireForm')
),
'recruiting-referral': React.lazy(
() => import(/* webpackChunkName: 'form-referral' */ './Referral/ReferralForm')
),
'it-workplace-setup': React.lazy(
() => import(/* webpackChunkName: 'form-workplace-setup' */ './WorkplaceSetup/WorkplaceSetupForm')
),
'it-1c-ticket': React.lazy(
() => import(/* webpackChunkName: 'form-1c-ticket' */ './Ticket1C/Ticket1CForm')
),
'hr-vacation': React.lazy(
() => import(/* webpackChunkName: 'form-vacation' */ './Vacation/VacationForm')
),
'hr-unpaid-leave': React.lazy(
() => import(/* webpackChunkName: 'form-unpaid-leave' */ './UnpaidLeave/UnpaidLeaveForm')
),
'wh-tmc-transfer': React.lazy(
() => import(/* webpackChunkName: 'form-tmc-transfer' */ './TmcTransfer/TmcTransferForm')
),
'clearance-form': React.lazy(
() => import(/* webpackChunkName: 'form-clearance' */ './Clearance/ClearanceForm')
),
'hr-dismissal': React.lazy(
() => import(/* webpackChunkName: 'form-dismissal' */ './Dismissal/DismissalForm')
)
};
export function getFormComponent(
id: RequestTypeId
): React.LazyExoticComponent<FormComponent> | undefined {
return formRegistry[id];
}