e976b4e8d4
Tests / frontend-test (pull_request) Successful in 2m12s
Новая форма acc-payment-request в категории «Бухгалтерия»: основание — согласованная СТ (сайт СТ) или потребность; из основания подставляются получатель, раздел, вид работ, условия, общая сумма и позиции. Счёт (PDF) сохраняется в библиотеку, уходит на OCR, ИИ достаёт реквизиты, суммы и позиции и сверяет их с СТ. Подсвечиваются чужой получатель в счёте и превышение общей суммы СТ всеми оплатами. Справочники 1С — общий DictionaryPicker. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
90 lines
4.1 KiB
TypeScript
90 lines
4.1 KiB
TypeScript
import * as React from 'react';
|
||
import type { WebPartContext } from '@microsoft/sp-webpart-base';
|
||
|
||
export interface IApprovalViewProps {
|
||
context: WebPartContext;
|
||
itemId: number;
|
||
/**
|
||
* Ключ формы (= pageUrl типа заявки в approval-route API) — тот же, что и
|
||
* rptype в ссылке (см. ApproveFeature). Нужен режиму согласующего, чтобы
|
||
* самому резолвить числовой RequestTypeId через useRequestTypeId (форма
|
||
* подачи получает готовый requestType.id, а View — только itemId/context).
|
||
*/
|
||
formKey: string;
|
||
/**
|
||
* Партиция (серверный url списка), где лежит именно ЭТА заявка — см.
|
||
* shared/approval/listPartitions.ts. Не задан — просмотр откатывается на
|
||
* текущую партицию типа заявки (старые ссылки без параметра).
|
||
*/
|
||
listId?: string;
|
||
/**
|
||
* Уведомление о загруженном уникальном коде заявки — нужен родителю
|
||
* (RequestPortal) для заголовка Drawer, который рендерится ДО того, как
|
||
* View успевает загрузить саму заявку и узнать её код.
|
||
*/
|
||
onCodeLoaded?: (code: string) => void;
|
||
}
|
||
|
||
type ViewComponent = React.ComponentType<IApprovalViewProps>;
|
||
|
||
/**
|
||
* Реестр форм «только для чтения» (режим согласующего): ключ формы → ленивый просмотр.
|
||
* Добавить просмотр = создать <Форма>View.tsx + строка здесь.
|
||
*/
|
||
const viewRegistry: Record<string, React.LazyExoticComponent<ViewComponent>> = {
|
||
'recruiting-selection': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-recruiting-selection' */ './RecruitingSelection/RecruitingSelectionView')
|
||
),
|
||
'recruiting-hire': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-recruiting-hire' */ './RecruitingHire/RecruitingHireView')
|
||
),
|
||
'recruiting-referral': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-referral' */ './Referral/ReferralView')
|
||
),
|
||
'it-workplace-setup': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-workplace-setup' */ './WorkplaceSetup/WorkplaceSetupView')
|
||
),
|
||
'it-1c-ticket': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-1c-ticket' */ './Ticket1C/Ticket1CView')
|
||
),
|
||
'hr-vacation': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-vacation' */ './Vacation/VacationView')
|
||
),
|
||
'hr-unpaid-leave': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-unpaid-leave' */ './UnpaidLeave/UnpaidLeaveView')
|
||
),
|
||
'hr-skud-explanation': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-skud-explanation' */ './SkudExplanation/SkudExplanationView')
|
||
),
|
||
'hr-business-trip': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-business-trip' */ './BusinessTrip/BusinessTripView')
|
||
),
|
||
'wh-tmc-transfer': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-tmc-transfer' */ './TmcTransfer/TmcTransferView')
|
||
),
|
||
'wh-service-request': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-service-request' */ './ServiceRequest/ServiceRequestView')
|
||
),
|
||
'clearance-form': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-clearance' */ './Clearance/ClearanceView')
|
||
),
|
||
'hr-dismissal': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-dismissal' */ './Dismissal/DismissalView')
|
||
),
|
||
'hr-transfer': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-employee-transfer' */ './EmployeeTransfer/EmployeeTransferView')
|
||
),
|
||
'acc-payment-request': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-payment-request' */ './PaymentRequest/PaymentRequestView')
|
||
),
|
||
'wh-concrete-request': React.lazy(
|
||
() => import(/* webpackChunkName: 'view-concrete-request' */ './ConcreteRequest/ConcreteRequestView')
|
||
)
|
||
};
|
||
|
||
export function getViewComponent(
|
||
formKey: string
|
||
): React.LazyExoticComponent<ViewComponent> | undefined {
|
||
return viewRegistry[formKey];
|
||
}
|