404 был из-за опечатки в пути (/consolidation/ без s). Модалка берёт статус из карточки страницы, а после 200 страница берёт карточку из ответа; в «Новом этапе» ничего не выбрано; ошибки — текст сервера, модалка остаётся открытой. Кнопка в шапке активна при своей блокировке и наличии ручных переходов, подсказка «Возьмите консолидацию в работу». Пояснение под заголовком — текст статуса, а не название. Модалка «Остались неуказанные ИНН» при уходе с «ОСВ» (вкладки шагов пока неактивны). Предупреждение браузера при начатом вводе. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
1.9 KiB
TypeScript
21 lines
1.9 KiB
TypeScript
import { api, apiFetchBlob } from '../../api/client';
|
||
import type { ConsolidationCreate, VersionStatusUpdate } from '../../types/api';
|
||
import type { LockOut } from '../../types/consolidations/common_types';
|
||
import type { IConsolidation } from '../../types/consolidations/consolidations';
|
||
import type { ChecklistBackendShape, VersionCard } from '../../types/consolidations/version_members';
|
||
|
||
/** Список консолидаций ГК; `in_work_only` — серверный фильтр «Только в работе» (по умолчанию false). */
|
||
export const getConsolidations = (groupId: string, in_work_only: boolean) =>
|
||
api.get<IConsolidation[]>(`/company-groups/${groupId}/consolidations`, { in_work_only });
|
||
export const getVersionCard = (versionId: string) => api.get<VersionCard>(`/consolidations/versions/${versionId}`);
|
||
export const createConsolidation = (body: ConsolidationCreate) => api.post<VersionCard>('/consolidations', body);
|
||
export const downloadChecklistCsv = (versionId: string) => apiFetchBlob(`/consolidations/versions/${versionId}/checklist?format=csv`);
|
||
export const getChecklist = (versionId: string) => api.get<ChecklistBackendShape>(`/consolidations/versions/${versionId}/checklist`);
|
||
/** «Взять в работу»: 201 — взята, 200 — уже ваша; чужая — 409 `LOCKED_BY_OTHER` (перехват — с `takeover_reason`). */
|
||
export const lockVersion = (versionId: string, reason?: string | null) =>
|
||
api.post<LockOut>(`/consolidations/versions/${versionId}/lock`, reason ? { takeover_reason: reason } : {});
|
||
|
||
/** Ручная смена статуса (гайд §5.7): нужна своя блокировка; ответ — карточка версии с новым статусом. */
|
||
export const updateStatus = (versionId: string, body: VersionStatusUpdate) =>
|
||
api.post<VersionCard>(`/consolidations/versions/${versionId}/status`, body);
|